{ "openapi": "3.0.0", "info": { "title": "Rhinestone Orchestrator API", "version": "2026-01.alps" }, "paths": { "/chains": { "get": { "operationId": "listChains", "parameters": [ { "name": "x-api-version", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "2026-01.alps" ] }, "description": "API version. Required; pinned to this document." } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the chain", "example": "Arbitrum One" }, "testnet": { "type": "boolean" }, "supportedTokens": { "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "object", "properties": { "symbol": { "type": "string" }, "address": { "type": "string", "minLength": 1, "description": "Token contract address (format depends on the chain)" }, "decimals": { "type": "number" } }, "required": [ "symbol", "address", "decimals" ] } } ] } }, "required": [ "name", "testnet", "supportedTokens" ] }, "description": "Supported chains and tokens, keyed by numeric chain id" } } } }, "400": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } } }, "summary": "Supported chains and tokens", "description": "Get supported chains and tokens with additional metadata", "tags": [ "Utilities" ] } }, "/liquidity": { "get": { "operationId": "listLiquidity", "parameters": [ { "name": "x-api-version", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "2026-01.alps" ] }, "description": "API version. Required; pinned to this document." }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string" }, "description": "API key." }, { "name": "sourceChainId", "in": "query", "required": true, "schema": { "type": "integer", "minimum": 1, "description": "Source chain ID", "example": 1 }, "description": "Source chain ID" }, { "name": "sourceToken", "in": "query", "required": true, "schema": { "type": "string", "description": "Source token address", "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, "description": "Source token address" }, { "name": "destinationChainId", "in": "query", "required": true, "schema": { "type": "integer", "minimum": 1, "description": "Destination chain ID", "example": 8453 }, "description": "Destination chain ID" }, { "name": "destinationToken", "in": "query", "required": true, "schema": { "type": "string", "minLength": 1, "description": "Destination token address (EVM 0x or non-EVM base58)", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "description": "Destination token address (EVM 0x or non-EVM base58)" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "symbol": { "type": "string", "description": "Destination token symbol", "example": "USDC" }, "decimals": { "type": "number", "description": "Destination token decimals", "example": 6 }, "unlimited": { "type": "boolean", "description": "True when an uncapped settlement layer (e.g. OFT) supports this route", "example": false }, "maxAmount": { "type": "string", "nullable": true, "description": "Largest known fillable amount for this token by a single relayer instance. Exact for relayer-market settlement layers (ACROSS, ECO); bridge-backed layers (Relay, NEAR, Rhino) return a conservative probed lower bound. Null when unlimited.", "example": "200000000000" } }, "required": [ "symbol", "decimals", "unlimited", "maxAmount" ] } } } }, "400": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "403": { "description": "API key scope denied", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } } }, "summary": "Route liquidity limit", "description": "Returns the largest known fillable amount for a single deposit on the given source→destination route. Relayer-market layers return exact capacity; bridge-backed layers return a conservative probed lower bound.", "tags": [ "Utilities" ] } }, "/intent-operation/{id}": { "get": { "operationId": "getIntent", "parameters": [ { "name": "x-api-version", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "2026-01.alps" ] }, "description": "API version. Required; pinned to this document." }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string" }, "description": "API key." }, { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^\\d+$", "description": "Unique identifier of the intent operation", "example": "77119256265773742309930654065362693497375232736834856992878277299604179621015" }, "description": "Unique identifier of the intent operation" }, { "name": "full", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to include intent operation details", "example": "true" }, "description": "Whether to include intent operation details" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "PENDING", "COMPLETED", "FAILED" ], "description": "Overall intent status: PENDING, COMPLETED, or FAILED", "example": "COMPLETED" }, "details": { "type": "object", "properties": { "id": { "type": "string", "description": "Intent id — pass to `GET /intents/:id`", "example": "12345678901234567890" }, "nonce": { "type": "string", "description": "Intent nonce (hex)", "example": "0x000000000000000000000000000000000000000000000000ab54a98ceb1f0ad2" }, "recipient": { "type": "string", "description": "Destination recipient account", "example": "0x3672e268a79bd4acc5ee646bdda652547c7a435c" }, "createdAt": { "type": "number", "description": "Intent creation time in unix seconds", "example": 1633493100 }, "latencyMs": { "type": "number", "nullable": true, "description": "Time from creation to the latest leg landing, in ms. Null until any leg lands.", "example": 8100 }, "settlementLayer": { "type": "string", "enum": [ "INTENT_EXECUTOR", "SAME_CHAIN", "ACROSS", "ECO", "RELAY", "OFT", "NEAR", "RHINO", "CCTP" ], "nullable": true, "description": "Settlement layer; null if the routing strategy is unrecognized", "example": "ACROSS" }, "source": { "type": "array", "items": { "type": "object", "properties": { "chain": { "type": "number", "description": "Chain ID", "example": 10 }, "tokens": { "type": "array", "items": { "type": "object", "properties": { "token": { "type": "string", "description": "Token address", "example": "0x0b2c639c533813f4aa9d7837caf62653d097ff85" }, "amount": { "type": "string", "description": "Token amount in base units", "example": "1000000" } }, "required": [ "token", "amount" ], "description": "A token moved on this leg" }, "description": "All tokens moved on this leg" }, "txHash": { "type": "string", "description": "Transaction hash (present once the leg lands)", "example": "0xc1674f4671accbceec3f22c2c9cfa4f7aead7183f48df90c239e0d85d6c31e21" }, "timestamp": { "type": "number", "description": "Block timestamp in unix seconds (present once landed)", "example": 1633493192 }, "status": { "type": "string", "enum": [ "PENDING", "COMPLETED", "FAILED" ], "description": "Leg status", "example": "COMPLETED" } }, "required": [ "chain", "tokens", "status" ], "description": "A single source or destination leg" }, "description": "Source (claim) legs" }, "destination": { "type": "object", "properties": { "chain": { "type": "number", "description": "Chain ID", "example": 10 }, "tokens": { "type": "array", "items": { "type": "object", "properties": { "token": { "type": "string", "description": "Token address", "example": "0x0b2c639c533813f4aa9d7837caf62653d097ff85" }, "amount": { "type": "string", "description": "Token amount in base units", "example": "1000000" } }, "required": [ "token", "amount" ], "description": "A token moved on this leg" }, "description": "All tokens moved on this leg" }, "txHash": { "type": "string", "description": "Transaction hash (present once the leg lands)", "example": "0xc1674f4671accbceec3f22c2c9cfa4f7aead7183f48df90c239e0d85d6c31e21" }, "timestamp": { "type": "number", "description": "Block timestamp in unix seconds (present once landed)", "example": 1633493192 }, "status": { "type": "string", "enum": [ "PENDING", "COMPLETED", "FAILED" ], "description": "Leg status", "example": "COMPLETED" } }, "required": [ "chain", "tokens", "status" ], "description": "Destination (fill) leg; null before a fill is dispatched", "nullable": true }, "executions": { "type": "array", "items": { "type": "object", "properties": { "chain": { "type": "number", "description": "Chain ID the call executes on", "example": 8453 }, "phase": { "type": "string", "enum": [ "PRE_CLAIM", "DESTINATION" ], "description": "PRE_CLAIM runs on the origin chain before funds are claimed; DESTINATION runs on the destination chain after funds are delivered.", "example": "DESTINATION" }, "to": { "type": "string", "description": "Call target address", "example": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" }, "value": { "type": "string", "description": "Native value sent with the call, in wei (base units)", "example": "0" }, "data": { "type": "string", "description": "Encoded calldata", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "chain", "phase", "to", "value", "data" ], "description": "A single call executed by the intent" }, "description": "Calls the intent executes — preClaim ops on their origin chain and destination ops on the destination chain. The signed intended calls; no per-call result is recorded. Empty for token-only intents with no custom calls." }, "cost": { "type": "object", "properties": { "sponsored": { "type": "boolean", "description": "Whether gas/fees were sponsored for this intent", "example": true }, "sponsoredValue": { "type": "string", "description": "Sponsored value in fee-token base units", "example": "210000" }, "protocolFee": { "type": "string", "description": "Protocol fee in fee-token base units", "example": "10000" } }, "required": [ "sponsored" ], "description": "Cost summary from the recorded fee sponsorship. Amounts are raw base units; omitted when no sponsorship row exists." } }, "required": [ "id", "nonce", "recipient", "createdAt", "latencyMs", "settlementLayer", "source", "destination", "executions", "cost" ], "description": "Extended intent details, returned only when `full=true`" }, "claims": { "type": "array", "items": { "type": "object", "properties": { "chainId": { "type": "number", "description": "Source chain ID", "example": 1 }, "status": { "type": "string", "enum": [ "PENDING", "COMPLETED", "FAILED" ], "description": "Claim status", "example": "COMPLETED" }, "claimTimestamp": { "type": "number", "description": "Block timestamp of the claim in unix seconds", "example": 1633493192 }, "claimTransactionHash": { "type": "string", "description": "Claim transaction hash", "example": "0xc1674f4671accbceec3f22c2c9cfa4f7aead7183f48df90c239e0d85d6c31e21" } }, "required": [ "chainId", "status" ], "description": "A single source-chain claim" }, "description": "Per-source-chain claims" }, "destinationChainId": { "type": "number", "description": "Destination (fill) chain ID", "example": 8453 }, "fillTimestamp": { "type": "number", "description": "Block timestamp of the fill in unix seconds", "example": 1633493192 }, "fillTransactionHash": { "type": "string", "description": "Fill transaction hash", "example": "0xc1674f4671accbceec3f22c2c9cfa4f7aead7183f48df90c239e0d85d6c31e21" }, "userAddress": { "type": "string", "description": "Account address", "example": "0x3672e268a79bd4acc5ee646bdda652547c7a435c" } }, "required": [ "status", "claims", "userAddress" ], "description": "Successfully retrieved intent operation status" } } } }, "400": { "description": "Invalid intent ID", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "403": { "description": "API key scope denied", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "404": { "description": "Intent ID not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } } }, "summary": "Get Intent", "description": "Retrieves the status of an intent along with per-claim progress across chains.", "tags": [ "Intents" ] } }, "/accounts/{accountAddress}/portfolio": { "get": { "operationId": "getPortfolio", "parameters": [ { "name": "x-api-version", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "2026-01.alps" ] }, "description": "API version. Required; pinned to this document." }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string" }, "description": "API key." }, { "name": "accountAddress", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "chainIds", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "tokens", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "filterEmpty", "in": "query", "required": false, "schema": { "default": false, "type": "boolean" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "portfolio": { "type": "array", "items": { "type": "object", "properties": { "balance": { "type": "object", "properties": { "locked": { "type": "string", "description": "Locked balance", "example": "0" }, "unlocked": { "type": "string", "description": "Unlocked balance", "example": "1000000" } }, "required": [ "locked", "unlocked" ], "description": "Top-level aggregate balance. `unlocked` is the raw sum of per-chain unlocked balances — numerically meaningful only when per-chain decimals match." }, "tokenName": { "type": "string", "description": "Short name (symbol) of the token", "example": "USDC" }, "tokenDecimals": { "type": "number", "minimum": 0, "description": "Token decimals, taken from the first per-chain entry", "example": 6 }, "tokenChainBalance": { "type": "array", "items": { "type": "object", "properties": { "chainId": { "type": "number", "minimum": 0, "description": "Chain ID where the token balance exists", "example": 1 }, "balance": { "type": "object", "properties": { "locked": { "type": "string", "description": "Locked balance", "example": "0" }, "unlocked": { "type": "string", "description": "Unlocked balance", "example": "1000000" } }, "required": [ "locked", "unlocked" ], "description": "Locked and unlocked balance on this chain" }, "tokenAddress": { "type": "string", "description": "Token contract address on this chain", "example": "0xa0B86A33e6441B8C4505B8C4505b8C4505B8C450" } }, "required": [ "chainId", "balance", "tokenAddress" ] }, "description": "Per-chain balances for this token" } }, "required": [ "balance", "tokenName", "tokenDecimals", "tokenChainBalance" ] }, "description": "Array of token portfolio entries" } }, "required": [ "portfolio" ] } } } }, "400": { "description": "Invalid request parameters", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "403": { "description": "API key scope denied", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } } }, "summary": "Get Account Portfolio", "description": "Retrieves the token balances across all supported chains for a user's abstracted account", "tags": [ "Utilities" ] } }, "/intent-operations": { "get": { "operationId": "listIntents", "parameters": [ { "name": "x-api-version", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "2026-01.alps" ] }, "description": "API version. Required; pinned to this document." }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string" }, "description": "API key." }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string", "pattern": "^\\d+$", "description": "Opaque cursor from a previous response (`pagination.nextCursor`). Omit for the first page.", "example": "1024" }, "description": "Opaque cursor from a previous response (`pagination.nextCursor`). Omit for the first page." }, { "name": "limit", "in": "query", "required": false, "schema": { "default": 20, "type": "integer", "minimum": 1, "maximum": 100, "description": "Max items per page (max 100)", "example": 20 }, "description": "Max items per page (max 100)" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Intent id — pass to `GET /intents/:id`", "example": "12345678901234567890" }, "status": { "type": "string", "enum": [ "PENDING", "COMPLETED", "FAILED" ], "description": "Overall intent status", "example": "COMPLETED" }, "fromChains": { "type": "array", "items": { "type": "number" }, "description": "Source chain IDs — one per distinct chain the intent spends on", "example": [ 1, 8453 ] }, "toChain": { "type": "number", "description": "Destination chain ID", "example": 10 }, "token": { "type": "string", "description": "Intent value token. The token delivered on the destination chain, or the spent token for same-chain intents (which have no persisted delivery).", "example": "0x0b2c639c533813f4aa9d7837caf62653d097ff85" }, "amount": { "type": "string", "description": "Intent value in base units — delivered on the destination chain, or spent for same-chain intents (which have no persisted delivery; for same-chain swaps this is the input, not the received amount).", "example": "1000000" }, "account": { "type": "string", "description": "Account that submitted the intent", "example": "0x3672e268a79bd4acc5ee646bdda652547c7a435c" }, "createdAt": { "type": "number", "description": "Intent creation time in unix seconds", "example": 1633493100 } }, "required": [ "id", "status", "fromChains", "account", "createdAt" ], "description": "A single intent list entry" }, "description": "Intents on this page, newest first" }, "pagination": { "type": "object", "properties": { "nextCursor": { "type": "string", "nullable": true, "description": "Pass as `cursor` to fetch the next page; null when no more results.", "example": "1024" }, "hasNextPage": { "type": "boolean", "example": true } }, "required": [ "nextCursor", "hasNextPage" ], "description": "Keyset pagination metadata" } }, "required": [ "data", "pagination" ], "description": "Paginated list of the client’s intents" } } } }, "400": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "403": { "description": "API key scope denied", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } } }, "summary": "List Intents", "description": "Retrieves a paginated list of the authenticated client's intents, newest first.", "tags": [ "Intents" ] }, "post": { "operationId": "createIntent", "parameters": [ { "name": "x-api-version", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "2026-01.alps" ] }, "description": "API version. Required; pinned to this document." }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string" }, "description": "API key." } ], "responses": { "201": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "result": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "string", "format": "uint256", "description": "Unique identifier", "example": "6288024828617617176235460836311142252483529646664720691654196790232050827264" }, "status": { "type": "string", "enum": [ "PENDING" ], "description": "Status of the intent operations" } }, "required": [ "id", "status" ] }, { "type": "object", "properties": { "id": { "type": "string", "format": "uint256", "description": "Nonce of the intent operations, used as identifier", "example": "1000000000000000000" }, "status": { "type": "string", "enum": [ "FAILED" ], "description": "Status of the intent operations" } }, "required": [ "id", "status" ] } ], "description": "Intent operation submission results" } }, "required": [ "result" ] } } } }, "400": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "403": { "description": "API key scope denied", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "404": { "description": "The quoted intent has expired or was already submitted. Request a new route to retry.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } } }, "summary": "Create Intent", "description": "Submits a quoted intent for execution. Takes the `intentId` from `POST /quotes` (`routes[].intentId`) plus signatures (origin, destination, optionally target-execution) and optional EIP-7702 authorizations.", "tags": [ "Intents" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "signedIntentOp": { "type": "object", "properties": { "sponsor": { "type": "string", "description": "Account whose funds the intent operation will spend. Identical to the account that signed the origin signatures — this field is named `sponsor` because in TheCompact it sponsors the resource-lock claim, not because there's a separate gas-sponsor party.", "example": "0x8a310b9085faF5d9464D84C3d9a7BE3b28c94531" }, "nonce": { "type": "string", "format": "uint256", "description": "Intent operation nonce — a one-time identifier scoped to the orchestrator's intent registry, not an EVM transaction nonce. Used to prevent replay of the same quote.", "example": "0" }, "targetExecutionNonce": { "type": "string", "format": "uint256", "description": "Nonce for the optional target-execution signature (smart-session flows). Omitted for EOA accounts.", "example": "0" }, "expires": { "type": "integer", "format": "int64", "description": "Unix timestamp (seconds) after which the orchestrator will refuse to submit this intent.", "example": 1733493192 }, "elements": { "type": "array", "items": { "type": "object", "properties": { "arbiter": { "type": "string", "description": "Contract that adjudicates settlement on this chain (TheCompact arbiter).", "example": "0x8a310b9085faF5d9464D84C3d9a7BE3b28c94531" }, "chainId": { "type": "string", "format": "uint256", "description": "Chain ID where the element is executed", "example": "1" }, "idsAndAmounts": { "type": "array", "items": {}, "description": "Resource-locked balances pledged on this chain, as `[ERC-6909 tokenId, amount]` pairs.", "example": [ [ "1", "1000000" ], [ "2", "2000000" ] ] }, "spendTokens": { "type": "array", "items": {}, "description": "Subset of `idsAndAmounts` actually drawn down to fund this element. Same `[ERC-6909 tokenId, amount]` shape.", "example": [ [ "1", "1000000" ], [ "2", "2000000" ] ] }, "mandate": { "type": "object", "properties": { "recipient": { "type": "string", "description": "Address that receives the output tokens on the destination chain.", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "tokenOut": { "type": "array", "items": {}, "description": "Tokens to deliver on the destination chain, as `[ERC-6909 tokenId, amount]` pairs.", "example": [ [ "1", "1000000" ], [ "2", "2000000" ] ] }, "destinationChainId": { "type": "string", "format": "uint256", "description": "Target chain ID for the mandate", "example": "8453" }, "fillDeadline": { "type": "integer", "format": "int64", "description": "Unix timestamp (seconds) after which the destination fill is no longer valid.", "example": 1733493192 }, "preClaimOps": { "type": "object", "properties": { "vt": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "ERC-7579 encoded execution mode (first byte) and signature mode (second byte) for `destinationOps` / `preClaimOps`. Pre-computed by the orchestrator — clients pass through unchanged.", "example": "0x0101000000000000000000000000000000000000000000000000000000000000" }, "ops": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "to", "value", "data" ] }, "description": "Array of operations to perform" } }, "required": [ "vt", "ops" ], "description": "Origin-chain ops that run immediately before funds are claimed by the relayer (e.g. user approvals, vault withdraws)." }, "destinationOps": { "type": "object", "properties": { "vt": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "ERC-7579 encoded execution mode (first byte) and signature mode (second byte) for `destinationOps` / `preClaimOps`. Pre-computed by the orchestrator — clients pass through unchanged.", "example": "0x0101000000000000000000000000000000000000000000000000000000000000" }, "ops": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "to", "value", "data" ] }, "description": "Array of operations to perform" } }, "required": [ "vt", "ops" ], "description": "Destination-chain ops that run after funds are delivered (e.g. user's target contract call)." }, "qualifier": { "type": "object", "properties": { "settlementContext": { "discriminator": { "propertyName": "settlementLayer" }, "oneOf": [ { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "INTENT_EXECUTOR" ], "description": "Settlement layer for the qualifier", "example": "INTENT_EXECUTOR" }, "using7579": { "type": "boolean", "description": "true for ERC7579 smart accounts, false for EOAs (MULTICALL execution)", "example": true }, "fundingMethod": { "type": "string", "enum": [ "NO_FUNDING" ], "description": "Must be NO_FUNDING for INTENT_EXECUTOR", "example": "NO_FUNDING" }, "gasRefund": { "type": "object", "properties": { "overhead": { "type": "string", "format": "uint256", "description": "Overhead gas amount add to gas spent when executing destination ops" }, "exchangeRate": { "type": "string", "format": "uint256", "description": "Exchange rate between token selected for gas refund and native token consumed for gas" }, "token": { "type": "string", "description": "token address which will be used for gas refunding" } }, "required": [ "overhead", "exchangeRate", "token" ], "description": "gas refund information" }, "prefundAmount": { "type": "string", "format": "uint256", "description": "Native token amount the relayer sends to the user before execution, e.g. the LayerZero `lzFee` required by OFT bridges. In wei." }, "erc20Prefund": { "type": "array", "items": { "type": "object", "properties": { "token": { "type": "string", "description": "ERC20 token the relayer sends to the user before execution" }, "amount": { "type": "string", "format": "uint256", "description": "ERC20 token amount in smallest units" } }, "required": [ "token", "amount" ] }, "description": "ERC20 token amounts the relayer sends to the user before execution, e.g. quote-embedded bridge fees sponsored via FeeCollector." }, "bridgeFill": { "discriminator": { "propertyName": "type" }, "oneOf": [ { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "OFT" ], "description": "LayerZero OFT" } }, "required": [ "destinationChainId", "type" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "RELAY" ], "description": "Relay.link" }, "requestId": { "type": "string", "description": "Relay.link request ID. Use against Relay.link's status API to track the destination-chain fill." } }, "required": [ "destinationChainId", "type", "requestId" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "NEAR" ], "description": "NEAR Intents" }, "depositAddress": { "type": "string", "description": "NEAR Intents deposit address. Track fill status via the NEAR Intents status API keyed on this address." } }, "required": [ "destinationChainId", "type", "depositAddress" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "RHINO" ], "description": "Rhino.fi" }, "commitmentId": { "type": "string", "description": "Rhino.fi commitment ID. Use against Rhino.fi's status API to track the destination-chain fill." } }, "required": [ "destinationChainId", "type", "commitmentId" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "CCTP" ], "description": "Circle CCTP" }, "sourceDomainId": { "type": "number", "description": "Circle CCTP source domain ID — needed to fetch the attestation for the burn message on the source chain." }, "destinationDomainId": { "type": "number", "description": "Circle CCTP destination domain ID." } }, "required": [ "destinationChainId", "type", "sourceDomainId", "destinationDomainId" ] } ], "description": "Bridge-as-fill metadata for cross-chain delivery tracking" }, "bridgeDestinationOps": { "type": "boolean", "enum": [ true ], "description": "Marks this IE element as the post-bridge destination-ops executor for a bridge-with-destination-ops intent. Distinguishes from same-chain IE elements (both have `bridgeFill === undefined`)." } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "gasRefund" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "SAME_CHAIN" ], "description": "Settlement layer for the qualifier", "example": "SAME_CHAIN" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "bridgeFill": { "discriminator": { "propertyName": "type" }, "oneOf": [ { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "OFT" ], "description": "LayerZero OFT" } }, "required": [ "destinationChainId", "type" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "RELAY" ], "description": "Relay.link" }, "requestId": { "type": "string", "description": "Relay.link request ID. Use against Relay.link's status API to track the destination-chain fill." } }, "required": [ "destinationChainId", "type", "requestId" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "NEAR" ], "description": "NEAR Intents" }, "depositAddress": { "type": "string", "description": "NEAR Intents deposit address. Track fill status via the NEAR Intents status API keyed on this address." } }, "required": [ "destinationChainId", "type", "depositAddress" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "RHINO" ], "description": "Rhino.fi" }, "commitmentId": { "type": "string", "description": "Rhino.fi commitment ID. Use against Rhino.fi's status API to track the destination-chain fill." } }, "required": [ "destinationChainId", "type", "commitmentId" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "CCTP" ], "description": "Circle CCTP" }, "sourceDomainId": { "type": "number", "description": "Circle CCTP source domain ID — needed to fetch the attestation for the burn message on the source chain." }, "destinationDomainId": { "type": "number", "description": "Circle CCTP destination domain ID." } }, "required": [ "destinationChainId", "type", "sourceDomainId", "destinationDomainId" ] } ], "description": "Bridge-as-fill metadata for cross-chain delivery tracking" } }, "required": [ "settlementLayer", "using7579", "fundingMethod" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "ACROSS" ], "description": "Settlement layer for the qualifier", "example": "ACROSS" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" } }, "required": [ "settlementLayer", "using7579", "fundingMethod" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "ECO" ], "description": "Settlement layer for the qualifier", "example": "ECO" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "provingFee": { "type": "string", "format": "uint256", "description": "Hyperlane relay fee for proof dispatch (in destination chain native token)" } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "provingFee" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "RELAY" ], "description": "Settlement layer for the qualifier", "example": "RELAY" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "requestId": { "type": "string", "description": "Relay.link request ID for this route. Surfaces in the relayer-market broadcast — opaque to the client." }, "orderId": { "type": "string", "description": "Relay v2 order ID used in the deposit contract calldata" }, "subsidizedAmount": { "type": "string", "description": "Relay settlement layer subsidized amount on the intent (denomination in USDC)" }, "multicallData": { "type": "string", "description": "ABI-encoded params for IRelayRouterV3.multicall, used for origin swaps via Relay contracts" }, "executionValidationGas": { "type": "string", "format": "uint256", "description": "Gas overhead the relayer must reserve for validating the execution on the origin chain. Used internally for origin gas accounting." } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "requestId", "orderId" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "NEAR" ], "description": "Settlement layer for the qualifier", "example": "NEAR" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "depositAddress": { "type": "string", "description": "NEAR-provided deposit address on the origin chain" }, "correlationId": { "type": "string", "description": "NEAR correlation ID for tracking the intent" } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "depositAddress", "correlationId" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "RHINO" ], "description": "Settlement layer for the qualifier", "example": "RHINO" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "quoteId": { "type": "string", "description": "Rhino.fi quote identifier — committed quote that becomes the commitmentId for the on-chain deposit" } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "quoteId" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "CCTP" ], "description": "Settlement layer for the qualifier", "example": "CCTP" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "sourceDomainId": { "type": "number", "description": "CCTP source domain ID" }, "destinationDomainId": { "type": "number", "description": "CCTP destination domain ID" } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "sourceDomainId", "destinationDomainId" ] } ] }, "encodedVal": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "ABI-encoded settlement-layer witness data. Format depends on `settlementContext.settlementLayer`. Clients should treat this as opaque bytes and pass through unchanged.", "example": "0x..." } }, "required": [ "settlementContext", "encodedVal" ], "description": "Settlement-layer-specific witness data binding this mandate to a relayer route." }, "minGas": { "type": "string", "format": "uint256", "description": "Minimum gas reserved for pre-claim ops on this chain, in gas units. Packed with `preClaimGasStipend` as `uint128` for the settlement contract.", "example": "0" }, "swapDestinations": { "type": "array", "items": { "type": "object", "properties": { "tokenIn": { "type": "string" }, "amountIn": { "type": "string", "format": "uint256" }, "amountOut": { "type": "string", "format": "uint256" }, "slippage": { "type": "number" }, "quoter": { "type": "string" }, "executions": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" }, "senderAddressPlaceholder": { "type": "string" }, "recipientAddressPlaceholder": { "type": "string" } }, "required": [ "to", "value", "data" ] } }, "outputDecimals": { "type": "number" }, "outputSymbol": { "type": "string" } }, "required": [ "tokenIn", "amountIn", "amountOut", "slippage", "quoter", "executions", "outputDecimals", "outputSymbol" ], "nullable": true }, "description": "Swap execution data for arbitrary output tokens, aligned by index with tokenOut" } }, "required": [ "recipient", "tokenOut", "destinationChainId", "fillDeadline", "preClaimOps", "destinationOps", "qualifier", "minGas" ], "description": "Mandate containing execution details" }, "swapOrigins": { "type": "object", "additionalProperties": { "type": "object", "properties": { "tokenIn": { "type": "string" }, "tokenOut": { "type": "string" }, "amountIn": { "type": "string", "format": "uint256" }, "amountOut": { "type": "string", "format": "uint256" }, "slippage": { "type": "number" }, "quoter": { "type": "string" }, "executions": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" }, "senderAddressPlaceholder": { "type": "string" }, "recipientAddressPlaceholder": { "type": "string" } }, "required": [ "to", "value", "data" ] } }, "inputDecimals": { "type": "number" }, "inputSymbol": { "type": "string" }, "price": { "type": "number" }, "gasEstimate": { "type": "number" } }, "required": [ "tokenIn", "tokenOut", "amountIn", "amountOut", "slippage", "quoter", "executions", "inputDecimals", "inputSymbol", "price" ] }, "description": "Swap execution data for arbitrary input tokens, keyed by spendToken address" }, "bundleId": { "type": "string", "format": "uint256", "description": "Per-element nonce override used when this element is dispatched as its own intent (post-bridge destination ops). Unset elements fall back to the bundle-level nonce. Today only the destination-ops element on a bridge + destination-ops bundle sets this." } }, "required": [ "arbiter", "chainId", "idsAndAmounts", "spendTokens", "mandate" ], "description": "A single chain-leg of the intent. Each element pins the spend tokens on one origin chain to a destination mandate." }, "description": "Per-chain legs of the bundle. One element per origin chain involved in fulfilling the destination mandate." }, "serverSignature": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "HMAC digest of the bundle's canonical encoding. Set by the orchestrator at quote time and verified at submit to ensure the bundle wasn't tampered with between calls.", "example": "0x..." }, "signedMetadata": { "type": "object", "properties": { "strategy": { "type": "string", "enum": [ "ACROSS", "ECO", "SAME_CHAIN", "TOKENLESS", "RELAY", "OFT", "NEAR", "RHINO", "CCTP_FAST", "CCTP_CHEAP" ], "description": "Planning strategy that produced this bundle (e.g. `ACROSS`, `RELAY`, `INTENT_EXECUTOR`). Pinned in metadata so the submission path can dispatch to the matching execution code.", "example": "ACROSS" }, "schemeId": { "type": "string", "description": "Serialization scheme version for this bundle (e.g. `v1`). Used to migrate the bundle format without breaking in-flight quotes.", "example": "v1" }, "tokenPrices": { "type": "object", "additionalProperties": { "type": "number" }, "description": "Snapshot of token-to-USD prices at quote time. Pinned here so cost figures remain consistent across the quote-submit window.", "example": { "USDC": 1, "WETH": 2000 } }, "gasPrices": { "type": "object", "additionalProperties": { "type": "string", "format": "uint256" }, "description": "Gas prices per chain in wei", "example": { "1": "20000000000", "10": "1000000000" } }, "opGasParams": { "type": "object", "properties": { "estimatedCalldataSize": { "type": "number" } }, "additionalProperties": { "type": "object", "properties": { "l1BaseFee": { "type": "string", "format": "uint256" }, "l1BlobBaseFee": { "type": "string", "format": "uint256" }, "baseFeeScalar": { "type": "string", "format": "uint256" }, "blobFeeScalar": { "type": "string", "format": "uint256" } }, "required": [ "l1BaseFee", "l1BlobBaseFee", "baseFeeScalar", "blobFeeScalar" ] }, "description": "OP-stack L1-fee parameters (`l1BaseFee`, `l1BlobBaseFee`, scalars) per chain at quote time. Used to reproduce the L1 data-cost component of OP-stack chain gas — pinned so the cost does not drift between quote and submit.", "example": { "10": { "l1BaseFee": "100", "l1BlobBaseFee": "100", "baseFeeScalar": "100", "blobFeeScalar": "100" } } }, "account": { "type": "object", "properties": { "address": { "type": "string", "description": "Account address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "accountType": { "type": "string", "enum": [ "smartAccount", "GENERIC", "EOA", "ERC7579" ], "description": "Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation." }, "setupOps": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Account deployment factory address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Account deployment data", "example": "0x..." } }, "required": [ "to", "data" ] }, "description": "Setup operations for the smart account. Only used if the account is not deployed" }, "accountContext": { "type": "object", "additionalProperties": { "discriminator": { "propertyName": "accountType" }, "oneOf": [ { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "EOA" ], "description": "Type of the account", "example": "EOA" } }, "required": [ "accountType" ], "additionalProperties": false }, { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "smartAccount" ], "description": "Type of the account", "example": "smartAccount" }, "isDeployed": { "type": "boolean", "description": "Whether the account is deployed on this chain", "example": true }, "isERC7579": { "type": "boolean", "description": "Whether the account supports ERC7579 standard", "example": true }, "erc7579AccountType": { "type": "string", "enum": [ "Safe", "Kernel", "Nexus" ], "description": "Type of ERC7579 account", "example": "Safe" }, "erc7579AccountVersion": { "type": "string", "description": "Version of the ERC7579 account", "example": "1.0.0" } }, "required": [ "accountType", "isDeployed", "isERC7579" ], "additionalProperties": false } ] }, "description": "Account status per chain" }, "requiredDelegations": { "type": "object", "additionalProperties": { "type": "object", "properties": { "contract": { "type": "string", "description": "address of contract to which delegation on behalf of sponsor will be assumed for given chain ID" } }, "required": [ "contract" ] }, "description": "Map of chain -> EOA and delegated address required for user to sign for 7702 authorizations" } }, "required": [ "address", "accountContext" ] }, "recipient": { "type": "object", "properties": { "address": { "type": "string", "minLength": 1, "description": "Recipient address. Format depends on destination chain — 0x-hex for EVM destinations, base58 for Solana, T-address for Tron.", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "accountType": { "type": "string", "enum": [ "smartAccount", "GENERIC", "EOA", "ERC7579" ], "description": "Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation." }, "setupOps": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Account deployment factory address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Account deployment data", "example": "0x..." } }, "required": [ "to", "data" ] }, "description": "Setup operations for the smart account. Only used if the account is not deployed" }, "accountContext": { "type": "object", "additionalProperties": { "discriminator": { "propertyName": "accountType" }, "oneOf": [ { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "EOA" ], "description": "Type of the account", "example": "EOA" } }, "required": [ "accountType" ], "additionalProperties": false }, { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "smartAccount" ], "description": "Type of the account", "example": "smartAccount" }, "isDeployed": { "type": "boolean", "description": "Whether the account is deployed on this chain", "example": true }, "isERC7579": { "type": "boolean", "description": "Whether the account supports ERC7579 standard", "example": true }, "erc7579AccountType": { "type": "string", "enum": [ "Safe", "Kernel", "Nexus" ], "description": "Type of ERC7579 account", "example": "Safe" }, "erc7579AccountVersion": { "type": "string", "description": "Version of the ERC7579 account", "example": "1.0.0" } }, "required": [ "accountType", "isDeployed", "isERC7579" ], "additionalProperties": false } ] }, "description": "Account status per chain" }, "requiredDelegations": { "type": "object", "additionalProperties": { "type": "object", "properties": { "contract": { "type": "string", "description": "address of contract to which delegation on behalf of sponsor will be assumed for given chain ID" } }, "required": [ "contract" ] }, "description": "Map of chain -> EOA and delegated address required for user to sign for 7702 authorizations" } }, "required": [ "address", "accountContext" ] }, "fees": { "type": "object", "properties": { "sponsorFee": { "type": "object", "properties": { "relayer": { "type": "number", "description": "Fee charged by relayer", "example": 0.0009 }, "protocol": { "type": "number", "description": "Fee charged by Rhinestone", "example": 0 } }, "required": [ "relayer", "protocol" ], "description": "Transaction fees" }, "protocolFees": { "type": "object", "additionalProperties": { "type": "string", "format": "uint256" }, "description": "Protocol fees by token address (in token units)", "example": { "0x0000000000000000000000000000000000000000": "1000000" } }, "appFee": { "type": "array", "items": { "type": "object", "properties": { "feeBps": { "type": "integer", "minimum": 0, "maximum": 10000, "description": "Integrator app-fee rate in basis points.", "example": 100 }, "baseAmount": { "type": "string", "format": "uint256", "description": "Principal amount the app fee was computed from, in token base units.", "example": "10000000" }, "amount": { "type": "string", "format": "uint256", "description": "App-fee amount in token base units.", "example": "100000" }, "chainId": { "type": "integer", "minimum": 0, "description": "Origin chain ID where the app-fee token is spent.", "example": 42161 }, "tokenAddress": { "type": "string", "description": "Address of the token used to pay the app fee.", "example": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" } }, "required": [ "feeBps", "baseAmount", "amount", "chainId", "tokenAddress" ], "description": "Concrete user-paid integrator app-fee leg. App fees are never sponsored." } } } }, "sponsorSettings": { "type": "object", "properties": { "gas": { "default": false, "type": "boolean", "description": "Whether to sponsor gas for the intent", "example": true }, "bridgeFees": { "default": false, "type": "boolean", "description": "Whether to sponsor bridge fees for the intent" }, "swapFees": { "default": false, "type": "boolean", "description": "Whether to sponsor swap fees for the intent" } }, "description": "Sponsor settings requested at quote time. Used during submit to distinguish sponsored zero-segment setup-only fills from unsponsored fallback fills." }, "executionTokensReceived": { "type": "array", "items": { "type": "string" }, "description": "Tokens that will be received by EOA executions. These will be swept to the recipient account.", "example": [ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" ] }, "preClaimExecutions": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "to", "value", "data" ] }, "maxItems": 10 }, "description": "User-supplied pre-claim executions included in the bundle, keyed by chain ID." }, "accounting": { "type": "object", "properties": { "bridgeFill": { "type": "object", "properties": { "tokensOut": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string" }, "chainId": { "type": "number" }, "amount": { "type": "string", "format": "uint256" } }, "required": [ "address", "chainId", "amount" ] } } }, "required": [ "tokensOut" ] } }, "description": "Accounting facts derived from the selected plan and used for IntentOperation persistence. Excluded from the legacy serverSignature HMAC surface for rolling-deploy compatibility; submit integrity comes from the stored quote session." } }, "required": [ "tokenPrices", "gasPrices", "opGasParams", "account" ], "description": "Signed metadata containing prices, fees, and gas parameters" }, "signedAuthorizations": { "type": "array", "items": { "type": "object", "properties": { "chainId": { "type": "number", "description": "Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain", "example": 8453 }, "address": { "type": "string", "description": "Address of the delegate for EIP-7702 delegation", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "nonce": { "type": "number", "description": "Nonce for EIP-7702 delegation", "example": "0" }, "yParity": { "type": "number", "description": "Y parity for EIP-7702 delegation", "example": 27 }, "r": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "R value for EIP-7702 delegation", "example": "0x..." }, "s": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "S value for EIP-7702 delegation", "example": "0x..." } }, "required": [ "chainId", "address", "nonce", "yParity", "r", "s" ] }, "description": "List of 7702 authorizations signed by EOA matching sponsor" }, "recipientSignedAuthorizations": { "type": "array", "items": { "type": "object", "properties": { "chainId": { "type": "number", "description": "Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain", "example": 8453 }, "address": { "type": "string", "description": "Address of the delegate for EIP-7702 delegation", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "nonce": { "type": "number", "description": "Nonce for EIP-7702 delegation", "example": "0" }, "yParity": { "type": "number", "description": "Y parity for EIP-7702 delegation", "example": 27 }, "r": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "R value for EIP-7702 delegation", "example": "0x..." }, "s": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "S value for EIP-7702 delegation", "example": "0x..." } }, "required": [ "chainId", "address", "nonce", "yParity", "r", "s" ] }, "description": "List of 7702 authorizations signed by EOA matching recipient account (if present)" }, "destinationSignature": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Destination (target chain) signature", "example": "0x..." }, "targetExecutionSignature": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Target execution signature", "example": "0x..." }, "originSignatures": { "type": "array", "items": { "oneOf": [ { "type": "string", "pattern": "^0x[a-fA-F0-9]*$" }, { "type": "object", "properties": { "preClaimSig": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$" }, "notarizedClaimSig": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$" } }, "required": [ "preClaimSig", "notarizedClaimSig" ] } ] }, "description": "Origin (source chain) signatures", "example": [ "0x...", "0x..." ] } }, "required": [ "sponsor", "nonce", "expires", "elements", "serverSignature", "signedMetadata", "destinationSignature", "originSignatures" ] } }, "required": [ "signedIntentOp" ] } } } } } }, "/intents/split": { "post": { "operationId": "getSplit", "parameters": [ { "name": "x-api-version", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "2026-01.alps" ] }, "description": "API version. Required; pinned to this document." }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string" }, "description": "API key." } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "intents": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } }, "description": "Array of intents, each mapping token addresses to amounts that can be filled by a single relayer", "example": [ { "0xaf88d065e77c8cc2239327c5edb3a432268e5831": "2400000000000" }, { "0xaf88d065e77c8cc2239327c5edb3a432268e5831": "1700000000000" }, { "0xaf88d065e77c8cc2239327c5edb3a432268e5831": "900000000000" } ] } }, "required": [ "intents" ] } } } }, "400": { "description": "Invalid request parameters", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "403": { "description": "API key scope denied", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "422": { "description": "Insufficient liquidity to fill the full amount. Partial splits returned.", "content": { "application/json": { "schema": { "type": "object", "properties": { "availableIntents": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } }, "description": "Intents fillable with current liquidity" }, "unfillable": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Token amounts that cannot be filled" }, "error": { "type": "string", "enum": [ "INSUFFICIENT_LIQUIDITY" ], "description": "Machine-readable error code" }, "message": { "type": "string", "description": "Human-readable error message", "example": "Invalid input" } }, "required": [ "availableIntents", "unfillable", "error", "message" ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } } }, "summary": "Split Intent by Liquidity", "description": "Splits token amounts into multiple intents based on available relayer liquidity. Each returned intent can be filled by a single relayer.", "tags": [ "Intents" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "chainId": { "type": "integer", "minimum": 1, "description": "The chain ID the intents settle on", "example": 42161 }, "tokens": { "type": "object", "additionalProperties": { "type": "string", "format": "uint256" }, "description": "Map of token addresses to amounts", "example": { "0xaf88d065e77c8cc2239327c5edb3a432268e5831": "5000000000000" } }, "settlementLayers": { "oneOf": [ { "type": "array", "items": { "type": "string", "enum": [ "ACROSS", "ECO", "RELAY", "OFT", "NEAR", "RHINO", "CCTP" ] } }, { "type": "object", "properties": { "include": { "type": "array", "items": { "type": "string", "enum": [ "ACROSS", "ECO", "RELAY", "OFT", "NEAR", "RHINO", "CCTP" ] } } }, "required": [ "include" ], "additionalProperties": false }, { "type": "object", "properties": { "exclude": { "type": "array", "items": { "type": "string", "enum": [ "ACROSS", "ECO", "RELAY", "OFT", "NEAR", "RHINO", "CCTP" ] } } }, "required": [ "exclude" ], "additionalProperties": false } ], "description": "Which settlement layers the orchestrator may use. `{ include: [...] }` (allow-list) or `{ exclude: [...] }` (deny-list, inverted against the orchestrator's live layer set); a bare array means `include`. Internal modes (`SAME_CHAIN`, `INTENT_EXECUTOR`) are not selectable. Default unset = all layers eligible.", "example": { "exclude": [ "RELAY" ] } } }, "required": [ "chainId", "tokens" ] } } } } } }, "/intents/route": { "post": { "operationId": "createQuote", "parameters": [ { "name": "x-api-version", "in": "header", "required": true, "schema": { "type": "string", "enum": [ "2026-01.alps" ] }, "description": "API version. Required; pinned to this document." }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string" }, "description": "API key." } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "intentOp": { "type": "object", "properties": { "sponsor": { "type": "string", "description": "Account whose funds the intent operation will spend. Identical to the account that signed the origin signatures — this field is named `sponsor` because in TheCompact it sponsors the resource-lock claim, not because there's a separate gas-sponsor party.", "example": "0x8a310b9085faF5d9464D84C3d9a7BE3b28c94531" }, "nonce": { "type": "string", "format": "uint256", "description": "Intent operation nonce — a one-time identifier scoped to the orchestrator's intent registry, not an EVM transaction nonce. Used to prevent replay of the same quote.", "example": "0" }, "targetExecutionNonce": { "type": "string", "format": "uint256", "description": "Nonce for the optional target-execution signature (smart-session flows). Omitted for EOA accounts.", "example": "0" }, "expires": { "type": "integer", "format": "int64", "description": "Unix timestamp (seconds) after which the orchestrator will refuse to submit this intent.", "example": 1733493192 }, "elements": { "type": "array", "items": { "type": "object", "properties": { "arbiter": { "type": "string", "description": "Contract that adjudicates settlement on this chain (TheCompact arbiter).", "example": "0x8a310b9085faF5d9464D84C3d9a7BE3b28c94531" }, "chainId": { "type": "string", "format": "uint256", "description": "Chain ID where the element is executed", "example": "1" }, "idsAndAmounts": { "type": "array", "items": {}, "description": "Resource-locked balances pledged on this chain, as `[ERC-6909 tokenId, amount]` pairs.", "example": [ [ "1", "1000000" ], [ "2", "2000000" ] ] }, "spendTokens": { "type": "array", "items": {}, "description": "Subset of `idsAndAmounts` actually drawn down to fund this element. Same `[ERC-6909 tokenId, amount]` shape.", "example": [ [ "1", "1000000" ], [ "2", "2000000" ] ] }, "mandate": { "type": "object", "properties": { "recipient": { "type": "string", "description": "Address that receives the output tokens on the destination chain.", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "tokenOut": { "type": "array", "items": {}, "description": "Tokens to deliver on the destination chain, as `[ERC-6909 tokenId, amount]` pairs.", "example": [ [ "1", "1000000" ], [ "2", "2000000" ] ] }, "destinationChainId": { "type": "string", "format": "uint256", "description": "Target chain ID for the mandate", "example": "8453" }, "fillDeadline": { "type": "integer", "format": "int64", "description": "Unix timestamp (seconds) after which the destination fill is no longer valid.", "example": 1733493192 }, "preClaimOps": { "type": "object", "properties": { "vt": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "ERC-7579 encoded execution mode (first byte) and signature mode (second byte) for `destinationOps` / `preClaimOps`. Pre-computed by the orchestrator — clients pass through unchanged.", "example": "0x0101000000000000000000000000000000000000000000000000000000000000" }, "ops": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "to", "value", "data" ] }, "description": "Array of operations to perform" } }, "required": [ "vt", "ops" ], "description": "Origin-chain ops that run immediately before funds are claimed by the relayer (e.g. user approvals, vault withdraws)." }, "destinationOps": { "type": "object", "properties": { "vt": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "ERC-7579 encoded execution mode (first byte) and signature mode (second byte) for `destinationOps` / `preClaimOps`. Pre-computed by the orchestrator — clients pass through unchanged.", "example": "0x0101000000000000000000000000000000000000000000000000000000000000" }, "ops": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "to", "value", "data" ] }, "description": "Array of operations to perform" } }, "required": [ "vt", "ops" ], "description": "Destination-chain ops that run after funds are delivered (e.g. user's target contract call)." }, "qualifier": { "type": "object", "properties": { "settlementContext": { "discriminator": { "propertyName": "settlementLayer" }, "oneOf": [ { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "INTENT_EXECUTOR" ], "description": "Settlement layer for the qualifier", "example": "INTENT_EXECUTOR" }, "using7579": { "type": "boolean", "description": "true for ERC7579 smart accounts, false for EOAs (MULTICALL execution)", "example": true }, "fundingMethod": { "type": "string", "enum": [ "NO_FUNDING" ], "description": "Must be NO_FUNDING for INTENT_EXECUTOR", "example": "NO_FUNDING" }, "gasRefund": { "type": "object", "properties": { "overhead": { "type": "string", "format": "uint256", "description": "Overhead gas amount add to gas spent when executing destination ops" }, "exchangeRate": { "type": "string", "format": "uint256", "description": "Exchange rate between token selected for gas refund and native token consumed for gas" }, "token": { "type": "string", "description": "token address which will be used for gas refunding" } }, "required": [ "overhead", "exchangeRate", "token" ], "description": "gas refund information" }, "prefundAmount": { "type": "string", "format": "uint256", "description": "Native token amount the relayer sends to the user before execution, e.g. the LayerZero `lzFee` required by OFT bridges. In wei." }, "erc20Prefund": { "type": "array", "items": { "type": "object", "properties": { "token": { "type": "string", "description": "ERC20 token the relayer sends to the user before execution" }, "amount": { "type": "string", "format": "uint256", "description": "ERC20 token amount in smallest units" } }, "required": [ "token", "amount" ] }, "description": "ERC20 token amounts the relayer sends to the user before execution, e.g. quote-embedded bridge fees sponsored via FeeCollector." }, "bridgeFill": { "discriminator": { "propertyName": "type" }, "oneOf": [ { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "OFT" ], "description": "LayerZero OFT" } }, "required": [ "destinationChainId", "type" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "RELAY" ], "description": "Relay.link" }, "requestId": { "type": "string", "description": "Relay.link request ID. Use against Relay.link's status API to track the destination-chain fill." } }, "required": [ "destinationChainId", "type", "requestId" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "NEAR" ], "description": "NEAR Intents" }, "depositAddress": { "type": "string", "description": "NEAR Intents deposit address. Track fill status via the NEAR Intents status API keyed on this address." } }, "required": [ "destinationChainId", "type", "depositAddress" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "RHINO" ], "description": "Rhino.fi" }, "commitmentId": { "type": "string", "description": "Rhino.fi commitment ID. Use against Rhino.fi's status API to track the destination-chain fill." } }, "required": [ "destinationChainId", "type", "commitmentId" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "CCTP" ], "description": "Circle CCTP" }, "sourceDomainId": { "type": "number", "description": "Circle CCTP source domain ID — needed to fetch the attestation for the burn message on the source chain." }, "destinationDomainId": { "type": "number", "description": "Circle CCTP destination domain ID." } }, "required": [ "destinationChainId", "type", "sourceDomainId", "destinationDomainId" ] } ], "description": "Bridge-as-fill metadata for cross-chain delivery tracking" }, "bridgeDestinationOps": { "type": "boolean", "enum": [ true ], "description": "Marks this IE element as the post-bridge destination-ops executor for a bridge-with-destination-ops intent. Distinguishes from same-chain IE elements (both have `bridgeFill === undefined`)." } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "gasRefund" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "SAME_CHAIN" ], "description": "Settlement layer for the qualifier", "example": "SAME_CHAIN" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "bridgeFill": { "discriminator": { "propertyName": "type" }, "oneOf": [ { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "OFT" ], "description": "LayerZero OFT" } }, "required": [ "destinationChainId", "type" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "RELAY" ], "description": "Relay.link" }, "requestId": { "type": "string", "description": "Relay.link request ID. Use against Relay.link's status API to track the destination-chain fill." } }, "required": [ "destinationChainId", "type", "requestId" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "NEAR" ], "description": "NEAR Intents" }, "depositAddress": { "type": "string", "description": "NEAR Intents deposit address. Track fill status via the NEAR Intents status API keyed on this address." } }, "required": [ "destinationChainId", "type", "depositAddress" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "RHINO" ], "description": "Rhino.fi" }, "commitmentId": { "type": "string", "description": "Rhino.fi commitment ID. Use against Rhino.fi's status API to track the destination-chain fill." } }, "required": [ "destinationChainId", "type", "commitmentId" ] }, { "type": "object", "properties": { "destinationChainId": { "type": "number", "description": "Destination chain ID for the bridge fill" }, "fillExpirationPeriod": { "type": "integer", "minimum": 0, "description": "Optional bridge-specific fill deadline duration, in seconds. Preserved on stored quote reload so checksum validation uses the same bridgeFill payload that was signed at quote time." }, "type": { "type": "string", "enum": [ "CCTP" ], "description": "Circle CCTP" }, "sourceDomainId": { "type": "number", "description": "Circle CCTP source domain ID — needed to fetch the attestation for the burn message on the source chain." }, "destinationDomainId": { "type": "number", "description": "Circle CCTP destination domain ID." } }, "required": [ "destinationChainId", "type", "sourceDomainId", "destinationDomainId" ] } ], "description": "Bridge-as-fill metadata for cross-chain delivery tracking" } }, "required": [ "settlementLayer", "using7579", "fundingMethod" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "ACROSS" ], "description": "Settlement layer for the qualifier", "example": "ACROSS" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" } }, "required": [ "settlementLayer", "using7579", "fundingMethod" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "ECO" ], "description": "Settlement layer for the qualifier", "example": "ECO" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "provingFee": { "type": "string", "format": "uint256", "description": "Hyperlane relay fee for proof dispatch (in destination chain native token)" } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "provingFee" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "RELAY" ], "description": "Settlement layer for the qualifier", "example": "RELAY" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "requestId": { "type": "string", "description": "Relay.link request ID for this route. Surfaces in the relayer-market broadcast — opaque to the client." }, "orderId": { "type": "string", "description": "Relay v2 order ID used in the deposit contract calldata" }, "subsidizedAmount": { "type": "string", "description": "Relay settlement layer subsidized amount on the intent (denomination in USDC)" }, "multicallData": { "type": "string", "description": "ABI-encoded params for IRelayRouterV3.multicall, used for origin swaps via Relay contracts" }, "executionValidationGas": { "type": "string", "format": "uint256", "description": "Gas overhead the relayer must reserve for validating the execution on the origin chain. Used internally for origin gas accounting." } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "requestId", "orderId" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "NEAR" ], "description": "Settlement layer for the qualifier", "example": "NEAR" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "depositAddress": { "type": "string", "description": "NEAR-provided deposit address on the origin chain" }, "correlationId": { "type": "string", "description": "NEAR correlation ID for tracking the intent" } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "depositAddress", "correlationId" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "RHINO" ], "description": "Settlement layer for the qualifier", "example": "RHINO" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "quoteId": { "type": "string", "description": "Rhino.fi quote identifier — committed quote that becomes the commitmentId for the on-chain deposit" } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "quoteId" ] }, { "type": "object", "properties": { "settlementLayer": { "type": "string", "enum": [ "CCTP" ], "description": "Settlement layer for the qualifier", "example": "CCTP" }, "using7579": { "type": "boolean", "description": "True when the originating account is ERC-7579-compatible (smart account). False for EOAs — those settle via MULTICALL execution.", "example": false }, "fundingMethod": { "type": "string", "enum": [ "PERMIT2", "NO_FUNDING" ], "description": "How the relayer pulls the user's funds on the origin chain. `PERMIT2` for EIP-712 Permit2 approvals; `NO_FUNDING` when the account itself executes the transfer (INTENT_EXECUTOR path).", "example": "PERMIT2" }, "sourceDomainId": { "type": "number", "description": "CCTP source domain ID" }, "destinationDomainId": { "type": "number", "description": "CCTP destination domain ID" } }, "required": [ "settlementLayer", "using7579", "fundingMethod", "sourceDomainId", "destinationDomainId" ] } ] }, "encodedVal": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "ABI-encoded settlement-layer witness data. Format depends on `settlementContext.settlementLayer`. Clients should treat this as opaque bytes and pass through unchanged.", "example": "0x..." } }, "required": [ "settlementContext", "encodedVal" ], "description": "Settlement-layer-specific witness data binding this mandate to a relayer route." }, "minGas": { "type": "string", "format": "uint256", "description": "Minimum gas reserved for pre-claim ops on this chain, in gas units. Packed with `preClaimGasStipend` as `uint128` for the settlement contract.", "example": "0" }, "swapDestinations": { "type": "array", "items": { "type": "object", "properties": { "tokenIn": { "type": "string" }, "amountIn": { "type": "string", "format": "uint256" }, "amountOut": { "type": "string", "format": "uint256" }, "slippage": { "type": "number" }, "quoter": { "type": "string" }, "executions": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" }, "senderAddressPlaceholder": { "type": "string" }, "recipientAddressPlaceholder": { "type": "string" } }, "required": [ "to", "value", "data" ] } }, "outputDecimals": { "type": "number" }, "outputSymbol": { "type": "string" } }, "required": [ "tokenIn", "amountIn", "amountOut", "slippage", "quoter", "executions", "outputDecimals", "outputSymbol" ], "nullable": true }, "description": "Swap execution data for arbitrary output tokens, aligned by index with tokenOut" } }, "required": [ "recipient", "tokenOut", "destinationChainId", "fillDeadline", "preClaimOps", "destinationOps", "qualifier", "minGas" ], "description": "Mandate containing execution details" }, "swapOrigins": { "type": "object", "additionalProperties": { "type": "object", "properties": { "tokenIn": { "type": "string" }, "tokenOut": { "type": "string" }, "amountIn": { "type": "string", "format": "uint256" }, "amountOut": { "type": "string", "format": "uint256" }, "slippage": { "type": "number" }, "quoter": { "type": "string" }, "executions": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" }, "senderAddressPlaceholder": { "type": "string" }, "recipientAddressPlaceholder": { "type": "string" } }, "required": [ "to", "value", "data" ] } }, "inputDecimals": { "type": "number" }, "inputSymbol": { "type": "string" }, "price": { "type": "number" }, "gasEstimate": { "type": "number" } }, "required": [ "tokenIn", "tokenOut", "amountIn", "amountOut", "slippage", "quoter", "executions", "inputDecimals", "inputSymbol", "price" ] }, "description": "Swap execution data for arbitrary input tokens, keyed by spendToken address" }, "bundleId": { "type": "string", "format": "uint256", "description": "Per-element nonce override used when this element is dispatched as its own intent (post-bridge destination ops). Unset elements fall back to the bundle-level nonce. Today only the destination-ops element on a bridge + destination-ops bundle sets this." } }, "required": [ "arbiter", "chainId", "idsAndAmounts", "spendTokens", "mandate" ], "description": "A single chain-leg of the intent. Each element pins the spend tokens on one origin chain to a destination mandate." }, "description": "Per-chain legs of the bundle. One element per origin chain involved in fulfilling the destination mandate." }, "serverSignature": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "HMAC digest of the bundle's canonical encoding. Set by the orchestrator at quote time and verified at submit to ensure the bundle wasn't tampered with between calls.", "example": "0x..." }, "signedMetadata": { "type": "object", "properties": { "strategy": { "type": "string", "enum": [ "ACROSS", "ECO", "SAME_CHAIN", "TOKENLESS", "RELAY", "OFT", "NEAR", "RHINO", "CCTP_FAST", "CCTP_CHEAP" ], "description": "Planning strategy that produced this bundle (e.g. `ACROSS`, `RELAY`, `INTENT_EXECUTOR`). Pinned in metadata so the submission path can dispatch to the matching execution code.", "example": "ACROSS" }, "schemeId": { "type": "string", "description": "Serialization scheme version for this bundle (e.g. `v1`). Used to migrate the bundle format without breaking in-flight quotes.", "example": "v1" }, "tokenPrices": { "type": "object", "additionalProperties": { "type": "number" }, "description": "Snapshot of token-to-USD prices at quote time. Pinned here so cost figures remain consistent across the quote-submit window.", "example": { "USDC": 1, "WETH": 2000 } }, "gasPrices": { "type": "object", "additionalProperties": { "type": "string", "format": "uint256" }, "description": "Gas prices per chain in wei", "example": { "1": "20000000000", "10": "1000000000" } }, "opGasParams": { "type": "object", "properties": { "estimatedCalldataSize": { "type": "number" } }, "additionalProperties": { "type": "object", "properties": { "l1BaseFee": { "type": "string", "format": "uint256" }, "l1BlobBaseFee": { "type": "string", "format": "uint256" }, "baseFeeScalar": { "type": "string", "format": "uint256" }, "blobFeeScalar": { "type": "string", "format": "uint256" } }, "required": [ "l1BaseFee", "l1BlobBaseFee", "baseFeeScalar", "blobFeeScalar" ] }, "description": "OP-stack L1-fee parameters (`l1BaseFee`, `l1BlobBaseFee`, scalars) per chain at quote time. Used to reproduce the L1 data-cost component of OP-stack chain gas — pinned so the cost does not drift between quote and submit.", "example": { "10": { "l1BaseFee": "100", "l1BlobBaseFee": "100", "baseFeeScalar": "100", "blobFeeScalar": "100" } } }, "account": { "type": "object", "properties": { "address": { "type": "string", "description": "Account address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "accountType": { "type": "string", "enum": [ "smartAccount", "GENERIC", "EOA", "ERC7579" ], "description": "Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation." }, "setupOps": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Account deployment factory address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Account deployment data", "example": "0x..." } }, "required": [ "to", "data" ] }, "description": "Setup operations for the smart account. Only used if the account is not deployed" }, "accountContext": { "type": "object", "additionalProperties": { "discriminator": { "propertyName": "accountType" }, "oneOf": [ { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "EOA" ], "description": "Type of the account", "example": "EOA" } }, "required": [ "accountType" ], "additionalProperties": false }, { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "smartAccount" ], "description": "Type of the account", "example": "smartAccount" }, "isDeployed": { "type": "boolean", "description": "Whether the account is deployed on this chain", "example": true }, "isERC7579": { "type": "boolean", "description": "Whether the account supports ERC7579 standard", "example": true }, "erc7579AccountType": { "type": "string", "enum": [ "Safe", "Kernel", "Nexus" ], "description": "Type of ERC7579 account", "example": "Safe" }, "erc7579AccountVersion": { "type": "string", "description": "Version of the ERC7579 account", "example": "1.0.0" } }, "required": [ "accountType", "isDeployed", "isERC7579" ], "additionalProperties": false } ] }, "description": "Account status per chain" }, "requiredDelegations": { "type": "object", "additionalProperties": { "type": "object", "properties": { "contract": { "type": "string", "description": "address of contract to which delegation on behalf of sponsor will be assumed for given chain ID" } }, "required": [ "contract" ] }, "description": "Map of chain -> EOA and delegated address required for user to sign for 7702 authorizations" } }, "required": [ "address", "accountContext" ] }, "recipient": { "type": "object", "properties": { "address": { "type": "string", "minLength": 1, "description": "Recipient address. Format depends on destination chain — 0x-hex for EVM destinations, base58 for Solana, T-address for Tron.", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "accountType": { "type": "string", "enum": [ "smartAccount", "GENERIC", "EOA", "ERC7579" ], "description": "Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation." }, "setupOps": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Account deployment factory address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Account deployment data", "example": "0x..." } }, "required": [ "to", "data" ] }, "description": "Setup operations for the smart account. Only used if the account is not deployed" }, "accountContext": { "type": "object", "additionalProperties": { "discriminator": { "propertyName": "accountType" }, "oneOf": [ { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "EOA" ], "description": "Type of the account", "example": "EOA" } }, "required": [ "accountType" ], "additionalProperties": false }, { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "smartAccount" ], "description": "Type of the account", "example": "smartAccount" }, "isDeployed": { "type": "boolean", "description": "Whether the account is deployed on this chain", "example": true }, "isERC7579": { "type": "boolean", "description": "Whether the account supports ERC7579 standard", "example": true }, "erc7579AccountType": { "type": "string", "enum": [ "Safe", "Kernel", "Nexus" ], "description": "Type of ERC7579 account", "example": "Safe" }, "erc7579AccountVersion": { "type": "string", "description": "Version of the ERC7579 account", "example": "1.0.0" } }, "required": [ "accountType", "isDeployed", "isERC7579" ], "additionalProperties": false } ] }, "description": "Account status per chain" }, "requiredDelegations": { "type": "object", "additionalProperties": { "type": "object", "properties": { "contract": { "type": "string", "description": "address of contract to which delegation on behalf of sponsor will be assumed for given chain ID" } }, "required": [ "contract" ] }, "description": "Map of chain -> EOA and delegated address required for user to sign for 7702 authorizations" } }, "required": [ "address", "accountContext" ] }, "fees": { "type": "object", "properties": { "sponsorFee": { "type": "object", "properties": { "relayer": { "type": "number", "description": "Fee charged by relayer", "example": 0.0009 }, "protocol": { "type": "number", "description": "Fee charged by Rhinestone", "example": 0 } }, "required": [ "relayer", "protocol" ], "description": "Transaction fees" }, "protocolFees": { "type": "object", "additionalProperties": { "type": "string", "format": "uint256" }, "description": "Protocol fees by token address (in token units)", "example": { "0x0000000000000000000000000000000000000000": "1000000" } }, "appFee": { "type": "array", "items": { "type": "object", "properties": { "feeBps": { "type": "integer", "minimum": 0, "maximum": 10000, "description": "Integrator app-fee rate in basis points.", "example": 100 }, "baseAmount": { "type": "string", "format": "uint256", "description": "Principal amount the app fee was computed from, in token base units.", "example": "10000000" }, "amount": { "type": "string", "format": "uint256", "description": "App-fee amount in token base units.", "example": "100000" }, "chainId": { "type": "integer", "minimum": 0, "description": "Origin chain ID where the app-fee token is spent.", "example": 42161 }, "tokenAddress": { "type": "string", "description": "Address of the token used to pay the app fee.", "example": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" } }, "required": [ "feeBps", "baseAmount", "amount", "chainId", "tokenAddress" ], "description": "Concrete user-paid integrator app-fee leg. App fees are never sponsored." } } } }, "sponsorSettings": { "type": "object", "properties": { "gasSponsored": { "type": "boolean", "description": "Whether gas is sponsored" }, "bridgeFeesSponsored": { "type": "boolean", "description": "Whether bridge fees are sponsored" }, "swapFeesSponsored": { "type": "boolean", "description": "Whether swap fees are sponsored" } }, "required": [ "gasSponsored", "bridgeFeesSponsored", "swapFeesSponsored" ], "description": "Sponsor settings echoed back on the older wire" }, "executionTokensReceived": { "type": "array", "items": { "type": "string" }, "description": "Tokens that will be received by EOA executions. These will be swept to the recipient account.", "example": [ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" ] }, "preClaimExecutions": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "to", "value", "data" ] }, "maxItems": 10 }, "description": "User-supplied pre-claim executions included in the bundle, keyed by chain ID." }, "accounting": { "type": "object", "properties": { "bridgeFill": { "type": "object", "properties": { "tokensOut": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string" }, "chainId": { "type": "number" }, "amount": { "type": "string", "format": "uint256" } }, "required": [ "address", "chainId", "amount" ] } } }, "required": [ "tokensOut" ] } }, "description": "Accounting facts derived from the selected plan and used for IntentOperation persistence. Excluded from the legacy serverSignature HMAC surface for rolling-deploy compatibility; submit integrity comes from the stored quote session." } }, "required": [ "tokenPrices", "gasPrices", "opGasParams", "account" ] }, "signedAuthorizations": { "type": "array", "items": { "type": "object", "properties": { "chainId": { "type": "number", "description": "Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain", "example": 8453 }, "address": { "type": "string", "description": "Address of the delegate for EIP-7702 delegation", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "nonce": { "type": "number", "description": "Nonce for EIP-7702 delegation", "example": "0" }, "yParity": { "type": "number", "description": "Y parity for EIP-7702 delegation", "example": 27 }, "r": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "R value for EIP-7702 delegation", "example": "0x..." }, "s": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "S value for EIP-7702 delegation", "example": "0x..." } }, "required": [ "chainId", "address", "nonce", "yParity", "r", "s" ] }, "description": "List of 7702 authorizations signed by EOA matching sponsor" }, "recipientSignedAuthorizations": { "type": "array", "items": { "type": "object", "properties": { "chainId": { "type": "number", "description": "Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain", "example": 8453 }, "address": { "type": "string", "description": "Address of the delegate for EIP-7702 delegation", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "nonce": { "type": "number", "description": "Nonce for EIP-7702 delegation", "example": "0" }, "yParity": { "type": "number", "description": "Y parity for EIP-7702 delegation", "example": 27 }, "r": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "R value for EIP-7702 delegation", "example": "0x..." }, "s": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "S value for EIP-7702 delegation", "example": "0x..." } }, "required": [ "chainId", "address", "nonce", "yParity", "r", "s" ] }, "description": "List of 7702 authorizations signed by EOA matching recipient account (if present)" } }, "required": [ "sponsor", "nonce", "expires", "elements", "serverSignature", "signedMetadata" ], "description": "Signed bundle ready for submission. Carries the per-chain legs, server signature, and quote metadata." }, "intentCost": { "oneOf": [ { "type": "object", "properties": { "hasFulfilledAll": { "type": "boolean", "enum": [ true ], "description": "All requested output tokens can be fully delivered by this route." }, "tokensSpent": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "object", "properties": { "locked": { "type": "string", "format": "uint256", "description": "Amount drawn from the user's resource-locked balance, in the token's smallest unit." }, "unlocked": { "type": "string", "format": "uint256", "description": "Amount drawn from the user's regular (unlocked) ERC-20 balance, in the token's smallest unit." } }, "required": [ "locked", "unlocked" ] } }, "description": "Per-chain, per-token amounts the user is spending. `locked` = drawn from the resource-locked balance (TheCompact); `unlocked` = drawn from regular ERC-20 balance via approval. Sum is the total user debit on that token." }, "tokensReceived": { "type": "array", "items": { "type": "object", "properties": { "tokenAddress": { "type": "string", "minLength": 1, "description": "Contract address of the delivered token (EVM 0x or non-EVM base58)." }, "amountSpent": { "type": "string", "format": "uint256", "description": "Total amount of this token spent at origin to deliver `destinationAmount` at destination. Includes fees." }, "destinationAmount": { "type": "string", "format": "uint256", "description": "Amount the user requested. Delivered amount = `destinationAmount` (when `hasFulfilled` is true)." }, "fee": { "type": "string", "format": "uint256", "description": "Total fee charged in this token's smallest unit — sum of `feeBreakdown`." }, "feeBreakdown": { "type": "object", "properties": { "gasFee": { "type": "string", "format": "uint256", "description": "Combined gas fees: destination fill, destination swap execution, and origin chain gas", "example": "5000" }, "bridgeFee": { "type": "string", "format": "uint256", "description": "Cross-chain bridge commission charged by the relayer", "example": "2000" }, "protocolFee": { "type": "string", "format": "uint256", "description": "Protocol fee charged by Rhinestone", "example": "0" }, "swapFee": { "type": "string", "format": "uint256", "description": "Solver swap commission for cross-token conversions", "example": "50000" }, "settlementFee": { "type": "string", "format": "uint256", "description": "Settlement layer fee (e.g. Relay, Across)", "example": "1000" }, "appFee": { "type": "string", "format": "uint256", "description": "Integrator app fee charged in the fee-bearing input token", "example": "2500" }, "hyperCoreActivationFee": { "type": "string", "format": "uint256", "description": "Hyperliquid HyperCore activation fee — 1 USDC charged on the first inbound deposit to a non-activated HyperCore account. Equal to 1_000_000 (USDC 6-decimal wei) when the orchestrator detects an unactivated HyperCore recipient and inflates the user's USDC delivery to cover the fee; 0 otherwise. Always present, like every other field in the breakdown.", "example": "1000000" } }, "required": [ "gasFee", "bridgeFee", "protocolFee", "swapFee", "settlementFee", "appFee", "hyperCoreActivationFee" ], "description": "Per-category breakdown of fees in token units (BPS-derived computed values)" }, "feesByToken": { "type": "object", "additionalProperties": { "type": "object", "properties": { "amount": { "type": "string", "format": "uint256", "description": "Fee amount in this token", "example": "19989" }, "breakdown": { "type": "object", "properties": { "gasFee": { "type": "string", "format": "uint256", "description": "Combined gas fees: destination fill, destination swap execution, and origin chain gas", "example": "5000" }, "bridgeFee": { "type": "string", "format": "uint256", "description": "Cross-chain bridge commission charged by the relayer", "example": "2000" }, "protocolFee": { "type": "string", "format": "uint256", "description": "Protocol fee charged by Rhinestone", "example": "0" }, "swapFee": { "type": "string", "format": "uint256", "description": "Solver swap commission for cross-token conversions", "example": "50000" }, "settlementFee": { "type": "string", "format": "uint256", "description": "Settlement layer fee (e.g. Relay, Across)", "example": "1000" }, "appFee": { "type": "string", "format": "uint256", "description": "Integrator app fee charged in the fee-bearing input token", "example": "2500" }, "hyperCoreActivationFee": { "type": "string", "format": "uint256", "description": "Hyperliquid HyperCore activation fee — 1 USDC charged on the first inbound deposit to a non-activated HyperCore account. Equal to 1_000_000 (USDC 6-decimal wei) when the orchestrator detects an unactivated HyperCore recipient and inflates the user's USDC delivery to cover the fee; 0 otherwise. Always present, like every other field in the breakdown.", "example": "1000000" } }, "required": [ "gasFee", "bridgeFee", "protocolFee", "swapFee", "settlementFee", "appFee", "hyperCoreActivationFee" ], "description": "Per-category breakdown of fees in token units (BPS-derived computed values)" } }, "required": [ "amount", "breakdown" ], "description": "Fee entry for a specific token with per-category breakdown" }, "description": "Fees paid in tokens other than the output token (e.g., settlement fees, origin gas in input token)", "example": { "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": { "amount": "19989", "breakdown": { "gasFee": "19987", "bridgeFee": "0", "protocolFee": "0", "swapFee": "0", "settlementFee": "2", "appFee": "0", "hyperCoreActivationFee": "0" } } } }, "hasFulfilled": { "type": "boolean", "description": "True when the route fully delivers `destinationAmount` for this token." } }, "required": [ "tokenAddress", "amountSpent", "destinationAmount", "fee", "feeBreakdown", "feesByToken", "hasFulfilled" ] }, "description": "Per-token delivery summary on the destination chain." }, "sponsorFee": { "type": "object", "properties": { "relayer": { "type": "number", "description": "Fee charged by relayer", "example": 0.0009 }, "protocol": { "type": "number", "description": "Fee charged by Rhinestone", "example": 0 } }, "required": [ "relayer", "protocol" ], "description": "Transaction fees" }, "appFee": { "type": "array", "items": { "type": "object", "properties": { "feeBps": { "type": "integer", "minimum": 0, "maximum": 10000, "description": "Integrator app-fee rate in basis points.", "example": 100 }, "baseAmount": { "type": "string", "format": "uint256", "description": "Principal amount the app fee was computed from, in token base units.", "example": "10000000" }, "amount": { "type": "string", "format": "uint256", "description": "App-fee amount in token base units.", "example": "100000" }, "chainId": { "type": "integer", "minimum": 0, "description": "Origin chain ID where the app-fee token is spent.", "example": 42161 }, "tokenAddress": { "type": "string", "description": "Address of the token used to pay the app fee.", "example": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" } }, "required": [ "feeBps", "baseAmount", "amount", "chainId", "tokenAddress" ], "description": "Concrete user-paid integrator app-fee leg. App fees are never sponsored." }, "description": "Concrete app-fee legs charged to the user. Empty when no app fee applies; app fees are never sponsored." }, "gasCost": { "type": "object", "properties": { "originChains": { "type": "array", "items": { "type": "object", "properties": { "chainId": { "type": "number", "description": "Chain ID where the gas cost was incurred", "example": 8453 }, "gasUSD": { "type": "number", "description": "Gas cost in USD", "example": 1.2 } }, "required": [ "chainId", "gasUSD" ] }, "description": "Gas costs per origin chain" }, "destination": { "type": "object", "properties": { "chainId": { "type": "number", "description": "Chain ID where the gas cost was incurred", "example": 8453 }, "gasUSD": { "type": "number", "description": "Gas cost in USD", "example": 1.2 } }, "required": [ "chainId", "gasUSD" ], "description": "Gas cost on the destination chain" }, "totalUSD": { "type": "number", "description": "Total gas cost in USD across all chains", "example": 4.15 } }, "required": [ "originChains", "destination", "totalUSD" ], "description": "Breakdown of gas costs across origin and destination chains" }, "feeBreakdownUSD": { "type": "object", "properties": { "gasFeeUSD": { "type": "number", "description": "Total gas fees in USD (destination fill, swap execution, origin gas)", "example": 0.029 }, "bridgeFeeUSD": { "type": "number", "description": "Total bridge commission in USD", "example": 0.000015 }, "protocolFeeUSD": { "type": "number", "description": "Total protocol fee in USD", "example": 0 }, "swapFeeUSD": { "type": "number", "description": "Total solver swap commission in USD", "example": 0 }, "settlementFeeUSD": { "type": "number", "description": "Total settlement layer fee in USD", "example": 0.000002 }, "appFeeUSD": { "type": "number", "description": "Total integrator app fee in USD", "example": 0.25 }, "totalFeeUSD": { "type": "number", "description": "Sum of all fees in USD (including sponsored)", "example": 0.029017 } }, "required": [ "gasFeeUSD", "bridgeFeeUSD", "protocolFeeUSD", "swapFeeUSD", "settlementFeeUSD", "appFeeUSD", "totalFeeUSD" ], "description": "Aggregate fee breakdown in USD across all tokens and chains" } }, "required": [ "hasFulfilledAll", "tokensSpent", "tokensReceived", "sponsorFee", "appFee", "gasCost", "feeBreakdownUSD" ] }, { "type": "object", "properties": { "hasFulfilledAll": { "type": "boolean", "enum": [ false ], "description": "One or more requested output tokens fall short on this route. See `tokenShortfall` for details." }, "tokenShortfall": { "type": "array", "items": { "type": "object", "properties": { "tokenAddress": { "type": "string", "minLength": 1, "description": "Address of the token that has not been fulfilled (EVM 0x or non-EVM base58)", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "destinationAmount": { "type": "string", "format": "uint256", "description": "Target amount of the token that has not been fulfilled", "example": "1000000" }, "amountSpent": { "type": "string", "format": "uint256", "description": "Amount spent on the token that has not been fulfilled", "example": "500000" }, "fee": { "type": "string", "format": "uint256", "description": "Fee associated with the token that has not been fulfilled", "example": "10000" }, "feesByToken": { "type": "object", "additionalProperties": { "type": "object", "properties": { "amount": { "type": "string", "format": "uint256", "description": "Fee amount in this token", "example": "19989" }, "breakdown": { "type": "object", "properties": { "gasFee": { "type": "string", "format": "uint256", "description": "Combined gas fees: destination fill, destination swap execution, and origin chain gas", "example": "5000" }, "bridgeFee": { "type": "string", "format": "uint256", "description": "Cross-chain bridge commission charged by the relayer", "example": "2000" }, "protocolFee": { "type": "string", "format": "uint256", "description": "Protocol fee charged by Rhinestone", "example": "0" }, "swapFee": { "type": "string", "format": "uint256", "description": "Solver swap commission for cross-token conversions", "example": "50000" }, "settlementFee": { "type": "string", "format": "uint256", "description": "Settlement layer fee (e.g. Relay, Across)", "example": "1000" }, "appFee": { "type": "string", "format": "uint256", "description": "Integrator app fee charged in the fee-bearing input token", "example": "2500" }, "hyperCoreActivationFee": { "type": "string", "format": "uint256", "description": "Hyperliquid HyperCore activation fee — 1 USDC charged on the first inbound deposit to a non-activated HyperCore account. Equal to 1_000_000 (USDC 6-decimal wei) when the orchestrator detects an unactivated HyperCore recipient and inflates the user's USDC delivery to cover the fee; 0 otherwise. Always present, like every other field in the breakdown.", "example": "1000000" } }, "required": [ "gasFee", "bridgeFee", "protocolFee", "swapFee", "settlementFee", "appFee", "hyperCoreActivationFee" ], "description": "Per-category breakdown of fees in token units (BPS-derived computed values)" } }, "required": [ "amount", "breakdown" ], "description": "Fee entry for a specific token with per-category breakdown" }, "description": "Fees paid in tokens other than the output token (e.g., settlement fees, origin gas in input token)", "example": { "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": { "amount": "19989", "breakdown": { "gasFee": "19987", "bridgeFee": "0", "protocolFee": "0", "swapFee": "0", "settlementFee": "2", "appFee": "0", "hyperCoreActivationFee": "0" } } } }, "tokenSymbol": { "type": "string", "description": "Symbol of the token that has not been fulfilled", "example": "USDC" }, "decimals": { "type": "number", "minimum": 0, "description": "Number of decimal places for the token", "example": 6 } }, "required": [ "tokenAddress", "destinationAmount", "amountSpent", "fee", "feesByToken", "tokenSymbol", "decimals" ] }, "description": "List of tokens that have not been fulfilled" }, "totalTokenShortfallInUSD": { "type": "number", "minimum": 0, "description": "Total shortfall of tokens in USD", "example": 500 } }, "required": [ "hasFulfilledAll", "tokenShortfall", "totalTokenShortfallInUSD" ] } ], "description": "Cost breakdown for the route. Discriminated on `hasFulfilledAll`: when `true`, the requested amounts can be delivered; when `false`, the route falls short and `tokenShortfall` lists the missing tokens." }, "tokenRequirements": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "approval" ], "description": "Discriminator: `approval` means the user must ERC-20 approve `spender` for at least `amount` before submission." }, "amount": { "type": "string", "format": "uint256", "description": "Minimum required allowance, in the token's smallest unit." }, "spender": { "type": "string", "description": "Always the canonical Permit2 contract on this chain. The EOA approves Permit2; the settlement contract pulls funds via Permit2 at claim time." } }, "required": [ "type", "amount", "spender" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "wrap" ], "description": "Discriminator: `wrap` means the user must wrap native ETH into the chain's WETH-equivalent before submission." }, "amount": { "type": "string", "format": "uint256", "description": "Minimum amount to wrap, in wei." } }, "required": [ "type", "amount" ] } ] } }, "description": "Pre-flight token operations the user must perform before submitting this route (approvals, wrapping). Emitted for EOA accounts only.", "example": { "8453": { "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": { "type": "approval", "amount": "1000000", "spender": "0x000000000022d473030f116ddee9f6b43ac78ba3" } } } } }, "required": [ "intentOp", "intentCost" ], "description": "Response body for `POST /quotes` on the older API version" } } } }, "400": { "description": "Invalid request parameters", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "403": { "description": "API key scope denied", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Invalid input" }, "context": { "description": "Additional error context" } }, "required": [ "message" ] } }, "traceId": { "type": "string", "description": "Trace ID for request correlation. Returned in x-trace-id for all responses and in legacy alps error bodies for compatibility.", "example": "eb0ba4657f36364b33ec565c15f98368" } }, "required": [ "errors", "traceId" ] } } } } }, "summary": "Create Quote", "description": "Computes a quote for an intent: token transfers, target executions, and cost breakdown. Returns a pre-ranked `routes[]` with per-route `intentId` to pass to `POST /intents` for execution.", "tags": [ "Quotes" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "destinationChainId": { "type": "number", "minimum": 0, "description": "The ID of the target blockchain", "example": 8453 }, "tokenRequests": { "type": "array", "items": { "type": "object", "properties": { "tokenAddress": { "type": "string", "minLength": 1, "description": "The address of the requested token. Format depends on destination chain — 0x-hex for EVM, base58 SPL mint for Solana, T-address for Tron.", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "amount": { "type": "string", "format": "uint256", "description": "The amount of the requested token (in the smallest unit). Omit for max-out.", "example": "1000000" }, "balance": { "type": "string", "enum": [ "spot", "perp" ], "description": "HyperCore balance class for this token request — 'spot' or 'perp'. Optional; defaults to 'perp' when destinationChainId is HyperCore. Rejected on every other destination.", "example": "spot" } }, "required": [ "tokenAddress" ] }, "description": "A list of token requested on the target chain" }, "account": { "type": "object", "properties": { "address": { "type": "string", "description": "Account address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "accountType": { "type": "string", "enum": [ "smartAccount", "GENERIC", "EOA", "ERC7579" ], "description": "Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation." }, "setupOps": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Account deployment factory address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Account deployment data", "example": "0x..." } }, "required": [ "to", "data" ] }, "description": "Setup operations for the smart account. Only used if the account is not deployed" }, "mockSignatures": { "type": "object", "additionalProperties": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$" }, "description": "Per-chain stub signatures used only during gas estimation. Required for smart-session flows where the real signature length depends on session policy — the orchestrator needs a same-shape placeholder to simulate the verification cost. Keys are chain IDs as decimal strings; `\"0\"` is a cross-chain fallback applied when no chain-specific entry matches." }, "mockSignature": { "description": "Deprecated. Must be omitted; use `mockSignatures` (keyed by chain id) instead." }, "delegations": { "type": "object", "additionalProperties": { "type": "object", "properties": { "contract": { "type": "string", "description": "address of contract to which delegation on behalf of sponsor will be assumed for given chain ID" } }, "required": [ "contract" ] }, "description": "Per-chain specific map to delegated contract address for 7702 delegations. Use `0` to indicate cross-chain delegation" } }, "required": [ "address" ], "description": "Account details" }, "destinationExecutions": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "to", "value", "data" ] }, "description": "Execution calls on the target chain." }, "preClaimExecutions": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Target contract address for execution", "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }, "value": { "type": "string", "format": "uint256", "description": "Amount of ETH (in wei) sent in the execution", "example": "0" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Encoded function call data", "example": "0xa9059cbb000000000000000000000000579d5631f76126991c00fb8fe5467fa9d49e5f6a00000000000000000000000000000000000000000000000000000000000f4240" } }, "required": [ "to", "value", "data" ] }, "maxItems": 10 }, "description": "Execution calls to perform before the claim on each origin chain, keyed by chain ID. Max 10 ops per chain, max 5 chains.", "example": { "8453": [ { "to": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "value": "0", "data": "0x" } ] } }, "destinationGasLimit": { "type": "string", "format": "uint256", "description": "The gas limit for the target chain executions", "example": "100000" }, "accountAccessList": { "type": "object", "properties": { "chainIds": { "type": "array", "items": { "type": "number", "minimum": 0 } }, "tokens": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "ETH", "USDC", "WETH", "USDT", "USDT0", "BNB", "WBNB", "XDAI", "WXDAI", "POL", "WPOL", "MON", "WMON", "S", "WS", "HYPE", "WHYPE", "XPL", "WXPL", "MockUSD", "TRX", "WTRX", "SOL", "WSOL" ] } ] } }, "chainTokens": { "type": "object", "additionalProperties": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "ETH", "USDC", "WETH", "USDT", "USDT0", "BNB", "WBNB", "XDAI", "WXDAI", "POL", "WPOL", "MON", "WMON", "S", "WS", "HYPE", "WHYPE", "XPL", "WXPL", "MockUSD", "TRX", "WTRX", "SOL", "WSOL" ] } ] } } }, "chainTokenAmounts": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string", "format": "uint256" } } }, "exclude": { "type": "object", "properties": { "chainIds": { "type": "array", "items": { "type": "number", "minimum": 0 } }, "tokens": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "ETH", "USDC", "WETH", "USDT", "USDT0", "BNB", "WBNB", "XDAI", "WXDAI", "POL", "WPOL", "MON", "WMON", "S", "WS", "HYPE", "WHYPE", "XPL", "WXPL", "MockUSD", "TRX", "WTRX", "SOL", "WSOL" ] } ] } }, "chainTokens": { "type": "object", "additionalProperties": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "ETH", "USDC", "WETH", "USDT", "USDT0", "BNB", "WBNB", "XDAI", "WXDAI", "POL", "WPOL", "MON", "WMON", "S", "WS", "HYPE", "WHYPE", "XPL", "WXPL", "MockUSD", "TRX", "WTRX", "SOL", "WSOL" ] } ] } } } } } }, "description": "Account access list specifying which chains and tokens an account may access" }, "recipient": { "type": "object", "properties": { "address": { "type": "string", "minLength": 1, "description": "Recipient address. Format depends on destination chain — 0x-hex for EVM destinations, base58 for Solana, T-address for Tron.", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "accountType": { "type": "string", "enum": [ "smartAccount", "GENERIC", "EOA", "ERC7579" ], "description": "Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation." }, "setupOps": { "type": "array", "items": { "type": "object", "properties": { "to": { "type": "string", "description": "Account deployment factory address", "example": "0x579d5631f76126991c00fb8fe5467fa9d49e5f6a" }, "data": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$", "description": "Account deployment data", "example": "0x..." } }, "required": [ "to", "data" ] }, "description": "Setup operations for the smart account. Only used if the account is not deployed" }, "mockSignatures": { "type": "object", "additionalProperties": { "type": "string", "pattern": "^0x[a-fA-F0-9]*$" }, "description": "Per-chain stub signatures used only during gas estimation. Required for smart-session flows where the real signature length depends on session policy — the orchestrator needs a same-shape placeholder to simulate the verification cost. Keys are chain IDs as decimal strings; `\"0\"` is a cross-chain fallback applied when no chain-specific entry matches." }, "mockSignature": { "description": "Deprecated. Must be omitted; use `mockSignatures` (keyed by chain id) instead." }, "delegations": { "type": "object", "additionalProperties": { "type": "object", "properties": { "contract": { "type": "string", "description": "address of contract to which delegation on behalf of sponsor will be assumed for given chain ID" } }, "required": [ "contract" ] }, "description": "Per-chain specific map to delegated contract address for 7702 delegations. Use `0` to indicate cross-chain delegation" } }, "required": [ "address" ] }, "options": { "type": "object", "properties": { "settlementLayers": { "oneOf": [ { "type": "array", "items": { "type": "string", "enum": [ "ACROSS", "ECO", "RELAY", "OFT", "NEAR", "RHINO", "CCTP" ] } }, { "type": "object", "properties": { "include": { "type": "array", "items": { "type": "string", "enum": [ "ACROSS", "ECO", "RELAY", "OFT", "NEAR", "RHINO", "CCTP" ] } } }, "required": [ "include" ], "additionalProperties": false }, { "type": "object", "properties": { "exclude": { "type": "array", "items": { "type": "string", "enum": [ "ACROSS", "ECO", "RELAY", "OFT", "NEAR", "RHINO", "CCTP" ] } } }, "required": [ "exclude" ], "additionalProperties": false } ], "description": "Which settlement layers the orchestrator may use. `{ include: [...] }` (allow-list) or `{ exclude: [...] }` (deny-list, inverted against the orchestrator's live layer set); a bare array means `include`. Internal modes (`SAME_CHAIN`, `INTENT_EXECUTOR`) are not selectable. Default unset = all layers eligible.", "example": { "exclude": [ "RELAY" ] } }, "sponsorSettings": { "type": "object", "properties": { "gas": { "default": false, "type": "boolean", "description": "Whether to sponsor gas for the intent", "example": true }, "bridgeFees": { "default": false, "type": "boolean", "description": "Whether to sponsor bridge fees for the intent" }, "swapFees": { "default": false, "type": "boolean", "description": "Whether to sponsor swap fees for the intent" } }, "description": "Sponsor settings for the intent", "example": { "gas": true, "bridgeFees": true, "swapFees": true } }, "signatureMode": { "type": "string", "enum": [ "EMISSARY", "ERC1271", "EMISSARY_ERC1271", "ERC1271_EMISSARY", "EMISSARY_EXECUTION", "EMISSARY_EXECUTION_ERC1271", "ERC1271_EMISSARY_EXECUTION", 0, 1, 2, 3, 4, 5, 6 ], "description": "How the user's intent signature will be verified onchain. `ECDSA` for plain EOA signatures; `ERC1271_EMISSARY` for smart-account signatures verified via TheCompact emissary delegation. The orchestrator picks a default based on `account.accountType` — only set this if you need to override.", "example": 3 }, "feeToken": { "type": "string", "enum": [ "ETH", "USDC", "WETH", "USDT", "USDT0", "BNB", "WBNB", "XDAI", "WXDAI", "POL", "WPOL", "MON", "WMON", "S", "WS", "HYPE", "WHYPE", "XPL", "WXPL", "MockUSD", "TRX", "WTRX", "SOL", "WSOL" ], "description": "Reserved for future use. No effect today." }, "appFees": { "type": "object", "properties": { "feeBps": { "type": "integer", "minimum": 0, "maximum": 10000, "description": "App fee rate in basis points of the input value (0–10000 = 0–100%).", "example": 25 } }, "required": [ "feeBps" ] }, "executionTokensReceived": { "type": "array", "items": { "type": "string" }, "description": "Tokens that will be received by EOA executions. These will be swept to the recipient account.", "example": [ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" ] }, "auxiliaryFunds": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string", "format": "uint256" } }, "description": "Additional balances the quote should treat as available, beyond what is currently on the account. Use this to get a preliminary quote against funds you can produce by the time you submit — e.g. liquidity in a DeFi vault you will withdraw, an in-flight CEX deposit, or a parallel transfer from another wallet. Keyed by chain ID, then token address; amounts in the token's smallest unit.", "example": { "42161": { "0xaf88d065e77c8cC2239327C5EDb3A432268e5831": "500000000" } } }, "selectionStrategy": { "type": "string", "enum": [ "cheapest", "fastest", "best" ], "description": "How to rank candidate plans. `cheapest` minimizes direct USD cost. `fastest` minimizes estimated fill time (with cost tiebreaker). `best` balances both via a notional- and time-weighted shadow fee.", "example": "best" } }, "description": "Intent options", "example": { "settlementLayers": { "include": [ "ECO" ] }, "sponsorSettings": { "gas": true, "bridgeFees": true, "swapFees": true }, "feeToken": "USDC" } } }, "required": [ "destinationChainId", "tokenRequests", "account" ] } } } } } } } }