Where a firm quote stands. status is awaiting_deposit until the deposit is final, deposit_confirmed while the
solver fills, in_progress once the destination funds are locked, then completed, refunded, or expired. A
swap is awaiting_deposit until its transaction is final, then completed. Amounts are the on-chain ones once
known.
GET
/
v1
/
quote
/
{id}
Get a quote's status
curl --request GET \ --url https://api.ternswap.xyz/v1/quote/{id} \ --header 'x-api-key: <api-key>'
The fees' total in basis points of from.usd: from.usd − to.usd, plus the sender's own gas on the source
chain when network includes it. Everything the user gives up, when known.
When the server first saw the solver's destination escrows on chain, before they were confirmed, in Unix
seconds. From sourceConfirmedAt to this is how long the swap took to fill. Escrows only; absent until the
escrows paying the recipient are confirmed.
When the server saw the source deposit confirmed, in Unix seconds. Escrows only; absent until then.
Required range: x >= 0
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tern","description":"Cross-chain and same-chain swaps on any supported chain. Every swap completes or refunds.","colors":{"primary":"#212121","light":"#F4F4F4","dark":"#212121"},"logo":{"light":"/logo/ink.svg","dark":"/logo/paper.svg","href":"https://ternswap.xyz"},"favicon":"/favicon.svg","api":{"openapi":"api-reference/openapi.json","playground":{"display":"interactive"}},"appearance":{"default":"light","strict":true},"background":{"color":{"light":"#EBEBEB","dark":"#EBEBEB"}},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Contact"},{"href":"https://ternswap.xyz","label":"ternswap.xyz"}],"primary":{"type":"button","label":"Launch app","href":"https://tern-app-staging.unitlabs.xyz"}},"seo":{"metatags":{"og:image":"/images/og.png","twitter:card":"summary_large_image"}},"fonts":{"heading":{"family":"Satoshi","weight":700,"source":"fonts/Satoshi-Variable.woff2","format":"woff2"},"body":{"family":"Intrade","weight":400,"source":"fonts/Intrade-Regular.woff2","format":"woff2"}},"styling":{"codeblocks":"system"},"integrations":{"telemetry":{"enabled":false}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"hasAudioNarration":false,"customDomains":[],"gitSource":{"type":"github","owner":"local","repo":"local","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"local","isBase":true},"buildId":"local","clientVersion":"0.0.4110"},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false,"isLoggedInCli":false,"mintExport":{}},"customCss":[{"filePath":"style.css","content":"@font-face{font-family:\"Geist Mono\";src:url(\"/fonts/GeistMono-Variable.woff2\") format(\"woff2\");font-weight:100 900;font-display:swap}@font-face{font-family:\"Satoshi\";src:url(\"/fonts/Satoshi-Variable.woff2\") format(\"woff2\");font-weight:300 900;font-display:swap}:root{--tern-ink: #212121;--tern-paper: #f4f4f4;--tern-surface: #ffffff;--tern-hairline: rgb(33 33 33 / 0.08);--tern-hairline-strong: rgb(33 33 33 / 0.16);--tern-track: rgb(33 33 33 / 0.06)}*,*::before,*::after{box-shadow:none!important;text-shadow:none!important}:focus-visible{outline:1.5px solid var(--tern-ink);outline-offset:2px}code,pre,kbd,samp,.font-mono{font-family:\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, monospace!important}h1,h2,h3,h4{font-family:\"Satoshi\", ui-sans-serif, system-ui, sans-serif;letter-spacing:-0.01em}h1{font-weight:700}h2,h3,h4{font-weight:600}#search-bar-entry{background:var(--tern-surface)!important;border:1px solid var(--tern-hairline)!important}#sidebar a[aria-current=\"page\"],#sidebar li[data-active=\"true\"]>a{background:var(--tern-surface)!important;color:var(--tern-ink)!important;border:1px solid var(--tern-hairline)}[data-callout-type]{background:var(--tern-surface)!important;border:1px solid var(--tern-hairline)!important}[data-callout-type],[data-callout-type] *{color:var(--tern-ink)!important}[data-callout-type] svg{color:var(--tern-ink)!important;fill:currentColor}[data-callout-type=\"warning\"],[data-callout-type=\"danger\"]{border:1.5px solid var(--tern-ink)!important}pre,[data-component-part=\"code-block-root\"],.code-block,.card,[data-component-part=\"card\"]{border-color:var(--tern-hairline)!important}.method-pill,[class*=\"bg-green-400/20\"],[class*=\"bg-blue-400/20\"],[class*=\"bg-yellow-400/20\"],[class*=\"bg-orange-400/20\"],[class*=\"bg-red-400/20\"],[class*=\"bg-[#3064E3]\"]{color:var(--tern-ink)!important;border:1px solid transparent}[class*=\"bg-green-400/20\"]{background:var(--tern-surface)!important;border-color:var(--tern-hairline-strong)!important}[class*=\"bg-blue-400/20\"],[class*=\"bg-[#3064E3]\"]{background:var(--tern-ink)!important;color:var(--tern-paper)!important}[class*=\"bg-yellow-400/20\"],[class*=\"bg-orange-400/20\"]{background:var(--tern-track)!important}[class*=\"bg-red-400/20\"]{background:transparent!important;border:1px dashed var(--tern-ink)!important}.tryit-button{background:var(--tern-ink)!important;color:var(--tern-paper)!important}[data-component-part=\"field-required-pill\"]{background:var(--tern-track)!important;color:var(--tern-ink)!important}pre code,pre [class*=\"font-mono\"]{filter:grayscale(1)}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}"}],"page":{"pagePath":"api-reference/quotes/get-a-quotes-status","slug":"/api-reference/quotes/get-a-quotes-status","pageMetadata":{"openapi":"/api-reference/openapi.json GET /v1/quote/{id}","description":"Where a firm quote stands. `status` is `awaiting_deposit` until the deposit is final, `deposit_confirmed` while the\nsolver fills, `in_progress` once the destination funds are locked, then `completed`, `refunded`, or `expired`. A\nswap is `awaiting_deposit` until its transaction is final, then `completed`. Amounts are the on-chain ones once\nknown.","href":"/api-reference/quotes/get-a-quotes-status","title":"Get a quote's status"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Where a firm quote stands. \", _jsx(_components.code, {\n children: \"status\"\n }), \" is \", _jsx(_components.code, {\n children: \"awaiting_deposit\"\n }), \" until the deposit is final, \", _jsx(_components.code, {\n children: \"deposit_confirmed\"\n }), \" while the\\nsolver fills, \", _jsx(_components.code, {\n children: \"in_progress\"\n }), \" once the destination funds are locked, then \", _jsx(_components.code, {\n children: \"completed\"\n }), \", \", _jsx(_components.code, {\n children: \"refunded\"\n }), \", or \", _jsx(_components.code, {\n children: \"expired\"\n }), \". A\\nswap is \", _jsx(_components.code, {\n children: \"awaiting_deposit\"\n }), \" until its transaction is final, then \", _jsx(_components.code, {\n children: \"completed\"\n }), \". Amounts are the on-chain ones once\\nknown.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"openapi":"/api-reference/openapi.json GET /v1/quote/{id}","description":"Where a firm quote stands. `status` is `awaiting_deposit` until the deposit is final, `deposit_confirmed` while the\nsolver fills, `in_progress` once the destination funds are locked, then `completed`, `refunded`, or `expired`. A\nswap is `awaiting_deposit` until its transaction is final, then `completed`. Amounts are the on-chain ones once\nknown.","href":"/api-reference/quotes/get-a-quotes-status","title":"Get a quote's status"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/localhost/095442d7f85c8988/smooth-scroll.js"],"openApiReferenceData":{"operation":{"tags":["quotes"],"summary":"Get a quote's status","description":"Where a firm quote stands. `status` is `awaiting_deposit` until the deposit is final, `deposit_confirmed` while the\nsolver fills, `in_progress` once the destination funds are locked, then `completed`, `refunded`, or `expired`. A\nswap is `awaiting_deposit` until its transaction is final, then `completed`. Amounts are the on-chain ones once\nknown.","operationId":"get_quote","parameters":["81ff7ab0-d7e3-4e95-a012-0fdf40b530bf"],"responses":{"200":"62e33f06-a24a-484d-bef8-be778513c7d6","401":"9bde4f27-b06c-4aa1-b6eb-f9c5e13ba7b9","404":"c03b0371-33ca-48d3-acac-9353f1743a70","429":"151fb46d-9595-4e5c-8925-86b5cd0a727a","500":"a80af673-9691-4150-8e38-294e9c6071a4"},"security":["b216a3e9-e45a-41b4-a9f5-0661f44c9137","fce5b8c5-d317-4117-a372-e0dda4b3488b"],"method":"get","type":"path","servers":["94e17e01-c458-4ed3-b14c-73d83eb8f534"],"path":"/v1/quote/{id}","baseUrlOptions":["https://api.ternswap.xyz"],"title":"Get a quote's status","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"81ff7ab0-d7e3-4e95-a012-0fdf40b530bf":{"name":"id","in":"path","description":"The quote's ID","required":true,"schema":{"type":"string","isRequired":true,"description":"The quote's ID","uniqueKey":"","typeLabel":"string"}}},"responses":{"62e33f06-a24a-484d-bef8-be778513c7d6":{"description":"The quote's status","content":{"application/json":{"schema":{"type":"object","description":"`GET /v1/quote/{id}`.","required":["id","status","createdAt","expiresAt","source","destination"],"properties":{"createdAt":{"type":"integer","format":"int64","description":"When the firm quote was made, in Unix seconds.","minimum":0,"isRequired":true,"uniqueKey":"createdAt","typeLabel":"integer\u003cint64>"},"destination":{"type":"object","description":"The destination leg of a quote's status.","required":["chain","asset","amount"],"properties":{"amount":{"type":"string","isRequired":true,"uniqueKey":"destination.amount","typeLabel":"string"},"asset":{"type":"string","isRequired":true,"uniqueKey":"destination.asset","typeLabel":"string"},"chain":{"type":"string","isRequired":true,"uniqueKey":"destination.chain","typeLabel":"string"},"txHash":{"oneOf":[{"type":"string","description":"The transaction that paid the user.","uniqueKey":"destination.txHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"The transaction that paid the user.","uniqueKey":"destination.txHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"destination.txHash","typeLabel":"string | null"},"usd":{"oneOf":[{"type":"string","description":"US dollars at quote time, when known.","uniqueKey":"destination.usd.oneOf.0","typeLabel":"string"},{"type":"null","description":"US dollars at quote time, when known.","uniqueKey":"destination.usd.oneOf.1","typeLabel":"null"}],"uniqueKey":"destination.usd","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"destination","typeLabel":"object"},"expiresAt":{"type":"integer","format":"int64","description":"As in the firm quote. Escrows: the deposit deadline. Swaps: the time to send by. Unix seconds.","minimum":0,"isRequired":true,"uniqueKey":"expiresAt","typeLabel":"integer\u003cint64>"},"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"source":{"type":"object","description":"The source leg of a quote's status.","required":["chain","asset","amount"],"properties":{"amount":{"type":"string","isRequired":true,"uniqueKey":"source.amount","typeLabel":"string"},"asset":{"type":"string","isRequired":true,"uniqueKey":"source.asset","typeLabel":"string"},"chain":{"type":"string","isRequired":true,"uniqueKey":"source.chain","typeLabel":"string"},"refundTxHash":{"oneOf":[{"type":"string","description":"Only when refunded.","uniqueKey":"source.refundTxHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"Only when refunded.","uniqueKey":"source.refundTxHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"source.refundTxHash","typeLabel":"string | null"},"txHash":{"oneOf":[{"type":"string","description":"The user's deposit.","uniqueKey":"source.txHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"The user's deposit.","uniqueKey":"source.txHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"source.txHash","typeLabel":"string | null"},"usd":{"oneOf":[{"type":"string","description":"US dollars at quote time, when known.","uniqueKey":"source.usd.oneOf.0","typeLabel":"string"},{"type":"null","description":"US dollars at quote time, when known.","uniqueKey":"source.usd.oneOf.1","typeLabel":"null"}],"uniqueKey":"source.usd","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"source","typeLabel":"object"},"status":{"type":"string","description":"A quote's public status (design/03-server.md, Quote lifecycle).","enum":["awaiting_deposit","deposit_confirmed","in_progress","completed","refunded","expired"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"costBps":{"oneOf":[{"type":"integer","format":"int64","description":"The fees' total in basis points of `from.usd`: `from.usd − to.usd`, plus the sender's own gas on the source\nchain when `network` includes it. Everything the user gives up, when known.","minimum":0,"uniqueKey":"costBps.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"The fees' total in basis points of `from.usd`: `from.usd − to.usd`, plus the sender's own gas on the source\nchain when `network` includes it. Everything the user gives up, when known.","minimum":0,"uniqueKey":"costBps.oneOf.1","typeLabel":"null"}],"uniqueKey":"costBps","typeLabel":"integer\u003cint64> | null"},"depositAddress":{"oneOf":[{"type":"string","description":"An escrow quote's deposit address, as in the firm quote's `execute`; absent for swaps.","uniqueKey":"depositAddress.oneOf.0","typeLabel":"string"},{"type":"null","description":"An escrow quote's deposit address, as in the firm quote's `execute`; absent for swaps.","uniqueKey":"depositAddress.oneOf.1","typeLabel":"null"}],"uniqueKey":"depositAddress","typeLabel":"string | null"},"destinationSeenAt":{"oneOf":[{"type":"integer","format":"int64","description":"When the server first saw the solver's destination escrows on chain, before they were confirmed, in Unix\nseconds. From `sourceConfirmedAt` to this is how long the swap took to fill. Escrows only; absent until the\nescrows paying the recipient are confirmed.","minimum":0,"uniqueKey":"destinationSeenAt.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"When the server first saw the solver's destination escrows on chain, before they were confirmed, in Unix\nseconds. From `sourceConfirmedAt` to this is how long the swap took to fill. Escrows only; absent until the\nescrows paying the recipient are confirmed.","minimum":0,"uniqueKey":"destinationSeenAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"destinationSeenAt","typeLabel":"integer\u003cint64> | null"},"etaSecs":{"oneOf":[{"type":"integer","format":"int64","description":"Seconds from the deposit (or the swap) being seen until the recipient is paid, as estimated at quote time.","minimum":0,"uniqueKey":"etaSecs.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"Seconds from the deposit (or the swap) being seen until the recipient is paid, as estimated at quote time.","minimum":0,"uniqueKey":"etaSecs.oneOf.1","typeLabel":"null"}],"uniqueKey":"etaSecs","typeLabel":"integer\u003cint64> | null"},"fees":{"oneOf":[{"type":"object","description":"The fees at quote time, when known.","required":["totalUsd","items"],"properties":{"items":{"type":"array","items":{"type":"object","description":"One fee, in US dollars.","required":["kind","usd"],"properties":{"kind":{"type":"string","description":"What a fee pays for.","enum":["solver","network","partner","protocol","privacy"],"isRequired":true,"uniqueKey":"fees.oneOf.0.\\items.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"usd":{"type":"string","description":"US dollars, two decimals.","example":"0.71","isRequired":true,"uniqueKey":"fees.oneOf.0.\\items.items.[INDEX].usd","typeLabel":"string"}},"uniqueKey":"fees.oneOf.0.\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"fees.oneOf.0.\\items","typeLabel":"object[]"},"totalUsd":{"type":"string","description":"The sum of `items`, in US dollars.","isRequired":true,"uniqueKey":"fees.oneOf.0.totalUsd","typeLabel":"string"}},"uniqueKey":"fees.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"fees.oneOf.1","typeLabel":"null"}],"uniqueKey":"fees","typeLabel":"object | null"},"priceImpactBps":{"oneOf":[{"type":"integer","format":"int64","description":"What the route loses against market price, router fees included, in basis points of `from.usd`, when known.","minimum":0,"uniqueKey":"priceImpactBps.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"What the route loses against market price, router fees included, in basis points of `from.usd`, when known.","minimum":0,"uniqueKey":"priceImpactBps.oneOf.1","typeLabel":"null"}],"uniqueKey":"priceImpactBps","typeLabel":"integer\u003cint64> | null"},"sourceConfirmedAt":{"oneOf":[{"type":"integer","format":"int64","description":"When the server saw the source deposit confirmed, in Unix seconds. Escrows only; absent until then.","minimum":0,"uniqueKey":"sourceConfirmedAt.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"When the server saw the source deposit confirmed, in Unix seconds. Escrows only; absent until then.","minimum":0,"uniqueKey":"sourceConfirmedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"sourceConfirmedAt","typeLabel":"integer\u003cint64> | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"createdAt":1793084230,"depositAddress":"0x3c1f0e0a9b7d6c5e4f3a2b1c0d9e8f7a6b5c4d3e","destination":{"amount":"998500","asset":"0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8","chain":"starknet","txHash":"0x07b1…","usd":"998.50"},"destinationSeenAt":1793084324,"etaSecs":95,"expiresAt":1793085830,"fees":{"items":[{"kind":"solver","usd":"0.80"},{"kind":"network","usd":"0.70"}],"totalUsd":"1.50"},"id":"q_01JB8Z5W3F6V9Q2X4K7M1N0P8R","source":{"amount":"1000000","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","chain":"base","txHash":"0x5e2a…","usd":"1000.00"},"sourceConfirmedAt":1793084290,"status":"completed"},"examples":{"Example":{"title":"Example","value":{"createdAt":1793084230,"depositAddress":"0x3c1f0e0a9b7d6c5e4f3a2b1c0d9e8f7a6b5c4d3e","destination":{"amount":"998500","asset":"0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8","chain":"starknet","txHash":"0x07b1…","usd":"998.50"},"destinationSeenAt":1793084324,"etaSecs":95,"expiresAt":1793085830,"fees":{"items":[{"kind":"solver","usd":"0.80"},{"kind":"network","usd":"0.70"}],"totalUsd":"1.50"},"id":"q_01JB8Z5W3F6V9Q2X4K7M1N0P8R","source":{"amount":"1000000","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","chain":"base","txHash":"0x5e2a…","usd":"1000.00"},"sourceConfirmedAt":1793084290,"status":"completed"}}},"exampleType":"examples"}},"exampleType":"examples"},"9bde4f27-b06c-4aa1-b6eb-f9c5e13ba7b9":{"description":"x-api-key is not a valid API key","content":{"application/problem+json":{"schema":{"type":"object","description":"The body of every error response.","required":["type","title","status","code","detail"],"properties":{"code":{"type":"string","description":"A stable, machine-readable error code. Clients branch on this, never on `title` or `detail`.","enum":["invalid_request","unauthorized","not_found","method_not_allowed","rate_limited","unsupported_chain","unsupported_asset","amount_too_small","amount_too_large","no_route","condition_reused","quote_not_found","quote_expired","not_ready","invalid_fulfillment","destination_not_ready","invalid_private_transaction","payload_too_large","timeout","internal"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"status":{"type":"integer","format":"int32","minimum":0,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","description":"The HTTP status phrase.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","description":"Always `about:blank`: `code` carries the error type.","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"invalid_request","detail":"\u003cstring>","status":1,"title":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"c03b0371-33ca-48d3-acac-9353f1743a70":{"description":"No such quote","content":{"application/problem+json":{"schema":{"type":"object","description":"The body of every error response.","required":["type","title","status","code","detail"],"properties":{"code":{"type":"string","description":"A stable, machine-readable error code. Clients branch on this, never on `title` or `detail`.","enum":["invalid_request","unauthorized","not_found","method_not_allowed","rate_limited","unsupported_chain","unsupported_asset","amount_too_small","amount_too_large","no_route","condition_reused","quote_not_found","quote_expired","not_ready","invalid_fulfillment","destination_not_ready","invalid_private_transaction","payload_too_large","timeout","internal"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"status":{"type":"integer","format":"int32","minimum":0,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","description":"The HTTP status phrase.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","description":"Always `about:blank`: `code` carries the error type.","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"invalid_request","detail":"\u003cstring>","status":1,"title":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"151fb46d-9595-4e5c-8925-86b5cd0a727a":{"description":"Too many requests from this partner, or from this address without an API key","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until a request is accepted again"}},"content":{"application/problem+json":{"schema":{"type":"object","description":"The body of every error response.","required":["type","title","status","code","detail"],"properties":{"code":{"type":"string","description":"A stable, machine-readable error code. Clients branch on this, never on `title` or `detail`.","enum":["invalid_request","unauthorized","not_found","method_not_allowed","rate_limited","unsupported_chain","unsupported_asset","amount_too_small","amount_too_large","no_route","condition_reused","quote_not_found","quote_expired","not_ready","invalid_fulfillment","destination_not_ready","invalid_private_transaction","payload_too_large","timeout","internal"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"status":{"type":"integer","format":"int32","minimum":0,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","description":"The HTTP status phrase.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","description":"Always `about:blank`: `code` carries the error type.","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"invalid_request","detail":"\u003cstring>","status":1,"title":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"a80af673-9691-4150-8e38-294e9c6071a4":{"description":"Internal error","content":{"application/problem+json":{"schema":{"type":"object","description":"The body of every error response.","required":["type","title","status","code","detail"],"properties":{"code":{"type":"string","description":"A stable, machine-readable error code. Clients branch on this, never on `title` or `detail`.","enum":["invalid_request","unauthorized","not_found","method_not_allowed","rate_limited","unsupported_chain","unsupported_asset","amount_too_small","amount_too_large","no_route","condition_reused","quote_not_found","quote_expired","not_ready","invalid_fulfillment","destination_not_ready","invalid_private_transaction","payload_too_large","timeout","internal"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"status":{"type":"integer","format":"int32","minimum":0,"isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"type":"string","description":"The HTTP status phrase.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","description":"Always `about:blank`: `code` carries the error type.","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"invalid_request","detail":"\u003cstring>","status":1,"title":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"b216a3e9-e45a-41b4-a9f5-0661f44c9137":{},"fce5b8c5-d317-4117-a372-e0dda4b3488b":{"api_key":{"type":"apiKey","in":"header","name":"x-api-key","description":"A partner's API key. Optional: without it a request is anonymous. An invalid key is `401 unauthorized`.","scopes":[],"schemeName":"api_key"}}},"servers":{"94e17e01-c458-4ed3-b14c-73d83eb8f534":{"url":"https://api.ternswap.xyz"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"A partner's API key. Optional: without it a request is anonymous. An invalid key is `401 unauthorized`.","scopes":[],"schemeName":"api_key"},"schema":{"title":"x-api-key","type":"string","description":"A partner's API key. Optional: without it a request is anonymous. An invalid key is `401 unauthorized`.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"api_key","name":"x-api-key"}],"title":"api_key"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"localhost","siteName":"Tern","title":"Get a quote's status - Tern","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"originalFileLocation":"api-reference/quotes/get-a-quotes-status.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Where a firm quote stands. status is awaiting_deposit until the deposit is final, deposit_confirmed while the solver fills, in_progress once the destination funds are locked, then completed, refunded, or expired. A swap is awaiting_deposit until its transaction is final, then completed. Amounts are the on-chain ones once known.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tern\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/favicons/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/favicons/favicon-32x32.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/favicons/favicon-16x16.png\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicons/favicon.ico\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get a quote\u0026#x27;s status - Tern\">\u003cmeta data-mint-head property=\"og:description\" content=\"Where a firm quote stands. status is awaiting_deposit until the deposit is final, deposit_confirmed while the solver fills, in_progress once the destination funds are locked, then completed, refunded, or expired. A swap is awaiting_deposit until its transaction is final, then completed. Amounts are the on-chain ones once known.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tern\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://local./api-reference/quotes/get-a-quotes-status\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://local.mintlify.site/images/og.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get a quote\u0026#x27;s status - Tern\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Where a firm quote stands. status is awaiting_deposit until the deposit is final, deposit_confirmed while the solver fills, in_progress once the destination funds are locked, then completed, refunded, or expired. A swap is awaiting_deposit until its transaction is final, then completed. Amounts are the on-chain ones once known.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://local.mintlify.site/images/og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/favicons/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tern\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#212121\">\u003clink data-mint-head rel=\"canonical\" href=\"https://local./api-reference/quotes/get-a-quotes-status\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/quotes/get-a-quotes-status.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tern\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Tern\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/quotes/get-a-quotes-status.md","siteName":"Tern","nav":{"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":""}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Authentication and limits","href":"/api-reference/authentication"},{"title":"Idempotency","href":"/api-reference/idempotency"},{"title":"Errors","href":"/api-reference/errors"}]},{"group":"Quotes","pages":[{"title":"Get a quote","description":"Prices a swap, or commits to one. Across chains a swap settles through two escrows and a solver: without\n`executionCondition` the answer is an indicative price; with it, a firm quote with everything needed to fund it.\nOn one chain it settles in one transaction through the chain's `TernSwap` and a DEX aggregator: indicative without\n`sender` and `recipient`, firm with both.\n\nA firm quote's `execute` lists what to send: EVM `transactions` in order, or Starknet `calls` as one multicall. An\nescrow quote also has a `depositAddress`, to which the exact `from.amount` can be sent from any wallet instead.","openapi":"/api-reference/openapi.json POST /v1/quote","href":"/api-reference/quotes/get-a-quote"},{"title":"Get a quote's status","openapi":"/api-reference/openapi.json GET /v1/quote/{id}","href":"/api-reference/quotes/get-a-quotes-status"},{"title":"Search quotes","description":"The firm quotes, cross-chain and same-chain, that `address` sends or receives, or that the transaction `txHash`\nbelongs to (a deposit, sweep, fill, settlement, refund, or swap), newest first. Give one of the two. Pass a page's\n`next` as `before` to get the next page.","openapi":"/api-reference/openapi.json GET /v1/quotes","href":"/api-reference/quotes/search-quotes"},{"title":"Reveal the fulfillment","openapi":"/api-reference/openapi.json POST /v1/quote/{id}/fulfill","href":"/api-reference/quotes/reveal-the-fulfillment"},{"title":"Submit a private swap","openapi":"/api-reference/openapi.json POST /v1/quote/{id}/submit","href":"/api-reference/quotes/submit-a-private-swap"}]},{"group":"Chains","pages":[{"title":"List chains","openapi":"/api-reference/openapi.json GET /v1/chains","href":"/api-reference/chains/list-chains"}]},{"group":"Indexing","pages":[{"title":"Index a transaction now","openapi":"/api-reference/openapi.json POST /v1/index","href":"/api-reference/index/index-a-transaction-now"}]}]}]},"basePath":"","title":"Get a quote's status - Tern","buildId":"f07417d3103b","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-ChNWifjS.js","utils-B09uz9kC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CgWydDvv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-ntwvlSPp.js","snippetPresets-VMJFyqCh.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLDXeNDs.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DHPXAtXl.js","shallow-Duo57Vxn.js","getApiPlaygroundDisplay-CJ0QNjPo.js","CodeSnippet-CwkzYS8z.js","CodeSnippets-BbGP_deU.js","Page-DhXAHNm9.js","getPastedJson-Dlkoi053.js","icon-CVIEM2zz.js","MethodPill-Ba__0K3g.js","DuplicateIcon-DqYcNKiH.js","createIcon-BLD1akSv.js","DynamicMarkdown-CVycGnMV.js","SectionHeading-FgN64qHU.js","axios-vUo_bRtp.js","Markdown-B4Xl-lWO.js","clsx-BFciZbw6.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BhSdXnAe.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DWTt8oHl.js"]}