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

# Response Shapes

> How Radion API responses are structured: single objects, lists, and error bodies.

The API has a few response shapes. A single object comes back bare, with no wrapper. Events and markets lists come back in named arrays with a cursor. Errors use an RFC 9457 body.

## Single objects

A single-object endpoint returns the object at the top level. There is no `data` wrapper. For example `GET /v1/polymarket/price`:

```json theme={null}
{
  "tokenId": "0x1234...",
  "price": 0.63
}
```

And `GET /auth/me`:

```json theme={null}
{
  "keyLabel": "production_read",
  "plan": "starter",
  "callCount": 42,
  "createdAt": "2026-04-01T12:00:00Z",
  "lastUsedAt": "2026-05-25T10:30:00Z",
  "monthlyUsage": {
    "used": 120,
    "limit": 3000,
    "resetsAt": "2026-07-01T00:00:00Z"
  },
  "requestsPerSecond": 10
}
```

## Lists

`GET /v1/polymarket/events` returns an `events` array and a `nextCursor` field. `GET /v1/polymarket/markets` returns a `markets` array and a `nextCursor` field. You use `nextCursor` to ask for the next page. See [Pagination](/api/pagination).

```json theme={null}
{
  "events": [
    {
      "conditionId": "0x1234...",
      "totalVolume": "152340.50",
      "tradeCount": 812,
      "lastPrice": "0.63",
      "openInterest": "48120.00",
      "lastTradeTs": "2026-05-25T10:30:00Z",
      "updatedBlock": 71250334
    }
  ],
  "nextCursor": "eyJjb21wdXRlZF9hdCI6Ij..."
}
```

`nextCursor` is `null` when there are no more pages.

## Search

`GET /v1/polymarket/search` returns a composite object with three arrays and its own pagination. It is page-based, not cursor-based:

```json theme={null}
{
  "events": [...],
  "themes": [...],
  "profiles": [...],
  "pagination": {
    "hasMore": true,
    "totalResults": 57
  }
}
```

<Note>
  Money amounts like volume, PnL, and open interest come back as strings. This
  keeps full precision and avoids rounding. Parse them as decimals, not as
  floats. Live orderbook values like `price`, `midpoint`, `spread`, and `size`
  come back as JSON numbers.
</Note>

## Error responses

Errors use `Content-Type: application/problem+json`. The body follows [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457):

```json theme={null}
{
  "type": "about:blank",
  "status": 401,
  "title": "Unauthorized",
  "detail": "Invalid API key",
  "requestId": "1748123456-1a"
}
```

| Field       | What it means                                                  |
| ----------- | -------------------------------------------------------------- |
| `type`      | The problem type. Always `about:blank` for normal HTTP errors. |
| `status`    | The HTTP status code.                                          |
| `title`     | A short title.                                                 |
| `detail`    | What went wrong this time.                                     |
| `requestId` | The id for this request. Send it to us when you ask for help.  |

For the full list of error codes, see [Errors](/api/errors).
