{"x402Version":2,"payTo":"0x12d2425fD88c693EDB4dE004E0c747879B7D6933","resources":[{"id":27149,"slug":"27149","resource":"https://app.ravn.exchange/api/v1/x402/quote","description":"RAVN — best-price swap quotes across 20 execution venues and 17 chains, including native (non-wrapped) Bitcoin as either source or destination. 0% protocol fee, non-custodial. Returns a quoteToken; pass it to POST /execute.","type":"http","serviceName":"RAVN","iconUrl":"https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1786449367/bazaar-icons/de448ab353b66c88.png","resourceType":"Payments","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x12d2425fD88c693EDB4dE004E0c747879B7D6933","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","amountUsd":0.001,"maxTimeoutSeconds":300},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","payTo":"4pQtttNDe8kdQjhJ22LA2Tqnen9smPjoJj7HM3X8ZNYf","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"1000","amountUsd":0.001,"maxTimeoutSeconds":300}],"outputSchema":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"},"extensions":{"bazaar":{"info":{"input":{"body":{"inputAmount":"1000000000000000000","inputChainId":1,"inputToken":"0xEeeeeEeeeEeEeeEeEeEeeeEEeeeeEeeeeeeeEEeE","outputChainId":8453,"outputToken":"0xEeeeeEeeeEeEeeEeEeEeeeEEeeeeEeeeeeeeEEeE","userAddress":"0x0000000000000000000000000000000000dEaD"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"data":{"estimatedTimeSeconds":3,"expiresAt":1786374968171,"fee":{"amount":"0","bps":0},"input":{"amount":"1000000000000000000","token":{"chainId":1,"decimals":18,"isNative":true,"symbol":"ETH"}},"output":{"amount":"999534824840543000","token":{"chainId":8453,"decimals":18,"isNative":true,"symbol":"ETH"}},"quoteToken":"eyJ2ZW51ZUlkIjoi...","routeType":"EVM_CROSS_CHAIN","venue":{"id":"mayan","name":"Mayan"}}},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"clientTimezone":{"description":"Your end user's IANA timezone (e.g. Europe/Berlin), forwarded only to venues whose API requires the user's details on every call (Houdini). Defaults to UTC.","maxLength":64,"type":"string"},"confidential":{"description":"Settle privately: the on-chain deposit and payout cannot be linked to each other. The race narrows to the private venues — NEAR Intents' Confidential Intents and Houdini Swap's two-hop exchange route — and the best output wins; you get NO_LIQUIDITY rather than a public fill if neither can quote. Measured cost: NEAR ~0.3 bps more on EVM-to-EVM and ~5-8 bps more when Bitcoin or Solana is a leg; Houdini ~3% below spot on its fixed-rate quote, which is not a guaranteed minimum (so it wins only where NEAR can't quote). Both can settle slower than a public swap (NEAR Bitcoin-source 43 min; Houdini a few minutes to about an hour), so read estimatedTimeSeconds before executing. A Houdini quote is valid for 60 seconds (expiresAt) and no integrator fee applies to it (fee.supported=false). Houdini is sent your request's IP and user-agent (plus clientTimezone) for its compliance screening, and its terms bar US persons and sanctioned jurisdictions: Houdini is left out of the race when this request arrives from such a country, and you are responsible for your end users' eligibility — pass excludeVenues: [\"houdini\"] where that cannot be met. Confidentiality is the venue's, not RAVN's, and remains subject to its screening.","type":"boolean"},"destinationAddress":{"description":"Where output should land. Required at quote time for a real (executable) quote from Relay (Bitcoin as source or dest), THORChain (Bitcoin either direction), Across (Solana-touching), Eco (cross-ecosystem), or compose (RAVN two-hop routes). Omit it there and you get a preview (QuoteDTO.executable=false). Validated here, not only at execute: a malformed address, an address from the wrong ecosystem for the output chain, or a known non-wallet address (any RAVN-listed token's mint/contract, this swap's own tokens, the native-coin sentinel, burn addresses, Solana core programs — funds sent there are unrecoverable) is rejected with INVALID_REQUEST. A Solana address is also looked up on chain: a token account (the message names the wallet that owns it) or a program is rejected; this lookup fails open, so an RPC outage never blocks a quote. An empty string means not supplied.","type":"string"},"excludeVenues":{"description":"Drop specific venues from this race — e.g. a risk objection to one of them. Naming a venue that was never eligible for this pair is a no-op, not an error.","items":{"enum":["rift","0x_gasless","0x_swap","0x_solana","bebop","cow","across","relay","mayan","jupiter","near_intents","garden","chainflip","thorchain","eco","compose","nordstern","flytrade","kyberswap","layerswap","houdini","okx"],"type":"string"},"type":"array"},"inputAmount":{"description":"Positive integer string, in the input token's smallest unit","type":"string"},"inputChainId":{"enum":[1,10,56,130,137,324,480,999,143,8453,42161,59144,43114,4663,4217,-1,-2],"type":"number"},"inputToken":{"description":"Token contract address, or the native-token sentinel 0xEeee...EEeE","minLength":1,"type":"string"},"outputChainId":{"enum":[1,10,56,130,137,324,480,999,143,8453,42161,59144,43114,4663,4217,-1,-2],"type":"number"},"outputToken":{"minLength":1,"type":"string"},"quoteSessionId":{"maxLength":64,"type":"string"},"rankingMode":{"description":"Defaults to best_output.","enum":["best_output","fastest"],"type":"string"},"refundAddress":{"description":"Where to refund the input asset if the swap fails. For a Bitcoin-source Relay quote specifically, this must be supplied here, at quote time — Relay has no execute-time re-bind, so omitting it returns a priced-but-unexecutable preview and supplying it later on execute has no effect. Other BTC-source venues (Garden, THORChain, Chainflip, Rift) support binding this at execute time instead. Validated against the INPUT chain (refunds are paid back on the origin), including the token's-own-address check described on destinationAddress.","type":"string"},"sandbox":{"description":"Test the full quote -> execute -> status flow with no real funds and no live venue settlement. The quote itself is still priced live. On /v1/execute, THORChain BTC-source, Chainflip, RAVN two-hop routes and Houdini Swap are unsupported (each would spend real money or open a live order at the venue, which can't be sandboxed) and every other venue returns realistically-shaped execution data with no funds moved. /v1/submit-signature skips the real venue submission. /v1/status always reports an immediate synthetic success. Sandbox swaps are never metered or billed.","type":"boolean"},"slippageBps":{"maximum":5000,"minimum":1,"type":"integer"},"userAddress":{"minLength":1,"type":"string"}},"required":["inputChainId","outputChainId","inputToken","outputToken","inputAmount","userAddress"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["swap","cross-chain","bitcoin","defi","agents","bazaar"],"sourceHost":"app.ravn.exchange","lastUpdated":"2026-10-11T08:56:03.235Z","quality":{"calls30d":13,"uniquePayers30d":6,"lastCalledAt":"2026-10-11T08:56:01.754Z"},"metadata":{"serviceName":"RAVN","iconUrl":"https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1786449367/bazaar-icons/de448ab353b66c88.png","extensions":{"bazaar":{"info":{"input":{"body":{"inputAmount":"1000000000000000000","inputChainId":1,"inputToken":"0xEeeeeEeeeEeEeeEeEeEeeeEEeeeeEeeeeeeeEEeE","outputChainId":8453,"outputToken":"0xEeeeeEeeeEeEeeEeEeEeeeEEeeeeEeeeeeeeEEeE","userAddress":"0x0000000000000000000000000000000000dEaD"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"data":{"estimatedTimeSeconds":3,"expiresAt":1786374968171,"fee":{"amount":"0","bps":0},"input":{"amount":"1000000000000000000","token":{"chainId":1,"decimals":18,"isNative":true,"symbol":"ETH"}},"output":{"amount":"999534824840543000","token":{"chainId":8453,"decimals":18,"isNative":true,"symbol":"ETH"}},"quoteToken":"eyJ2ZW51ZUlkIjoi...","routeType":"EVM_CROSS_CHAIN","venue":{"id":"mayan","name":"Mayan"}}},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"clientTimezone":{"description":"Your end user's IANA timezone (e.g. Europe/Berlin), forwarded only to venues whose API requires the user's details on every call (Houdini). Defaults to UTC.","maxLength":64,"type":"string"},"confidential":{"description":"Settle privately: the on-chain deposit and payout cannot be linked to each other. The race narrows to the private venues — NEAR Intents' Confidential Intents and Houdini Swap's two-hop exchange route — and the best output wins; you get NO_LIQUIDITY rather than a public fill if neither can quote. Measured cost: NEAR ~0.3 bps more on EVM-to-EVM and ~5-8 bps more when Bitcoin or Solana is a leg; Houdini ~3% below spot on its fixed-rate quote, which is not a guaranteed minimum (so it wins only where NEAR can't quote). Both can settle slower than a public swap (NEAR Bitcoin-source 43 min; Houdini a few minutes to about an hour), so read estimatedTimeSeconds before executing. A Houdini quote is valid for 60 seconds (expiresAt) and no integrator fee applies to it (fee.supported=false). Houdini is sent your request's IP and user-agent (plus clientTimezone) for its compliance screening, and its terms bar US persons and sanctioned jurisdictions: Houdini is left out of the race when this request arrives from such a country, and you are responsible for your end users' eligibility — pass excludeVenues: [\"houdini\"] where that cannot be met. Confidentiality is the venue's, not RAVN's, and remains subject to its screening.","type":"boolean"},"destinationAddress":{"description":"Where output should land. Required at quote time for a real (executable) quote from Relay (Bitcoin as source or dest), THORChain (Bitcoin either direction), Across (Solana-touching), Eco (cross-ecosystem), or compose (RAVN two-hop routes). Omit it there and you get a preview (QuoteDTO.executable=false). Validated here, not only at execute: a malformed address, an address from the wrong ecosystem for the output chain, or a known non-wallet address (any RAVN-listed token's mint/contract, this swap's own tokens, the native-coin sentinel, burn addresses, Solana core programs — funds sent there are unrecoverable) is rejected with INVALID_REQUEST. A Solana address is also looked up on chain: a token account (the message names the wallet that owns it) or a program is rejected; this lookup fails open, so an RPC outage never blocks a quote. An empty string means not supplied.","type":"string"},"excludeVenues":{"description":"Drop specific venues from this race — e.g. a risk objection to one of them. Naming a venue that was never eligible for this pair is a no-op, not an error.","items":{"enum":["rift","0x_gasless","0x_swap","0x_solana","bebop","cow","across","relay","mayan","jupiter","near_intents","garden","chainflip","thorchain","eco","compose","nordstern","flytrade","kyberswap","layerswap","houdini","okx"],"type":"string"},"type":"array"},"inputAmount":{"description":"Positive integer string, in the input token's smallest unit","type":"string"},"inputChainId":{"enum":[1,10,56,130,137,324,480,999,143,8453,42161,59144,43114,4663,4217,-1,-2],"type":"number"},"inputToken":{"description":"Token contract address, or the native-token sentinel 0xEeee...EEeE","minLength":1,"type":"string"},"outputChainId":{"enum":[1,10,56,130,137,324,480,999,143,8453,42161,59144,43114,4663,4217,-1,-2],"type":"number"},"outputToken":{"minLength":1,"type":"string"},"quoteSessionId":{"maxLength":64,"type":"string"},"rankingMode":{"description":"Defaults to best_output.","enum":["best_output","fastest"],"type":"string"},"refundAddress":{"description":"Where to refund the input asset if the swap fails. For a Bitcoin-source Relay quote specifically, this must be supplied here, at quote time — Relay has no execute-time re-bind, so omitting it returns a priced-but-unexecutable preview and supplying it later on execute has no effect. Other BTC-source venues (Garden, THORChain, Chainflip, Rift) support binding this at execute time instead. Validated against the INPUT chain (refunds are paid back on the origin), including the token's-own-address check described on destinationAddress.","type":"string"},"sandbox":{"description":"Test the full quote -> execute -> status flow with no real funds and no live venue settlement. The quote itself is still priced live. On /v1/execute, THORChain BTC-source, Chainflip, RAVN two-hop routes and Houdini Swap are unsupported (each would spend real money or open a live order at the venue, which can't be sandboxed) and every other venue returns realistically-shaped execution data with no funds moved. /v1/submit-signature skips the real venue submission. /v1/status always reports an immediate synthetic success. Sandbox swaps are never metered or billed.","type":"boolean"},"slippageBps":{"maximum":5000,"minimum":1,"type":"integer"},"userAddress":{"minLength":1,"type":"string"}},"required":["inputChainId","outputChainId","inputToken","outputToken","inputAmount","userAddress"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}}},"liveness":{"reliability":null},"verified":false,"featured":false},{"id":27150,"slug":"27150","resource":"https://app.ravn.exchange/api/v1/x402/execute","description":"RAVN — execute a previously quoted swap. Returns a signable transaction, typed data to sign, or a Bitcoin deposit address depending on the route; RAVN never custodies funds. Same 0% fee, non-custodial engine the RAVN app itself runs on.","type":"http","serviceName":"RAVN","iconUrl":"https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1786449367/bazaar-icons/de448ab353b66c88.png","resourceType":"Beauty & Personal Care","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x12d2425fD88c693EDB4dE004E0c747879B7D6933","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","amountUsd":0.01,"maxTimeoutSeconds":300},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","payTo":"4pQtttNDe8kdQjhJ22LA2Tqnen9smPjoJj7HM3X8ZNYf","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","amountUsd":0.01,"maxTimeoutSeconds":300}],"outputSchema":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"},"extensions":{"bazaar":{"info":{"input":{"body":{"quoteToken":"eyJ2ZW51ZUlkIjoi..."},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"data":{"deposit":{"address":"bc1q...","amount":"150000"},"executionType":"DEPOSIT","statusRef":"bc1q..."}},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"destinationAddress":{"description":"Late-bound output recipient, honoured by venues that bind the recipient at execution time (Chainflip, Garden, Layerswap, Mayan, NEAR Intents, Rift, 2-hop). Every other venue fixes the recipient when it prices the quote: supplying a DIFFERENT address here is rejected with INVALID_REQUEST rather than silently ignored, because the payout would otherwise go to the address the quote was priced for while this call reported success. Supply destinationAddress on the quote call instead, and it is honoured by every venue including same-chain ones. A known non-wallet address (a listed token's mint/contract, this swap's own tokens, the native-coin sentinel, burn addresses, Solana core programs, and — via an on-chain lookup that fails open — a Solana token account or program) is rejected with INVALID_REQUEST on either call — funds sent there are unrecoverable. An empty string means not supplied.","type":"string"},"quoteToken":{"description":"Token returned from POST /api/v1/quote","minLength":1,"type":"string"},"refundAddress":{"description":"Late-bound refund recipient, honoured by the same venues as destinationAddress. Every other venue fixes the refund address when it prices the quote, and supplying a DIFFERENT one here is rejected with INVALID_REQUEST rather than silently ignored; supply refundAddress on the quote call instead.","type":"string"}},"required":["quoteToken"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["swap","cross-chain","bitcoin","defi","agents","bazaar"],"sourceHost":"app.ravn.exchange","lastUpdated":"2026-09-28T06:20:40.729Z","quality":{"calls30d":4,"uniquePayers30d":2,"lastCalledAt":"2026-09-28T06:20:40.491Z"},"metadata":{"serviceName":"RAVN","iconUrl":"https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1786449367/bazaar-icons/de448ab353b66c88.png","extensions":{"bazaar":{"info":{"input":{"body":{"quoteToken":"eyJ2ZW51ZUlkIjoi..."},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"data":{"deposit":{"address":"bc1q...","amount":"150000"},"executionType":"DEPOSIT","statusRef":"bc1q..."}},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"destinationAddress":{"description":"Late-bound output recipient, honoured by venues that bind the recipient at execution time (Chainflip, Garden, Layerswap, Mayan, NEAR Intents, Rift, 2-hop). Every other venue fixes the recipient when it prices the quote: supplying a DIFFERENT address here is rejected with INVALID_REQUEST rather than silently ignored, because the payout would otherwise go to the address the quote was priced for while this call reported success. Supply destinationAddress on the quote call instead, and it is honoured by every venue including same-chain ones. A known non-wallet address (a listed token's mint/contract, this swap's own tokens, the native-coin sentinel, burn addresses, Solana core programs, and — via an on-chain lookup that fails open — a Solana token account or program) is rejected with INVALID_REQUEST on either call — funds sent there are unrecoverable. An empty string means not supplied.","type":"string"},"quoteToken":{"description":"Token returned from POST /api/v1/quote","minLength":1,"type":"string"},"refundAddress":{"description":"Late-bound refund recipient, honoured by the same venues as destinationAddress. Every other venue fixes the refund address when it prices the quote, and supplying a DIFFERENT one here is rejected with INVALID_REQUEST rather than silently ignored; supply refundAddress on the quote call instead.","type":"string"}},"required":["quoteToken"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}}},"liveness":{"reliability":null},"verified":false,"featured":false}]}