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

# Instruments API

> Look up instrument identities, contract details, and vendor symbol aliases.

The Instruments API provides a shared catalog of instrument identities and contract details. It accepts organization API keys, user bearer tokens, and service bearer tokens. Every authenticated caller reads the same catalog; no organization or `environment` filter is required.

Catalog coverage does not imply that a connected broker supports trading every listed asset class or venue. Check [broker capabilities](/pages/brokers/overview) before submitting an intent.

## Endpoints

| Method and path                       | Returns                                                     |
| ------------------------------------- | ----------------------------------------------------------- |
| `GET /v1/instruments`                 | A page of instrument records                                |
| `GET /v1/instruments/{instrument_id}` | One record by its stable platform UUID                      |
| `GET /v1/instruments/resolve`         | One record matching a vendor's `source` and `source_symbol` |

```bash theme={null}
curl "https://api.anthid.com/v1/instruments?asset_class=EQUITY&symbol=AAPL&limit=50" \
  -H "x-api-key: <YOUR_API_KEY>"
```

## Filtering and pagination

Listings default to `status=ACTIVE`, `sort_direction=Asc`, and `limit=50`. Limits are clamped to 1 through 500. Other status values are `INACTIVE`, `EXPIRED`, and `DELISTED`. Asset classes and statuses use uppercase wire values.

Use `asset_class`, `venue`, and `symbol` for an exact instrument lookup. Class-specific filters include `root`, `underlying`, `base_asset`, `quote_asset`, and `settlement`. Text filters are trimmed; blank values are ignored. `settlement` is normalized to uppercase. Symbols and venues retain their own spelling.

`expires_after` is an inclusive RFC 3339 lower bound, and `expires_before` is an exclusive upper bound. Instruments without an expiry do not match either bound. A lower bound at or after the upper bound returns `400`.

The response contains `data` and `next_cursor`. Pass a non-null cursor unchanged with the same filters and sort direction. Stop when it is null. Lowercase `asc` and `desc` are also accepted.

## Instrument identity and aliases

An `InstrumentRecord` contains `instrument_id`, `status`, `instrument`, `created_at`, `updated_at`, and `last_seen_at`. The UUID is stable across symbol renames. `last_seen_at` records the last catalog refresh that confirmed the instrument.

The nested `instrument` is tagged by `asset_class`. Its fields depend on that class, such as an equity's exchange or a futures contract's multiplier and expiration. Prices and quantities use decimal strings.

Alias resolution requires both `source` and `source_symbol`. Send the vendor's exact spelling; a symbol without its source is ambiguous. Missing or blank parameters return `400`; an unknown alias or instrument ID returns `404`.

An optional `instrument` on a broker event carries resolved metadata. An absent value means unknown metadata, not an equity assumption. The order's `symbol` remains its routing spelling.
