0Bit Documentation

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

FieldValue
MethodGET
Path/v1/capabilities/assets
AreaCapabilities
Operation idlistAssets
Auth boundarySecret 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 publishable pk_* 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_more is always false. Narrow results with the side, country_code, and currency query params rather than paging.
  • Branch on machine-readable fields (symbol, active, networks[].chain) and the X-Request-Id header, 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.

ParameterInRequiredTypeUse it for
sidequeryNoon_ramp / off_rampFilter to assets transactable on that side. Defaults to on_ramp when omitted.
country_codequeryNostring (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.
currencyqueryNostring (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.

FieldTypeDescription
objectstringAlways list.
dataarrayThe matching asset objects (see below).
has_morebooleanAlways false. Capability lists are returned in full, not paged.
urlstringStatic path of this resource. Does not echo query params.

Asset object

FieldTypeDescription
objectstringAlways asset.
symbolstringAsset symbol, for example USDC. Use this as the canonical id.
namestringHuman-readable asset name; falls back to symbol.
sideon_ramp / off_rampThe side this record was resolved for.
activebooleanfalse when the asset is temporarily disabled — do not offer it.
icon_urlstring | nullAsset icon URL, or null.
networksarraySupported on-chain networks (see below).
networks[].chainstringNetwork/chain identifier.
networks[].namestringDisplay name for the network.
networks[].contract_addressstring | nullToken contract address on that chain, or null for a native asset.
min_amountstring | nullPer-asset minimum, as a decimal string, or null when not set.
max_amountstring | nullPer-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
}
StatustypeWhen it happens
401unauthorizedMissing or invalid secret key.
429rate_limitedRequest throttled. Back off and retry.
5xxserver_errorTransient 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.

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.

On this page