# Untron
> Stablecoin rails for builders: a stable Bridge API, a raw V3 API, and protocol reference docs.
## How V3 Works
This page explains the core ideas behind V3 at a high level: the nouns you’ll see in the API, how they relate, and how to reason about system state.
### Mental model
Think in terms of:
* **intent-like actions** (what the user wants)
* **deterministic settlement** (what the system guarantees)
* **observability** (what you can prove from data)
### Core entities
* **Lease:** a long-lived “session” that groups activity and state over time.
* **Claim:** a unit of work/value that is created, tracked, and eventually settled (or expires).
* **Controller / executor:** the system components responsible for progressing state and performing execution.
* **Deposits / fills:** events and balances that connect external payment rails to on-chain or protocol settlement.
The exact shapes of these objects are defined by the API schema; the goal of this section is to help you understand how they fit together.
### Lifecycle (conceptual)
At a high level, flows look like:
* **Create:** a lease (and/or claim) is created.
* **Attribute:** deposits and other inputs are linked to protocol state.
* **Execute:** controllers/executors progress state and perform the required actions.
* **Settle:** outcomes are finalized and made observable via the API.
* **Expire / recover:** timeouts and recovery paths handle incomplete flows.
### Observability
For integrations and analytics, treat the API as the source of truth for the protocol’s current view of state, and prefer querying views/endpoints designed for aggregation (rather than reconstructing state from raw events).
### Next
* Read the V3 API overview: [V3 API](/v3-api)
* Start with the curated endpoint guides: [V3 API Endpoints](/v3-api/endpoints)
## V3 Reference
This section is for people who want to understand **how Untron V3 works**, not just how to call an endpoint.
What you’ll find here:
* protocol architecture & data flow
* intents / execution model
* invariants, failure modes, and safety properties
* token rails (USDT variants, CCTP, etc.) and how they’re normalized
### Next
* Start here: [How V3 Works](/v3-reference/how-it-works)
## V3 API
The **V3 API** is the direct interface to the Untron V3 protocol: more powerful, more granular, and **intentionally not as stable** as the Bridge API.
Use it when you want to build on V3 primitives, run analytics, or integrate deeply with how the protocol actually works — and you’re comfortable tracking schema changes over time.
:::warning[Expect change]
If you want a stable surface for stablecoin swapping/bridging, use **Bridge API**.
V3 API is for builders who want the raw protocol surface area.
:::
### What it is (and isn’t)
* **Is:** the protocol’s evolving API surface (tables, views, endpoints)
* **Isn’t:** a compatibility layer — breaking changes can happen as V3 evolves
### Endpoint docs
We document a small subset of endpoints as “docs-first” pages (with examples and gotchas), and use Scalar’s API Client for interactive requests.
* Start here: [V3 API Endpoints](/v3-api/endpoints)
### Next
* Head to the API reference: [V3 API Reference](/v3-api/reference)
## V3 API Reference
:::info[Note]
We intentionally keep the docs pages “native” and use Scalar’s API Client for interactive “Try it”.
If you want to inspect the raw spec directly, use the link below.
:::
* Raw spec: `https://api.untron.finance/v3/openapi.json`
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### What it does
Creates a lease and returns deterministic receiver addresses to fund, plus a `userop_hash` for tracking.
### Request
:::code-group
```bash [cURL]
curl -sS -X POST 'https://api.untron.finance/v3/realtor' \
-H 'content-type: application/json' \
-d '{
"lessee": "T…",
"beneficiary": "T…",
"target_chain_id": "eip155:42161",
"target_token": "usdc",
"duration_seconds": 86400,
"receiver_salt": "0x…"
}'
```
```json [Body]
{
"lessee": "T…",
"beneficiary": "T…",
"target_chain_id": "eip155:42161",
"target_token": "usdc",
"duration_seconds": 86400,
"receiver_salt": "0x…"
}
```
:::
### Response (200)
```json
{
"receiver_salt": "0x…",
"receiver_address_tron": "T…",
"receiver_address_evm": "0x…",
"nukeable_after": "2026-01-29T00:00:00.000Z",
"userop_hash": "0x…"
}
```
:::info[Example]
Example response. Values shown are illustrative; field names match the API schema.
:::
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/health'
```
:::
### Response (200)
```json
[{ "status": "ok" }]
```
:::info[Note]
Response shape may change over time. This page is a convenience, not a contract.
:::
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### What it does
Returns hub-indexed lease rows (current registry + some metadata).
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_leases?order=lease_id.desc&limit=10'
```
:::
### Response (200)
```json
[
{
"lease_id": "123",
"lease_number": "1",
"lessee": "T…",
"realtor": "T…",
"receiver_salt": "0x…",
"start_time": "2026-01-29T00:00:00.000Z",
"nukeable_after": "2026-01-29T00:00:00.000Z",
"lease_fee_ppm": "1500",
"flat_fee": "0",
"valid_from_seq": "0",
"valid_to_seq": "0"
}
]
```
:::info[Example]
Example response. Values shown are illustrative; field names match the API schema.
:::
## V3 API Endpoints
These pages are intentionally “docs-first”: we explain what to query, how filtering works, and what to expect back.
Use the **Try it** panel on each endpoint to open Scalar’s API Client modal.
:::info[Spec source]
`https://api.untron.finance/v3/openapi.json`
:::
### Query style (high level)
Many V3 endpoints behave like database views:
* most endpoints are `GET` and return arrays
* you can filter via query params (and some endpoints support `select`, `order`, `limit`, `offset`)
When in doubt, open the endpoint in the client and let it generate a working request.
### Realtor endpoints
* Overview: [Realtor module](/v3-api/endpoints/realtor-module)
* [GET /realtor](/v3-api/endpoints/realtor)
* [POST /realtor](/v3-api/endpoints/create-lease)
* [POST /payout\_config](/v3-api/endpoints/payout-config)
* [`GET /leases/{lease_id}`](/v3-api/endpoints/lease-by-id)
### Indexer endpoints
* Overview: [Indexer endpoints](/v3-api/endpoints/indexer)
* Auto-generated coverage for every endpoint: [Generated endpoints](/v3-api/endpoints/generated)
## Indexer endpoints
Most V3 endpoints are **PostgREST-style views** over the indexer database. They’re powerful for analytics and dashboards, but they’re not as “product-stable” as the Bridge API.
### What to expect
* Most endpoints are `GET` and return **arrays**.
* Filtering is done via query parameters.
* Many endpoints support common PostgREST-style params like `select`, `order`, `limit`, `offset` (and headers like `Range`).
### Where to start
* Aggregated lease state: [GET /lease\_view](/v3-api/endpoints/lease-view)
* Raw hub registry: [GET /hub\_leases](/v3-api/endpoints/hub-leases)
* USDT deposit timeline: [GET /usdt\_deposit\_txs](/v3-api/endpoints/usdt-deposit-txs)
### Full coverage
We also ship auto-generated pages for every endpoint, linked in the sidebar under **Indexer endpoints → All endpoints**:
* [Generated endpoints](/v3-api/endpoints/generated)
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/leases/123'
```
:::
### Response (200)
```json
{
"lease_id": "123",
"lease_nonce": "0",
"lessee": "T…",
"realtor": "T…",
"receiver_salt": "0x…",
"receiver_address_tron": "T…",
"receiver_address_evm": "0x…",
"start_time": "2026-01-29T00:00:00.000Z",
"nukeable_after": "2026-01-29T00:00:00.000Z",
"lease_fee_ppm": "1500",
"flat_fee": "0",
"claims_total": "0",
"claims_filled": "0",
"claims": "0",
"pending_usdt_deposits_total": "0",
"pending_usdt_deposits_amount": "0",
"pending_usdt_deposits": "0"
}
```
:::info[Example]
Example response. Values shown are illustrative; field names match the API schema.
:::
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/lease_view?order=lease_id.desc&limit=25'
```
:::
### Response (200)
```json
[
{
"lease_id": "123",
"lease_number": "1",
"lease_nonce": "0",
"lessee": "T…",
"realtor": "T…",
"receiver_address_tron": "T…",
"receiver_address_evm": "0x…",
"receiver_salt": "0x…",
"start_time": "2026-01-29T00:00:00.000Z",
"nukeable_after": "2026-01-29T00:00:00.000Z",
"lease_fee_ppm": "1500",
"flat_fee": "0",
"claims_total": "0",
"claims_filled": "0",
"claims": "0",
"pending_usdt_deposits_total": "0",
"pending_usdt_deposits_amount": "0",
"pending_usdt_deposits": "0"
}
]
```
:::info[Example]
Example response. Values shown are illustrative; field names match the API schema.
:::
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### What it does
Submits a signed payout config update and returns a `userop_hash` you can track.
### Request
:::code-group
```bash [cURL]
curl -sS -X POST 'https://api.untron.finance/v3/payout_config' \
-H 'content-type: application/json' \
-d '{
"lease_id": "123",
"beneficiary": "T…",
"target_chain_id": "eip155:42161",
"target_token": "usdc",
"deadline": "2026-01-29T00:00:00.000Z",
"signature": "0x…"
}'
```
```json [Body]
{
"lease_id": "123",
"beneficiary": "T…",
"target_chain_id": "eip155:42161",
"target_token": "usdc",
"deadline": "2026-01-29T00:00:00.000Z",
"signature": "0x…"
}
```
:::
### Response (200)
```json
{ "userop_hash": "0x…" }
```
:::info[Example]
Example response. Values shown are illustrative; field names match the API schema.
:::
## Realtor endpoints
The **Realtor module** is the “active” part of the V3 API — the endpoints you call to **manage leases**.
Unlike most V3 endpoints (which are PostgREST views over the indexer DB), these endpoints behave more like an application API:
* They create/update protocol state (via relayed / gasless operations).
* They return tracking identifiers (e.g. `userop_hash`) and computed addresses.
* They are the endpoints most likely to have product-level semantics (and therefore the ones we prioritize in docs).
### Core endpoints
* `GET /realtor` – fetch realtor terms, limits, and supported pairs.
* `POST /realtor` – create a lease (returns receiver addresses + `userop_hash`).
* `POST /payout_config` – update payout configuration (gasless relay; returns `userop_hash`).
* `GET /leases/{lease_id}` – fetch the aggregated lease view for a single lease id.
### Typical flow
1. Call `GET /realtor` to confirm you’re allowed and to read terms.
2. Call `POST /realtor` to create a lease and get receiver addresses.
3. Watch the lease/indexer state via `GET /leases/{lease_id}` (and/or indexer views).
4. Update payout config via `POST /payout_config` when needed.
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### What it does
Returns the effective realtor configuration for the caller (and whether they’re allowed).
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/realtor'
```
:::
### Response (200)
```json
{
"allowed": true,
"realtor_address": "T…",
"user": "…",
"supported_pairs": [],
"default_fee_ppm": 1500,
"default_flat_fee": "0",
"default_duration_seconds": 86400,
"effective_duration_seconds": 86400,
"lease_rate_window_seconds": 60,
"lease_rate_max_leases": 10,
"lease_rate_remaining": 10,
"min_fee_ppm": 0,
"min_flat_fee": "0",
"max_duration_seconds": 2592000,
"arbitrary_lessee_flat_fee": false,
"untron_v3": "…"
}
```
:::info[Example]
Example response. Values shown are illustrative; field names match the API schema.
:::
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/usdt_deposit_txs?order=block_number.desc&limit=50'
```
:::
### Response (200)
```json
[
{
"chain_id": "tron:0x2b6653dc",
"block_number": "0",
"block_timestamp": "2026-01-29T00:00:00.000Z",
"log_index": "0",
"sender": "T…",
"recipient": "T…",
"token": "T…",
"amount": "0",
"receiver_salt": "0x…",
"recommended_action": "pending",
"deposit_processed": false
}
]
```
:::info[Example]
Example response. Values shown are illustrative; field names match the API schema.
:::
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/active_leases_daily'
```
:::
### Response
```json
[
{
"day": "…",
"leases_active": 0,
"leases_ended": 0,
"leases_started": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/claim_fill_latency_daily'
```
:::
### Response
```json
[
{
"avg_seconds": "…",
"day": "…",
"filled_claims_total": 0,
"p50_seconds": 0,
"p90_seconds": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/claim_usdt_deposit_attribution'
```
:::
### Response
```json
[
{
"claim_id": "…",
"lease_id": "…",
"usdt_deposit_attribution": {}
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/claims_created_daily'
```
:::
### Response
```json
[
{
"amount_usdt_total": "…",
"claims_created_pre_entitle": 0,
"claims_created_receiver_pull": 0,
"claims_created_subjective_pre_entitle": 0,
"claims_created_total": 0,
"day": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/claims_filled_daily'
```
:::
### Response
```json
[
{
"amount_usdt_total": "…",
"claims_filled_total": 0,
"day": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_executor'
```
:::
### Response
```json
[
{
"executor": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_lp_exchange_rates'
```
:::
### Response
```json
[
{
"exchange_rate": "…",
"token": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_lp'
```
:::
### Response
```json
[
{
"lp": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_lp_tokens_withdrawn'
```
:::
### Response
```json
[
{
"amount": "…",
"event_seq": 0,
"token": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_owner'
```
:::
### Response
```json
[
{
"owner": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_payloads'
```
:::
### Response
```json
[
{
"payload": "…",
"rebalancer": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_pulled_from_receiver'
```
:::
### Response
```json
[
{
"event_seq": 0,
"exchange_rate": "…",
"receiver_salt": "…",
"token": "…",
"token_amount": "…",
"usdt_amount": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_receivers'
```
:::
### Response
```json
[
{
"receiver": "…",
"receiver_salt": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_tip_proofs'
```
:::
### Response
```json
[
{
"block_hash": "…",
"block_number": 0,
"block_time": "…",
"block_timestamp": 0,
"caller": "…",
"log_index": 0,
"proved_tip": "…",
"tx_hash": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_usdt'
```
:::
### Response
```json
[
{
"usdt": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_usdt_rebalanced'
```
:::
### Response
```json
[
{
"event_seq": 0,
"in_amount": "…",
"out_amount": "…",
"rebalancer": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/controller_usdt_transfers'
```
:::
### Response
```json
[
{
"amount": "…",
"event_seq": 0,
"recipient": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/event_appended'
```
:::
### Response
```json
[
{
"abi_encoded_event_data": "…",
"args": {},
"block_hash": "…",
"block_number": 0,
"block_time": "…",
"block_timestamp": 0,
"event_seq": 0,
"event_signature": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/health'
```
:::
### Response
```json
[
{
"status": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_bridgers'
```
:::
### Response
```json
[
{
"bridger": "…",
"target_chain_id": 0,
"target_token": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_chains'
```
:::
### Response
```json
[
{
"deprecated": false,
"target_chain_id": 0,
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_claim_first_versions'
```
:::
### Response
```json
[
{
"amount_usdt": "…",
"beneficiary": "…",
"claim_id": "…",
"created_from_seq": 0,
"lease_id": "…",
"origin": 0,
"origin_timestamp": 0,
"target_chain_id": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_claims'
```
:::
### Response
```json
[
{
"amount_usdt": "…",
"beneficiary": "…",
"claim_id": "…",
"lease_id": "…",
"origin": 0,
"origin_actor": "…",
"origin_id": "…",
"origin_raw_amount": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_controller_processed'
```
:::
### Response
```json
[
{
"abi_encoded_event_data": "…",
"block_number": 0,
"block_timestamp": 0,
"event_index": "…",
"event_seq": 0,
"event_signature": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_controller_state'
```
:::
### Response
```json
[
{
"last_controller_event_seq": "…",
"last_controller_event_tip": "…",
"next_controller_event_index": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_controller_tip_updates'
```
:::
### Response
```json
[
{
"abi_encoded_event_data": "…",
"block_number": 0,
"block_timestamp": 0,
"event_seq": 0,
"event_signature": "…",
"previous_tip": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_lease_nonces'
```
:::
### Response
```json
[
{
"lease_id": "…",
"nonce": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_leases'
```
:::
### Response
```json
[
{
"flat_fee": "…",
"lease_fee_ppm": 0,
"lease_id": "…",
"lease_number": "…",
"lessee": "…",
"nukeable_after": 0,
"realtor": "…",
"receiver_salt": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_lp_allowlist'
```
:::
### Response
```json
[
{
"allowed": false,
"lp": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_lp_balances'
```
:::
### Response
```json
[
{
"balance": "…",
"lp": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_lp_vault_events'
```
:::
### Response
```json
[
{
"amount": "…",
"event_seq": 0,
"kind": "…",
"lp": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_ownership'
```
:::
### Response
```json
[
{
"new_owner": "…",
"old_owner": "…",
"valid_from_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_payout_configs'
```
:::
### Response
```json
[
{
"beneficiary": "…",
"lease_id": "…",
"target_chain_id": 0,
"target_token": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_protocol_config'
```
:::
### Response
```json
[
{
"floor_flat_fee": "…",
"floor_ppm": 0,
"lessee_rate_max_updates": "…",
"lessee_rate_window_seconds": "…",
"max_lease_duration_seconds": 0,
"tron_reader": "…",
"tron_usdt": "…",
"usdt": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_protocol_pnl'
```
:::
### Response
```json
[
{
"delta": "…",
"pnl": "…",
"reason": 0,
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_realtors'
```
:::
### Response
```json
[
{
"allowed": false,
"lease_rate_max_leases": "…",
"lease_rate_window_seconds": "…",
"max_lease_duration_seconds": 0,
"min_fee_ppm": 0,
"min_flat_fee": "…",
"realtor": "…",
"valid_from_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_swap_rates'
```
:::
### Response
```json
[
{
"rate_ppm": 0,
"target_token": "…",
"valid_from_seq": 0,
"valid_to_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/hub_tokens_rescued'
```
:::
### Response
```json
[
{
"amount": "…",
"event_seq": 0,
"token": "…"
}
]
```
## Generated endpoints
This section contains auto-generated pages for **every** V3 endpoint, generated from the published OpenAPI schema.
They’re useful for discovery and quick schema lookups.
For the key flows (Realtor module + leases), start with the curated pages in [V3 API Endpoints](/v3-api/endpoints).
:::info[Spec source]
`https://api.untron.finance/v3/openapi.json`
:::
### Realtor module (prioritized)
* [GET /realtor](/v3-api/endpoints/realtor)
* [POST /realtor](/v3-api/endpoints/create-lease)
* [POST /payout\_config](/v3-api/endpoints/payout-config)
* [`GET /leases/{lease_id}`](/v3-api/endpoints/lease-by-id)
### All endpoints
Use the sidebar to browse the full list of generated endpoints.
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/lease_kpis'
```
:::
### Response
```json
[
{
"claims_amount_total": "…",
"claims_filled": 0,
"claims_latest_origin_timestamp": 0,
"claims_total": 0,
"deposits_amount_total": "…",
"deposits_latest_block_timestamp": 0,
"deposits_total": 0,
"lease_id": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/lease_view'
```
:::
### Response
```json
[
{
"claims": {},
"claims_filled": 0,
"claims_total": 0,
"flat_fee": "…",
"lease_fee_ppm": 0,
"lease_id": "…",
"lease_nonce": "…",
"lease_number": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/leases_ending_daily'
```
:::
### Response
```json
[
{
"day": "…",
"leases_ending_total": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
Realtor module.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/leases/123'
```
:::
### Response
```json
{
"claims": [],
"claims_filled": 0,
"claims_total": 0,
"flat_fee": "0",
"is_owned_by_this_realtor": true,
"lease_fee_ppm": 10000,
"lease_id": "1",
"lease_nonce": "0"
}
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/leases_started_daily'
```
:::
### Response
```json
[
{
"day": "…",
"leases_started_total": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
Realtor module.
:::
### Request
:::code-group
```bash [cURL]
curl -sS -X POST 'https://api.untron.finance/v3/payout_config' \\
-H 'content-type: application/json' \\
-d '{
"beneficiary": "0x0000000000000000000000000000000000000003",
"deadline": 1700000000,
"lease_id": 1,
"signature": "0x",
"target_chain_id": 1,
"target_token": "0x0000000000000000000000000000000000000002"
}'
```
```json [Body]
{
"beneficiary": "0x0000000000000000000000000000000000000003",
"deadline": 1700000000,
"lease_id": 1,
"signature": "0x",
"target_chain_id": 1,
"target_token": "0x0000000000000000000000000000000000000002"
}
```
:::
### Response
```json
{
"userop_hash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/protocol_pnl_timeseries'
```
:::
### Response
```json
[
{
"block_time": "…",
"block_timestamp": 0,
"delta": "…",
"pnl": "…",
"reason": 0,
"valid_from_seq": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/realtor_deposits_daily'
```
:::
### Response
```json
[
{
"amount_total": "…",
"day": "…",
"deposits_total": 0,
"leases_touched": 0,
"realtor": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/realtor_effective_config'
```
:::
### Response
```json
[
{
"allowed": false,
"lease_rate_max_leases": "…",
"lease_rate_remaining": "…",
"lease_rate_window_seconds": "…",
"max_duration_seconds": 0,
"min_fee_ppm": 0,
"min_flat_fee": "…",
"realtor": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
Realtor module.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/realtor'
```
:::
### Response
```json
{
"allowed": true,
"arbitrary_lessee_flat_fee": 0,
"default_duration_seconds": 2592000,
"default_fee_ppm": 10000,
"default_flat_fee": 0,
"effective_duration_seconds": 2592000,
"lease_rate_max_leases": 0,
"lease_rate_remaining": 0
}
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
Realtor module.
:::
### Request
:::code-group
```bash [cURL]
curl -sS -X POST 'https://api.untron.finance/v3/realtor' \\
-H 'content-type: application/json' \\
-d '{
"beneficiary": "0x0000000000000000000000000000000000000003",
"duration_seconds": 2592000,
"lessee": "0x0000000000000000000000000000000000000001",
"receiver_salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"target_chain_id": 1,
"target_token": "0x0000000000000000000000000000000000000002"
}'
```
```json [Body]
{
"beneficiary": "0x0000000000000000000000000000000000000003",
"duration_seconds": 2592000,
"lessee": "0x0000000000000000000000000000000000000001",
"receiver_salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"target_chain_id": 1,
"target_token": "0x0000000000000000000000000000000000000002"
}
```
:::
### Response
```json
{
"nukeable_after": 1700000000,
"receiver_address_evm": "0x0000000000000000000000000000000000000000",
"receiver_address_tron": "TX9xZ4mV2h4h9qv7q8qXbW1d7m8m1y1y1y",
"receiver_salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"userop_hash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/receiver_salt_candidates'
```
:::
### Response
```json
[
{
"balance_amount": "…",
"has_balance": false,
"is_free": false,
"nukeable_after": 0,
"receiver": "…",
"receiver_evm": "…",
"receiver_salt": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/receiver_usdt_balances'
```
:::
### Response
```json
[
{
"balance_amount": "…",
"incoming_amount": "…",
"pulled_amount": "…",
"receiver": "…",
"receiver_evm": "…",
"receiver_salt": "…",
"token": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/receiver_usdt_indexer_status'
```
:::
### Response
```json
[
{
"backfill_pending_receivers": 0,
"min_backfill_next_block": 0,
"receiver_count": 0,
"stream": "…",
"tail_next_block": 0,
"tail_updated_at": "…",
"watchlist_updated_at": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/receiver_usdt_transfer_actionability'
```
:::
### Response
```json
[
{
"amount": "…",
"block_hash": "…",
"block_number": 0,
"block_time": "…",
"block_timestamp": 0,
"chain_id": 0,
"claim_amount_usdt": "…",
"claim_id": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/relayer_hub_state'
```
:::
### Response
```json
[
{
"last_controller_event_seq": "…",
"last_controller_event_tip": "…",
"next_controller_event_index": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/stream_cursor'
```
:::
### Response
```json
[
{
"applied_through_seq": 0,
"stream": "…",
"tip": "…",
"updated_at": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/stream_ingest_summary'
```
:::
### Response
```json
[
{
"applied_through_seq": 0,
"is_projection_caught_up": false,
"max_block_number": 0,
"max_block_time": "…",
"max_block_timestamp": 0,
"max_event_seq": 0,
"stream": "…",
"tip": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/unaccounted_receiver_usdt_transfers'
```
:::
### Response
```json
[
{
"amount": "…",
"block_hash": "…",
"block_number": 0,
"block_time": "…",
"block_timestamp": 0,
"chain_id": 0,
"expected_lease_id": "…",
"log_index": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/usdt_deposit_backlog_age_buckets'
```
:::
### Response
```json
[
{
"age_bucket": "…",
"amount_total": "…",
"deposits_total": 0,
"recommended_action": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/usdt_deposit_backlog_summary'
```
:::
### Response
```json
[
{
"amount_total": "…",
"deposits_total": 0,
"newest_block_timestamp": 0,
"oldest_block_timestamp": 0,
"recommended_action": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/usdt_deposit_funnel_daily'
```
:::
### Response
```json
[
{
"amount_total": "…",
"day": "…",
"deposits_total": 0,
"stage": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/usdt_deposit_txs'
```
:::
### Response
```json
[
{
"amount": "…",
"block_hash": "…",
"block_number": 0,
"block_time": "…",
"block_timestamp": 0,
"chain_id": 0,
"claim_amount_usdt": "…",
"claim_id": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/usdt_deposits_cumulative'
```
:::
### Response
```json
[
{
"amount_total": "…",
"amount_total_cum": "…",
"day": "…",
"deposits_total": 0,
"deposits_total_cum": 0
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/usdt_deposits_daily_by_action'
```
:::
### Response
```json
[
{
"amount_total": "…",
"day": "…",
"deposits_total": 0,
"recommended_action": "…"
}
]
```
import { EndpointLayout } from '../../../../components/EndpointLayout'
import { EndpointAside } from '../../../../components/EndpointAside'
}
>
:::info[Category]
PostgREST view.
:::
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/v3/usdt_deposits_daily'
```
:::
### Response
```json
[
{
"amount_total": "…",
"day": "…",
"deposits_total": 0,
"leases_touched": 0,
"unique_receivers": 0,
"unique_senders": 0
}
]
```
## APIs & access
### Which API should I use?
Use the **Untron Bridge API** if you want a stable, product-facing surface for stablecoin swapping and bridging:
* Bridge API overview: [Bridge API](/bridge-api)
* Bridge API reference: [Bridge API Reference](/bridge-api/reference)
Use the **Untron V3 API** if you want the raw protocol surface (more power, more churn) for builders and analytics:
* V3 API overview: [V3 API](/v3-api)
* V3 API reference: [V3 API Reference](/v3-api/reference)
* Curated guides: [V3 API Endpoints](/v3-api/endpoints)
If you want the concepts behind the protocol (not just endpoints), start with:
* [V3 Reference](/v3-reference)
### API keys
Requests that **write** (for example `POST`, `PUT`, `PATCH`, `DELETE`) require an API key.
One API key can be reused across Untron APIs.
We don’t have a self-serve integration panel yet — to get an API key, contact us at [contact@untron.finance](mailto\:contact@untron.finance).
## Untron
Untron is a set of stablecoin rails for builders.
If you’re integrating “send / swap / bridge stablecoins”, the goal is simple: **ship once, stay stable**, even as tokens, routers, and chain quirks change underneath you.
### What we ship
* **Untron Bridge API:** a stable, product-facing API for swapping and bridging stablecoins.
* **Untron V3 API:** a lower-level API for protocol builders, analytics, and deep integrations.
* **Untron V3 Reference:** conceptual docs for how the V3 protocol works.
### Where to go next
* Build a stable integration: [Bridge API](/bridge-api)
* Build on protocol primitives: [V3 API](/v3-api)
* Learn how V3 works: [V3 Reference](/v3-reference)
## Bridge API
Untron Bridge API is the boring part, done right: a **stable** interface for swapping and bridging stablecoins across chains and ecosystems — even as the underlying protocols, routers, and token standards keep changing.
If you’ve ever shipped with USDT variants, CCTP, chain quirks, or “one-off” bridges, you already know the pattern:
* Integrations break at the worst time.
* Small differences in token behavior become big production incidents.
* APIs drift, naming changes, semantics change — your code becomes a museum of exceptions.
The Bridge API is our answer: a **trusted, intent-style API** (NEAR Intents vibes) that lets you build stablecoin experiences without tracking every implementation detail.
:::tip[Think of it like…]
**Stripe for stablecoins**: you integrate once, Untron absorbs the churn.
:::
### What you get
:::steps
#### Stable surface area
Endpoints and semantics are designed to remain stable over time.
#### Protocol-powered execution
Behind the scenes, routing can use Untron V3, Untron Intents, and other mechanisms as they evolve.
#### Stablecoin hygiene
Convenient wrappers over messy realities (e.g. CCTP flows, USDT variants like USDT0), so your app can stay clean.
:::
### Who should use this
* Apps that want a single integration for “send / swap / bridge stablecoins”
* Teams optimizing for reliability and long-term maintenance
* Anyone who’d rather not become an expert in every new stablecoin rail
### Next
* Head to the API reference: [Bridge API Reference](/bridge-api/reference)
## Bridge API Reference
:::info[Note]
We intentionally keep the docs pages “native” and use Scalar’s API Client for interactive “Try it”.
If you want to inspect the raw spec directly, use the links below.
:::
* Raw spec (JSON): `https://api.untron.finance/bridge/v1/openapi.json`
* Raw spec (YAML): `https://api.untron.finance/bridge/v1/openapi.yaml`
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### What it does
Creates an order from a quote.
:::tip[Idempotency]
Send an `Idempotency-Key` header so retries are safe.
:::
### Request
:::code-group
```bash [cURL]
curl -sS -X POST 'https://api.untron.finance/bridge/v1/orders' \
-H 'content-type: application/json' \
-H 'idempotency-key: 8b0f3d6b-1d2d-4a0c-9f05-quote-to-order-1' \
-d '{
"quoteId": "qt_01JEXAMPLE",
"recipient": "eip155:42161:0xRecipientAddress"
}'
```
```json [Body]
{
"quoteId": "qt_01JEXAMPLE",
"recipient": "eip155:42161:0xRecipientAddress"
}
```
:::
### Response (201)
```json
{
"orderId": "ord_01JEXAMPLE",
"createdAt": "2026-01-29T00:00:10.000Z",
"status": "requires_funding",
"recipient": "eip155:42161:0xRecipientAddress",
"fees": [
{
"type": "ppm",
"ppm": 1500,
"chargedIn": "fromAsset",
"appliesTo": "acceptedAmount",
"proration": "proportional"
}
],
"refundPolicy": {
"mode": "automatic_if_supported",
"requiresRefundAddress": false,
"supportedRefundDestinations": [
{
"chainId": "eip155:1",
"assetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}
]
},
"amounts": {
"receivedAmount": "0",
"acceptedAmount": "0",
"remainingAmount": "1000000",
"excessAmount": "0",
"feePreview": { "feeTotal": "0", "effectiveInputAmount": "0" }
},
"pollAfterSeconds": 2
}
```
### Typical flow
1. `POST /v1/quotes` → get a quote
2. `POST /v1/orders` → create the order (idempotent)
3. Poll `GET /v1/orders/{orderId}` for status until complete
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### What it does
Creates a quote (“offer”) which:
* selects the best route right now
* has an expiry
* fully defines expected fees and deposit expectations
### Request
:::code-group
```bash [cURL]
curl -sS -X POST 'https://api.untron.finance/bridge/v1/quotes' \
-H 'content-type: application/json' \
-d '{
"fromAssetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"toAssetId": "eip155:42161/erc20:0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"fromAmount": "1000000",
"recipient": "eip155:42161:0xRecipientAddress",
"refundTo": "eip155:1:0xRefundAddress",
"slippageBps": 30
}'
```
```json [Body]
{
"fromAssetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"toAssetId": "eip155:42161/erc20:0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"fromAmount": "1000000",
"recipient": "eip155:42161:0xRecipientAddress",
"refundTo": "eip155:1:0xRefundAddress",
"slippageBps": 30
}
```
:::
### Response (200)
```json
{
"quoteId": "qt_01JEXAMPLE",
"expiresAt": "2026-01-29T00:10:00.000Z",
"fromAssetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"toAssetId": "eip155:42161/erc20:0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"fromAmount": "1000000",
"estimatedToAmount": "998500",
"fees": [
{
"type": "ppm",
"ppm": 1500,
"chargedIn": "fromAsset",
"appliesTo": "acceptedAmount",
"proration": "proportional"
}
],
"depositDefaults": {
"minAcceptedAmount": "1000000",
"maxAcceptedAmount": "1000000",
"underpayBehavior": "await_remainder",
"overpayBehavior": "refund_excess"
},
"refundPolicyPreview": {
"mode": "automatic_if_supported",
"supportedRefundDestinations": [
{
"chainId": "eip155:1",
"assetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}
]
},
"route": {
"kind": "bridge_then_swap",
"opaque": "base64/or/whatever"
}
}
```
### Typical flow
1. Call `POST /v1/quotes`
2. Display route + fees + expiry to the user
3. When accepted, call `POST /v1/orders` using the quote
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### What it does
Returns the live “graph” of what’s possible right now (chains, assets, routes).
This endpoint is descriptive only and does not create commitments.
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/bridge/v1/capabilities'
```
:::
### Response (200)
```json
{
"capabilitiesVersion": "2026-01-29T00:00:00.000Z",
"assetFamilies": [
{
"assetFamilyId": "usdc",
"symbol": "USDC",
"name": "USD Coin",
"currency": "USD",
"issuer": "circle",
"representations": [
{
"chainId": "eip155:1",
"assetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"decimals": 6
}
]
}
],
"routes": [
{
"fromChainId": "eip155:1",
"toChainId": "eip155:42161",
"pairs": [{ "fromFamily": "usdc", "toFamily": "usdc" }],
"features": { "partialFill": false, "overpayRefund": true, "refundDestinations": true }
}
],
"refundPolicyModes": ["automatic", "automatic_if_supported", "manual_required", "not_supported"]
}
```
### Common uses
* Populate chain/asset selectors
* Pre-validate a route before quoting
* Cache “what’s possible” with a short TTL (ETag supported)
import { EndpointLayout } from '../../../components/EndpointLayout'
import { EndpointAside } from '../../../components/EndpointAside'
}
>
### What it does
Fetches an order by id.
### Request
:::code-group
```bash [cURL]
curl -sS 'https://api.untron.finance/bridge/v1/orders/ord_01JEXAMPLE'
```
:::
### Response (200)
```json
{
"orderId": "ord_01JEXAMPLE",
"createdAt": "2026-01-29T00:00:10.000Z",
"status": "executing",
"recipient": "eip155:42161:0xRecipientAddress",
"fees": [
{
"type": "ppm",
"ppm": 1500,
"chargedIn": "fromAsset",
"appliesTo": "acceptedAmount",
"proration": "proportional"
}
],
"refundPolicy": {
"mode": "automatic_if_supported",
"requiresRefundAddress": false,
"supportedRefundDestinations": [
{
"chainId": "eip155:1",
"assetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}
]
},
"amounts": {
"receivedAmount": "1000000",
"acceptedAmount": "1000000",
"remainingAmount": "0",
"excessAmount": "0",
"feePreview": { "feeTotal": "1500", "effectiveInputAmount": "1000000" },
"estimatedToAmount": "998500"
},
"pollAfterSeconds": 2
}
```
### Notes
* Treat this endpoint as canonical (status, deposit instructions, settlement details).
* For long-running routes, poll with backoff.
import { EndpointAside } from '../../../components/EndpointAside'
## Bridge API Endpoints
These are Vocs-native endpoint pages with a **“Try it”** button that opens Scalar’s API Client modal.
:::info[Spec source]
These pages currently use `https://api.untron.finance/bridge/v1/openapi.json`.
:::
### Quick try-it
#### GET /v1/capabilities