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

# Intents

> Query persisted pair-shaped intent observations.

Read every stored pair-shaped intent observation in global collector-time order, including unchanged repeat polls and rows with missing assets. Multi-asset observations are not projected into this table.

## Request

```bash theme={null}
curl "https://api.polaris.supply/intents?source=uniswapx&limit=2"
```

### Query parameters

| Parameter | Type | Required | Description |
| - | - | - | - |
| `source` | `string` | No | Optional exact source identifier |
| `market` | `string` | No | Optional exact normalized routing market |
| `instrument` | `string` | No | Exact venue-native instrument |
| `intent_id` | `string` | No | Exact, nonempty intent ID |
| `start` | `integer` | No | Inclusive collector time in Unix milliseconds. Older history requires a Polaris API key. |
| `end` | `integer` | No | Inclusive collector time in Unix milliseconds. Older history requires a Polaris API key. |
| `limit` | `integer` | No | Page size from 1 to 1000; defaults to 200 |
| `cursor` | `string` | No | Opaque cursor bound to the complete query, including intent\_id |

## Access and behavior

With no bounds, the latest hour is available anonymously; older history requires a Polaris API key. `start` and `end` are inclusive collector timestamps in Unix milliseconds. `intent_id` selects only rows carrying that exact nonempty ID. Repeat all filters when continuing with `next_cursor`.

## Response

| Field | Type | Required | Description |
| - | - | - | - |
| `has_more` | `boolean` | Yes | — |
| `items` | `IntentObservationItem[]` | Yes | — |
| `next_cursor` | `string / null` | No | — |

### `items[]` fields

| Field | Type | Required | Description |
| - | - | - | - |
| `amount_kind` | `string / null` | No | — |
| `collector_timestamp` | `integer` | Yes | — |
| `event_id` | `string` | Yes | — |
| `exchange_timestamp` | `integer / null` | No | — |
| `expires_at` | `integer / null` | No | — |
| `input_amount` | `string / null` | No | — |
| `input_asset_id` | `string / null` | No | — |
| `input_chain_id` | `string / null` | No | — |
| `instrument` | `string / null` | No | — |
| `intent_id` | `string / null` | No | — |
| `market` | `string` | Yes | — |
| `output_amount` | `string / null` | No | — |
| `output_asset_id` | `string / null` | No | — |
| `output_chain_id` | `string / null` | No | — |
| `quote_id` | `string / null` | No | — |
| `quoted_input_amount` | `string / null` | No | — |
| `quoted_output_amount` | `string / null` | No | — |
| `rfq_id` | `string / null` | No | — |
| `schema_version` | `integer` | Yes | — |
| `settled_at` | `integer / null` | No | — |
| `source` | `string` | Yes | — |
| `source_capture_id` | `string` | Yes | — |
| `status` | `string / null` | No | — |

The response preserves observations, not a deduplicated lifecycle state.

## SDK intents and RFQs

Python `client.intents(...)`, TypeScript `client.intents(...)`, and Rust `client.intents(HistoricalQuery)` return canonical `IntentEvent` envelopes for RFQs, quotes, executable intents, and settlement updates. Use `market="intents"` with an exact source from [Catalog](/endpoints/catalog). The SDK model can retain multi-asset inputs and outputs and a venue-native `raw` payload; this REST route contains only pair-shaped rows. Correlate `rfq_id` and `intent_id` to reconstruct a lifecycle. SDK `to` is exclusive; REST `end` is inclusive. See the [SDK intent fields and examples](/schemas/intents-and-rfqs) for the nested event shape.

## Pagination

Pass `next_cursor` as `cursor` with the same filters. Stop when `has_more` is false, or when `next_cursor` is null for endpoints without `has_more`. A cursor is opaque; do not edit or reuse it with different filters.

## Errors

The OpenAPI contract lists `400`, `401`, `422`, `429`, `503`. Error responses use `error.code`, `error.message`, and `error.resolution`. Narrow an expensive query after `422`. Follow `Retry-After` after `429`.

For the machine-readable contract, see the [OpenAPI document](https://api.polaris.supply/openapi.json).
