Dino Swap is the execution layer between treasury intent and settlement:
intent -> quote -> policy -> execute -> book
#Current status
Current production UX for Swap is available in Dino dashboard.
Public REST contract for Swap is being formalized. Until the public endpoints are announced, treat the following schema as the implementation target for planning and integration design.
#Planned endpoint model
#POST /v1/swap/quote
Request body:
{
"team_id": "team_xxx",
"sell_token": "USDC",
"buy_token": "ETH",
"sell_amount": "1000.00"
}
Response body:
{
"quote_id": "quote_xxx",
"provider": "0x",
"route": {},
"expected_buy_amount": "0.3412",
"estimated_fees": {
"network": "3.15",
"protocol": "0.42"
},
"slippage_bps": 100,
"expires_at": "2026-05-08T15:04:00.000Z"
}
#POST /v1/swap/policy-check
Request body:
{
"team_id": "team_xxx",
"quote_id": "quote_xxx",
"sell_token": "USDC",
"buy_token": "ETH",
"sell_amount": "1000.00",
"expected_buy_amount": "0.3412"
}
Response body:
{
"status": "pass",
"reasons": [],
"evaluated_at": "2026-05-08T15:03:35.000Z"
}
#POST /v1/swap/execute
Request body:
{
"team_id": "team_xxx",
"quote_id": "quote_xxx",
"confirmation_token": "confirm_xxx",
"idempotency_key": "idemp_xxx"
}
Response body:
{
"swap_id": "swap_xxx",
"execution_status": "submitted",
"tx_hash": "0xabc...",
"provider": "0x"
}
#GET /v1/swap/:swap_id
Response body:
{
"swap_id": "swap_xxx",
"execution_status": "confirmed",
"policy_status": "pass",
"tx_hash": "0xabc...",
"provider": "0x",
"updated_at": "2026-05-08T15:05:11.000Z"
}
#Suggested client flow
- Create quote.
- Run policy check.
- If policy passes, execute with idempotency key.
- Poll status until terminal state.
- Store receipt and accounting reference.
#Guardrails to design for
- Quote TTL: refresh expired quotes before execution.
- Idempotency: always provide a stable idempotency key on execute.
- Policy first: block execution on failed policy status.
- Auditability: persist
swap_id, provider, andtx_hash.