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

# Statuses

> GET /v1/statuses - the status vocabulary of each product, machine-readable.

Returns every status each product can report, with whether it is terminal and
whether it is the state that means "credit the user". Use it to validate what
your integration handles, and to catch a new status appearing before it reaches
your users as a blank.

Each product has its own set - there is no single vocabulary across products.
What the sets mean, and how partner states map into them, is on
[Transaction statuses](/transactions/statuses).

## Request

No parameters.

## Response

<ResponseField name="products" type="object">
  Keys are `deposits`, `cards`, and `bank`. Each holds an array of statuses.

  <Expandable title="products.*[]">
    <ResponseField name="status" type="string">
      The status value, exactly as the product's status endpoint returns it.
    </ResponseField>

    <ResponseField name="terminal" type="boolean">
      Whether the status is final. Stop polling on a terminal status.
    </ResponseField>

    <ResponseField name="credit" type="boolean">
      Whether this is the state to credit the user on. Exactly one per product.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl "$RHEON_API/v1/statuses" \
    -H "Authorization: Bearer $RHEON_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "products": {
      "deposits": [
        { "status": "pending", "terminal": false, "credit": false },
        { "status": "done", "terminal": true, "credit": true },
        { "status": "failed", "terminal": true, "credit": false },
        { "status": "expired", "terminal": true, "credit": false }
      ],
      "cards": [
        { "status": "pending", "terminal": false, "credit": false },
        { "status": "processing", "terminal": false, "credit": false },
        { "status": "completed", "terminal": true, "credit": true },
        { "status": "failed", "terminal": true, "credit": false },
        { "status": "unknown", "terminal": false, "credit": false }
      ],
      "bank": [
        { "status": "awaiting_deposit", "terminal": false, "credit": false },
        { "status": "funded", "terminal": true, "credit": true }
      ]
    }
  }
  ```
</ResponseExample>

## Errors

| HTTP | `code`         | When                                    |
| ---- | -------------- | --------------------------------------- |
| 401  | `unauthorized` | Missing, malformed, or unknown API key. |
| 429  | `rate_limited` | Over your key's rate limit.             |
| 500  | `internal`     | Unexpected server error.                |
