Skip to main content
The Protocol API is the direction resolvers call on Utexo. Callbacks Utexo makes on the resolver are documented in the Resolver API.

Authentication

Every request must include your resolver API key:
Requests with missing or invalid keys are rejected.

Error envelope

Protocol errors use this envelope:

Discovery

GET /v1/networks

Lists supported networks. Response items include:

GET /v1/tokens

Lists supported tokens. Query parameters: Response:

GET /v1/resolvers/webhooks/public-key

Returns the Ed25519 public key used to verify webhook signatures.

Intents and swaps

GET /v1/intents/{id}

Retrieves an intent. Statuses: Notable fields (non-exhaustive): chain and token identifiers, source and destination addresses, resolver_id, deadline, nonce, amount lots and decimals, quote_id, slippage_tolerance_bps, intermediate-token bounds, affiliate_id, swap_type (standard or optimized), resolver_deposit_address, deposit_type (escrowed or direct), and lifecycle timestamps.

GET /v1/swaps/{intent_id}/swap

Retrieves the on-chain execution record for an intent. Notable fields: status, proxy_address, deposit/fulfill/withdraw/swap transaction hashes, intermediate-token data, and lifecycle timestamps.

Reporting transactions

Resolvers must report each on-chain step. For standard swaps, report in order: Deposit → Fulfill → Withdraw.

POST /v1/intents/{id}/deposit

POST /v1/intents/{id}/fulfill

signature is optional for EVM, Solana, and Tron. It is required for Bitcoin.

POST /v1/intents/batch/withdraw

Batched withdrawal reporting.
The source does not document the request or response schema for this endpoint. Confirm the payload with Utexo before implementing.
Optimized swaps report only the Swap step, but the source does not document the optimized swap reporting endpoint. See Validation Gaps.

Secret retrieval

GET /v1/intents/{id}/reveal-secret

POST /v1/intents/batch/reveal-secrets

Request:
Response:

Health

GET /v1/system/live

  • 200 — healthy
  • 500 — unhealthy
No response body is documented.