Support tickets

Use support tickets to reach the Cloudfleet team about product questions, billing, or technical issues that the documentation does not cover. Tickets belong to your organization. Every member of your organization can see, reply to, and close any ticket in your account.

You can work with tickets in four ways:

  • The in-product support center in the Cloudfleet Console for interactive use.
  • The cloudfleet CLI for scripts, runbooks, and CI pipelines.
  • The HTTP API at https://api.cloudfleet.ai/v1/tickets for direct integrations.
  • The Cloudfleet MCP server, which exposes ticket tools to AI assistants. The assistant that already manages your Cloudfleet environment can also file and follow up on tickets.

Categories and statuses

Every ticket has a category and a status.

Cloudfleet uses the category to route the ticket. Pick the category that best matches your question:

  • technical for cluster, node, networking, storage, or workload issues.
  • billing for invoices, credits, payment methods, and pricing questions.
  • general for anything else, including account, onboarding, or feedback.

The system manages statuses, which show who owes the next response:

  • waiting_on_us: Cloudfleet owes the next response. Set automatically when you create a ticket or reply.
  • waiting_on_user: Cloudfleet has replied and waits for you.
  • closed: final state. You cannot reopen a closed ticket. To continue a conversation after a ticket closes, open a new ticket and reference the previous ticket ID in the body.

Prerequisites

Make sure the Cloudfleet CLI is installed and you have an authenticated profile.

bash
cloudfleet auth add-profile user default ORGANIZATION_ID
cloudfleet --version

The ticket commands, including create and reply with attachments, require CLI version 1.0.0 or later.

Create a ticket

A ticket starts with a customer message in Markdown. There is no separate subject field. The first message body is the description. Optional properties can carry structured context, such as the affected cluster ID, which Cloudfleet support uses to go directly to the right environment.

  1. Open the Support center.
  2. Click New ticket.
  3. Pick a category.
  4. Write the description in Markdown and attach files if needed.
  5. Submit.
bash
cloudfleet tickets create-ticket \
  --category technical \
  --body "Node provisioning is stuck in europe-central-1a since 14:00 UTC. No new nodes are coming up for pending workloads." \
  --attachments ./kubectl-describe.txt

--category and --body are required. Repeat --attachments once per file, up to three files.

properties has no dedicated flag. To add structured context such as the affected cluster, pass the full payload as JSON or YAML with -f (a file path, or - for stdin). Attachments still go with --attachments:

bash
cloudfleet tickets create-ticket -f - --attachments ./kubectl-describe.txt <<'EOF'
category: technical
body: |
  Node provisioning is stuck in europe-central-1a since 14:00 UTC.
properties:
  cluster_id: 95cc1ef4-2122-4b51-97d9-b35b531c3c45
  subcategory: cluster-question
EOF

The most useful properties keys are cluster_id, cluster_name, and region.

The API accepts the same access token the CLI uses. Read it from an authenticated CLI profile:

bash
export CLOUDFLEET_TOKEN=$(cloudfleet auth get-token | jq -r .status.token)
bash
curl -X POST https://api.cloudfleet.ai/v1/tickets \
  -H "Authorization: Bearer $CLOUDFLEET_TOKEN" \
  -F 'payload={"category":"technical","body":"Node provisioning is stuck in europe-central-1a since 14:00 UTC.","properties":{"cluster_id":"95cc1ef4-2122-4b51-97d9-b35b531c3c45"}}' \
  -F 'attachments=@./kubectl-describe.txt'

The endpoint is multipart/form-data, so file attachments can go with the JSON payload field. Use one -F attachments=@... flag per file.

Through the Cloudfleet MCP server, the assistant calls the tickets_create tool with category, body, and optional properties. You cannot upload attachments over MCP. Paste relevant logs inline in the body instead.

The response contains the ticket id. Keep it for follow-up commands.

Attachments

Cloudfleet accepts up to three attachments per message, with a 10 MB limit per file. The allowed types cover the formats that support engineers need: plain text, JSON, YAML, logs, common image formats, and PDFs. Cloudfleet rejects executables and SVG files.

If you are not sure, paste long output into the message body inside a fenced code block instead of attaching a file. The body limit is 50,000 characters, enough for most kubectl describe and Pod log excerpts.

