Returns the latest cached on-chain orderbook for all configured token pairs.
The cache refreshes on every new block via eth_subscribe, so the data always
reflects the most recent chain state.
Each pair has a baseToken (the traded token, e.g. WETH) and a quoteToken — the
chain’s quote stablecoin: USDC on Base (8453), USDT on BNB Chain (56), USDG on
Robinhood Chain (4663).
Prices are expressed as quote token per base token (decimal strings).
Amounts are human-readable base token quantities (decimal strings).
Levels are marginal — each level is an independent price point, not cumulative depth.
bids are sorted descending (best bid first); asks are sorted ascending (best ask first).
Use the chainId query parameter to select the chain. Omitting it (or passing 0)
targets the default chain, Base (8453). chainId, blockNumber, and blockTime
in the response all belong to the selected chain.
GET
/
v2
/
price
Get live orderbook
curl --request GET \ --url https://propamm.kipseli.win/v2/price \ --header 'X-API-KEY: <api-key>'
Returns the live on-chain orderbook for all configured token pairs on a given chain. The cache is refreshed on every new block via eth_subscribe, so the response always reflects the most recent chain state.Use this endpoint to get current market prices before executing a swap, or to display market depth to users.
Pass the target chain with the chainId query parameter:
# Base (8453)curl "https://propamm.kipseli.win/v2/price?chainId=8453" \ -H "X-API-KEY: $KIPSELI_API_KEY"# BNB Chain (56)curl "https://propamm.kipseli.win/v2/price?chainId=56" \ -H "X-API-KEY: $KIPSELI_API_KEY"# chainId omitted — falls back to Base (8453)curl "https://propamm.kipseli.win/v2/price" \ -H "X-API-KEY: $KIPSELI_API_KEY"
Each chain quotes against its own stablecoin — the quoteToken:
Chain
chainId
Quote token
BNB Chain
56
USDT — 0x55d398326f99059fF775485246999027B3197955
Base
8453
USDC — 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Robinhood Chain
4663
USDG — 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
Every pair on a chain shares that chain’s quote token, and each pair echoes it in quoteToken. Read it on-chain with getQuoteToken() on the chain’s QuoteLens helper if you need to confirm it at runtime.
If chainId is omitted (or 0), the request targets Base (8453). The response echoes the resolved chain in chainId, and blockNumber / blockTime refer to that chain.
Chain-related failures:
Status
Code
When
400
UNSUPPORTED_CHAIN
Well-formed chainId the service does not serve
422
VALIDATION_ERROR
chainId is not a base-10 unsigned integer
503
SERVICE_UNAVAILABLE
Supported chain with no live orderbook yet (bootstrapping, or RPC is down)
bids — prices at which PropAMM will buy the base token (you sell base, receive the quote token). Sorted descending.
asks — prices at which PropAMM will sell the base token (you buy base, pay the quote token). Sorted ascending.
price is always quote token per base token — USDC on Base, USDT on BNB Chain, USDG on Robinhood Chain.
Each level is marginal — independent price points, not cumulative depth.
Prices and amounts are decimal strings to preserve EVM-scale precision.
Quote-token decimals differ per chain — USDC and USDG use 6, BNB Chain’s USDT uses 18. price and amount are human-readable decimal strings and unaffected, but any wei-denominated value you compute from them (e.g. minAmountOut in Request Swap Verification) must be scaled with the right decimals for that chain.
A chain whose orderbook has not bootstrapped yet does not return an empty book — it returns 503 SERVICE_UNAVAILABLE. A 200 with an empty pairs array means the chain is live but currently tracks no pairs.
Chain to return the orderbook for, as a base-10 unsigned integer.
Supported values: 56 (BNB Chain), 8453 (Base), 4663 (Robinhood Chain).
Omit it (or pass 0) for the default chain, Base (8453).
A chain the service does not serve returns 400 UNSUPPORTED_CHAIN; a malformed
value returns 422 VALIDATION_ERROR; a supported chain whose orderbook is not
live yet returns 503 SERVICE_UNAVAILABLE.
The chain this orderbook belongs to — the requested chainId, or the default
chain when the request omitted it. blockNumber, blockTime, and every token
address below are scoped to it.
Orderbook for each pair configured on this chain, each quoted in the chain's
quote token. Empty when the chain is live but currently tracks no pairs — a
chain whose orderbook has not bootstrapped returns 503 instead.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Kipseli PropAMM","colors":{"primary":"#8B7FFF","light":"#A99FF9","dark":"#6B5FEF"},"logo":{"light":"https://mintcdn.com/kipselicapital/S_BrK6HxH8j_QkUk/logos/black.svg?fit=max\u0026auto=format\u0026n=S_BrK6HxH8j_QkUk\u0026q=85\u0026s=83d1c0798d57ccfb0877a89f177cf740","dark":"https://mintcdn.com/kipselicapital/S_BrK6HxH8j_QkUk/logos/white.svg?fit=max\u0026auto=format\u0026n=S_BrK6HxH8j_QkUk\u0026q=85\u0026s=1643a383ace0d9d72289b2679ee2e092"},"favicon":"https://mintcdn.com/kipselicapital/S_BrK6HxH8j_QkUk/logos/white.svg?fit=max\u0026auto=format\u0026n=S_BrK6HxH8j_QkUk\u0026q=85\u0026s=1643a383ace0d9d72289b2679ee2e092","api":{"openapi":"openapi.yaml","playground":{"display":"simple"},"mdx":{"server":"https://propamm.kipseli.win"}},"appearance":{"default":"dark"},"background":{"color":{"light":"#FFFFFF","dark":"#0C1527"}},"footer":{"socials":{"website":"https://kipseli.capital"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kipselicapital","hasAudioNarration":false,"actualSubdomain":"kipselicapital","customDomains":["docs.kipseli.capital"],"gitSource":{"type":"github","owner":"kipselicapital","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a6ce60a49a5b355c25e4a34","collectionId":"1f1d297e-4881-471d-af1f-9325c9d0ca84","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6a6ce60a49a5b355c25e4a34"},"entitlements":{},"buildId":"6ae948857a557f4aa93252de:success","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":2},{"language":"default","tag":"Integration Guide","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/get-price","slug":"/api-reference/get-price","pageMetadata":{"title":"Get Orderbook","openapi":"get /v2/price","description":"Returns the latest cached on-chain orderbook for all configured token pairs.\nThe cache refreshes on every new block via `eth_subscribe`, so the data always\nreflects the most recent chain state.\n\nEach pair has a `baseToken` (the traded token, e.g. WETH) and a `quoteToken` — the\nchain's quote stablecoin: USDC on Base (`8453`), USDT on BNB Chain (`56`), USDG on\nRobinhood Chain (`4663`).\nPrices are expressed as **quote token per base token** (decimal strings).\nAmounts are **human-readable base token quantities** (decimal strings).\n\nLevels are **marginal** — each level is an independent price point, not cumulative depth.\n`bids` are sorted descending (best bid first); `asks` are sorted ascending (best ask first).\n\nUse the `chainId` query parameter to select the chain. Omitting it (or passing `0`)\ntargets the default chain, Base (`8453`). `chainId`, `blockNumber`, and `blockTime`\nin the response all belong to the selected chain.\n","href":"/api-reference/get-price"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Returns the latest cached on-chain orderbook for all configured token pairs.\\nThe cache refreshes on every new block via \", _jsx(_components.code, {\n children: \"eth_subscribe\"\n }), \", so the data always\\nreflects the most recent chain state.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Each pair has a \", _jsx(_components.code, {\n children: \"baseToken\"\n }), \" (the traded token, e.g. WETH) and a \", _jsx(_components.code, {\n children: \"quoteToken\"\n }), \" — the\\nchain’s quote stablecoin: USDC on Base (\", _jsx(_components.code, {\n children: \"8453\"\n }), \"), USDT on BNB Chain (\", _jsx(_components.code, {\n children: \"56\"\n }), \"), USDG on\\nRobinhood Chain (\", _jsx(_components.code, {\n children: \"4663\"\n }), \").\\nPrices are expressed as \", _jsx(_components.strong, {\n children: \"quote token per base token\"\n }), \" (decimal strings).\\nAmounts are \", _jsx(_components.strong, {\n children: \"human-readable base token quantities\"\n }), \" (decimal strings).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Levels are \", _jsx(_components.strong, {\n children: \"marginal\"\n }), \" — each level is an independent price point, not cumulative depth.\\n\", _jsx(_components.code, {\n children: \"bids\"\n }), \" are sorted descending (best bid first); \", _jsx(_components.code, {\n children: \"asks\"\n }), \" are sorted ascending (best ask first).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Use the \", _jsx(_components.code, {\n children: \"chainId\"\n }), \" query parameter to select the chain. Omitting it (or passing \", _jsx(_components.code, {\n children: \"0\"\n }), \")\\ntargets the default chain, Base (\", _jsx(_components.code, {\n children: \"8453\"\n }), \"). \", _jsx(_components.code, {\n children: \"chainId\"\n }), \", \", _jsx(_components.code, {\n children: \"blockNumber\"\n }), \", and \", _jsx(_components.code, {\n children: \"blockTime\"\n }), \"\\nin the response all belong to the selected chain.\"]\n })]\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Returns the live on-chain orderbook for all configured token pairs on a given chain. The cache is refreshed on every new block via `,_jsx(_components.code,{children:`eth_subscribe`}),`, so the response always reflects the most recent chain state.`]}),`\n`,_jsx(_components.p,{children:`Use this endpoint to get current market prices before executing a swap, or to display market depth to users.`}),`\n`,_jsx(Heading,{level:`2`,id:`selecting-a-chain`,children:`Selecting a Chain`}),`\n`,_jsxs(_components.p,{children:[`Pass the target chain with the `,_jsx(_components.code,{children:`chainId`}),` query parameter:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`11`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Base (8453)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://propamm.kipseli.win/v2/price?chainId=8453\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-API-KEY: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$KIPSELI_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# BNB Chain (56)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://propamm.kipseli.win/v2/price?chainId=56\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-API-KEY: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$KIPSELI_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# chainId omitted — falls back to Base (8453)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://propamm.kipseli.win/v2/price\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-API-KEY: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$KIPSELI_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Each chain quotes against its own stablecoin — the `,_jsx(_components.code,{children:`quoteToken`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Chain`}),_jsx(_components.th,{children:_jsx(_components.code,{children:`chainId`})}),_jsx(_components.th,{children:`Quote token`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`BNB Chain`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`56`})}),_jsxs(_components.td,{children:[`USDT — `,_jsx(_components.code,{children:`0x55d398326f99059fF775485246999027B3197955`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Base`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`8453`})}),_jsxs(_components.td,{children:[`USDC — `,_jsx(_components.code,{children:`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Robinhood Chain`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`4663`})}),_jsxs(_components.td,{children:[`USDG — `,_jsx(_components.code,{children:`0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168`})]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Every pair on a chain shares that chain’s quote token, and each pair echoes it in `,_jsx(_components.code,{children:`quoteToken`}),`. Read it on-chain with `,_jsx(_components.code,{children:`getQuoteToken()`}),` on the chain’s `,_jsx(_components.a,{href:`/index#contract-addresses`,children:`QuoteLens helper`}),` if you need to confirm it at runtime.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`chainId`}),` is omitted (or `,_jsx(_components.code,{children:`0`}),`), the request targets Base (`,_jsx(_components.code,{children:`8453`}),`). The response echoes the resolved chain in `,_jsx(_components.code,{children:`chainId`}),`, and `,_jsx(_components.code,{children:`blockNumber`}),` / `,_jsx(_components.code,{children:`blockTime`}),` refer to that chain.`]})}),`\n`,_jsx(_components.p,{children:`Chain-related failures:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`When`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`UNSUPPORTED_CHAIN`})}),_jsxs(_components.td,{children:[`Well-formed `,_jsx(_components.code,{children:`chainId`}),` the service does not serve`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`422`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`VALIDATION_ERROR`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`chainId`}),` is not a base-10 unsigned integer`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`503`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`SERVICE_UNAVAILABLE`})}),_jsx(_components.td,{children:`Supported chain with no live orderbook yet (bootstrapping, or RPC is down)`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`understanding-the-orderbook`,children:`Understanding the Orderbook`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`bids`}),` — prices at which PropAMM will `,_jsx(_components.strong,{children:`buy`}),` the base token (you sell base, receive the quote token). Sorted `,_jsx(_components.strong,{children:`descending`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`asks`}),` — prices at which PropAMM will `,_jsx(_components.strong,{children:`sell`}),` the base token (you buy base, pay the quote token). Sorted `,_jsx(_components.strong,{children:`ascending`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`price`}),` is always `,_jsx(_components.strong,{children:`quote token per base token`}),` — USDC on Base, USDT on BNB Chain, USDG on Robinhood Chain.`]}),`\n`,_jsxs(_components.li,{children:[`Each level is `,_jsx(_components.strong,{children:`marginal`}),` — independent price points, not cumulative depth.`]}),`\n`,_jsxs(_components.li,{children:[`Prices and amounts are `,_jsx(_components.strong,{children:`decimal strings`}),` to preserve EVM-scale precision.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Quote-token decimals differ per chain — USDC and USDG use `,_jsx(_components.strong,{children:`6`}),`, BNB Chain’s USDT uses `,_jsx(_components.strong,{children:`18`}),`. `,_jsx(_components.code,{children:`price`}),` and `,_jsx(_components.code,{children:`amount`}),` are human-readable decimal strings and unaffected, but any wei-denominated value you compute from them (e.g. `,_jsx(_components.code,{children:`minAmountOut`}),` in `,_jsx(_components.a,{href:`/api-reference/sign-quote`,children:`Request Swap Verification`}),`) must be scaled with the right decimals for that chain.`]})}),`\n`,_jsxs(_components.p,{children:[`A chain whose orderbook has not bootstrapped yet does not return an empty book — it returns `,_jsx(_components.code,{children:`503 SERVICE_UNAVAILABLE`}),`. A `,_jsx(_components.code,{children:`200`}),` with an empty `,_jsx(_components.code,{children:`pairs`}),` array means the chain is live but currently tracks no pairs.`]}),`\n`,_jsx(Heading,{level:`2`,id:`alternative-on-chain-quote`,children:`Alternative: On-chain Quote`}),`\n`,_jsxs(_components.p,{children:[`For a precise quote for a specific input amount, use the on-chain `,_jsx(_components.code,{children:`quote()`}),` function with an EIP-712 signature. See the `,_jsx(_components.a,{href:`/index#getting-a-quote`,children:`Integration Guide`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`query-parameters`,children:`Query Parameters`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Parameter`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Description`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`chainId`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`No`}),_jsxs(_components.td,{children:[`Chain to return the orderbook for. Omitted or `,_jsx(_components.code,{children:`0`}),` targets `,_jsx(_components.code,{children:`8453`}),` (Base).`]})]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`response-fields`,children:`Response Fields`}),`\n`,_jsx(Heading,{level:`3`,id:`top-level`,children:`Top-level`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`chainId`})}),_jsx(_components.td,{children:`integer`}),_jsxs(_components.td,{children:[`Chain this orderbook belongs to (the resolved `,_jsx(_components.code,{children:`chainId`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`blockNumber`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`Block at which the orderbook was last refreshed`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`blockTime`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`Unix timestamp (seconds) of that block`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`pairs`})}),_jsx(_components.td,{children:`array`}),_jsx(_components.td,{children:`One entry per pair configured on that chain`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`pairs-pairorderbook`,children:_jsx(_components.code,{children:`pairs[].PairOrderbook`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`baseToken`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`EVM address of the traded token (e.g. WETH)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`quoteToken`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`EVM address of the chain’s quote token (USDC / USDT / USDG)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bids`})}),_jsx(_components.td,{children:`array`}),_jsx(_components.td,{children:`Buy-side levels, sorted by descending price`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`asks`})}),_jsx(_components.td,{children:`array`}),_jsx(_components.td,{children:`Sell-side levels, sorted by ascending price`})]})]})]}),`\n`,_jsxs(Heading,{level:`3`,id:`bids-orderbooklevel-/-asks-orderbooklevel`,children:[_jsx(_components.code,{children:`bids[].OrderbookLevel`}),` / `,_jsx(_components.code,{children:`asks[].OrderbookLevel`})]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`price`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`Quote token per base token, decimal string (e.g. `,_jsx(_components.code,{children:`\"3200.50\"`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`amount`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`Base token quantity, decimal string (e.g. `,_jsx(_components.code,{children:`\"1.5\"`}),`)`]})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get Orderbook","openapi":"get /v2/price","description":"Returns the latest cached on-chain orderbook for all configured token pairs.\nThe cache refreshes on every new block via `eth_subscribe`, so the data always\nreflects the most recent chain state.\n\nEach pair has a `baseToken` (the traded token, e.g. WETH) and a `quoteToken` — the\nchain's quote stablecoin: USDC on Base (`8453`), USDT on BNB Chain (`56`), USDG on\nRobinhood Chain (`4663`).\nPrices are expressed as **quote token per base token** (decimal strings).\nAmounts are **human-readable base token quantities** (decimal strings).\n\nLevels are **marginal** — each level is an independent price point, not cumulative depth.\n`bids` are sorted descending (best bid first); `asks` are sorted ascending (best ask first).\n\nUse the `chainId` query parameter to select the chain. Omitting it (or passing `0`)\ntargets the default chain, Base (`8453`). `chainId`, `blockNumber`, and `blockTime`\nin the response all belong to the selected chain.\n","href":"/api-reference/get-price"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Selecting a Chain","slug":"selecting-a-chain","depth":2,"children":[]},{"title":"Understanding the Orderbook","slug":"understanding-the-orderbook","depth":2,"children":[]},{"title":"Alternative: On-chain Quote","slug":"alternative-on-chain-quote","depth":2,"children":[]},{"title":"Query Parameters","slug":"query-parameters","depth":2,"children":[]},{"title":"Response Fields","slug":"response-fields","depth":2,"children":[{"title":"Top-level","slug":"top-level","depth":3,"children":[]},{"title":"pairs[].PairOrderbook","slug":"pairs-pairorderbook","depth":3,"children":[]},{"title":"bids[].OrderbookLevel / asks[].OrderbookLevel","slug":"bids-orderbooklevel-/-asks-orderbooklevel","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getPrice","summary":"Get live orderbook","description":"Returns the latest cached on-chain orderbook for all configured token pairs.\nThe cache refreshes on every new block via `eth_subscribe`, so the data always\nreflects the most recent chain state.\n\nEach pair has a `baseToken` (the traded token, e.g. WETH) and a `quoteToken` — the\nchain's quote stablecoin: USDC on Base (`8453`), USDT on BNB Chain (`56`), USDG on\nRobinhood Chain (`4663`).\nPrices are expressed as **quote token per base token** (decimal strings).\nAmounts are **human-readable base token quantities** (decimal strings).\n\nLevels are **marginal** — each level is an independent price point, not cumulative depth.\n`bids` are sorted descending (best bid first); `asks` are sorted ascending (best ask first).\n\nUse the `chainId` query parameter to select the chain. Omitting it (or passing `0`)\ntargets the default chain, Base (`8453`). `chainId`, `blockNumber`, and `blockTime`\nin the response all belong to the selected chain.\n","parameters":["df1ae4bd-986e-41e4-a3ba-4c4fe7a7ee29"],"responses":{"200":"e7a3e4a5-6873-4961-8bca-12bc8756127b","400":"cefd4183-ba81-46e2-a09e-78abbfc6b96f","401":"74bbb9a6-aedb-4d88-9983-2689349ff381","422":"84e814ff-5633-4f77-aee0-e33e8fc343ba","500":"82241716-4a9a-4979-aacd-0eb1f85ca920","503":"83cf5a9f-a6b6-4377-ae77-0c640d7fd6f6"},"method":"get","type":"path","servers":["71822b41-558c-4788-a1f2-a5c0c410a0f0"],"security":["a1989ef3-3e5b-4176-8580-85d0be027a1a"],"path":"/v2/price","baseUrlOptions":["https://propamm.kipseli.win"],"title":"Get live orderbook","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"df1ae4bd-986e-41e4-a3ba-4c4fe7a7ee29":{"name":"chainId","in":"query","required":false,"description":"Chain to return the orderbook for, as a base-10 unsigned integer.\nSupported values: `56` (BNB Chain), `8453` (Base), `4663` (Robinhood Chain).\nOmit it (or pass `0`) for the default chain, Base (`8453`).\n\nA chain the service does not serve returns `400 UNSUPPORTED_CHAIN`; a malformed\nvalue returns `422 VALIDATION_ERROR`; a supported chain whose orderbook is not\nlive yet returns `503 SERVICE_UNAVAILABLE`.\n","schema":{"type":"integer","format":"int64","minimum":0,"default":8453,"example":8453,"isRequired":false,"description":"Chain to return the orderbook for, as a base-10 unsigned integer.\nSupported values: `56` (BNB Chain), `8453` (Base), `4663` (Robinhood Chain).\nOmit it (or pass `0`) for the default chain, Base (`8453`).\n\nA chain the service does not serve returns `400 UNSUPPORTED_CHAIN`; a malformed\nvalue returns `422 VALIDATION_ERROR`; a supported chain whose orderbook is not\nlive yet returns `503 SERVICE_UNAVAILABLE`.\n","uniqueKey":"","typeLabel":"integer\u003cint64>"}}},"responses":{"e7a3e4a5-6873-4961-8bca-12bc8756127b":{"description":"Current orderbook snapshot for the selected chain","content":{"application/json":{"schema":{"type":"object","properties":{"chainId":{"type":"integer","format":"int64","description":"The chain this orderbook belongs to — the requested `chainId`, or the default\nchain when the request omitted it. `blockNumber`, `blockTime`, and every token\naddress below are scoped to it.\n","example":8453,"uniqueKey":"chainId","typeLabel":"integer\u003cint64>"},"blockNumber":{"type":"integer","format":"int64","description":"The on-chain block number at which the orderbook was last refreshed.\nUpdates on every new block. Zero if the cache has not been populated yet.\n","example":29500000,"uniqueKey":"blockNumber","typeLabel":"integer\u003cint64>"},"blockTime":{"type":"integer","format":"int64","description":"Unix timestamp (seconds) of the block identified by `blockNumber`.\nZero if the cache has not been populated yet.\n","example":1741737600,"uniqueKey":"blockTime","typeLabel":"integer\u003cint64>"},"pairs":{"type":"array","description":"Orderbook for each pair configured on this chain, each quoted in the chain's\nquote token. Empty when the chain is live but currently tracks no pairs — a\nchain whose orderbook has not bootstrapped returns `503` instead.\n","items":{"type":"object","description":"Full bid/ask orderbook for one base token / quote token pair","properties":{"baseToken":{"type":"string","description":"EVM hex address of the traded token (e.g. WETH, cbBTC).\nThis is the token whose price is quoted in the pair's `quoteToken`.\n","example":"0x4200000000000000000000000000000000000006","uniqueKey":"pairs.items.[INDEX].baseToken","typeLabel":"string"},"quoteToken":{"type":"string","description":"EVM hex address of the chain's quote token, used as the price denomination:\nUSDC on Base (`8453`), USDT on BNB Chain (`56`), USDG on Robinhood Chain (`4663`).\nNote the differing decimals — USDC and USDG are 6, BNB Chain's USDT is 18.\n","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","uniqueKey":"pairs.items.[INDEX].quoteToken","typeLabel":"string"},"bids":{"type":"array","description":"Buy-side levels — prices at which the AMM will buy the base token (you sell base,\nreceive the quote token). Sorted by **descending** price (best bid first).\n","items":{"type":"object","description":"A single marginal price/amount level in the orderbook","properties":{"price":{"type":"string","description":"The pair's `quoteToken` per base token as a decimal string. Returned as a string\n(not a float) to preserve precision for EVM-scale values.\n","example":"3200.50","uniqueKey":"pairs.items.[INDEX].bids.items.[INDEX].price","typeLabel":"string"},"amount":{"type":"string","description":"Human-readable base token quantity available at this price level, as a decimal string.\nThis is the marginal amount at this specific price point, not cumulative depth.\n","example":"1.0","uniqueKey":"pairs.items.[INDEX].bids.items.[INDEX].amount","typeLabel":"string"}},"uniqueKey":"pairs.items.[INDEX].bids.items.[INDEX]","typeLabel":"object"},"uniqueKey":"pairs.items.[INDEX].bids","typeLabel":"object[]"},"asks":{"type":"array","description":"Sell-side levels — prices at which the AMM will sell the base token (you buy base,\npay the quote token). Sorted by **ascending** price (best ask first).\n","items":{"type":"object","description":"A single marginal price/amount level in the orderbook","properties":{"price":{"type":"string","description":"The pair's `quoteToken` per base token as a decimal string. Returned as a string\n(not a float) to preserve precision for EVM-scale values.\n","example":"3200.50","uniqueKey":"pairs.items.[INDEX].asks.items.[INDEX].price","typeLabel":"string"},"amount":{"type":"string","description":"Human-readable base token quantity available at this price level, as a decimal string.\nThis is the marginal amount at this specific price point, not cumulative depth.\n","example":"1.0","uniqueKey":"pairs.items.[INDEX].asks.items.[INDEX].amount","typeLabel":"string"}},"uniqueKey":"pairs.items.[INDEX].asks.items.[INDEX]","typeLabel":"object"},"uniqueKey":"pairs.items.[INDEX].asks","typeLabel":"object[]"}},"uniqueKey":"pairs.items.[INDEX]","typeLabel":"object"},"uniqueKey":"pairs","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"weth_cbbtc":{"title":"weth_cbbtc","value":{"chainId":8453,"blockNumber":29500000,"blockTime":1741737600,"pairs":[{"baseToken":"0x4200000000000000000000000000000000000006","quoteToken":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","bids":[{"price":"3200.50","amount":"1.0"},{"price":"3198.00","amount":"5.0"},{"price":"3190.25","amount":"10.0"}],"asks":[{"price":"3201.75","amount":"1.0"},{"price":"3204.00","amount":"5.0"},{"price":"3210.50","amount":"10.0"}]},{"baseToken":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","quoteToken":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","bids":[{"price":"97500.00","amount":"0.01"},{"price":"97200.00","amount":"0.05"}],"asks":[{"price":"97600.00","amount":"0.01"},{"price":"97900.00","amount":"0.05"}]}]}},"bnb_usdt":{"title":"bnb_usdt","value":{"chainId":56,"blockNumber":45000000,"blockTime":1741737600,"pairs":[{"baseToken":"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c","quoteToken":"0x55d398326f99059fF775485246999027B3197955","bids":[{"price":"610.20","amount":"5.0"},{"price":"609.80","amount":"25.0"}],"asks":[{"price":"610.90","amount":"5.0"},{"price":"611.40","amount":"25.0"}]}]}},"no_pairs":{"title":"no_pairs","value":{"chainId":8453,"blockNumber":29500000,"blockTime":1741737600,"pairs":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"cefd4183-ba81-46e2-a09e-78abbfc6b96f":{"description":"Unsupported `chainId` — the service does not serve that chain","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","enum":["INVALID_JSON","VALIDATION_ERROR","UNSUPPORTED_FIELD","UNSUPPORTED_CHAIN","PAIR_NOT_FOUND","UNAUTHORIZED","SIGNING_FAILED","ENCODING_FAILED","INTERNAL_ERROR","SERVICE_UNAVAILABLE"],"example":"VALIDATION_ERROR","uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message","example":"tokenIn: invalid EVM address","uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"Request ID for correlation with server logs","example":"abc-123","uniqueKey":"error.requestId","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UNSUPPORTED_CHAIN","message":"chain 1 is not supported","requestId":"abc-123"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UNSUPPORTED_CHAIN","message":"chain 1 is not supported","requestId":"abc-123"}}}},"exampleType":"examples"}},"exampleType":"examples"},"74bbb9a6-aedb-4d88-9983-2689349ff381":{"description":"Unauthorized — missing or invalid `X-API-KEY` header","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","enum":["INVALID_JSON","VALIDATION_ERROR","UNSUPPORTED_FIELD","UNSUPPORTED_CHAIN","PAIR_NOT_FOUND","UNAUTHORIZED","SIGNING_FAILED","ENCODING_FAILED","INTERNAL_ERROR","SERVICE_UNAVAILABLE"],"example":"VALIDATION_ERROR","uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message","example":"tokenIn: invalid EVM address","uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"Request ID for correlation with server logs","example":"abc-123","uniqueKey":"error.requestId","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UNAUTHORIZED","message":"missing or invalid API key","requestId":"abc-123"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UNAUTHORIZED","message":"missing or invalid API key","requestId":"abc-123"}}}},"exampleType":"examples"}},"exampleType":"examples"},"84e814ff-5633-4f77-aee0-e33e8fc343ba":{"description":"Malformed `chainId` — not a base-10 unsigned integer","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","enum":["INVALID_JSON","VALIDATION_ERROR","UNSUPPORTED_FIELD","UNSUPPORTED_CHAIN","PAIR_NOT_FOUND","UNAUTHORIZED","SIGNING_FAILED","ENCODING_FAILED","INTERNAL_ERROR","SERVICE_UNAVAILABLE"],"example":"VALIDATION_ERROR","uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message","example":"tokenIn: invalid EVM address","uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"Request ID for correlation with server logs","example":"abc-123","uniqueKey":"error.requestId","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"VALIDATION_ERROR","message":"chainId must be a base-10 unsigned integer","requestId":"abc-123"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"VALIDATION_ERROR","message":"chainId must be a base-10 unsigned integer","requestId":"abc-123"}}}},"exampleType":"examples"}},"exampleType":"examples"},"82241716-4a9a-4979-aacd-0eb1f85ca920":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","enum":["INVALID_JSON","VALIDATION_ERROR","UNSUPPORTED_FIELD","UNSUPPORTED_CHAIN","PAIR_NOT_FOUND","UNAUTHORIZED","SIGNING_FAILED","ENCODING_FAILED","INTERNAL_ERROR","SERVICE_UNAVAILABLE"],"example":"VALIDATION_ERROR","uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message","example":"tokenIn: invalid EVM address","uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"Request ID for correlation with server logs","example":"abc-123","uniqueKey":"error.requestId","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"INTERNAL_ERROR","message":"internal server error","requestId":"abc-123"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INTERNAL_ERROR","message":"internal server error","requestId":"abc-123"}}}},"exampleType":"examples"}},"exampleType":"examples"},"83cf5a9f-a6b6-4377-ae77-0c640d7fd6f6":{"description":"The chain is supported but has no live orderbook — still bootstrapping, or its\nRPC endpoint is unreachable. Other chains keep serving normally.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","enum":["INVALID_JSON","VALIDATION_ERROR","UNSUPPORTED_FIELD","UNSUPPORTED_CHAIN","PAIR_NOT_FOUND","UNAUTHORIZED","SIGNING_FAILED","ENCODING_FAILED","INTERNAL_ERROR","SERVICE_UNAVAILABLE"],"example":"VALIDATION_ERROR","uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message","example":"tokenIn: invalid EVM address","uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"Request ID for correlation with server logs","example":"abc-123","uniqueKey":"error.requestId","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"SERVICE_UNAVAILABLE","message":"chain 56 is not available","requestId":"abc-123"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"SERVICE_UNAVAILABLE","message":"chain 56 is not available","requestId":"abc-123"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"a1989ef3-3e5b-4176-8580-85d0be027a1a":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key issued by the Kipseli team. Required on every request.\n`Authorization: Bearer \u003ckey>` is accepted as an alternative.\n","scopes":[]}}},"servers":{"71822b41-558c-4788-a1f2-a5c0c410a0f0":{"url":"https://propamm.kipseli.win","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key issued by the Kipseli team. Required on every request.\n`Authorization: Bearer \u003ckey>` is accepted as an alternative.\n","scopes":[]},"schema":{"title":"X-API-KEY","type":"string","description":"API key issued by the Kipseli team. Required on every request.\n`Authorization: Bearer \u003ckey>` is accepted as an alternative.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-KEY"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"kipselicapital","siteName":"Kipseli PropAMM","title":"Get Orderbook - Kipseli PropAMM","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-31T18:15:12.250Z","originalFileLocation":"api-reference/get-price.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;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=\"dark\"}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=\"Returns the latest cached on-chain orderbook for all configured token pairs. The cache refreshes on every new block via eth_subscribe, so the data always reflects the most recent chain state. Each pair has a baseToken (the traded token, e.g. WETH) and a quoteToken — the chain\u0026#x27;s quote stablecoin: USDC on Base (8453), USDT on BNB Chain (56), USDG on Robinhood Chain (4663). Prices are expressed as quote token per base token (decimal strings). Amounts are human-readable base token quantities (decimal strings). Levels are marginal — each level is an independent price point, not cumulative depth. bids are sorted descending (best bid first); asks are sorted ascending (best ask first). Use the chainId query parameter to select the chain. Omitting it (or passing 0) targets the default chain, Base (8453). chainId, blockNumber, and blockTime in the response all belong to the selected chain.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kipseli PropAMM\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get Orderbook - Kipseli PropAMM\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the latest cached on-chain orderbook for all configured token pairs. The cache refreshes on every new block via eth_subscribe, so the data always reflects the most recent chain state. Each pair has a baseToken (the traded token, e.g. WETH) and a quoteToken — the chain\u0026#x27;s quote stablecoin: USDC on Base (8453), USDT on BNB Chain (56), USDG on Robinhood Chain (4663). Prices are expressed as quote token per base token (decimal strings). Amounts are human-readable base token quantities (decimal strings). Levels are marginal — each level is an independent price point, not cumulative depth. bids are sorted descending (best bid first); asks are sorted ascending (best ask first). Use the chainId query parameter to select the chain. Omitting it (or passing 0) targets the default chain, Base (8453). chainId, blockNumber, and blockTime in the response all belong to the selected chain.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kipseli PropAMM\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.kipseli.capital/api-reference/get-price\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kipselicapital.mintlify.site/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Get+Orderbook\u0026amp;description=Returns+the+latest+cached+on-chain+orderbook+for+all+configured+token+pairs.%0AThe+cache+refreshes+on+every+new+block+via+%60eth_subscribe%60%2C+so+the+data+always%0Arefl\u0026amp;theme=629a6a783561dc5edd6e1d62\u0026amp;signature=e3ae7ce154c169e037253980b533cd55e4f4edd1339560cdf2405ce98476ce34\">\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 Orderbook - Kipseli PropAMM\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the latest cached on-chain orderbook for all configured token pairs. The cache refreshes on every new block via eth_subscribe, so the data always reflects the most recent chain state. Each pair has a baseToken (the traded token, e.g. WETH) and a quoteToken — the chain\u0026#x27;s quote stablecoin: USDC on Base (8453), USDT on BNB Chain (56), USDG on Robinhood Chain (4663). Prices are expressed as quote token per base token (decimal strings). Amounts are human-readable base token quantities (decimal strings). Levels are marginal — each level is an independent price point, not cumulative depth. bids are sorted descending (best bid first); asks are sorted ascending (best ask first). Use the chainId query parameter to select the chain. Omitting it (or passing 0) targets the default chain, Base (8453). chainId, blockNumber, and blockTime in the response all belong to the selected chain.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kipselicapital.mintlify.site/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Get+Orderbook\u0026amp;description=Returns+the+latest+cached+on-chain+orderbook+for+all+configured+token+pairs.%0AThe+cache+refreshes+on+every+new+block+via+%60eth_subscribe%60%2C+so+the+data+always%0Arefl\u0026amp;theme=629a6a783561dc5edd6e1d62\u0026amp;signature=e3ae7ce154c169e037253980b533cd55e4f4edd1339560cdf2405ce98476ce34\">\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=\"/mintlify-assets/_mintlify/favicons/kipselicapital/j0uHdTbKxAG1Y8pc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kipseli PropAMM\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8B7FFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.kipseli.capital/api-reference/get-price\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/get-price.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.kipseli.capital/#organization\",\"name\":\"Kipseli PropAMM\",\"url\":\"https://docs.kipseli.capital\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kipselicapital/S_BrK6HxH8j_QkUk/logos/black.svg?fit=max\u0026auto=format\u0026n=S_BrK6HxH8j_QkUk\u0026q=85\u0026s=83d1c0798d57ccfb0877a89f177cf740\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.kipseli.capital#website\",\"name\":\"Kipseli PropAMM\",\"url\":\"https://docs.kipseli.capital\",\"publisher\":{\"@id\":\"https://docs.kipseli.capital/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.kipseli.capital/api-reference/get-price#webpage\",\"url\":\"https://docs.kipseli.capital/api-reference/get-price\",\"name\":\"Get Orderbook\",\"description\":\"Returns the latest cached on-chain orderbook for all configured token pairs. The cache refreshes on every new block via eth_subscribe, so the data always reflects the most recent chain state. Each pair has a baseToken (the traded token, e.g. WETH) and a quoteToken — the chain's quote stablecoin: USDC on Base (8453), USDT on BNB Chain (56), USDG on Robinhood Chain (4663). Prices are expressed as quote token per base token (decimal strings). Amounts are human-readable base token quantities (decimal strings). Levels are marginal — each level is an independent price point, not cumulative depth. bids are sorted descending (best bid first); asks are sorted ascending (best ask first). Use the chainId query parameter to select the chain. Omitting it (or passing 0) targets the default chain, Base (8453). chainId, blockNumber, and blockTime in the response all belong to the selected chain.\",\"dateModified\":\"2026-07-31T18:15:12.250Z\",\"isPartOf\":{\"@id\":\"https://docs.kipseli.capital#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kipseli.capital/api-reference/get-price#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kipseli.capital/api-reference/get-price#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.kipseli.capital/api-reference/sign-quote\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get Orderbook\",\"item\":\"https://docs.kipseli.capital/api-reference/get-price\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.kipseli.capital/api-reference/get-price#apireference\",\"headline\":\"Get Orderbook\",\"name\":\"Get Orderbook\",\"description\":\"Returns the latest cached on-chain orderbook for all configured token pairs. The cache refreshes on every new block via eth_subscribe, so the data always reflects the most recent chain state. Each pair has a baseToken (the traded token, e.g. WETH) and a quoteToken — the chain's quote stablecoin: USDC on Base (8453), USDT on BNB Chain (56), USDG on Robinhood Chain (4663). Prices are expressed as quote token per base token (decimal strings). Amounts are human-readable base token quantities (decimal strings). Levels are marginal — each level is an independent price point, not cumulative depth. bids are sorted descending (best bid first); asks are sorted ascending (best ask first). Use the chainId query parameter to select the chain. Omitting it (or passing 0) targets the default chain, Base (8453). chainId, blockNumber, and blockTime in the response all belong to the selected chain.\",\"url\":\"https://docs.kipseli.capital/api-reference/get-price\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kipseli.capital/api-reference/get-price#webpage\"},\"dateModified\":\"2026-07-31T18:15:12.250Z\",\"publisher\":{\"@id\":\"https://docs.kipseli.capital/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.kipseli.capital#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kipseli PropAMM\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Kipseli PropAMM","nav":{"global":null,"groups":[{"group":"Integration Guide","pages":[{"title":"Kipseli PropAMM","href":"/index"}]},{"group":"API Reference","pages":[{"title":"Request Swap Verification","openapi":"post /v2/swap/sign","description":"ABI-encodes `(tokenIn, tokenOut, timestamp, fee, originRate, userAddress)`,\nKeccak256-hashes the payload, and signs it with secp256k1.\nThe recovery ID is adjusted from `[0,1]` to `[27,28]` per the Ethereum Yellow Paper.\n\nThe response contains ABI-encoded verification data `(fee, originRate, userAddress, signature)`\nready for on-chain submission.\n\nUse the `chainId` body field to select the chain the swap will be executed on;\nthe token pair must be supported there. Omitting it (or passing `0`) targets the\ndefault chain, Base (`8453`).\n\nNote that the signed payload itself does **not** include the chain id — `chainId`\nselects which chain's pair list and signing key are used.\n","href":"/api-reference/sign-quote"},{"title":"Get Orderbook","openapi":"get /v2/price","href":"/api-reference/get-price"}]}]},"basePath":"","title":"Get Orderbook - Kipseli PropAMM","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}