# Support — Swaps API

A signed-in person's own support requests and the conversation with Swaps Support. Dashboard session only.

**Jump to an operation:**

- [GET /support_cases](#list-the-persons-support-requests-dark-flag)
- [GET /support_cases/summary](#count-the-persons-support-requests-dark-flag)
- [GET /support_cases/{id}](#retrieve-a-support-request-dark-flag)
- [GET /support_cases/{id}/messages](#list-a-support-requests-messages-dark-flag)
- [POST /support_cases/{id}/messages](#reply-to-a-support-request-dark-flag)

> Generated from the bundled OpenAPI contract. The HTML page and this Markdown twin share the same processed operation descriptions and status annotations.

<a id="list-the-persons-support-requests-dark-flag"></a>
## `GET /support_cases` — List the person's support requests — dark-flag

**Operation ID:** `support_cases.list`

> **Status:** Dark-flag — live behind a cohort or flag · **Callers:** dashboard session · **Scope:** `support.read` · **Test mode:** unavailable
>
> This operation is **dark-flag — live behind a cohort or flag**. While its resource switch (`api_v1.<resource>`) is off, calling it answers `503 temporarily_unavailable`; with the switch on, a closed product or launch flag, or a cohort the account is outside, answers `409 capability_unavailable`. Check its product page before relying on it.

The signed-in person's own support requests, newest created first, optionally one `status_group`. Dashboard session only, never a business key: a request belongs to the person who wrote it, not to an account. `Swaps-Account` only picks the membership that authenticates the call; the list does not change with it. Test mode: unavailable. For the waiting count read `GET /v1/support_cases/summary` instead of counting pages.

### Parameters

| Name | In | Required | Schema | Description |
| --- | --- | --- | --- | --- |
| `SwapsVersion` | component | — | — | Reusable parameter component |
| `SwapsAccount` | component | — | — | Reusable parameter component |
| `Limit` | component | — | — | Reusable parameter component |
| `Cursor` | component | — | — | Reusable parameter component |
| `status_group` | query | no | `needs_you` \| `in_progress` \| `done` | One status group. The set is closed: any other value is `400 invalid_request` naming this parameter. |

### Responses

| Status | Description | Body |
| --- | --- | --- |
| `200` | A page of the person's support requests. | `application/json` [SupportCaseList](/reference/~schemas.md#supportcaselist) |
| `400` | — | `BadRequest` |
| `401` | — | `Unauthorized` |
| `403` | — | `Forbidden` |
| `404` | — | `NotFound` |
| `429` | — | `TooManyRequests` |
| `500` | — | `InternalError` |
| `503` | — | `ServiceUnavailable` |

---

<a id="count-the-persons-support-requests-dark-flag"></a>
## `GET /support_cases/summary` — Count the person's support requests — dark-flag

**Operation ID:** `support_cases.get_summary`

> **Status:** Dark-flag — live behind a cohort or flag · **Callers:** dashboard session · **Scope:** `support.read` · **Test mode:** unavailable
>
> This operation is **dark-flag — live behind a cohort or flag**. While its resource switch (`api_v1.<resource>`) is off, calling it answers `503 temporarily_unavailable`; with the switch on, a closed product or launch flag, or a cohort the account is outside, answers `409 capability_unavailable`. Check its product page before relying on it.

Unbounded counts of the person's support requests per status group, over every request, not just a loaded page. `needs_you` is the number waiting for the person's answer, the figure the dashboard shows beside Support. Dashboard session only. Test mode: unavailable.

### Parameters

| Name | In | Required | Schema | Description |
| --- | --- | --- | --- | --- |
| `SwapsVersion` | component | — | — | Reusable parameter component |
| `SwapsAccount` | component | — | — | Reusable parameter component |

### Responses

| Status | Description | Body |
| --- | --- | --- |
| `200` | Unbounded counts per status group. | `application/json` [SupportCaseSummary](/reference/~schemas.md#supportcasesummary) |
| `400` | — | `BadRequest` |
| `401` | — | `Unauthorized` |
| `403` | — | `Forbidden` |
| `404` | — | `NotFound` |
| `429` | — | `TooManyRequests` |
| `500` | — | `InternalError` |
| `503` | — | `ServiceUnavailable` |

---

<a id="retrieve-a-support-request-dark-flag"></a>
## `GET /support_cases/{id}` — Retrieve a support request — dark-flag

**Operation ID:** `support_cases.get`

> **Status:** Dark-flag — live behind a cohort or flag · **Callers:** dashboard session · **Scope:** `support.read` · **Test mode:** unavailable
>
> This operation is **dark-flag — live behind a cohort or flag**. While its resource switch (`api_v1.<resource>`) is off, calling it answers `503 temporarily_unavailable`; with the switch on, a closed product or launch flag, or a cohort the account is outside, answers `409 capability_unavailable`. Check its product page before relying on it.

One of the person's own support requests. Another person's request, an unknown id and a request that was not filed from a signed-in session all answer `404`. Dashboard session only. Test mode: unavailable.

### Parameters

| Name | In | Required | Schema | Description |
| --- | --- | --- | --- | --- |
| `SwapsVersion` | component | — | — | Reusable parameter component |
| `SwapsAccount` | component | — | — | Reusable parameter component |
| `id` | path | yes | `string` | — |

### Responses

| Status | Description | Body |
| --- | --- | --- |
| `200` | The support request. | `application/json` [SupportCase](/reference/~schemas.md#supportcase) |
| `400` | — | `BadRequest` |
| `401` | — | `Unauthorized` |
| `403` | — | `Forbidden` |
| `404` | — | `NotFound` |
| `429` | — | `TooManyRequests` |
| `500` | — | `InternalError` |
| `503` | — | `ServiceUnavailable` |

---

<a id="list-a-support-requests-messages-dark-flag"></a>
## `GET /support_cases/{id}/messages` — List a support request's messages — dark-flag

**Operation ID:** `support_cases.messages.list`

> **Status:** Dark-flag — live behind a cohort or flag · **Callers:** dashboard session · **Scope:** `support.read` · **Test mode:** unavailable
>
> This operation is **dark-flag — live behind a cohort or flag**. While its resource switch (`api_v1.<resource>`) is off, calling it answers `503 temporarily_unavailable`; with the switch on, a closed product or launch flag, or a cohort the account is outside, answers `409 capability_unavailable`. Check its product page before relying on it.

The conversation, newest first: the opening request, the person's own replies and the messages Swaps Support sent. Notes, drafts, unsent messages and provider correspondence never appear. Dashboard session only. Test mode: unavailable.

### Parameters

| Name | In | Required | Schema | Description |
| --- | --- | --- | --- | --- |
| `SwapsVersion` | component | — | — | Reusable parameter component |
| `SwapsAccount` | component | — | — | Reusable parameter component |
| `Limit` | component | — | — | Reusable parameter component |
| `Cursor` | component | — | — | Reusable parameter component |
| `id` | path | yes | `string` | — |

### Responses

| Status | Description | Body |
| --- | --- | --- |
| `200` | A page of visible messages, newest first. | `application/json` [SupportCaseMessageList](/reference/~schemas.md#supportcasemessagelist) |
| `400` | — | `BadRequest` |
| `401` | — | `Unauthorized` |
| `403` | — | `Forbidden` |
| `404` | — | `NotFound` |
| `429` | — | `TooManyRequests` |
| `500` | — | `InternalError` |
| `503` | — | `ServiceUnavailable` |

---

<a id="reply-to-a-support-request-dark-flag"></a>
## `POST /support_cases/{id}/messages` — Reply to a support request — dark-flag

**Operation ID:** `support_cases.messages.create`

> **Status:** Dark-flag — live behind a cohort or flag · **Callers:** dashboard session · **Scope:** `support.write` · **Test mode:** unavailable
>
> This operation is **dark-flag — live behind a cohort or flag**. While its resource switch (`api_v1.<resource>`) is off, calling it answers `503 temporarily_unavailable`; with the switch on, a closed product or launch flag, or a cohort the account is outside, answers `409 capability_unavailable`. Check its product page before relying on it.

Adds the person's reply to their own support request. A reply to a closed request reopens it. Text only, 1 to 10,000 characters (counted as Unicode code points) with at least one that is not a space, and no control character other than tab, line feed and carriage return; there is no attachment field, so any field besides `body` is `400`. Never include passwords, API keys, recovery phrases, documents or bank details. Swaps Support answers in the conversation and by email. A person may send 10 replies in 10 minutes and 60 in a day: past that the answer is `429` with `Retry-After` up to the end of the refusing window, and the reply was not stored, so after waiting send it again under a new `Idempotency-Key` (a `4xx` completes its key). Dashboard session only. Test mode: unavailable.

### Parameters

| Name | In | Required | Schema | Description |
| --- | --- | --- | --- | --- |
| `SwapsVersion` | component | — | — | Reusable parameter component |
| `SwapsAccount` | component | — | — | Reusable parameter component |
| `IdempotencyKey` | component | — | — | Reusable parameter component |
| `id` | path | yes | `string` | — |

### Request body

Required: **yes**

| Media type | Schema |
| --- | --- |
| `application/json` | [SupportCaseMessageCreateRequest](/reference/~schemas.md#supportcasemessagecreaterequest) |

### Responses

| Status | Description | Body |
| --- | --- | --- |
| `201` | The person's reply, as it now appears in the conversation. | `application/json` [SupportCaseMessage](/reference/~schemas.md#supportcasemessage) |
| `400` | — | `BadRequest` |
| `401` | — | `Unauthorized` |
| `403` | — | `Forbidden` |
| `404` | — | `NotFound` |
| `409` | — | `Conflict` |
| `413` | — | `PayloadTooLarge` |
| `429` | — | `TooManyRequests` |
| `500` | — | `InternalError` |
| `503` | — | `ServiceUnavailable` |
