{"openapi":"3.1.0","info":{"title":"grapl Integration API","version":"0.1.0","description":"The grapl Integration API discovers pools, compares native quotes and exposes transaction observations.\n\nAuthenticate requests with **x-api-key**. Amounts and slots are decimal strings; do not convert them to JavaScript Number.\n\nQuotes select one supported **direct pool** for inputMint/outputMint: maximum output for ExactIn or minimum input for ExactOut, after trade fees. They do not split orders or route through intermediate tokens. Each candidate is refreshed from confirmed RPC accounts; candidates can have different snapshot slots. The response records the selected pool's slot. Quotes expire 10 seconds after selection starts and do not reserve liquidity.\n\nThe current native bridge supports unhooked pools. Hook pools remain discoverable, but require an installed quote adapter before participating. Build, order and submit return **503 TRADING_NOT_CONFIGURED** until the execution bridge is configured.\n\nSuccessful responses use {success:true,data:...}; failures use {success:false,error:{code,message}}. Discovery and swap requests consume the team's request quota. Usage reads do not. A 429 response indicates quota exhaustion; respect Retry-After."},"tags":[{"name":"Swaps","description":"Automatic direct-pool selection by mint pair and amount. Integer token atoms throughout. Quote availability does not imply execution availability."},{"name":"Pools","description":"Mint-based discovery in the configured grapl indexer. Includes pools that may not yet be quotable."},{"name":"Transaction status","description":"Persisted finalized observations via REST or resumable Server-Sent Events. Not-observed does not mean absent on chain."},{"name":"Usage & limits","description":"Read team-shared request quotas and UTC reset times without consuming trading quota."}],"components":{"securitySchemes":{"IntegrationKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Integration credential issued to your team. All team keys share the same request quota."}},"schemas":{},"parameters":{}},"paths":{"/v1/pools":{"get":{"operationId":"discoverPools","tags":["Pools"],"summary":"Discover pools by mint","description":"Lists pools discovered by the configured grapl indexer. Supply quoteMint to find a direct pair. Empty results return 200. Catalog inclusion is not a quote or an execution guarantee; use /v1/swap/quote to compare supported pools for an amount.","security":[{"IntegrationKey":[]}],"parameters":[{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Find indexed grapl pools containing this SPL mint on either side.","example":"So11111111111111111111111111111111111111112"},"required":true,"description":"Find indexed grapl pools containing this SPL mint on either side.","name":"mint","in":"query"},{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Optional second mint. Restricts discovery to the direct pair, in either order."},"required":false,"description":"Optional second mint. Restricts discovery to the direct pair, in either order.","name":"quoteMint","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum pools per page, ordered by pool address."},"required":false,"description":"Maximum pools per page, ordered by pool address.","name":"limit","in":"query"},{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Exclusive pool address cursor returned as nextCursor. Pagination is a live catalog view."},"required":false,"description":"Exclusive pool address cursor returned as nextCursor. Pagination is a live catalog view.","name":"cursor","in":"query"}],"responses":{"200":{"description":"Successful request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"mintA":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"mintB":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"liquidity":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Native liquidity units, not TVL or a ranking score."},"observedSlot":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Slot of the indexer snapshot. Quotes independently refresh on-chain accounts."},"hookProgram":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"System program address means no hook. Discovery does not imply quote support."},"tradeFeePpm":{"type":"integer","minimum":0,"description":"Configured base fee in parts per million; hooks may change effective fees."},"mode":{"type":"integer","description":"0: concentrated liquidity; 1: virtual-reserve bonding curve."}},"required":["address","mintA","mintB","liquidity","observedSlot","hookProgram","tradeFeePpm","mode"]}},"nextCursor":{"type":["string","null"],"format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."}},"required":["pools","nextCursor"]}},"required":["success","data"]}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/swap/quote":{"get":{"operationId":"quoteSwap","summary":"Quote the best direct pool","description":"Provide the input/output mint pair and amount; no pool address is required or accepted. Compares up to 50 indexed candidates using the native engine, including fees and liquidity. ExactIn maximizes output; ExactOut minimizes input. Ties use lexical pool address order. 404 NO_POOLS means the pair is absent; 422 NO_QUOTABLE_POOL means no supported pool can fill the whole amount. RPC failures abort selection with 503, never a partial ranking. Exceeding 50 candidates returns 422 TOO_MANY_POOLS.","tags":["Swaps"],"security":[{"IntegrationKey":[]}],"parameters":[{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"SPL mint to sell. Paired with outputMint for automatic pool selection.","example":"So11111111111111111111111111111111111111112"},"required":true,"description":"SPL mint to sell. Paired with outputMint for automatic pool selection.","name":"inputMint","in":"query"},{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"SPL mint to receive; must differ from inputMint.","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"required":true,"description":"SPL mint to receive; must differ from inputMint.","name":"outputMint","in":"query"},{"schema":{"type":"string","maxLength":20,"pattern":"^[1-9][0-9]{0,19}$","description":"Positive u64 token atoms as a decimal string. Input atoms for ExactIn; output atoms for ExactOut. For 6 decimals, 1000000 represents one token.","example":"1000000"},"required":true,"description":"Positive u64 token atoms as a decimal string. Input atoms for ExactIn; output atoms for ExactOut. For 6 decimals, 1000000 represents one token.","name":"amount","in":"query"},{"schema":{"type":"string","enum":["ExactIn","ExactOut"],"default":"ExactIn","description":"ExactIn fixes input and maximizes output; ExactOut fixes output and minimizes input."},"required":false,"description":"ExactIn fixes input and maximizes output; ExactOut fixes output and minimizes input.","name":"swapMode","in":"query"},{"schema":{"type":"integer","minimum":0,"maximum":10000,"default":50,"description":"Slippage tolerance in basis points: 50 = 0.5%. Sets the returned threshold; does not change which pool has the best nominal quote.","example":50},"required":false,"description":"Slippage tolerance in basis points: 50 = 0.5%. Sets the returned threshold; does not change which pool has the best nominal quote.","name":"slippageBps","in":"query"},{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Optional wallet context for future contextual adapters. Providing an address is not proof of authorization."},"required":false,"description":"Optional wallet context for future contextual adapters. Providing an address is not proof of authorization.","name":"taker","in":"query"}],"responses":{"200":{"description":"Successful request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"pool":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Selected direct pool. Output only; callers specify mints, not a pool."},"requestId":{"type":"string"},"inputMint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"outputMint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"inAmount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Gross input in token atoms, including the trade fee."},"outAmount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Expected output in token atoms after the pool trade fee."},"otherAmountThreshold":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Minimum output for ExactIn; maximum input for ExactOut."},"swapMode":{"type":"string","enum":["ExactIn","ExactOut"]},"slippageBps":{"type":"integer"},"priceImpactPct":{"type":["string","null"],"description":"Null when a price-impact metric is unavailable; never fabricated as zero."},"contextSlot":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Confirmed RPC snapshot slot for the selected pool. Other candidates may use different slots."},"expiresAt":{"type":"string","format":"date-time","description":"UTC quote expiry, 10 seconds after selection starts. No liquidity is reserved."},"fees":{"type":"array","items":{"type":"object","properties":{"mint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"amount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$"},"kind":{"type":"string","enum":["trade","lp","protocol","hook"],"description":"trade is the total input trade fee; it is not an additional fee or an LP/protocol allocation breakdown."}},"required":["mint","amount","kind"]}}},"required":["pool","requestId","inputMint","outputMint","inAmount","outAmount","otherAmountThreshold","swapMode","slippageBps","priceImpactPct","contextSlot","expiresAt","fees"]}},"required":["success","data"]}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/swap/build":{"get":{"operationId":"buildSwapInstructions","summary":"Build unsigned swap instructions","description":"Returns account privileges and instruction bytes for wallet signing when the execution bridge is configured. Currently returns 503 TRADING_NOT_CONFIGURED.","tags":["Swaps"],"security":[{"IntegrationKey":[]}],"parameters":[{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"SPL mint to sell. Paired with outputMint for automatic pool selection.","example":"So11111111111111111111111111111111111111112"},"required":true,"description":"SPL mint to sell. Paired with outputMint for automatic pool selection.","name":"inputMint","in":"query"},{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"SPL mint to receive; must differ from inputMint.","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"required":true,"description":"SPL mint to receive; must differ from inputMint.","name":"outputMint","in":"query"},{"schema":{"type":"string","maxLength":20,"pattern":"^[1-9][0-9]{0,19}$","description":"Positive u64 token atoms as a decimal string. Input atoms for ExactIn; output atoms for ExactOut. For 6 decimals, 1000000 represents one token.","example":"1000000"},"required":true,"description":"Positive u64 token atoms as a decimal string. Input atoms for ExactIn; output atoms for ExactOut. For 6 decimals, 1000000 represents one token.","name":"amount","in":"query"},{"schema":{"type":"string","enum":["ExactIn","ExactOut"],"default":"ExactIn","description":"ExactIn fixes input and maximizes output; ExactOut fixes output and minimizes input."},"required":false,"description":"ExactIn fixes input and maximizes output; ExactOut fixes output and minimizes input.","name":"swapMode","in":"query"},{"schema":{"type":"integer","minimum":0,"maximum":10000,"default":50,"description":"Slippage tolerance in basis points: 50 = 0.5%. Sets the returned threshold; does not change which pool has the best nominal quote.","example":50},"required":false,"description":"Slippage tolerance in basis points: 50 = 0.5%. Sets the returned threshold; does not change which pool has the best nominal quote.","name":"slippageBps","in":"query"},{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Wallet that will sign the swap; required for instruction construction."},"required":true,"description":"Wallet that will sign the swap; required for instruction construction.","name":"taker","in":"query"}],"responses":{"200":{"description":"Successful request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"pool":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Selected direct pool. Output only; callers specify mints, not a pool."},"requestId":{"type":"string"},"inputMint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"outputMint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"inAmount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Gross input in token atoms, including the trade fee."},"outAmount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Expected output in token atoms after the pool trade fee."},"otherAmountThreshold":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Minimum output for ExactIn; maximum input for ExactOut."},"swapMode":{"type":"string","enum":["ExactIn","ExactOut"]},"slippageBps":{"type":"integer"},"priceImpactPct":{"type":["string","null"],"description":"Null when a price-impact metric is unavailable; never fabricated as zero."},"contextSlot":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Confirmed RPC snapshot slot for the selected pool. Other candidates may use different slots."},"expiresAt":{"type":"string","format":"date-time","description":"UTC quote expiry, 10 seconds after selection starts. No liquidity is reserved."},"fees":{"type":"array","items":{"type":"object","properties":{"mint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"amount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$"},"kind":{"type":"string","enum":["trade","lp","protocol","hook"],"description":"trade is the total input trade fee; it is not an additional fee or an LP/protocol allocation breakdown."}},"required":["mint","amount","kind"]}},"computeBudgetInstructions":{"type":"array","items":{"type":"object","properties":{"programId":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"accounts":{"type":"array","items":{"type":"object","properties":{"pubkey":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"isSigner":{"type":"boolean"},"isWritable":{"type":"boolean"}},"required":["pubkey","isSigner","isWritable"]}},"data":{"type":"string","description":"Base64 instruction bytes"}},"required":["programId","accounts","data"]}},"setupInstructions":{"type":"array","items":{"type":"object","properties":{"programId":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"accounts":{"type":"array","items":{"type":"object","properties":{"pubkey":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"isSigner":{"type":"boolean"},"isWritable":{"type":"boolean"}},"required":["pubkey","isSigner","isWritable"]}},"data":{"type":"string","description":"Base64 instruction bytes"}},"required":["programId","accounts","data"]}},"swapInstruction":{"type":"object","properties":{"programId":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"accounts":{"type":"array","items":{"type":"object","properties":{"pubkey":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"isSigner":{"type":"boolean"},"isWritable":{"type":"boolean"}},"required":["pubkey","isSigner","isWritable"]}},"data":{"type":"string","description":"Base64 instruction bytes"}},"required":["programId","accounts","data"]},"cleanupInstruction":{"type":["object","null"],"properties":{"programId":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"accounts":{"type":"array","items":{"type":"object","properties":{"pubkey":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"isSigner":{"type":"boolean"},"isWritable":{"type":"boolean"}},"required":["pubkey","isSigner","isWritable"]}},"data":{"type":"string","description":"Base64 instruction bytes"}},"required":["programId","accounts","data"]},"otherInstructions":{"type":"array","items":{"type":"object","properties":{"programId":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"accounts":{"type":"array","items":{"type":"object","properties":{"pubkey":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"isSigner":{"type":"boolean"},"isWritable":{"type":"boolean"}},"required":["pubkey","isSigner","isWritable"]}},"data":{"type":"string","description":"Base64 instruction bytes"}},"required":["programId","accounts","data"]}},"addressesByLookupTableAddress":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."}}},"blockhash":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"lastValidBlockHeight":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$"}},"required":["pool","requestId","inputMint","outputMint","inAmount","outAmount","otherAmountThreshold","swapMode","slippageBps","priceImpactPct","contextSlot","expiresAt","fees","computeBudgetInstructions","setupInstructions","swapInstruction","cleanupInstruction","otherInstructions","addressesByLookupTableAddress","blockhash","lastValidBlockHeight"]}},"required":["success","data"]}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/swap/order":{"get":{"operationId":"buildSwapOrder","summary":"Build an unsigned swap transaction","description":"Execution-bridge contract. Currently returns 503 TRADING_NOT_CONFIGURED; a quote alone does not produce a transaction.","tags":["Swaps"],"security":[{"IntegrationKey":[]}],"parameters":[{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"SPL mint to sell. Paired with outputMint for automatic pool selection.","example":"So11111111111111111111111111111111111111112"},"required":true,"description":"SPL mint to sell. Paired with outputMint for automatic pool selection.","name":"inputMint","in":"query"},{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"SPL mint to receive; must differ from inputMint.","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"required":true,"description":"SPL mint to receive; must differ from inputMint.","name":"outputMint","in":"query"},{"schema":{"type":"string","maxLength":20,"pattern":"^[1-9][0-9]{0,19}$","description":"Positive u64 token atoms as a decimal string. Input atoms for ExactIn; output atoms for ExactOut. For 6 decimals, 1000000 represents one token.","example":"1000000"},"required":true,"description":"Positive u64 token atoms as a decimal string. Input atoms for ExactIn; output atoms for ExactOut. For 6 decimals, 1000000 represents one token.","name":"amount","in":"query"},{"schema":{"type":"string","enum":["ExactIn","ExactOut"],"default":"ExactIn","description":"ExactIn fixes input and maximizes output; ExactOut fixes output and minimizes input."},"required":false,"description":"ExactIn fixes input and maximizes output; ExactOut fixes output and minimizes input.","name":"swapMode","in":"query"},{"schema":{"type":"integer","minimum":0,"maximum":10000,"default":50,"description":"Slippage tolerance in basis points: 50 = 0.5%. Sets the returned threshold; does not change which pool has the best nominal quote.","example":50},"required":false,"description":"Slippage tolerance in basis points: 50 = 0.5%. Sets the returned threshold; does not change which pool has the best nominal quote.","name":"slippageBps","in":"query"},{"schema":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Optional wallet context for future contextual adapters. Providing an address is not proof of authorization."},"required":false,"description":"Optional wallet context for future contextual adapters. Providing an address is not proof of authorization.","name":"taker","in":"query"}],"responses":{"200":{"description":"Successful request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"pool":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Selected direct pool. Output only; callers specify mints, not a pool."},"requestId":{"type":"string"},"inputMint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"outputMint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"inAmount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Gross input in token atoms, including the trade fee."},"outAmount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Expected output in token atoms after the pool trade fee."},"otherAmountThreshold":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Minimum output for ExactIn; maximum input for ExactOut."},"swapMode":{"type":"string","enum":["ExactIn","ExactOut"]},"slippageBps":{"type":"integer"},"priceImpactPct":{"type":["string","null"],"description":"Null when a price-impact metric is unavailable; never fabricated as zero."},"contextSlot":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$","description":"Confirmed RPC snapshot slot for the selected pool. Other candidates may use different slots."},"expiresAt":{"type":"string","format":"date-time","description":"UTC quote expiry, 10 seconds after selection starts. No liquidity is reserved."},"fees":{"type":"array","items":{"type":"object","properties":{"mint":{"type":"string","format":"solana-address","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Base58-encoded Solana public key."},"amount":{"type":"string","maxLength":39,"pattern":"^(0|[1-9][0-9]*)$"},"kind":{"type":"string","enum":["trade","lp","protocol","hook"],"description":"trade is the total input trade fee; it is not an additional fee or an LP/protocol allocation breakdown."}},"required":["mint","amount","kind"]}},"transaction":{"type":["string","null"],"minLength":4,"maxLength":1644,"pattern":"^[A-Za-z0-9+/]+={0,2}$"},"lastValidBlockHeight":{"type":["string","null"],"maxLength":39,"pattern":"^(0|[1-9][0-9]*)$"}},"required":["pool","requestId","inputMint","outputMint","inAmount","outAmount","otherAmountThreshold","swapMode","slippageBps","priceImpactPct","contextSlot","expiresAt","fees","transaction","lastValidBlockHeight"]}},"required":["success","data"]}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/swap/submit":{"post":{"operationId":"submitSignedTransaction","summary":"Submit a signed transaction","description":"Submit a signed transaction. Submission does not establish confirmation or settlement.","tags":["Swaps"],"security":[{"IntegrationKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signedTransaction":{"type":"string","minLength":4,"maxLength":1644,"pattern":"^[A-Za-z0-9+/]+={0,2}$"}},"required":["signedTransaction"],"additionalProperties":false}}}},"responses":{"202":{"description":"Successful request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"signature":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{64,88}$"},"status":{"type":"string","enum":["submitted"]}},"required":["signature","status"]}},"required":["success","data"]}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/swap/status/{signature}":{"get":{"operationId":"getTransactionStatus","tags":["Transaction status"],"summary":"Read an observed transaction outcome","description":"Reads the configured observer. A not_observed result is not proof that a transaction is absent, pending or failed on chain.","security":[{"IntegrationKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{64,88}$"},"required":true,"name":"signature","in":"path"}],"responses":{"200":{"description":"Successful request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"signature":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{64,88}$"},"status":{"type":"string","enum":["not_observed","finalized","failed"]},"commitment":{"type":"string","enum":["finalized"]},"slot":{"type":["string","null"],"maxLength":39,"pattern":"^(0|[1-9][0-9]*)$"},"observedAt":{"type":["string","null"],"format":"date-time"}},"required":["signature","status","commitment","slot","observedAt"]}},"required":["success","data"]}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/swap/status/{signature}/events":{"get":{"operationId":"streamTransactionStatus","tags":["Transaction status"],"summary":"Stream transaction status updates","security":[{"IntegrationKey":[]}],"description":"Stream finalized observations from the configured chain/program. Resume using Last-Event-ID. Not-observed is not proof of absence on chain. Each connection counts as one API request; frames do not. Stop on complete.","parameters":[{"schema":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{64,88}$"},"required":true,"name":"signature","in":"path"},{"schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$","description":"Last delivered transaction.status event ID. Replays newer persisted events before following live updates."},"required":false,"description":"Last delivered transaction.status event ID. Replays newer persisted events before following live updates.","name":"last-event-id","in":"header"}],"responses":{"200":{"description":"SSE: snapshot, transaction.status (with id), heartbeat, complete, reconnect or stream-error. Only finalized/failed outcomes are observed currently.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/rate-limits":{"get":{"operationId":"getRateLimits","summary":"Read remaining request quota","tags":["Usage & limits"],"description":"Read-only snapshot for the authenticated key’s team, shared by all its keys. Does not consume trading quota and remains available after exhaustion. Fixed UTC minute and calendar-month windows; concurrent requests can change these values immediately.","security":[{"IntegrationKey":[]}],"responses":{"200":{"description":"Successful request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scope":{"type":"string","enum":["team"]},"unit":{"type":"string","enum":["requests"]},"observedAt":{"type":"string","format":"date-time"},"canRequest":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","minimum":0},"minute":{"type":"object","properties":{"limit":{"type":"integer","minimum":0},"remaining":{"type":"integer","minimum":0},"resetsAt":{"type":"string","format":"date-time"}},"required":["limit","remaining","resetsAt"]},"month":{"type":"object","properties":{"limit":{"type":"integer","minimum":0},"remaining":{"type":"integer","minimum":0},"resetsAt":{"type":"string","format":"date-time"}},"required":["limit","remaining","resetsAt"]}},"required":["scope","unit","observedAt","canRequest","retryAfterSeconds","minute","month"]}},"required":["success","data"]}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/usage":{"get":{"operationId":"getRequestUsage","summary":"Read current request consumption","tags":["Usage & limits"],"description":"Read-only snapshot for the authenticated key’s team, shared by all its keys. Does not consume trading quota and remains available after exhaustion. Fixed UTC minute and calendar-month windows; concurrent requests can change these values immediately.","security":[{"IntegrationKey":[]}],"responses":{"200":{"description":"Successful request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scope":{"type":"string","enum":["team"]},"unit":{"type":"string","enum":["requests"]},"observedAt":{"type":"string","format":"date-time"},"minute":{"type":"object","properties":{"used":{"type":"integer","minimum":0},"resetsAt":{"type":"string","format":"date-time"}},"required":["used","resetsAt"]},"month":{"type":"object","properties":{"used":{"type":"integer","minimum":0},"resetsAt":{"type":"string","format":"date-time"}},"required":["used","resetsAt"]}},"required":["scope","unit","observedAt","minute","month"]}},"required":["success","data"]}}}},"400":{"description":"Invalid parameters, unknown fields or malformed request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Missing, expired or revoked credential.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Credential audience or team does not permit this operation.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Requested resource or indexed mint pair was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"409":{"description":"Resource is no longer in the required state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"413":{"description":"Request body exceeds the documented size limit.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"422":{"description":"No supported complete quote, too many candidates or amount limits exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"429":{"description":"Team request quota or stream capacity exhausted. Respect Retry-After when supplied.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"500":{"description":"Unexpected server failure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}},"503":{"description":"Required service, quote worker or execution bridge is unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable failure description; never contains credentials."}},"required":["code","message"]}},"required":["success","error"]}}}}}}}},"webhooks":{}}
