List supported assets
GET /capabilities/assets - Read crypto asset capability data for UI filtering and server validation.
0Gate is the primary public integration path for hosted payment, ramp, and swap experiences. Keep secret-key operations on your server and hand only browser-safe values to the widget.
Endpoint
| Field | Value |
|---|---|
| Method | GET |
| Path | /v1/capabilities/assets |
| Area | Capabilities |
| Operation id | listAssets |
| Auth boundary | Secret key from your server. |
Use it for
Read the crypto assets your account can transact in the active environment. Use it to populate asset pickers, validate an incoming asset symbol on your server before creating a session, and discover the on-chain networks (and contract addresses) each asset settles on.
Use this endpoint only for discovery. It is a read-only capability catalog — it never moves money, locks a quote, or creates a session.
Production rules
- Keep secret keys on your server. This endpoint requires an
sk_*key; a publishablepk_*key can only call embed-bootstrap. - Validate the resolved
side, asset symbol, and network on your server before quoting or creating a session. - This list is returned in full —
has_moreis alwaysfalse. Narrow results with theside,country_code, andcurrencyquery params rather than paging. - Branch on machine-readable fields (
symbol,active,networks[].chain) and theX-Request-Idheader, not on display strings. - Treat examples and placeholder values as fake data only.
Request
This is a GET with no body. All inputs are query parameters.
| Parameter | In | Required | Type | Use it for |
|---|---|---|---|---|
side | query | No | on_ramp / off_ramp | Filter to assets transactable on that side. Defaults to on_ramp when omitted. |
country_code | query | No | string (ISO 3166 alpha-2) | Region filter. A resolved-but-unsupported region returns an empty list; omitting it (and no edge geo) returns the full catalog. |
currency | query | No | string (ISO 4217) | Echoed onto the detailed record; pair it with side when previewing for a specific fiat. |
Region is resolved at the edge
When you omit country_code, the service falls back to the request's edge geo (cf-ipcountry) to resolve a region. Send an explicit country_code from your server when you want deterministic results independent of the caller's IP.
Response
Returns the shared list envelope. Each element of data is an asset object.
| Field | Type | Description |
|---|---|---|
object | string | Always list. |
data | array | The matching asset objects (see below). |
has_more | boolean | Always false. Capability lists are returned in full, not paged. |
url | string | Static path of this resource. Does not echo query params. |
Asset object
| Field | Type | Description |
|---|---|---|
object | string | Always asset. |
symbol | string | Asset symbol, for example USDC. Use this as the canonical id. |
name | string | Human-readable asset name; falls back to symbol. |
side | on_ramp / off_ramp | The side this record was resolved for. |
active | boolean | false when the asset is temporarily disabled — do not offer it. |
icon_url | string | null | Asset icon URL, or null. |
networks | array | Supported on-chain networks (see below). |
networks[].chain | string | Network/chain identifier. |
networks[].name | string | Display name for the network. |
networks[].contract_address | string | null | Token contract address on that chain, or null for a native asset. |
min_amount | string | null | Per-asset minimum, as a decimal string, or null when not set. |
max_amount | string | null | Per-asset maximum, as a decimal string, or null when not set. |
Examples
curl 'https://gate-api.0bit.app/v1/capabilities/assets?side=on_ramp&country_code=GB' \
-H "Authorization: Bearer sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"{
"object": "list",
"data": [
{
"object": "asset",
"symbol": "USDC",
"name": "USD Coin",
"side": "on_ramp",
"active": true,
"icon_url": "https://cdn.example/usdc.svg",
"networks": [
{
"chain": "ethereum",
"name": "ethereum",
"contract_address": "0x0000000000000000000000000000000000000000"
}
],
"min_amount": null,
"max_amount": null
}
],
"has_more": false,
"url": "/v1/capabilities/assets"
}Errors
All errors use the unified envelope and carry an X-Request-Id response header. Branch on code/type/statusCode, not on the free-form message.
{
"type": "unauthorized",
"code": "unauthorized",
"message": "Example auth error using fake data.",
"request_id": "req_test_000000000123",
"doc_url": null,
"statusCode": 401
}| Status | type | When it happens |
|---|---|---|
401 | unauthorized | Missing or invalid secret key. |
429 | rate_limited | Request throttled. Back off and retry. |
5xx | server_error | Transient server or upstream failure. Retry with backoff. |
An unsupported region is not an error
A resolved-but-unsupported country_code returns 200 with an empty data array — not a 4xx. Branch on the array length, not on the status code.
Related pages
Retrieve an asset
Read one asset capability record by symbol.
List supported currencies
Read fiat currency capability data before creating a session.
Check 0Gate eligibility
Probe region, currency, and asset eligibility in one call.
Errors
Handle the unified error envelope, request ids, and retries.
Public boundary
This reference covers partner-scoped capability discovery. Internal operations, administrative routes, settlement venues and providers, and unsupported availability claims are outside the public API contract.