List and inspect tickets

The Support center lists every ticket in your organization, newest first, with status badges and a one-line summary. Click a row to open the conversation, download attachments, and reply.

bash
cloudfleet tickets list

To read the full conversation, including replies:

bash
cloudfleet tickets describe-ticket 60c72b2f9f1b2c001f8e4d3a
bash
curl https://api.cloudfleet.ai/v1/tickets \
  -H "Authorization: Bearer $CLOUDFLEET_TOKEN"

curl https://api.cloudfleet.ai/v1/tickets/$TICKET_ID \
  -H "Authorization: Bearer $CLOUDFLEET_TOKEN"

GET /v1/tickets returns the list. GET /v1/tickets/{id} returns the full conversation, including replies.

Assistants connected through the Cloudfleet MCP server use the tickets_list tool to enumerate tickets and tickets_get to fetch the full conversation for a ticket ID.

Reply to a ticket

Replies use the same multipart envelope as ticket creation. If the ticket is already closed, the API rejects the reply with HTTP 409.

Open the ticket from the Support center and type into the inline reply box at the bottom of the thread.

bash
cloudfleet tickets reply-ticket 60c72b2f9f1b2c001f8e4d3a \
  --body "Confirmed, the issue stopped after the fix was deployed. Thanks." \
  --attachments ./verification.log

--body is required. Repeat --attachments once per file, up to three files. You can also pass the body as JSON or YAML with -f (a file path, or - for stdin).

bash
curl -X POST https://api.cloudfleet.ai/v1/tickets/$TICKET_ID/messages \
  -H "Authorization: Bearer $CLOUDFLEET_TOKEN" \
  -F 'payload={"body":"Confirmed, the issue stopped after the fix was deployed."}'

Assistants connected through the Cloudfleet MCP server call the tickets_reply tool with the ticket ID and reply body. Replies to closed tickets fail. Open a new ticket instead.

Download an attachment

To download an attachment that support or a teammate uploaded, use the attachment ID from describe-ticket:

bash
cloudfleet tickets get-ticket-attachment \
  60c72b2f9f1b2c001f8e4d3a 60c72b2f9f1b2c001f8e4d3b > attachment.bin

Close a ticket

You cannot undo closing a ticket.

bash
cloudfleet tickets close-ticket 60c72b2f9f1b2c001f8e4d3a

Notifications

Cloudfleet routes ticket events to email:

  • When you create a ticket, the Cloudfleet support team is notified.
  • When support replies, every member of your organization who has email notifications enabled receives a copy.
  • When you reply, the ticket assignee at Cloudfleet is notified directly.

Using support tickets with AI assistants

AI assistants such as Claude, Cursor, and Windsurf can manage Cloudfleet tickets in two ways:

  • Through the Cloudfleet MCP server, which exposes tickets_list, tickets_get, tickets_create, tickets_reply, and tickets_grant_support_access as first-class tools.
  • By running the cloudfleet CLI through a shell.

The Cloudfleet plugin for coding agents includes the MCP server and a contact skill that decides between a support ticket, a roadmap item, and one-way feedback.

An assistant that already inspects your clusters can open a ticket with full context in the same conversation. You cannot upload attachments over MCP. Paste the relevant logs into the message body instead.

Example prompts

  • “Open a Cloudfleet technical ticket for cluster prod-eu saying the Hetzner load balancer keeps draining backends, and include the last kubectl describe service output.”
  • “List my open Cloudfleet tickets and summarize the latest reply on each.”
  • “Check ticket 60c72b2f9f1b2c001f8e4d3a for a new message from support.”
  • “Reply to the most recent technical ticket confirming the fix worked.”

Reference

  • API endpoints: POST /v1/tickets, GET /v1/tickets, GET /v1/tickets/{id}, DELETE /v1/tickets/{id}, POST /v1/tickets/{id}/messages, GET /v1/tickets/{id}/attachments/{attachment_id}.
  • Required scope: any authenticated user in the organization. The Administrator and User roles can both read and write tickets.
  • Body limits: 50,000 characters per message, 3 attachments per message, 10 MB per attachment.
  • See also: contact support form for anonymous or pre-account inquiries.
On this page