> For the complete documentation index, see [llms.txt](https://docs.ospree.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ospree.io/developers/travel-rule/openapi/tokens.md).

# Tokens

The tokens (assets) supported for travel-rule transfers.

## List Tokens

> Return the list of tokens supported by the Ospree Travel Rule module, including the Digital Token Identifier (DTI), symbol, and associated blockchain network, to help select the correct token for a transfer.\
> \
> \`dti\` is the stable identifier for a token. Every token listed here is accepted by \`POST /transfers\` when the transfer identifies its asset by \`dti\`, and every token that path accepts is listed here. The same \`chain\` and \`symbol\` can name several distinct assets (two USD Coins on \`arbitrum-one\`, for instance): \`name\` and \`contract\` tell them apart, and the \`chain\`+\`symbol\` form of \`POST /transfers\` cannot resolve such a pair — send those by \`dti\`.\
> \
> The \`chain\`, \`symbol\` and \`dti\` filters all match exactly. Filtering by \`dti\` returns the single asset that identifier names, which is the only way to address one asset of a pair that shares a \`chain\` and \`symbol\`.

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"tags":[{"name":"Tokens","description":"The tokens (assets) supported for travel-rule transfers."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ApiSuccessResponse_Page_ListTokensResponse__":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/Page_ListTokensResponse_"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[Page[ListTokensResponse]]"},"Page_ListTokensResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ListTokensResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0,"title":"Total"},"page":{"type":"integer","minimum":1,"title":"Page"},"size":{"type":"integer","minimum":1,"title":"Size"},"pages":{"type":"integer","minimum":0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ListTokensResponse]"},"ListTokensResponse":{"properties":{"chain":{"type":"string","title":"Chain","description":"Chain the asset lives on"},"symbol":{"type":"string","title":"Symbol","description":"Ticker recorded for the asset"},"name":{"type":"string","title":"Name","description":"Full name of the asset"},"dti":{"type":"string","title":"Dti","description":"Digital Token Identifier — the stable key for this asset"},"contract":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contract","description":"Contract address or other technical reference, where the registry records one. This is what distinguishes two assets that share a ticker on the same chain."},"decimals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Decimals","description":"Decimal precision, where the registry records one; null when it does not."},"dti_type":{"type":"integer","title":"Dti Type","description":"Registry asset type — 1 is a chain's native asset"}},"type":"object","required":["chain","symbol","name","dti","dti_type"],"title":"ListTokensResponse","description":"One sendable asset, as the DTI registry records it (issue #759)."},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/travelrule/tokens/":{"get":{"tags":["Tokens"],"summary":"List Tokens","description":"Return the list of tokens supported by the Ospree Travel Rule module, including the Digital Token Identifier (DTI), symbol, and associated blockchain network, to help select the correct token for a transfer.\n\n`dti` is the stable identifier for a token. Every token listed here is accepted by `POST /transfers` when the transfer identifies its asset by `dti`, and every token that path accepts is listed here. The same `chain` and `symbol` can name several distinct assets (two USD Coins on `arbitrum-one`, for instance): `name` and `contract` tell them apart, and the `chain`+`symbol` form of `POST /transfers` cannot resolve such a pair — send those by `dti`.\n\nThe `chain`, `symbol` and `dti` filters all match exactly. Filtering by `dti` returns the single asset that identifier names, which is the only way to address one asset of a pair that shares a `chain` and `symbol`.","operationId":"list_tokens_api_v2_travelrule_tokens__get","parameters":[{"name":"chain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by chain (exact match)","title":"Chain"},"description":"Filter by chain (exact match)"},{"name":"symbol","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by symbol (exact match)","title":"Symbol"},"description":"Filter by symbol (exact match)"},{"name":"dti","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by Digital Token Identifier (exact match, case-insensitive)","title":"Dti"},"description":"Filter by Digital Token Identifier (exact match, case-insensitive)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"A page of sendable assets, as the DTI registry records them.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_Page_ListTokensResponse__"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"422":{"description":"Unprocessable Entity - Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```
