---
title: "Resolve a symbol/slug/name to a coinId"
method: GET
path: "/api/agent/resolve"
tags: ["reads"]
---

# Resolve a symbol/slug/name to a coinId

`GET /api/agent/resolve`

## Request

- Base URL: `https://api.coinrithm.com`
- URL: `https://api.coinrithm.com/api/agent/resolve`
- Auth: HTTP bearer

Resolve a human symbol, slug, or name (e.g. "BTC", "ethereum") to a
CoinRithm `coinId` (UCID) plus disambiguating alternatives. Use this to
get the `coinId` the wallet/quote/order endpoints require — symbols are
not unique. Requires scope `read`.

## Query parameters

- `q` string, required

## Response `200`

OK

- object
  - `query` string
  - `match` object, nullable
    - `coinId` string
    - `slug` string
    - `symbol` string
    - `name` string
    - `marketCapRank` integer, nullable
    - `categories` string[]: CoinGecko sector tags (canonical English names).
  - `alternatives` object[]
    - `coinId` string
    - `slug` string
    - `symbol` string
    - `name` string
    - `marketCapRank` integer, nullable
    - `categories` string[]

## Other responses

- `400`: Invalid or missing parameters. On a route with a query allowlist, an undocumented query parameter returns `{"error": "unsupported_query_parameter", "message": "Unsupported query parameter: <key>. Supported: <keys>."}`.
- `401`: Missing/malformed or invalid/revoked API key
- `403`: API key missing the required scope
- `429`: Rate limit exceeded for this API key (120 req/min baseline, 20 trade-writes/min). Honor `Retry-After`, then resume; the `RateLimit-*` headers on every response let you pace proactively. (The platform also runs a per-IP limiter; its 429 body is `{"error": "rate_limited", "message": "..."}`.)

---

[API](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api.md) · [All operations](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api/llms.txt) · [OpenAPI document](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api/revisions/28fb59f285fe?raw)
