---
title: Support (helpdesk)
description: In-app tickets land in Platform admin via SDK.
---

# Support (helpdesk)

Mini helpdesk: the user files a ticket in the product app → it appears under admin **Support**.

## Flow

```text
App (“Help” button)
  → SDK.createSupportTicket(+ attachments)
  → Platform API
  → Admin → Support (list / detail / reply)
```

## Client payload

| Field | Purpose |
| --- | --- |
| `subject` / `description` | Issue title and body |
| `category` | `bug` \| `billing` \| `account` \| `feature` \| `other` |
| `platform`, `app_version`, `os_version`, `device_name`, `installation_id`, `locale` | Runtime environment |
| `metadata` | Free-form context (screen, extra) |
| attachments | Screenshots / video / logs (separate upload) |

Requires end-user JWT + public key. App is resolved from `application_code`.

Optional `contact_*` fields exist only if your product collects them from the user. Never put real names, emails, or phone numbers in public docs or examples.

## SDK

`createSupportTicket`, `uploadSupportAttachment`, `listMySupportTickets`, `getSupportTicket`, `replyToSupportTicket`.

```ts
const { data: ticket } = await platform.createSupportTicket({
  subject: "Sync issue",
  description: "…",
  category: "bug",
  platform: "windows",
  app_version: "1.2.0",
  installation_id: installationId,
  metadata: { screen: "sync_center" },
});

await platform.uploadSupportAttachment(ticket.id, logBlob, {
  filename: "app.log",
  kind: "log",
});
```
