The endpoint
| Field | Value |
|---|---|
| Method | GET |
| Path | /api/v1/tokens |
| Base URL | https://stellar-swap.xoxno.com |
| Auth | None |
| Availability | Public |
| Rate limit | 100 requests per second per IP |
Request params
None. The endpoint returns the full token catalog from the current snapshot.Request
- cURL
- TypeScript
- Python
- Rust
Success response
Fields
| Field | Type | Description |
|---|---|---|
id | string | Canonical token identifier: Soroban C-strkey, XLM, or CODE:GISSUER. |
kind | string | native, classic, or soroban. |
decimals | number | Decimal precision used for amount conversion. |
sacPeer | string or null | Soroban Asset Contract peer for Classic assets, when known. |
code | string or null | Classic asset code, such as USDC. |
degree | number | Count of graph edges connected to the token in the current snapshot. |
Errors
| Status | Cause | Fix |
|---|---|---|
429 | Per-IP rate limit exceeded. | Back off and queue requests client-side. |
503 | Snapshot is unavailable or stale beyond service readiness. | Retry with backoff. |
Edge cases
| Case | Behavior | Client handling |
|---|---|---|
degree=0 | Token exists in the snapshot but has no routable edge. | Hide it from swap selectors or show it as unavailable. |
Classic asset has sacPeer | The token can map to a Soroban Asset Contract. | Use the SAC peer for Soroban-only flows. |
| Alias collision | Asset codes are not globally unique. | Store the canonical id, not only code. |
| Snapshot changes | Newly indexed pools can change the catalog. | Cache for short windows and refresh before quoting. |
Verify
Before quoting:- The selected token has
degree > 0. - Amount conversion uses that token’s
decimals. - Soroban flows use a C-strkey or SAC peer when needed.
- Direct-user Classic flows keep the full
CODE:GISSUERidentifier.

