> ## Documentation Index
> Fetch the complete documentation index at: https://partners.docs.polymarket.us/llms.txt
> Use this file to discover all available pages before exploring further.

# Support and escalation

> Where to take a problem, what to include by category, how severity is read, and the routes that are not yet defined.

When one of these breaks, report it in your shared Slack channel with the one identifier that makes your category diagnosable, because a report without it costs a round trip before anyone can look.

<Snippet file="support-tagging.mdx" />

## What to include, by category

One identifier per category does most of the diagnostic work. Include it in the first message, not
after we ask.

| Category                         | The identifier that makes it diagnosable                                                            | Also include                                                                                                                                                                                                                               |
| -------------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Auth**                         | Your `client_id`, and the `jti` of the failing assertion                                            | The `aud` you put on the assertion and the `audience` you requested, separately — conflating the two is the most common cause. The gRPC status or HTTP code, verbatim                                                                      |
| **Scopes / `PERMISSION_DENIED`** | The exact RPC or endpoint path                                                                      | The time you last minted a token. Scopes are granted server-side and only appear in tokens minted **after** the grant, so "it still fails" usually means "I have not re-minted"                                                            |
| **KYC**                          | Your `external_id` for the user, and the `participantId` if one was issued                          | The `decision`, `status` and `subStatus`, the environment, and whether you set `docv_eligible: true`. Never paste SSNs or full PII into the channel                                                                                        |
| **Webhooks**                     | The `event_id` you received, or the `<webhook-id>` and `<webhook-timestamp>` on a signature failure | Whether you re-registered the URL recently — re-registering clears the signing secret                                                                                                                                                      |
| **Order**                        | The `idempotency_key` **and** the `clord_id`                                                        | `order.account`, the returned `status` (`ACCEPTED` / `REJECTED` / `PENDING`), and `failure_reason` verbatim. For `EXPIRED`, say what the book looked like — an FOK that never crossed carries no reason by design and is usually not a bug |
| **Transfer**                     | The `idempotency_key`                                                                               | The `reason` (`DEPOSIT` / `WITHDRAWAL` / `VENDOR_FEES`), the participant account, the returned status of the four, and confirmation that you sent **no** `x-participant-id` — cash movement is firm-scoped                                 |
| **Stream**                       | The RPC name, plus the verbatim status line including the gRPC code                                 | How many streams your firm had open against the 20 cap, the instrument count on that subscription, and whether `resume_token` was populated. Quote the token's presence, not its value                                                     |
| **Settlement**                   | The `symbol`                                                                                        | `settlement_px`, `settlement_set_time`, `settlement_preliminary`, and the `RESOLUTION` ledger entry if you have one. Say which stream or read you took the values from — instrument state change does not carry settlement result fields   |
| **Reconciliation break**         | The traded day and the `symbol`                                                                     | The two numbers that disagree, with their scales named, and which side you believe is right. → [Daily reconciliation](/operations#daily-reconciliation)                                                                                    |
| **Rate limit**                   | The full error, including any `rung` and `retry after` value                                        | The call rate you believe you were running and whether a second process of yours shares the firm budget                                                                                                                                    |

Two rules that apply to every category:

* **Quote errors verbatim, including the gRPC status code.** An exchange-level rejection arrives as
  gRPC `OK` with `status = REJECTED`, so "it failed" and "the RPC errored" are different reports with
  different causes.
* **Name the environment in the first line.** Several behaviours differ, and preprod has no status
  signal, so we cannot infer it. → [What preprod does and does not simulate](/preprod#what-preprod-does-and-does-not-simulate)

<Warning>
  **Four current pages tell you to quote `correlation` and `workflow_id` identifiers in a support
  request, to a destination that is only an email address.**

  Capture both if you have them, and put them in your Slack message. Do not rely on an email route
  reading them.
</Warning>

## Severity

Say the severity in the first line of your message. These are the categories we act on:

| Severity                | What it means                                                                                                               | What you say                                                                       |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **Money**               | Real or test funds are in the wrong place, a fee looks wrong, a user could be paid twice, or a balance cannot be reconciled | Lead with "this moves money". Include the amount and the direction                 |
| **Go-live blocker**     | A certification assertion cannot pass, or a production launch date is at risk                                               | Lead with "this blocks go-live" and name the date                                  |
| **Production degraded** | A live production path is failing or slow for real users                                                                    | Lead with "production", the start time, and the error rate you see                 |
| **Preprod blocked**     | You cannot make progress in preprod. Thin books, an unfunded pool and a missing resolution all land here                    | Say what you were trying to test, so we can tell you whether it is testable at all |
| **Question**            | Behaviour you do not understand, no user impact                                                                             | Name the page you read and what it did not answer                                  |

<Warning>
  **No response-time targets are published for any severity.**&#x20;
  Do not build an internal SLA on top of ours. If a report has had no reply and it moves money or
  blocks go-live, re-post it in the channel rather than waiting in the thread, and tag your
  integration lead by name.
</Warning>

## Where to check status first

* **`status.polymarketexchange.com`** covers **production**. Check it before reporting a production
  incident, and quote it if it disagrees with what you see.
* **There is no preprod status signal at all.** No status page, no maintenance calendar, and no
  partner-checkable health endpoint.

<Warning>
  **`GET /v1/health` is not a usable liveness check.**&#x20;
  It is documented as returning `{"status":"ok"}` with no auth, and partners have reported 404 in
  production and 401 in preprod against it. Because you cannot check preprod yourself, report an
  unexplained preprod failure with a timestamp and treat it as ours until shown otherwise.
</Warning>

## Routes that are not yet defined

Two of these will affect you, so plan around them rather than discovering them.

**`institutional@polymarket.us` is the published route, and it is not the right route for a partner
already live on preprod.** It is the address on our public pages. Once you are integrating, your
shared Slack channel is where work actually happens.

<Warning>
  **No page states the correct route for a partner already live on preprod.**

  Ask your integration lead to name the route and the out-of-hours path in writing, and pin it in
  your channel. Until that exists, the channel plus a named person is your only route.
</Warning>

**There is no published intake route for a prospective partner**, which has produced inbound from
entities claiming agreements that do not exist. If you are asked to refer someone, refer them to your
integration lead rather than to an address.

<Snippet file="support.mdx" />

## Next

[Reporting and bulk export](/operations)
