{ "openapi": "3.0.0", "info": { "title": "Synapse Protocol REST API", "version": "1.7.0", "description": "API documentation for the Synapse Protocol REST API" }, "servers": [ { "url": "https://api.synapseprotocol.com", "description": "Production server" }, { "url": "http://localhost:3000", "description": "Local development server" } ], "paths": { "/bridge/v2": { "get": { "summary": "Get quotes for bridging tokens between chains", "description": "Retrieve list of bridge quotes based on origin and destination chains, tokens, and amount. Any origin token can be used, but destination tokens must be supported on the destination chain.", "parameters": [ { "in": "query", "name": "fromChainId", "required": true, "schema": { "type": "integer" }, "description": "The origin chain ID (must support intents)" }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the origin chain" }, { "in": "query", "name": "fromAmount", "required": true, "schema": { "type": "string" }, "description": "The amount of tokens to bridge in the token's native decimals" }, { "in": "query", "name": "fromSender", "required": false, "schema": { "type": "string" }, "description": "The address of the user on the origin chain (required to generate callData)" }, { "in": "query", "name": "toChainId", "required": true, "schema": { "type": "integer" }, "description": "The destination chain ID" }, { "in": "query", "name": "toToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the destination chain" }, { "in": "query", "name": "toRecipient", "required": false, "schema": { "type": "string" }, "description": "The destination address for the bridge transaction (required to generate callData)" }, { "in": "query", "name": "slippage", "required": false, "schema": { "type": "number" }, "description": "Optional. The maximum allowed slippage percentage (0-100). Defaults to 0.5%." } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the quote (UUIDv7)" }, "fromChainId": { "type": "integer", "description": "The ID of the origin chain" }, "fromToken": { "type": "string", "description": "The address of the token on the origin chain" }, "fromAmount": { "type": "string", "description": "The amount of tokens to bridge in the token's native decimals" }, "toChainId": { "type": "integer", "description": "The ID of the destination chain" }, "toToken": { "type": "string", "description": "The address of the token on the destination chain" }, "expectedToAmount": { "type": "string", "description": "The expected amount of tokens that will be received in the token's native decimals" }, "minToAmount": { "type": "string", "description": "The minimum amount of tokens that will be received in the token's native decimals (includes slippage)" }, "routerAddress": { "type": "string", "description": "The address of the router contract" }, "estimatedTime": { "type": "integer", "description": "Estimated time for the bridge in seconds" }, "moduleNames": { "type": "array", "items": { "type": "string" }, "description": "The names of the bridge or swap modules used for this quote" }, "gasDropAmount": { "type": "string", "description": "Amount of native token airdropped on destination chain (in native token decimals)" }, "callData": { "type": "object", "nullable": true, "description": "Transaction data object, only provided if fromSender and toRecipient parameters were included", "properties": { "to": { "type": "string", "description": "Contract address to call" }, "data": { "type": "string", "description": "Transaction calldata" }, "value": { "type": "string", "description": "Amount of native currency to send with transaction (in native token decimals)" } } } } } }, "example": [ { "id": "01920c87-7f14-7cdf-90e1-e13b2d4af55f", "fromChainId": 1, "fromToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "fromAmount": "1000000000000", "toChainId": 42161, "toToken": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", "expectedToAmount": "999046695719", "minToAmount": "994051462240", "routerAddress": "0x512000a034E154908Efb1eC48579F4ffDb000512", "estimatedTime": 30, "moduleNames": ["SynapseRFQ"], "gasDropAmount": "0", "callData": { "to": "0x512000a034E154908Efb1eC48579F4ffDb000512", "data": "0x...", "value": "0" } } ] } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "value": { "type": "string" }, "msg": { "type": "string" }, "param": { "type": "string" }, "location": { "type": "string" } } } } } }, "example": { "errors": [ { "value": "999", "msg": "Unsupported fromChain", "param": "fromChain", "location": "query" } ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } }, "example": { "error": "An unexpected error occurred in /bridge/v2. Please try again later." } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/bridgeLimits": { "get": { "summary": "Get min/max origin values for bridge quote", "description": "Retrieve min/max bridgeable amounts to bridge from source chain to destination chain. Returns null for min/max amounts if limits are unavailable.", "parameters": [ { "in": "query", "name": "fromChain", "required": true, "schema": { "type": "integer" }, "description": "The source chain ID." }, { "in": "query", "name": "toChain", "required": true, "schema": { "type": "integer" }, "description": "The destination chain ID." }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the source chain." }, { "in": "query", "name": "toToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the destination chain." } ], "responses": { "200": { "description": "Successful response containing min and max origin amounts.", "content": { "application/json": { "schema": { "type": "object", "properties": { "maxOriginAmount": { "type": "string", "description": "Maximum amount of tokens that can be bridged from the origin chain." }, "minOriginAmount": { "type": "string", "description": "Minimum amount of tokens that can be bridged from the origin chain." } } }, "example": { "maxOriginAmount": "999600", "minOriginAmount": "4" } } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "999", "message": "Unsupported fromChain", "field": "fromChain", "location": "query" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/bridge": { "get": { "summary": "Get quotes for bridging tokens between chains", "description": "Retrieve list of detailed bridge quotes based on origin and destination chains based on tokens and amount", "parameters": [ { "in": "query", "name": "fromChain", "required": true, "schema": { "type": "integer" }, "description": "The source chain ID" }, { "in": "query", "name": "toChain", "required": true, "schema": { "type": "integer" }, "description": "The destination chain ID" }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the source chain" }, { "in": "query", "name": "toToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the destination chain" }, { "in": "query", "name": "amount", "required": true, "schema": { "type": "number" }, "description": "The amount of tokens to bridge" }, { "in": "query", "name": "originUserAddress", "required": false, "schema": { "type": "string" }, "description": "The address of the user on the origin chain" }, { "in": "query", "name": "destAddress", "required": false, "schema": { "type": "string" }, "description": "The destination address of the user on the destination chain" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "feeAmount": { "$ref": "#/components/schemas/BigNumber" }, "feeConfig": { "type": "object", "properties": { "bridgeFee": { "type": "integer" }, "minFee": { "$ref": "#/components/schemas/BigNumber" }, "maxFee": { "$ref": "#/components/schemas/BigNumber" } } }, "routerAddress": { "type": "string" }, "maxAmountOut": { "$ref": "#/components/schemas/BigNumber" }, "originQuery": { "type": "object" }, "destQuery": { "type": "object" }, "estimatedTime": { "type": "integer" }, "bridgeModuleName": { "type": "string" }, "gasDropAmount": { "$ref": "#/components/schemas/BigNumber" }, "originChainId": { "type": "integer" }, "destChainId": { "type": "integer" }, "maxAmountOutStr": { "type": "string" }, "bridgeFeeFormatted": { "type": "string" } } } }, "example": [ { "id": "01920c87-7f14-7cdf-90e1-e13b2d4af55f", "feeAmount": { "type": "BigNumber", "hex": "0x17d78400" }, "feeConfig": { "bridgeFee": 4000000, "minFee": { "type": "BigNumber", "hex": "0x3d0900" }, "maxFee": { "type": "BigNumber", "hex": "0x17d78400" } }, "routerAddress": "0xd5a597d6e7ddf373a92C8f477DAAA673b0902F48", "maxAmountOut": { "type": "BigNumber", "hex": "0xe89bd2cb27" }, "originQuery": { "routerAdapter": "0x0000000000000000000000000000000000000000", "tokenOut": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "minAmountOut": { "type": "BigNumber", "hex": "0xe8d4a51000" }, "deadline": { "type": "BigNumber", "hex": "0x66ecb04b" }, "rawParams": "0x" }, "destQuery": { "routerAdapter": "0xd5a597d6e7ddf373a92C8f477DAAA673b0902F48", "tokenOut": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", "minAmountOut": { "type": "BigNumber", "hex": "0xe89bd2cb27" }, "deadline": { "type": "BigNumber", "hex": "0x66f5e873" }, "rawParams": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009a2dea7b81cfe3e0011d44d41c5c5142b8d9abdf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002" }, "estimatedTime": 1020, "bridgeModuleName": "SynapseCCTP", "gasDropAmount": { "type": "BigNumber", "hex": "0x0110d9316ec000" }, "originChainId": 1, "destChainId": 42161, "maxAmountOutStr": "999046.695719", "bridgeFeeFormatted": "400" } ] } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "999", "message": "Unsupported fromChain", "field": "fromChain", "location": "query" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/bridgeTxInfo": { "get": { "summary": "[Deprecated] in favor of using the /bridge endpoint, which now returns call data", "description": "[Deprecated] Originally used to get Bridge transaction information", "parameters": [ { "in": "query", "name": "fromChain", "required": true, "schema": { "type": "integer" }, "description": "The source chain ID" }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the source chain" }, { "in": "query", "name": "toChain", "required": true, "schema": { "type": "integer" }, "description": "The destination chain ID" }, { "in": "query", "name": "toToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the destination chain" }, { "in": "query", "name": "amount", "required": true, "schema": { "type": "number" }, "description": "The amount of tokens to bridge" }, { "in": "query", "name": "destAddress", "required": true, "schema": { "type": "string" }, "description": "The destination address for the bridged tokens" }, { "in": "query", "name": "originUserAddress", "required": false, "schema": { "type": "string" }, "description": "The address of the user on the origin chain" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "data": { "type": "string", "description": "Encoded transaction data" }, "to": { "type": "string", "description": "The address of the contract to interact with" }, "value": { "type": "object", "properties": { "type": { "type": "string", "enum": ["BigNumber"] }, "hex": { "type": "string" } }, "description": "The amount of native currency to send with the transaction" } } } }, "example": [ { "data": "0xc2288147000000000000000000000000abb4f79430002534df3f62e964d62659a010ef3c000000000000000000000000000000000000000000000000000000000000a4b1000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000174876e80000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000174876e8000000000000000000000000000000000000000000000000000000000066ecbadf00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d5a597d6e7ddf373a92c8f477daaa673b0902f48000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb90000000000000000000000000000000000000000000000000000001744e380400000000000000000000000000000000000000000000000000000000066f5f30700000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009a2dea7b81cfe3e0011d44d41c5c5142b8d9abdf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004", "to": "0xd5a597d6e7ddf373a92C8f477DAAA673b0902F48", "value": { "type": "BigNumber", "hex": "0x00" } } ] } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "999", "message": "Unsupported fromChain", "field": "fromChain", "location": "query" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/bridgeTxStatus": { "get": { "summary": "Get Bridge Transaction Status", "description": "Used to get the status of a bridge transaction, and the destination transaction information if the transaction is finalized", "parameters": [ { "in": "query", "name": "destChainId", "required": true, "schema": { "type": "integer" }, "description": "The ID of the destination chain" }, { "in": "query", "name": "bridgeModule", "required": true, "schema": { "type": "string", "enum": ["SynapseRFQ", "SynapseBridge", "SynapseCCTP"] }, "description": "The bridge module used for the transaction" }, { "in": "query", "name": "synapseTxId", "required": true, "schema": { "type": "string" }, "description": "The Synapse transaction ID" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean", "description": "The status of the transaction" }, "toInfo": { "type": "object", "properties": { "chainID": { "type": "integer", "description": "The destination chain ID" }, "address": { "type": "string", "description": "The recipient address" }, "txnHash": { "type": "string", "description": "The transaction hash on the destination chain" }, "USDValue": { "type": "number", "description": "The USD value of the transaction" }, "tokenSymbol": { "type": "string", "description": "The symbol of the token transferred" }, "formattedTime": { "type": "string", "description": "The formatted time of the transaction" }, "formattedValue": { "type": "string", "description": "The formatted value of the transaction" } } } } }, "example": { "status": true, "toInfo": { "chainID": 10, "address": "0xRL3Bab0e4c09Ff447863f507E16090A9F22792d2", "txnHash": "0x4eff784e85df5265dcc8e3c30b9df4b5c8a0c940300f6d8ad7ed737e9beb6fab", "USDValue": 1.79848, "tokenSymbol": "USDC", "formattedTime": "2024-09-01 17:10:41 +0000 UTC", "formattedValue": "1.797684" } } } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "999", "message": "Unsupported destChainId", "field": "destChainId", "location": "query" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/destinationTokens": { "get": { "summary": "Get possible destination tokens for a bridge", "description": "Retrieve possible destination tokens for a given source chain ID and token address", "parameters": [ { "in": "query", "name": "fromChain", "required": true, "schema": { "type": "integer" }, "description": "The source chain ID" }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the source chain" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "symbol": { "type": "string", "description": "The token symbol" }, "chainId": { "type": "string", "description": "The chain ID where the token is available" }, "address": { "type": "string", "description": "The token contract address" } } } }, "example": [ { "symbol": "USDC", "chainId": "1", "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" }, { "symbol": "USDT", "chainId": "42161", "address": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9" }, { "symbol": "crvUSD", "chainId": "8453", "address": "0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93" } ] } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "100", "message": "Unsupported fromChain", "field": "fromChain", "location": "query" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/destinationTx": { "get": { "summary": "Get Destination Transaction Information", "description": "Used to get the status of a bridge transaction, and the destination transaction information if the transaction is finalized", "parameters": [ { "in": "query", "name": "originChainId", "required": true, "schema": { "type": "integer" }, "description": "The ID of the origin chain where the transaction was initiated" }, { "in": "query", "name": "txHash", "required": true, "schema": { "type": "string" }, "description": "The transaction hash on the origin chain" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "description": "The status of the transaction" }, "fromInfo": { "type": "object", "properties": { "chainID": { "type": "integer", "description": "The origin chain ID" }, "address": { "type": "string", "description": "The recipient address" }, "txnHash": { "type": "string", "description": "The transaction hash on the destination chain" }, "USDValue": { "type": "number", "description": "The USD value of the transaction" }, "tokenSymbol": { "type": "string", "description": "The symbol of the token transferred" }, "blockNumber": { "type": "integer", "description": "The block number of the transaction" }, "formattedTime": { "type": "string", "description": "The formatted time of the transaction" }, "formattedValue": { "type": "string", "description": "The formatted value of the transaction" } } }, "toInfo": { "type": "object", "properties": { "chainID": { "type": "integer", "description": "The destination chain ID" }, "address": { "type": "string", "description": "The recipient address" }, "txnHash": { "type": "string", "description": "The transaction hash on the destination chain" }, "USDValue": { "type": "number", "description": "The USD value of the transaction" }, "tokenSymbol": { "type": "string", "description": "The symbol of the token transferred" }, "blockNumber": { "type": "integer", "description": "The block number of the transaction" }, "formattedTime": { "type": "string", "description": "The formatted time of the transaction" }, "formattedValue": { "type": "string", "description": "The formatted value of the transaction" } } } } }, "example": { "status": "completed", "fromInfo": { "chainID": 8453, "address": "0x6eA4207627aAf2Ef86642eD8B331579b606471c3", "txnHash": "0x13486d9eaefd68de6a20b704d70deb8436effbac1f77fddfc0c7ef14f08e96c3", "USDValue": "11660.93019,", "tokenSymbol": "USDC", "blockNumber": "19857812,", "formattedTime": "2024-09-16 16:42:51 +0000 UTC", "formattedValue": "11637.654884" }, "toInfo": { "chainID": 42161, "address": "0xfC8f27Bcf34FfD52869ffa4A5A6B9b0A872281Ad", "txnHash": "0xe26be8f4296c14dc8da6ef92d39c1d20577a43704bfb0b2cea5ee2f516be0f4e", "USDValue": 11660.92558, "tokenSymbol": "USDC", "blockNumber": 254173724, "formattedTime": "2024-09-16 16:42:55 +0000 UTC", "formattedValue": "11637.650281" } } } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "999", "message": "originChainId is required", "field": "originChainId", "location": "query" } } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string" }, "fromInfo": { "type": "object", "nullable": true }, "toInfo": { "type": "object", "nullable": true } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/": { "get": { "summary": "Get API information", "description": "Retrieve general information about the Synapse REST API, including available chains and tokens", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "Welcome message for the API" }, "availableChains": { "type": "array", "description": "List of available blockchain networks", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the blockchain network" }, "id": { "type": "integer", "description": "Chain ID of the blockchain network" } } } }, "availableTokens": { "type": "array", "description": "List of available tokens across different chains", "items": { "type": "object", "properties": { "symbol": { "type": "string", "description": "Token symbol" }, "chains": { "type": "array", "description": "List of chains where the token is available", "items": { "type": "object", "properties": { "chainId": { "type": "string", "description": "Chain ID where the token is available" }, "address": { "type": "string", "description": "Token contract address on the specific chain" } } } } } } } } }, "example": { "message": "Welcome to the Synapse REST API for swap and bridge quotes", "availableChains": [ { "name": "Ethereum", "id": 1 }, { "name": "Arbitrum", "id": 42161 } ], "availableTokens": [ { "symbol": "USDC", "chains": [ { "chainId": "1", "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" }, { "chainId": "42161", "address": "0xaf88d065e77c8cc2239327c5edb3a432268e5831" } ] } ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/intent": { "get": { "summary": "Get intent quotes for transferring tokens", "description": "Retrieve list of intent quotes for transferring tokens between chains or within a chain. Intents can involve a combination of swaps and bridges to achieve the user's goal of moving from one token to another.", "parameters": [ { "in": "query", "name": "fromChainId", "required": true, "schema": { "type": "integer" }, "description": "The origin chain ID (must support intents)" }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the origin chain" }, { "in": "query", "name": "fromAmount", "required": true, "schema": { "type": "string" }, "description": "The amount of tokens to transfer in the token's native decimals" }, { "in": "query", "name": "fromSender", "required": false, "schema": { "type": "string" }, "description": "The address of the sender on the origin chain (required to generate callData)" }, { "in": "query", "name": "toChainId", "required": true, "schema": { "type": "integer" }, "description": "The destination chain ID" }, { "in": "query", "name": "toToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token on the destination chain" }, { "in": "query", "name": "toRecipient", "required": false, "schema": { "type": "string" }, "description": "The recipient address on the destination chain (required to generate callData)" }, { "in": "query", "name": "slippage", "required": false, "schema": { "type": "number" }, "description": "Optional. The maximum allowed slippage percentage (0-100). Defaults to 0.5%." }, { "in": "query", "name": "allowMultipleTxs", "required": false, "schema": { "type": "boolean" }, "description": "Optional. Whether to allow intent execution across multiple transactions." } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the quote (UUIDv7)" }, "fromChainId": { "type": "integer", "description": "The ID of the origin chain" }, "fromToken": { "type": "string", "description": "The address of the token on the origin chain" }, "fromAmount": { "type": "string", "description": "The amount of tokens to transfer (in native token decimals)" }, "toChainId": { "type": "integer", "description": "The ID of the destination chain" }, "toToken": { "type": "string", "description": "The address of the token on the destination chain" }, "expectedToAmount": { "type": "string", "description": "The expected amount of tokens to be received (in native token decimals)" }, "minToAmount": { "type": "string", "description": "The minimum amount of tokens that will be received (in native token decimals)" }, "estimatedTime": { "type": "integer", "description": "Estimated time for the intent execution in seconds" }, "steps": { "type": "array", "description": "The list of steps to execute the intent", "items": { "type": "object", "properties": { "fromChainId": { "type": "integer", "description": "The ID of the origin chain for this step" }, "fromToken": { "type": "string", "description": "The address of the token on the origin chain for this step" }, "fromAmount": { "type": "string", "description": "The amount of tokens for this step (in native token decimals)" }, "toChainId": { "type": "integer", "description": "The ID of the destination chain for this step" }, "toToken": { "type": "string", "description": "The address of the token on the destination chain for this step" }, "expectedToAmount": { "type": "string", "description": "The expected amount of tokens for this step (in native token decimals)" }, "minToAmount": { "type": "string", "description": "The minimum amount of tokens for this step (in native token decimals)" }, "routerAddress": { "type": "string", "description": "The address of the router contract for this step" }, "estimatedTime": { "type": "integer", "description": "Estimated time for this step in seconds" }, "moduleNames": { "type": "array", "items": { "type": "string" }, "description": "The names of the bridge or swap modules used for this step" }, "gasDropAmount": { "type": "string", "description": "Amount of native token airdropped on destination chain (in native token decimals)" }, "callData": { "type": "object", "nullable": true, "description": "Transaction data object, only provided if addresses were included", "properties": { "to": { "type": "string", "description": "Contract address to call" }, "data": { "type": "string", "description": "Transaction calldata" }, "value": { "type": "string", "description": "Amount of native currency to send with transaction (in native token decimals)" } } } } } } } } }, "example": [ { "id": "01920c87-7f14-7cdf-90e1-e13b2d4af55f", "fromChainId": 1, "fromToken": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "fromAmount": "1000000000", "toChainId": 42161, "toToken": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", "expectedToAmount": "999046695719", "minToAmount": "994046695719", "estimatedTime": 30, "steps": [ { "fromChainId": 1, "fromToken": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "fromAmount": "1000000000", "toChainId": 42161, "toToken": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", "expectedToAmount": "999046695719", "minToAmount": "994046695719", "routerAddress": "0x512000a034E154908Efb1eC48579F4ffDb000512", "estimatedTime": 30, "moduleNames": ["SynapseRFQ"], "gasDropAmount": "0", "callData": { "to": "0x512000a034E154908Efb1eC48579F4ffDb000512", "data": "0x...", "value": "0" } } ] } ] } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "value": { "type": "string" }, "msg": { "type": "string" }, "param": { "type": "string" }, "location": { "type": "string" } } } } } }, "example": { "errors": [ { "value": "111", "msg": "Unsupported fromChain", "param": "fromChain", "location": "query" } ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } }, "example": { "error": "An unexpected error occurred in /intent. Please try again later." } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/swap": { "get": { "summary": "Get swap quote for tokens on a specific chain", "description": "Retrieve detailed swap quote for exchanging one token for another on a specified chain", "parameters": [ { "in": "query", "name": "chain", "required": true, "schema": { "type": "integer" }, "description": "The chain ID where the swap will occur" }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token to swap from" }, { "in": "query", "name": "toToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token to swap to" }, { "in": "query", "name": "amount", "required": true, "schema": { "type": "number" }, "description": "The amount of tokens to swap" }, { "in": "query", "name": "address", "required": true, "schema": { "type": "string" }, "description": "The address of the user" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "routerAddress": { "type": "string", "description": "The address of the router contract" }, "maxAmountOut": { "type": "string", "description": "The maximum amount of tokens that will be received" }, "query": { "type": "object", "properties": { "swapAdapter": { "type": "string", "description": "The address of the swap adapter" }, "tokenOut": { "type": "string", "description": "The address of the token being received" }, "minAmountOut": { "$ref": "#/components/schemas/BigNumber" }, "deadline": { "$ref": "#/components/schemas/BigNumber" }, "rawParams": { "type": "string", "description": "Raw parameters for the swap" } } } } }, "example": { "routerAddress": "0x7E7A0e201FD38d3ADAA9523Da6C109a07118C96a", "maxAmountOut": "999.746386", "query": { "swapAdapter": "0x7E7A0e201FD38d3ADAA9523Da6C109a07118C96a", "tokenOut": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "minAmountOut": { "type": "BigNumber", "hex": "0x3b96eb52" }, "deadline": { "type": "BigNumber", "hex": "0x66ecb470" }, "rawParams": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001116898dda4015ed8ddefb84b6e8bc24528af2d800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002" } } } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "999", "message": "Unsupported chain", "field": "chain", "location": "query" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/swap/v2": { "get": { "summary": "Get swap quote for arbitrary tokens on a specific chain", "description": "Retrieve detailed swap quote exchanging any token for any other on a specified chain. Note that amounts are expressed in token's native decimals, not in human-readable format.", "parameters": [ { "in": "query", "name": "chainId", "required": true, "schema": { "type": "integer" }, "description": "The chain ID where the swap will occur" }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token to swap from" }, { "in": "query", "name": "fromAmount", "required": true, "schema": { "type": "string" }, "description": "The amount of tokens to swap in the token's native decimals" }, { "in": "query", "name": "toToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token to swap to" }, { "in": "query", "name": "toRecipient", "required": false, "schema": { "type": "string" }, "description": "Optional. The address that will receive the swapped tokens. If provided, returns transaction data." }, { "in": "query", "name": "slippage", "required": false, "schema": { "type": "number" }, "description": "Optional. The maximum allowed slippage percentage (0-100). Defaults to 0.5%." } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the quote" }, "chainId": { "type": "integer", "description": "The chain ID where the swap occurs" }, "fromToken": { "type": "string", "description": "The address of the token being swapped from" }, "fromAmount": { "type": "string", "description": "The amount of tokens to swap in the token's native decimals" }, "toToken": { "type": "string", "description": "The address of the token being swapped to" }, "expectedToAmount": { "type": "string", "description": "The expected amount of tokens that will be received in the token's native decimals" }, "minToAmount": { "type": "string", "description": "The minimum amount of tokens that will be received in the token's native decimals (includes slippage)" }, "routerAddress": { "type": "string", "description": "The address of the router contract" }, "moduleNames": { "type": "array", "items": { "type": "string" }, "description": "The names of the swap modules used for this quote" }, "callData": { "type": "object", "nullable": true, "description": "Transaction data object, only provided if toRecipient parameter was included", "properties": { "to": { "type": "string", "description": "Contract address to call" }, "data": { "type": "string", "description": "Transaction calldata" }, "value": { "type": "string", "description": "Amount of native currency to send with transaction (in native token decimals)" } } } } }, "example": { "id": "01920c87-7f14-7cdf-90e1-e13b2d4af55f", "chainId": 1, "fromToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "fromAmount": "1000000", "toToken": "0xdac17f958d2ee523a2206206994597c13d831ec7", "expectedToAmount": "999746386", "minToAmount": "994747654", "routerAddress": "0x512000a034E154908Efb1eC48579F4ffDb000512", "moduleNames": ["DefaultPools"], "callData": { "to": "0x512000a034E154908Efb1eC48579F4ffDb000512", "data": "0x...", "value": "0" } } } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "properties": { "value": { "type": "string" }, "msg": { "type": "string" }, "param": { "type": "string" }, "location": { "type": "string" } } } } } }, "example": { "errors": [ { "value": "111", "msg": "Unsupported chain", "param": "chain", "location": "query" } ] } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } }, "example": { "error": "An unexpected error occurred in /swap/v2. Please try again later." } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/swapTxInfo": { "get": { "summary": "[Deprecated] in favor of using the /swap endpoint, which now returns call data", "description": "[Deprecated] Originally used to get Swap transaction information", "parameters": [ { "in": "query", "name": "chain", "required": true, "schema": { "type": "integer" }, "description": "The chain ID where the swap will occur" }, { "in": "query", "name": "fromToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token to swap from" }, { "in": "query", "name": "toToken", "required": true, "schema": { "type": "string" }, "description": "The address of the token to swap to" }, { "in": "query", "name": "amount", "required": true, "schema": { "type": "number" }, "description": "The amount of tokens to swap" }, { "in": "query", "name": "address", "required": true, "schema": { "type": "string" }, "description": "The Ethereum address of the user performing the swap" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "string", "description": "Encoded transaction data" }, "to": { "type": "string", "description": "The address of the contract to interact with" }, "value": { "type": "object", "properties": { "type": { "type": "string", "enum": ["BigNumber"] }, "hex": { "type": "string" } }, "description": "The amount of native currency to send with the transaction" } } }, "example": { "data": "0xb5d1cdd4000000000000000000000000abb4f79430002534df3f62e964d62659a010ef3c000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000800000000000000000000000007e7a0e201fd38d3adaa9523da6c109a07118c96a000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000003b96eaed0000000000000000000000000000000000000000000000000000000066ecbb7c00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001116898dda4015ed8ddefb84b6e8bc24528af2d800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002", "to": "0x7E7A0e201FD38d3ADAA9523Da6C109a07118C96a", "value": { "type": "BigNumber", "hex": "0x00" } } } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "999", "message": "Unsupported chain", "field": "chain", "location": "query" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/synapseTxId": { "get": { "summary": "Get Synapse Transaction ID", "description": "Retrieve the Synapse transaction ID for a given origin chain transaction", "parameters": [ { "in": "query", "name": "originChainId", "required": true, "schema": { "type": "integer" }, "description": "The ID of the origin chain where the transaction was initiated" }, { "in": "query", "name": "bridgeModule", "required": true, "schema": { "type": "string", "enum": ["SynapseRFQ", "SynapseBridge", "SynapseCCTP"] }, "description": "The bridge module used for the transaction" }, { "in": "query", "name": "txHash", "required": true, "schema": { "type": "string" }, "description": "The transaction hash on the origin chain" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "synapseTxId": { "type": "string", "description": "The Synapse transaction ID" } } }, "example": { "synapseTxId": "0x812516c5477aeeb4361ecbdd561abcd10f779a0fce22bad13635b8cae088760a" } } } }, "400": { "description": "Invalid input", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "value": { "type": "string" }, "message": { "type": "string" }, "field": { "type": "string" }, "location": { "type": "string" } } } } }, "example": { "error": { "value": "999", "message": "Invalid bridge module. Must be one of: SynapseRFQ, SynapseBridge, SynapseCCTP", "field": "bridgeModule", "location": "query" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/tokenlist": { "get": { "summary": "Get the list of bridgeable tokens & associated chain metadata", "description": "Retrieve the complete list of tokens that can be bridged across different chains", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "object", "properties": { "addresses": { "type": "object", "additionalProperties": { "type": "string" } }, "decimals": { "type": "object", "additionalProperties": { "type": "integer" } }, "symbol": { "type": "string" }, "name": { "type": "string" }, "swapableType": { "type": "string" }, "color": { "type": "string" }, "priorityRank": { "type": "integer" }, "routeSymbol": { "type": "string" }, "imgUrl": { "type": "string" } } } }, "example": { "USDC": { "addresses": { "1": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "10": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85" }, "decimals": { "1": 6, "10": 6 }, "symbol": "USDC", "name": "USD Coin", "swapableType": "USD", "color": "blue", "priorityRank": 100, "routeSymbol": "USDC", "imgUrl": "https://example.com/usdc.svg" }, "USDT": { "addresses": { "1": "0xdac17f958d2ee523a2206206994597c13d831ec7", "10": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58" }, "decimals": { "1": 6, "10": 6 }, "symbol": "USDT", "name": "USD Tether", "swapableType": "USD", "color": "lime", "priorityRank": 100, "routeSymbol": "USDT", "imgUrl": "https://example.com/usdt.svg" }, "NUSD": { "addresses": { "1": "0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F", "10": "0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00" }, "decimals": { "1": 18, "10": 18 }, "symbol": "nUSD", "name": "Synapse nUSD", "swapableType": "USD", "color": "purple", "priorityRank": 500, "routeSymbol": "nUSD", "imgUrl": "https://example.com/nusd.svg" } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } } }, "tags": ["Synapse Bridge REST API"] } }, "/conflicting-proofs": { "get": { "summary": "Get conflicting proofs", "description": "Retrieves a list of transactions where the relayer in the proof differs from the relayer in the relay event", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "Bridge": { "type": "object", "description": "General transaction fields" }, "BridgeRequest": { "type": "object", "description": "Deposit information" }, "BridgeRelay": { "type": "object", "description": "Relay information" }, "BridgeRefund": { "type": "object", "description": "Refund information" }, "BridgeProof": { "type": "object", "description": "Proof information (if available)" }, "BridgeClaim": { "type": "object", "description": "Claim information (if available)" }, "BridgeDispute": { "type": "object", "description": "Dispute information (if available)" } } } } } } }, "404": { "description": "No conflicting proofs found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/disputes": { "get": { "summary": "Get all active disputes", "description": "Retrieves a list of all active disputes", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "Bridge": { "type": "object", "description": "General transaction fields" }, "BridgeRequest": { "type": "object", "description": "Deposit information" }, "BridgeRelay": { "type": "object", "description": "Relay information" }, "BridgeRefund": { "type": "object", "description": "Refund information" }, "BridgeProof": { "type": "object", "description": "Proof information (if available)" }, "BridgeClaim": { "type": "object", "description": "Claim information (if available)" }, "BridgeDispute": { "type": "object", "description": "Dispute information (if available)" } } } } } } }, "404": { "description": "No disputes found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/invalid-relays": { "get": { "summary": "Get recent invalid relays", "description": "Retrieves a list of recent invalid relay events from the past 2 weeks", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "Bridge": { "type": "object", "description": "General transaction fields" }, "BridgeRequest": { "type": "object", "description": "Deposit information" }, "BridgeRelay": { "type": "object", "description": "Relay information" }, "BridgeRefund": { "type": "object", "description": "Refund information" }, "BridgeProof": { "type": "object", "description": "Proof information (if available)" }, "BridgeClaim": { "type": "object", "description": "Claim information (if available)" }, "BridgeDispute": { "type": "object", "description": "Dispute information (if available)" } } } } } } }, "404": { "description": "No recent invalid relays found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/pending-transactions/missing-claim": { "get": { "summary": "Get pending transactions missing claim", "description": "Retrieves a list of transactions that have been deposited, relayed, and proven, but not yet claimed", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "Bridge": { "type": "object", "description": "General transaction fields" }, "BridgeRequest": { "type": "object", "description": "Deposit information" }, "BridgeRelay": { "type": "object", "description": "Relay information" }, "BridgeRefund": { "type": "object", "description": "Refund information" }, "BridgeProof": { "type": "object", "description": "Proof information (if available)" }, "BridgeClaim": { "type": "object", "description": "Claim information (if available)" }, "BridgeDispute": { "type": "object", "description": "Dispute information (if available)" } } } } } } }, "404": { "description": "No pending transactions missing claim found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/pending-transactions/missing-proof": { "get": { "summary": "Get pending transactions missing proof", "description": "Retrieves a list of transactions that have been deposited and relayed, but not yet proven", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "deposit": { "type": "object" }, "relay": { "type": "object" } } } } } } }, "404": { "description": "No pending transactions missing proof found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/pending-transactions/missing-relay": { "get": { "summary": "Get pending transactions missing relay", "description": "Retrieves a list of transactions that have been deposited, but not yet relayed or refunded", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "deposit": { "type": "object" } } } } } } }, "404": { "description": "No pending transactions missing relay found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/pending-transactions/exceed-deadline": { "get": { "summary": "Get pending transactions exceed deadline", "description": "Retrieves a list of transactions that have been deposited, but not yet relayed or refunded and have exceeded the deadline", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "deposit": { "type": "object" } } } } } } }, "404": { "description": "No pending transactionst that exceed the deadline found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/refunded-and-relayed": { "get": { "summary": "Get refunded and relayed transactions", "description": "Retrieves a list of transactions that have been both refunded and relayed", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "Bridge": { "type": "object", "description": "General transaction fields" }, "BridgeRequest": { "type": "object", "description": "Deposit information" }, "BridgeRelay": { "type": "object", "description": "Relay information" }, "BridgeRefund": { "type": "object", "description": "Refund information" }, "BridgeProof": { "type": "object", "description": "Proof information (if available)" }, "BridgeClaim": { "type": "object", "description": "Claim information (if available)" }, "BridgeDispute": { "type": "object", "description": "Dispute information (if available)" } } } } } } }, "404": { "description": "No refunded and relayed transactions found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/transaction-id/{transactionId}": { "get": { "summary": "Get transaction details by ID or the origin transaction hash", "description": "Retrieves detailed information about a transaction, including deposit, relay, proof, claim, and refund data if available", "parameters": [ { "in": "path", "name": "transactionId", "required": true, "schema": { "type": "string" }, "description": "The unique identifier of the transaction or the origin transaction hash" } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "Bridge": { "type": "object", "description": "General transaction fields" }, "BridgeRequest": { "type": "object", "description": "Deposit information" }, "BridgeRelay": { "type": "object", "description": "Relay information" }, "BridgeRefund": { "type": "object", "description": "Refund information" }, "BridgeProof": { "type": "object", "description": "Proof information (if available)" }, "BridgeClaim": { "type": "object", "description": "Claim information (if available)" }, "BridgeDispute": { "type": "object", "description": "Dispute information (if available)" } } } } } }, "404": { "description": "Transaction not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "tags": ["RFQ Indexer API"] } }, "/ack": { "put": { "tags": ["RFQ API"], "summary": "Relay ack", "description": "cache an ack request to synchronize relayer actions.", "requestBody": { "description": "query params", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.PutRelayerQuoteRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "headers": { "X-Api-Version": { "description": "API Version Number - See docs for more info", "schema": { "type": "string" } } }, "content": {} } }, "x-codegen-request-body-name": "request" } }, "/bulk_quotes": { "put": { "tags": ["RFQ API"], "summary": "Upsert quotes", "description": "upsert bulk quotes from relayer.", "requestBody": { "description": "query params", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.PutBulkQuotesRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "headers": { "X-Api-Version": { "description": "API Version Number - See docs for more info", "schema": { "type": "string" } } }, "content": {} } }, "x-codegen-request-body-name": "request" } }, "/contracts": { "get": { "tags": ["RFQ API"], "summary": "Get contract addresses", "description": "get quotes from all relayers.", "responses": { "200": { "description": "OK", "headers": { "X-Api-Version": { "description": "API Version Number - See docs for more info", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/model.GetContractsResponse" } } } } } } } }, "/open_quote_requests": { "get": { "tags": ["RFQ API"], "summary": "Get open quote requests", "description": "Get all open quote requests that are currently in Received or Pending status.", "responses": { "200": { "description": "OK", "headers": { "X-Api-Version": { "description": "API Version Number - See docs for more info", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/model.GetOpenQuoteRequestsResponse" } } } } } } } }, "/quotes": { "get": { "tags": ["RFQ API"], "summary": "Get quotes", "description": "get quotes from all relayers.", "parameters": [ { "name": "originChainID", "in": "query", "description": "origin chain id to filter quotes by", "required": true, "schema": { "type": "integer" } }, { "name": "originTokenAddr", "in": "query", "description": "origin chain id to filter quotes by", "required": true, "schema": { "type": "string" } }, { "name": "destChainID", "in": "query", "description": "destination chain id to filter quotes by", "required": true, "schema": { "type": "integer" } }, { "name": "destTokenAddr", "in": "query", "description": "destination token address to filter quotes by", "required": true, "schema": { "type": "string" } }, { "name": "relayerAddr", "in": "query", "description": "relayer address to filter quotes by", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Api-Version": { "description": "API Version Number - See docs for more info", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/model.GetQuoteResponse" } } } } } } }, "put": { "tags": ["RFQ API"], "summary": "Upsert quote", "description": "upsert a quote from relayer.", "requestBody": { "description": "query params", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.PutRelayerQuoteRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "headers": { "X-Api-Version": { "description": "API Version Number - See docs for more info", "schema": { "type": "string" } } }, "content": {} } }, "x-codegen-request-body-name": "request" } }, "/rfq": { "put": { "tags": ["RFQ API"], "summary": "Initiate an Active RFQ", "description": "Initiate an Active Request-For-Quote return the best quote available.", "requestBody": { "description": "Initiate an Active Request-For-Quote", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.PutRFQRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "headers": { "X-Api-Version": { "description": "API Version Number - See docs for more info", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/model.PutRFQResponse" } } } } }, "x-codegen-request-body-name": "request" } }, "/rfq_stream": { "get": { "tags": ["RFQ API"], "summary": "Listen for Active RFQs", "description": "Establish a WebSocket connection to listen for Active Requests-For-Quote.", "responses": { "101": { "description": "Switching Protocols", "headers": { "X-Api-Version": { "description": "API Version Number - See docs for more info", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "string" } } } } } } } }, "components": { "schemas": { "BigNumber": { "type": "object", "properties": { "type": { "type": "string", "enum": ["BigNumber"] }, "hex": { "type": "string" } } }, "model.GetContractsResponse": { "type": "object", "properties": { "contracts": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Contracts is a map of chain id to contract address" } } }, "model.GetOpenQuoteRequestsResponse": { "type": "object", "properties": { "created_at": { "type": "string" }, "dest_chain_id": { "type": "integer" }, "dest_token": { "type": "string" }, "expiration_window": { "type": "integer" }, "origin_amount": { "type": "string" }, "origin_chain_id": { "type": "integer" }, "origin_token": { "type": "string" }, "user_address": { "type": "string" } } }, "model.GetQuoteResponse": { "type": "object", "properties": { "dest_amount": { "type": "string", "description": "DestAmount is the max amount of liquidity which exists for a given destination token, provided in the destination token decimals" }, "dest_chain_id": { "type": "integer", "description": "DestChainID is the chain which the relayer is willing to relay to" }, "dest_fast_bridge_address": { "type": "string", "description": "DestFastBridgeAddress is the address of the fast bridge contract on the destination chain" }, "dest_token_addr": { "type": "string", "description": "DestToken is the token address for which the relayer willing to relay to" }, "fixed_fee": { "type": "string", "description": "FixedFee is the fixed fee for the quote, provided in the destination token terms" }, "max_origin_amount": { "type": "string", "description": "MaxOriginAmount is the maximum amount of origin tokens bridgeable" }, "origin_chain_id": { "type": "integer", "description": "OriginChainID is the chain which the relayer is willing to relay from" }, "origin_fast_bridge_address": { "type": "string", "description": "OriginFastBridgeAddress is the address of the fast bridge contract on the origin chain" }, "origin_token_addr": { "type": "string", "description": "OriginTokenAddr is the token address for which the relayer willing to relay from" }, "relayer_addr": { "type": "string", "description": "Address of the relayer providing the quote" }, "updated_at": { "type": "string", "description": "UpdatedAt is the time that the quote was last upserted" } } }, "model.PutBulkQuotesRequest": { "type": "object", "properties": { "quotes": { "type": "array", "items": { "$ref": "#/components/schemas/model.PutRelayerQuoteRequest" } } } }, "model.PutRFQRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/model.QuoteData" }, "integrator_id": { "type": "string" }, "quote_types": { "type": "array", "items": { "type": "string" } }, "user_address": { "type": "string" } } }, "model.PutRFQResponse": { "type": "object", "properties": { "dest_amount": { "type": "string" }, "quote_id": { "type": "string" }, "quote_type": { "type": "string" }, "reason": { "type": "string" }, "relayer_address": { "type": "string" }, "success": { "type": "boolean" } } }, "model.PutRelayerQuoteRequest": { "type": "object", "properties": { "dest_amount": { "type": "string" }, "dest_chain_id": { "type": "integer" }, "dest_fast_bridge_address": { "type": "string" }, "dest_token_addr": { "type": "string" }, "fixed_fee": { "type": "string" }, "max_origin_amount": { "type": "string" }, "origin_chain_id": { "type": "integer" }, "origin_fast_bridge_address": { "type": "string" }, "origin_token_addr": { "type": "string" } } }, "model.QuoteData": { "type": "object", "properties": { "dest_amount": { "type": "string" }, "dest_chain_id": { "type": "integer" }, "dest_token_addr": { "type": "string" }, "expiration_window": { "type": "integer" }, "origin_amount": { "type": "string" }, "origin_chain_id": { "type": "integer" }, "origin_token_addr": { "type": "string" }, "quote_id": { "type": "string" }, "relayer_address": { "type": "string" } } } } }, "tags": [] }