> Documentation index: https://docs.sellhidden.com/llms.txt

# Tickets

Source: https://docs.sellhidden.com/reference/tickets

Support threads buyers open from their order or account. Replies email the buyer.

## Endpoints

5 endpoints · [tickets:read](https://docs.sellhidden.com/start?scope=tickets%3Aread#scopes) · [tickets:write](https://docs.sellhidden.com/start?scope=tickets%3Awrite#scopes)

Base URL https://api.sellhidden.com/v1 · Authorization: Bearer · 120/min per key · cursor pagination · Idempotency-Key on POST · No test mode

### GET /tickets — List tickets

Scope `tickets:read`.

**Query parameters**

| Query parameters | Type | Description |
| --- | --- | --- |
| `status` | open \| answered \| closed |  |
| `email` | string | Buyer email contains this text. |
| `limit` | 1..100 | Page size. Default 25. |
| `cursor` | string | nextCursor from the previous page. |

```bash
curl https://api.sellhidden.com/v1/tickets \
  -H "Authorization: Bearer hsk_live_…"
```

### GET /tickets/{id} — Get a ticket

With its full thread; `fromBuyer` tells you who wrote each message. Scope `tickets:read`.

```bash
curl https://api.sellhidden.com/v1/tickets/ID \
  -H "Authorization: Bearer hsk_live_…"
```

Response (200):

```json
{
  "ok": true,
  "ticket": {
    "id": "clx…",
    "orderId": "clx…",
    "buyerEmail": "buyer@example.com",
    "subject": "Key not activating",
    "status": "answered",
    "messageCount": 2,
    "lastMessageAt": "2026-09-26T11:00:00.000Z",
    "createdAt": "2026-09-26T10:30:00.000Z",
    "messages": [
      { "id": "clx…", "fromBuyer": true, "body": "The key says invalid.", "createdAt": "2026-09-26T10:30:00.000Z" },
      { "id": "clx…", "fromBuyer": false, "body": "Try again without the dashes.", "createdAt": "2026-09-26T11:00:00.000Z" }
    ]
  }
}
```

### POST /tickets/{id}/messages — Reply to a ticket

The ticket becomes answered and the buyer is emailed. A closed ticket must be reopened first. Scope `tickets:write`. Accepts `Idempotency-Key`. Returns 201.

**Body**

| Body | Type | Description |
| --- | --- | --- |
| `body` (required) | string | Up to 10,000 characters. |

```bash
curl -X POST \
  https://api.sellhidden.com/v1/tickets/ID/messages \
  -H "Authorization: Bearer hsk_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"body":"Sorry about that. A new key is on its way."}'
```

### PATCH /tickets/{id} — Change the status

Scope `tickets:write`.

**Body**

| Body | Type | Description |
| --- | --- | --- |
| `status` (required) | open \| answered \| closed |  |

```bash
curl -X PATCH https://api.sellhidden.com/v1/tickets/ID \
  -H "Authorization: Bearer hsk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"status":"open"}'
```

### POST /tickets/{id}/close — Close a ticket

Scope `tickets:write`. Accepts `Idempotency-Key`.

```bash
curl -X POST \
  https://api.sellhidden.com/v1/tickets/ID/close \
  -H "Authorization: Bearer hsk_live_…" \
  -H "Idempotency-Key: $(uuidgen)"
```
