Retrieve historical OHLCV candles for a pool. Interval and history depth depend on your plan, from 24 hours of 1h candles without a key to unlimited on Pro.
GET
/
networks
/
{network}
/
pools
/
{pool_address}
/
ohlcv
Get OHLCV data for a pool pair.
curl --request GET \ --url https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/ohlcv
Retrieve historical OHLCV for a pool at granular intervals.On Dev or Pro you can also chart a token without choosing a pool: token OHLCV returns USD candles aggregated across every pool the token trades in.
How far back you can query and how fine the candles can be depends on your plan. A request outside the limits returns 403 with a message naming the plan that lifts it.
Plan
Candle intervals
History depth
Free (no key)
1h, 6h, 12h, 24h
last 24 hours
Free (registered key)
10m and longer
last 7 days
Dev
all
last 30 days
Pro / Enterprise
all
unlimited
start, end and count_back are all checked against the window. A range that starts inside the window but reaches before it is trimmed to the window instead of rejected. Details on the rate limits page.
1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, 24h with a max of 1000 points per request. Without a key only 1h and up are available; a free key adds 10m, 15m and 30m; 1m and 5m need Dev or Pro.
How to request a specific time range?
Provide start: a relative offset from now (-24h for the last 24 hours, -7d, -90m), an ISO timestamp, a date or Unix seconds. end is optional and takes the same formats. The range must fit your plan’s history window: 24 hours without a key, 7 days on a free key, 30 days on Dev, unlimited on Pro.
Why do I get 403?
The request asked for more history or finer candles than your plan allows. The message in the body says which plan lifts the limit. Fix start, end, count_back or interval, or upgrade.
What does inversed change?
It flips the price ratio so the series reflects token1/token0 instead of token0/token1.
Tutorial: Get pool price history and OHLCV data
Pool candles with a working curl and Python script.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"DexPaprika API","description":"Real-time DEX and on-chain cryptocurrency data: liquidity pools, swaps, token prices, transactions, and live SSE streams (token prices, pool reserves, transactions and candles) across 36 blockchain networks. REST API + streaming, no API key needed to start.","colors":{"primary":"#00A84E","light":"#00FF75","dark":"#00753A"},"logo":{"light":"https://mintcdn.com/coinpaprikaspzoo/qdXqFGfH5cg6MFHp/logo/light.svg?fit=max\u0026auto=format\u0026n=qdXqFGfH5cg6MFHp\u0026q=85\u0026s=3815800db38511a4187280846c0bcbff","dark":"https://mintcdn.com/coinpaprikaspzoo/qdXqFGfH5cg6MFHp/logo/dark.svg?fit=max\u0026auto=format\u0026n=qdXqFGfH5cg6MFHp\u0026q=85\u0026s=de1dd2ed4d6187b51748f69c65a6f0e0","href":"https://dexpaprika.com"},"favicon":"https://mintcdn.com/coinpaprikaspzoo/qdXqFGfH5cg6MFHp/favicon.svg?fit=max\u0026auto=format\u0026n=qdXqFGfH5cg6MFHp\u0026q=85\u0026s=b4cfdda7745f0c5839ff66a82ef89709","api":{"playground":{}},"appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://console.dexpaprika.com","label":"Console"},{"href":"https://dexpaprika.com/api/pricing","label":"Pricing"},{"href":"mailto:support@coinpaprika.com","label":"Support"},{"href":"https://status.dexpaprika.com/","label":"Status"},{"href":"https://dexpaprika.com/terms","label":"Terms of Use"}],"primary":{"type":"button","label":"Get an API key","href":"https://console.dexpaprika.com"}},"footer":{"socials":{"x":"https://x.com/coinpaprika","github":"https://github.com/coinpaprika"}},"seo":{"metatags":{"description":"Official DexPaprika API docs. Query on-chain DEX liquidity pools, swaps, tokens, prices, and transactions across multiple networks.","keywords":"dex api, on-chain crypto api, liquidity pool api, swap data api, defi data api, crypto api, crypto price api, cryptocurrency data api","robots":"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1","og:type":"website","og:site_name":"DexPaprika","og:description":"Developer documentation for the DexPaprika API: liquidity pools, swap activity, token metrics, and on-chain analytics.","og:url":"https://docs.dexpaprika.com","twitter:card":"summary_large_image","twitter:description":"Explore DexPaprika's API for real-time DEX and on-chain data. No API key needed to start."},"indexing":"all"},"integrations":{"ga4":{"measurementId":"G-1WLLWHVKMG"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity",{"title":"Cursor Integration","description":"Install DexPaprika MCP server in Cursor IDE","icon":"laptop-code","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=DexPaprika\u0026config=eyJuYW1lIjoiRGV4UGFwcmlrYSIsInVybCI6Imh0dHBzOi8vbWNwLmRleHBhcHJpa2EuY29tL3NzZSJ9Cg=="},{"title":"VS Code Integration","description":"Install DexPaprika MCP server in VS Code","icon":"code","href":"vscode:mcp/install?%7B%22name%22%3A%22DexPaprika%20API%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.dexpaprika.com%2Fsse%22%7D"}],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"REST API Reference","icon":"code","href":"https://docs.dexpaprika.com/api-reference/introduction"},{"anchor":"Discord Community","icon":"discord","href":"https://discord.gg/DhJge5TUGM"},{"anchor":"DexPaprika","icon":"browser","href":"https://dexpaprika.com"},{"anchor":"CoinPaprika","icon":"pepper-hot","href":"https://coinpaprika.com"},{"anchor":"CoinPaprika on X","icon":"x-twitter","href":"https://x.com/coinpaprika"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"coinpaprikaspzoo","hasAudioNarration":false,"actualSubdomain":"coinpaprikaspzoo","customDomains":["docs.dexpaprika.com"],"gitSource":{"type":"github","owner":"coinpaprika","repo":"dexpaprika-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec5102754501e0c6b5746c","collectionId":"ad3ab19d-2e95-46af-990c-ae32398e670b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec5102754501e0c6b5746c"},"feedback":{"issues":true,"thumbs":true},"entitlements":{},"buildId":"6aedcab114aa97ea22438a56","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Overview","count":42},{"language":"default","tag":"Tutorials","count":23},{"language":"default","tag":"DEX REST API Reference","count":18},{"language":"default","tag":"AI Integration","count":16},{"language":"default","tag":"Streaming","count":16},{"language":"default","tag":"Knowledge Base","count":9},{"language":"default","tag":"Editors \u0026 AI assistants","count":7},{"language":"default","tag":"Streaming Reference","count":7},{"language":"default","tag":"API Reference","count":7},{"language":"default","tag":"Streaming Endpoints","count":7}]},"assistantConfig":{},"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":[{"filePath":"style.css","content":"a div:has(>div>.nav-tag-pill){flex-wrap:nowrap;align-items:flex-start}a div:has(>.nav-tag-pill){order:-1}a div:has(>div>.nav-tag-pill)>span{hyphens:manual}"}],"page":{"pagePath":"api-reference/pools/get-ohlcv-data-for-a-pool-pair","slug":"/api-reference/pools/get-ohlcv-data-for-a-pool-pair","pageMetadata":{"openapi":"api-reference/openapi.yml GET /networks/{network}/pools/{pool_address}/ohlcv","description":"Retrieve historical OHLCV candles for a pool. Interval and history depth depend on your plan, from 24 hours of 1h candles without a key to unlimited on Pro.","tag":"PAID","title":"Get OHLCV data for a pool pair.","href":"/api-reference/pools/get-ohlcv-data-for-a-pool-pair"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Retrieve historical OHLCV candles for a pool. Interval and history depth depend on your plan, from 24 hours of 1h candles without a key to unlimited on Pro.\"\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`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,Heading,Table,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`endpoint-overview`,children:`Endpoint overview`}),`\n`,_jsx(_components.p,{children:`Retrieve historical OHLCV for a pool at granular intervals.`}),`\n`,_jsxs(_components.p,{children:[`On Dev or Pro you can also chart a token without choosing a pool: `,_jsx(_components.a,{href:`/api-reference/tokens/get-ohlcv-data-for-a-token`,children:`token OHLCV`}),` returns USD candles aggregated across every pool the token trades in.`]}),`\n`,_jsx(Heading,{level:`2`,id:`plan-limits`,children:`Plan limits`}),`\n`,_jsxs(_components.p,{children:[`How far back you can query and how fine the candles can be depends on your plan. A request outside the limits returns `,_jsx(_components.code,{children:`403`}),` with a message naming the plan that lifts it.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Plan`}),_jsx(_components.th,{children:`Candle intervals`}),_jsx(_components.th,{children:`History depth`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Free (no key)`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`1h`}),`, `,_jsx(_components.code,{children:`6h`}),`, `,_jsx(_components.code,{children:`12h`}),`, `,_jsx(_components.code,{children:`24h`})]}),_jsx(_components.td,{children:`last 24 hours`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Free (registered key)`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`10m`}),` and longer`]}),_jsx(_components.td,{children:`last 7 days`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Dev`})}),_jsx(_components.td,{children:`all`}),_jsx(_components.td,{children:`last 30 days`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Pro / Enterprise`})}),_jsx(_components.td,{children:`all`}),_jsx(_components.td,{children:`unlimited`})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`start`}),`, `,_jsx(_components.code,{children:`end`}),` and `,_jsx(_components.code,{children:`count_back`}),` are all checked against the window. A range that starts inside the window but reaches before it is trimmed to the window instead of rejected. Details on the `,_jsx(_components.a,{href:`/knowledge-base/rate-limits#ohlcv-limits-by-plan`,children:`rate limits page`}),`.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`See also: `,_jsx(_components.a,{href:`/api-reference/pools/get-a-pool-on-a-network`,children:`Pool details`}),`,\n`,_jsx(_components.a,{href:`/api-reference/pools/get-transactions-of-a-pool-on-a-network-paging-can-be-used-up-to-100-pages`,children:`Pool transactions`})]})}),`\n`,_jsx(Heading,{level:`3`,id:`faqs`,children:`FAQs`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Which intervals are supported?`,id:`which-intervals-are-supported`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`1m`}),`, `,_jsx(_components.code,{children:`5m`}),`, `,_jsx(_components.code,{children:`10m`}),`, `,_jsx(_components.code,{children:`15m`}),`, `,_jsx(_components.code,{children:`30m`}),`, `,_jsx(_components.code,{children:`1h`}),`, `,_jsx(_components.code,{children:`6h`}),`, `,_jsx(_components.code,{children:`12h`}),`, `,_jsx(_components.code,{children:`24h`}),` with a max of 1000 points per request. Without a key only `,_jsx(_components.code,{children:`1h`}),` and up are available; a free key adds `,_jsx(_components.code,{children:`10m`}),`, `,_jsx(_components.code,{children:`15m`}),` and `,_jsx(_components.code,{children:`30m`}),`; `,_jsx(_components.code,{children:`1m`}),` and `,_jsx(_components.code,{children:`5m`}),` need Dev or Pro.`]})}),_jsx(Accordion,{title:`How to request a specific time range?`,id:`how-to-request-a-specific-time-range`,children:_jsxs(_components.p,{children:[`Provide `,_jsx(_components.code,{children:`start`}),`: a relative offset from now (`,_jsx(_components.code,{children:`-24h`}),` for the last 24 hours, `,_jsx(_components.code,{children:`-7d`}),`, `,_jsx(_components.code,{children:`-90m`}),`), an ISO timestamp, a date or Unix seconds. `,_jsx(_components.code,{children:`end`}),` is optional and takes the same formats. The range must fit your plan’s history window: 24 hours without a key, 7 days on a free key, 30 days on Dev, unlimited on Pro.`]})}),_jsx(Accordion,{title:`Why do I get 403?`,id:`why-do-i-get-403`,children:_jsxs(_components.p,{children:[`The request asked for more history or finer candles than your plan allows. The `,_jsx(_components.code,{children:`message`}),` in the body says which plan lifts the limit. Fix `,_jsx(_components.code,{children:`start`}),`, `,_jsx(_components.code,{children:`end`}),`, `,_jsx(_components.code,{children:`count_back`}),` or `,_jsx(_components.code,{children:`interval`}),`, or upgrade.`]})}),_jsx(Accordion,{title:_jsxs(_Fragment,{children:[`What does `,_jsx(_components.code,{children:`inversed`}),` change?`]}),id:`what-does-inversed-change`,children:_jsx(_components.p,{children:`It flips the price ratio so the series reflects token1/token0 instead of token0/token1.`})})]}),`\n`,_jsx(`script`,{type:`application/ld+json`,children:JSON.stringify({\"@context\":`https://schema.org`,\"@type\":`FAQPage`,\"mainEntity\":[{\"@type\":`Question`,\"name\":`Which intervals are supported?`,\"acceptedAnswer\":{\"@type\":`Answer`,\"text\":`1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, 24h with up to 1000 points. No key: 1h and up. Free key: 10m and longer. 1m and 5m need Dev or Pro.`}},{\"@type\":`Question`,\"name\":`How to request a specific time range?`,\"acceptedAnswer\":{\"@type\":`Answer`,\"text\":`Provide start: a relative offset from now (-24h for the last 24 hours, -7d, -90m), an ISO timestamp, a date or Unix seconds. End is optional and takes the same formats. The range must fit the plan's history window: 24 hours without a key, 7 days on a free key, 30 days on Dev, unlimited on Pro.`}},{\"@type\":`Question`,\"name\":`Why does the OHLCV endpoint return 403?`,\"acceptedAnswer\":{\"@type\":`Answer`,\"text\":`The request asked for more history or finer candles than the plan allows. The message in the body names the plan that lifts the limit.`}},{\"@type\":`Question`,\"name\":`What does inversed change?`,\"acceptedAnswer\":{\"@type\":`Answer`,\"text\":`Flips price ratio to token1/token0 perspective.`}}]})}),`\n`,_jsx(Card,{title:`Tutorial: Get pool price history and OHLCV data`,icon:`graduation-cap`,href:`/tutorials/retrieve-historical-data`,children:_jsx(_components.p,{children:`Pool candles with a working curl and Python script.`})})]})}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":{"openapi":"api-reference/openapi.yml GET /networks/{network}/pools/{pool_address}/ohlcv","description":"Retrieve historical OHLCV candles for a pool. Interval and history depth depend on your plan, from 24 hours of 1h candles without a key to unlimited on Pro.","tag":"PAID","title":"Get OHLCV data for a pool pair.","href":"/api-reference/pools/get-ohlcv-data-for-a-pool-pair"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[6021,7211,""]]},"mdxExtracts":{"tableOfContents":[{"title":"Endpoint overview","slug":"endpoint-overview","depth":2,"children":[]},{"title":"Plan limits","slug":"plan-limits","depth":2,"children":[{"title":"FAQs","slug":"faqs","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getPoolOHLCV","tags":["Pools"],"summary":"Get OHLCV data for a pool pair.","description":"Retrieve historical OHLCV candles for a pool. Interval and history depth depend on your plan, from 24 hours of 1h candles without a key to unlimited on Pro.","parameters":["ca3e318c-c6e8-4cb3-b174-faf1cb371032","93a4ff0a-170d-49ee-9346-29bd5b0793c3","f8ca9a25-ed17-41a8-907c-b173d388ddfc","bacceb1b-6e3a-46a2-81ae-e70c03019a68","728163d7-3c90-46d0-94b0-82d1628e7b4c","a2176017-d1da-4e90-896a-e01e6333e5c5","34e0813b-a98b-45ba-bccf-2c9e1cae6888"],"responses":{"200":"a1eecaa0-d78e-4bd6-a91e-eab0e1c8ea69","400":"ba9631bb-050e-4fb4-8f3e-0b50008c0465","402":"fbf4ecb5-d2b7-4971-a67b-4df10a55b3d8","403":"fe6069f8-64c9-41f4-97f1-eec21aecbf2e","404":"625dc47b-667d-45cd-baa5-4040210b4d94","429":"97fe9ab1-54de-4db1-87e2-77e95d7a7128"},"method":"get","type":"path","servers":["c428fa37-7c13-44bf-af4a-83d4adcb751c"],"security":[],"path":"/networks/{network}/pools/{pool_address}/ohlcv","baseUrlOptions":["https://api.dexpaprika.com"],"title":"Get OHLCV data for a pool pair.","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ca3e318c-c6e8-4cb3-b174-faf1cb371032":{"name":"network","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"Network slug or ID (e.g., 'solana'). You can find the list of supported networks with their IDs here: [/networks](/api-reference/networks).","uniqueKey":"","typeLabel":"string"},"description":"Network slug or ID (e.g., 'solana'). You can find the list of supported networks with their IDs here: [/networks](/api-reference/networks).","example":"solana"},"93a4ff0a-170d-49ee-9346-29bd5b0793c3":{"name":"pool_address","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"Unique pool address or identifier. Such as `0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b` for WETH / USDT on `ethereum`.","uniqueKey":"","typeLabel":"string"},"description":"Unique pool address or identifier. Such as `0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b` for WETH / USDT on `ethereum`.","example":"0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b"},"f8ca9a25-ed17-41a8-907c-b173d388ddfc":{"name":"start","in":"query","required":true,"example":"-24h","schema":{"type":"string","description":"Start time for the OHLCV data. Required; \"-24h\" selects the last 24 hours.\nAccepted formats:\n- Relative offset from now (e.g., \"-24h\", \"-7d\", \"-90m\"; units: s, m, h, d)\n- Unix timestamp\n- RFC3339 timestamp (e.g., \"2023-10-27T08:07:20Z\")\n- Date (e.g., \"2023-10-27\", interpreted as 00:00:00 UTC)\n","example":"-24h","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"bacceb1b-6e3a-46a2-81ae-e70c03019a68":{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End time for the OHLCV data.\nAccepted formats:\n- Relative offset from now (e.g., \"-1h\", \"-2d\")\n- Unix timestamp\n- RFC3339 timestamp (e.g., \"2023-10-27T10:00:00Z\")\n- Date (e.g., \"2023-10-27\", interpreted as 00:00:00 UTC)\n","example":"1741508640","isRequired":false,"uniqueKey":"","typeLabel":"string"}},"728163d7-3c90-46d0-94b0-82d1628e7b4c":{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10,"minimum":1,"maximum":1000,"isRequired":false,"description":"Maximum number of OHLCV records to return.","uniqueKey":"","typeLabel":"integer\u003cint32>"},"description":"Maximum number of OHLCV records to return."},"a2176017-d1da-4e90-896a-e01e6333e5c5":{"name":"interval","in":"query","required":false,"schema":{"type":"string","enum":["1m","5m","10m","15m","30m","1h","6h","12h","24h"],"default":"24h","isRequired":false,"description":"The time interval for each OHLCV record (candle).\n","uniqueKey":"","typeLabel":"enum\u003cstring>"},"description":"The time interval for each OHLCV record (candle).\n"},"34e0813b-a98b-45ba-bccf-2c9e1cae6888":{"name":"inversed","in":"query","required":false,"schema":{"type":"boolean","default":false,"isRequired":false,"description":"Whether to invert the price ratio in OHLCV calculations (e.g., quote token vs. base token).\n","uniqueKey":"","typeLabel":"boolean"},"description":"Whether to invert the price ratio in OHLCV calculations (e.g., quote token vs. base token).\n"}},"responses":{"a1eecaa0-d78e-4bd6-a91e-eab0e1c8ea69":{"description":"A list of OHLCV records successfully retrieved.","content":{"application/json":{"schema":{"type":"array","description":"An array of OHLCV records (candlesticks) matching the query criteria.","items":{"type":"object","description":"Represents a single Open-High-Low-Close-Volume (OHLCV) data point for a specific time interval.","properties":{"time_open":{"type":"string","format":"date-time","description":"The opening timestamp of the OHLCV period.","example":"2023-10-27T10:00:00Z","isRequired":true,"uniqueKey":"items.[INDEX].time_open","typeLabel":"string\u003cdate-time>"},"time_close":{"type":"string","format":"date-time","description":"The closing timestamp of the OHLCV period.","example":"2023-10-27T11:00:00Z","isRequired":true,"uniqueKey":"items.[INDEX].time_close","typeLabel":"string\u003cdate-time>"},"open":{"type":"number","format":"double","description":"The opening price for the period.","example":1500.5,"isRequired":true,"uniqueKey":"items.[INDEX].open","typeLabel":"number\u003cdouble>"},"high":{"type":"number","format":"double","description":"The highest price reached during the period.","example":1525.75,"isRequired":true,"uniqueKey":"items.[INDEX].high","typeLabel":"number\u003cdouble>"},"low":{"type":"number","format":"double","description":"The lowest price reached during the period.","example":1495.25,"isRequired":true,"uniqueKey":"items.[INDEX].low","typeLabel":"number\u003cdouble>"},"close":{"type":"number","format":"double","description":"The closing price for the period.","example":1510,"isRequired":true,"uniqueKey":"items.[INDEX].close","typeLabel":"number\u003cdouble>"},"volume":{"type":"integer","format":"int64","description":"The total volume traded during the period.","example":1234567890123,"isRequired":true,"uniqueKey":"items.[INDEX].volume","typeLabel":"integer\u003cint64>"}},"required":["time_open","time_close","open","high","low","close","volume"],"uniqueKey":"items.[INDEX]","typeLabel":"object"},"uniqueKey":"","typeLabel":"object[]"},"example":[{"time_open":"2025-03-10T00:00:00Z","time_close":"2025-03-11T00:00:00Z","open":126.43817748776037,"high":131.48201077049822,"low":115.52148830221141,"close":118.20275113239272,"volume":262402654}],"examples":{"Example":{"title":"Example","value":[{"time_open":"2025-03-10T00:00:00Z","time_close":"2025-03-11T00:00:00Z","open":126.43817748776037,"high":131.48201077049822,"low":115.52148830221141,"close":118.20275113239272,"volume":262402654}]}},"exampleType":"examples"}},"exampleType":"examples"},"ba9631bb-050e-4fb4-8f3e-0b50008c0465":{"description":"A query or path parameter is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"Envelope of every error response that has no more specific body. Branch on `error`, which is stable; `message` is human-readable copy that may change.\n","required":["error","message"],"properties":{"error":{"type":"string","enum":["invalid_param","missing_param","unknown_param","wrong_case_param","repeated_param","too_many_params","unknown_field","unexpected_body","unauthorized","invalid_api_key","forbidden","not_found","unsupported_network","route_not_found","method_not_allowed","endpoint_removed","rate_limited","internal_error","unavailable"],"description":"Machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"param":{"type":"string","description":"The query or path parameter that caused the error.","uniqueKey":"param","typeLabel":"string"},"resource":{"type":"string","description":"What a 404 could not find (pool, token, dex).","uniqueKey":"resource","typeLabel":"string"},"expected":{"type":"string","description":"Expected parameter name.","uniqueKey":"expected","typeLabel":"string"},"allowed":{"type":"array","items":{"type":"string","uniqueKey":"allowed.items.[INDEX]","typeLabel":"string"},"description":"Allowed query parameters.","uniqueKey":"allowed","typeLabel":"string[]"},"violations":{"type":"array","maxItems":20,"items":{"type":"object","description":"Rejected query parameter or body field.","required":["in","param","error"],"properties":{"in":{"type":"string","enum":["query","body"],"description":"Location of the rejected parameter.","isRequired":true,"uniqueKey":"violations.items.[INDEX].in","typeLabel":"enum\u003cstring>"},"param":{"type":"string","description":"Rejected parameter name.","isRequired":true,"uniqueKey":"violations.items.[INDEX].param","typeLabel":"string"},"error":{"type":"string","enum":["unknown_param","wrong_case_param","repeated_param","too_many_params","unknown_field","unexpected_body"],"description":"Reason for rejection.","isRequired":true,"uniqueKey":"violations.items.[INDEX].error","typeLabel":"enum\u003cstring>"},"expected":{"type":"string","description":"Expected parameter name.","uniqueKey":"violations.items.[INDEX].expected","typeLabel":"string"}},"uniqueKey":"violations.items.[INDEX]","typeLabel":"object"},"description":"List of rejected parameters.","uniqueKey":"violations","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"invalid":{"title":"invalid","value":{"error":"invalid_param","message":"invalid query parameters: limit (must be at most 100)","param":"limit"}},"missing":{"title":"missing","value":{"error":"missing_param","message":"invalid query param: start (is required)","param":"start"}},"unknown":{"title":"unknown","value":{"error":"unknown_param","message":"invalid query parameters: foo (unknown parameter)","param":"foo","allowed":["limit","page"],"violations":[{"in":"query","param":"foo","error":"unknown_param"}]}},"wrong_case":{"title":"wrong_case","value":{"error":"wrong_case_param","message":"invalid query parameters: LIMIT (wrong case, expected limit)","param":"LIMIT","expected":"limit","allowed":["limit","page"],"violations":[{"in":"query","param":"LIMIT","error":"wrong_case_param","expected":"limit"}]}},"repeated":{"title":"repeated","value":{"error":"repeated_param","message":"invalid query parameters: limit (repeated parameter)","param":"limit","allowed":["limit","page"],"violations":[{"in":"query","param":"limit","error":"repeated_param"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"fbf4ecb5-d2b7-4971-a67b-4df10a55b3d8":{"description":"Credit allowance exhausted. Retrying will not help; the body names the available next step per tier: register (keyless), upgrade (free key), or enable overage and raise your spend cap (Dev and Pro). `resets_at` is present on Dev and Pro only and holds the end of the billing period (UTC); keyless and free keys count over a rolling 30-day window. Deliberately carries no `Retry-After` header.\n","headers":{"X-Credits-Limit":{"description":"Monthly credit limit for this caller.","schema":{"type":"integer"}},"X-Credits-Remaining":{"description":"Credits left in the current month.","schema":{"type":"integer"}},"X-Credits-Reset":{"description":"Seconds until the monthly credits reset.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","description":"Structured body carried by every 402 and 429 emitted by the billing gate and by plan-gated 403s. The shape is constant across scenarios; only fields describing an available action appear. `message` is always a top-level string, so clients parsing the legacy `{\"message\": ...}` shape keep working.\n","required":["error","tier","message"],"properties":{"error":{"type":"string","enum":["payment_required","rate_limited","plan_required","wrong_host","preview_only"],"description":"Machine-readable discriminator.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["keyless","free","dev","pro","enterprise"],"description":"The billing tier the request was evaluated against.","isRequired":true,"uniqueKey":"tier","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message naming the next action.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"required_tier":{"type":"string","enum":["free","dev","pro"],"description":"Lowest tier that unlocks the request. plan_required only.","uniqueKey":"required_tier","typeLabel":"enum\u003cstring>"},"param":{"type":"string","description":"Query parameter that exceeded the plan. plan_required only; absent when the whole endpoint is gated.\n","uniqueKey":"param","typeLabel":"string"},"credits":{"type":"object","description":"Credit counters for the current period. One credit is one request. `plan` and `packs` are split out for Pro keys only. `limit` is plan + packs; usage served through overage can exceed it.\n","properties":{"plan":{"type":"integer","format":"int64","uniqueKey":"credits.plan","typeLabel":"integer\u003cint64>"},"packs":{"type":"integer","format":"int64","uniqueKey":"credits.packs","typeLabel":"integer\u003cint64>"},"limit":{"type":"integer","format":"int64","uniqueKey":"credits.limit","typeLabel":"integer\u003cint64>"},"used":{"type":"integer","format":"int64","uniqueKey":"credits.used","typeLabel":"integer\u003cint64>"},"remaining":{"type":"integer","format":"int64","uniqueKey":"credits.remaining","typeLabel":"integer\u003cint64>"}},"uniqueKey":"credits","typeLabel":"object"},"overage":{"type":"object","description":"Overage state, present on Pro 402 bodies. Money amounts are decimal strings, never floats.\n","properties":{"enabled":{"type":"boolean","uniqueKey":"overage.enabled","typeLabel":"boolean"},"cap":{"type":"string","example":"200.00","uniqueKey":"overage.cap","typeLabel":"string"},"used":{"type":"string","example":"200.00","uniqueKey":"overage.used","typeLabel":"string"},"block":{"type":"string","example":"20.00 per 1M credits","uniqueKey":"overage.block","typeLabel":"string"}},"uniqueKey":"overage","typeLabel":"object"},"resets_at":{"type":"string","format":"date-time","description":"When the monthly allowance rolls over (UTC). 402 only.","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying. 429 only.","uniqueKey":"retry_after","typeLabel":"integer"},"offer":{"type":"object","description":"Early-adopter offer, present on the free-tier 402 only.","properties":{"description":{"type":"string","uniqueKey":"offer.description","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","uniqueKey":"offer.expires_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"offer","typeLabel":"object"},"links":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"links.additionalProperties","typeLabel":"string"},"description":"Next-step URLs. Keys vary by scenario: register, upgrade, packs, portal, usage, docs. Absent until the customer-facing pages go live.\n","uniqueKey":"links","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"keyless":{"title":"keyless","value":{"error":"payment_required","tier":"keyless","message":"Credit limit for the last 30 days reached for unauthenticated use. Register for a free API key to get more credits/month.","credits":{"limit":10000,"used":10000,"remaining":0}}},"pro_plan_exhausted":{"title":"pro_plan_exhausted","value":{"error":"payment_required","tier":"pro","message":"Monthly credit limit reached — enable overage in the portal.","credits":{"plan":5000000,"packs":0,"limit":5000000,"used":5000000,"remaining":0},"overage":{"enabled":false},"resets_at":"2026-09-01T00:00:00Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"fe6069f8-64c9-41f4-97f1-eec21aecbf2e":{"description":"The request asks for something the caller's plan does not include, such as an OHLCV interval finer than the plan allows or history beyond its window. `required_tier` is the lowest plan that unlocks it and `param` names the parameter that exceeded the plan.\n","content":{"application/json":{"schema":{"type":"object","description":"Structured body carried by every 402 and 429 emitted by the billing gate and by plan-gated 403s. The shape is constant across scenarios; only fields describing an available action appear. `message` is always a top-level string, so clients parsing the legacy `{\"message\": ...}` shape keep working.\n","required":["error","tier","message"],"properties":{"error":{"type":"string","enum":["payment_required","rate_limited","plan_required","wrong_host","preview_only"],"description":"Machine-readable discriminator.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["keyless","free","dev","pro","enterprise"],"description":"The billing tier the request was evaluated against.","isRequired":true,"uniqueKey":"tier","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message naming the next action.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"required_tier":{"type":"string","enum":["free","dev","pro"],"description":"Lowest tier that unlocks the request. plan_required only.","uniqueKey":"required_tier","typeLabel":"enum\u003cstring>"},"param":{"type":"string","description":"Query parameter that exceeded the plan. plan_required only; absent when the whole endpoint is gated.\n","uniqueKey":"param","typeLabel":"string"},"credits":{"type":"object","description":"Credit counters for the current period. One credit is one request. `plan` and `packs` are split out for Pro keys only. `limit` is plan + packs; usage served through overage can exceed it.\n","properties":{"plan":{"type":"integer","format":"int64","uniqueKey":"credits.plan","typeLabel":"integer\u003cint64>"},"packs":{"type":"integer","format":"int64","uniqueKey":"credits.packs","typeLabel":"integer\u003cint64>"},"limit":{"type":"integer","format":"int64","uniqueKey":"credits.limit","typeLabel":"integer\u003cint64>"},"used":{"type":"integer","format":"int64","uniqueKey":"credits.used","typeLabel":"integer\u003cint64>"},"remaining":{"type":"integer","format":"int64","uniqueKey":"credits.remaining","typeLabel":"integer\u003cint64>"}},"uniqueKey":"credits","typeLabel":"object"},"overage":{"type":"object","description":"Overage state, present on Pro 402 bodies. Money amounts are decimal strings, never floats.\n","properties":{"enabled":{"type":"boolean","uniqueKey":"overage.enabled","typeLabel":"boolean"},"cap":{"type":"string","example":"200.00","uniqueKey":"overage.cap","typeLabel":"string"},"used":{"type":"string","example":"200.00","uniqueKey":"overage.used","typeLabel":"string"},"block":{"type":"string","example":"20.00 per 1M credits","uniqueKey":"overage.block","typeLabel":"string"}},"uniqueKey":"overage","typeLabel":"object"},"resets_at":{"type":"string","format":"date-time","description":"When the monthly allowance rolls over (UTC). 402 only.","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying. 429 only.","uniqueKey":"retry_after","typeLabel":"integer"},"offer":{"type":"object","description":"Early-adopter offer, present on the free-tier 402 only.","properties":{"description":{"type":"string","uniqueKey":"offer.description","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","uniqueKey":"offer.expires_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"offer","typeLabel":"object"},"links":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"links.additionalProperties","typeLabel":"string"},"description":"Next-step URLs. Keys vary by scenario: register, upgrade, packs, portal, usage, docs. Absent until the customer-facing pages go live.\n","uniqueKey":"links","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"plan_required","tier":"keyless","required_tier":"free","param":"interval","message":"OHLCV intervals below 1h require an API key (free key: 10m and up, Dev and Pro plans: all intervals)"},"examples":{"Example":{"title":"Example","value":{"error":"plan_required","tier":"keyless","required_tier":"free","param":"interval","message":"OHLCV intervals below 1h require an API key (free key: 10m and up, Dev and Pro plans: all intervals)"}}},"exampleType":"examples"}},"exampleType":"examples"},"625dc47b-667d-45cd-baa5-4040210b4d94":{"description":"The network is not supported (`unsupported_network`) or the requested resource does not exist (`not_found`, with `resource` naming it).\n","content":{"application/json":{"schema":{"type":"object","description":"Envelope of every error response that has no more specific body. Branch on `error`, which is stable; `message` is human-readable copy that may change.\n","required":["error","message"],"properties":{"error":{"type":"string","enum":["invalid_param","missing_param","unknown_param","wrong_case_param","repeated_param","too_many_params","unknown_field","unexpected_body","unauthorized","invalid_api_key","forbidden","not_found","unsupported_network","route_not_found","method_not_allowed","endpoint_removed","rate_limited","internal_error","unavailable"],"description":"Machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"param":{"type":"string","description":"The query or path parameter that caused the error.","uniqueKey":"param","typeLabel":"string"},"resource":{"type":"string","description":"What a 404 could not find (pool, token, dex).","uniqueKey":"resource","typeLabel":"string"},"expected":{"type":"string","description":"Expected parameter name.","uniqueKey":"expected","typeLabel":"string"},"allowed":{"type":"array","items":{"type":"string","uniqueKey":"allowed.items.[INDEX]","typeLabel":"string"},"description":"Allowed query parameters.","uniqueKey":"allowed","typeLabel":"string[]"},"violations":{"type":"array","maxItems":20,"items":{"type":"object","description":"Rejected query parameter or body field.","required":["in","param","error"],"properties":{"in":{"type":"string","enum":["query","body"],"description":"Location of the rejected parameter.","isRequired":true,"uniqueKey":"violations.items.[INDEX].in","typeLabel":"enum\u003cstring>"},"param":{"type":"string","description":"Rejected parameter name.","isRequired":true,"uniqueKey":"violations.items.[INDEX].param","typeLabel":"string"},"error":{"type":"string","enum":["unknown_param","wrong_case_param","repeated_param","too_many_params","unknown_field","unexpected_body"],"description":"Reason for rejection.","isRequired":true,"uniqueKey":"violations.items.[INDEX].error","typeLabel":"enum\u003cstring>"},"expected":{"type":"string","description":"Expected parameter name.","uniqueKey":"violations.items.[INDEX].expected","typeLabel":"string"}},"uniqueKey":"violations.items.[INDEX]","typeLabel":"object"},"description":"List of rejected parameters.","uniqueKey":"violations","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"resource":{"title":"resource","value":{"error":"not_found","message":"pool not found","resource":"pool"}},"network":{"title":"network","value":{"error":"unsupported_network","message":"unsupported network","param":"network"}}},"exampleType":"examples"}},"exampleType":"examples"},"97fe9ab1-54de-4db1-87e2-77e95d7a7128":{"description":"Per-minute rate limit exceeded. Slow down and retry after the number of seconds given in the `Retry-After` header. Credits are unaffected; `credits` appears in the body only when the counters were already at hand for the request.\n","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"RateLimit-Limit":{"description":"Request limit for the current minute.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current minute.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the minute limit resets.","schema":{"type":"integer"}},"X-Credits-Limit":{"description":"Monthly credit limit for this caller.","schema":{"type":"integer"}},"X-Credits-Remaining":{"description":"Credits left in the current month.","schema":{"type":"integer"}},"X-Credits-Reset":{"description":"Seconds until the monthly credits reset.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","description":"Structured body carried by every 402 and 429 emitted by the billing gate and by plan-gated 403s. The shape is constant across scenarios; only fields describing an available action appear. `message` is always a top-level string, so clients parsing the legacy `{\"message\": ...}` shape keep working.\n","required":["error","tier","message"],"properties":{"error":{"type":"string","enum":["payment_required","rate_limited","plan_required","wrong_host","preview_only"],"description":"Machine-readable discriminator.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["keyless","free","dev","pro","enterprise"],"description":"The billing tier the request was evaluated against.","isRequired":true,"uniqueKey":"tier","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message naming the next action.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"required_tier":{"type":"string","enum":["free","dev","pro"],"description":"Lowest tier that unlocks the request. plan_required only.","uniqueKey":"required_tier","typeLabel":"enum\u003cstring>"},"param":{"type":"string","description":"Query parameter that exceeded the plan. plan_required only; absent when the whole endpoint is gated.\n","uniqueKey":"param","typeLabel":"string"},"credits":{"type":"object","description":"Credit counters for the current period. One credit is one request. `plan` and `packs` are split out for Pro keys only. `limit` is plan + packs; usage served through overage can exceed it.\n","properties":{"plan":{"type":"integer","format":"int64","uniqueKey":"credits.plan","typeLabel":"integer\u003cint64>"},"packs":{"type":"integer","format":"int64","uniqueKey":"credits.packs","typeLabel":"integer\u003cint64>"},"limit":{"type":"integer","format":"int64","uniqueKey":"credits.limit","typeLabel":"integer\u003cint64>"},"used":{"type":"integer","format":"int64","uniqueKey":"credits.used","typeLabel":"integer\u003cint64>"},"remaining":{"type":"integer","format":"int64","uniqueKey":"credits.remaining","typeLabel":"integer\u003cint64>"}},"uniqueKey":"credits","typeLabel":"object"},"overage":{"type":"object","description":"Overage state, present on Pro 402 bodies. Money amounts are decimal strings, never floats.\n","properties":{"enabled":{"type":"boolean","uniqueKey":"overage.enabled","typeLabel":"boolean"},"cap":{"type":"string","example":"200.00","uniqueKey":"overage.cap","typeLabel":"string"},"used":{"type":"string","example":"200.00","uniqueKey":"overage.used","typeLabel":"string"},"block":{"type":"string","example":"20.00 per 1M credits","uniqueKey":"overage.block","typeLabel":"string"}},"uniqueKey":"overage","typeLabel":"object"},"resets_at":{"type":"string","format":"date-time","description":"When the monthly allowance rolls over (UTC). 402 only.","uniqueKey":"resets_at","typeLabel":"string\u003cdate-time>"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying. 429 only.","uniqueKey":"retry_after","typeLabel":"integer"},"offer":{"type":"object","description":"Early-adopter offer, present on the free-tier 402 only.","properties":{"description":{"type":"string","uniqueKey":"offer.description","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","uniqueKey":"offer.expires_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"offer","typeLabel":"object"},"links":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"links.additionalProperties","typeLabel":"string"},"description":"Next-step URLs. Keys vary by scenario: register, upgrade, packs, portal, usage, docs. Absent until the customer-facing pages go live.\n","uniqueKey":"links","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"rate_limited","tier":"pro","message":"Request rate exceeded. Retry in 12 seconds.","credits":{"plan":5000000,"packs":0,"limit":5000000,"used":1240880,"remaining":3759120},"retry_after":12},"examples":{"Example":{"title":"Example","value":{"error":"rate_limited","tier":"pro","message":"Request rate exceeded. Retry in 12 seconds.","credits":{"plan":5000000,"packs":0,"limit":5000000,"used":1240880,"remaining":3759120},"retry_after":12}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{},"servers":{"c428fa37-7c13-44bf-af4a-83d4adcb751c":{"url":"https://api.dexpaprika.com","description":"Production server"}}},"originalFileLocation":"api-reference/openapi.yml"},"subdomain":"coinpaprikaspzoo","siteName":"DexPaprika API","title":"Get OHLCV data for a pool pair. - DexPaprika API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T08:41:01.604Z","originalFileLocation":"api-reference/pools/get-ohlcv-data-for-a-pool-pair.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=\"Retrieve historical OHLCV candles for a pool. Interval and history depth depend on your plan, from 24 hours of 1h candles without a key to unlimited on Pro.\">\u003cmeta data-mint-head name=\"keywords\" content=\"dex api, on-chain crypto api, liquidity pool api, swap data api, defi data api, crypto api, crypto price api, cryptocurrency data api\">\u003cmeta data-mint-head name=\"application-name\" content=\"DexPaprika API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_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/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_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/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_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/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_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/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_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/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_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/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_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/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get OHLCV data for a pool pair. - DexPaprika API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Developer documentation for the DexPaprika API: liquidity pools, swap activity, token metrics, and on-chain analytics.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DexPaprika\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://coinpaprikaspzoo.mintlify.site/_mintlify/api/og/v2?division=Pools\u0026amp;title=Get+OHLCV+data+for+a+pool+pair.\u0026amp;description=Retrieve+historical+OHLCV+candles+for+a+pool.+Interval+and+history+depth+depend+on+your+plan%2C+from+24+hours+of+1h+candles+without+a+key+to+unlimited+on+Pro.\u0026amp;theme=e8c8db3c3aa4271c6e4a291b\u0026amp;signature=e7ec504e69cab643d04b2b8c3742571a447c6281a8fc5388baff90dd32db9424\">\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 OHLCV data for a pool pair. - DexPaprika API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Explore DexPaprika\u0026#x27;s API for real-time DEX and on-chain data. No API key needed to start.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://coinpaprikaspzoo.mintlify.site/_mintlify/api/og/v2?division=Pools\u0026amp;title=Get+OHLCV+data+for+a+pool+pair.\u0026amp;description=Retrieve+historical+OHLCV+candles+for+a+pool.+Interval+and+history+depth+depend+on+your+plan%2C+from+24+hours+of+1h+candles+without+a+key+to+unlimited+on+Pro.\u0026amp;theme=e8c8db3c3aa4271c6e4a291b\u0026amp;signature=e7ec504e69cab643d04b2b8c3742571a447c6281a8fc5388baff90dd32db9424\">\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/coinpaprikaspzoo/oG0LGh3lDXLRLI1i/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DexPaprika API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00A84E\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/pools/get-ohlcv-data-for-a-pool-pair.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dexpaprika.com/#organization\",\"name\":\"DexPaprika API\",\"url\":\"https://docs.dexpaprika.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/coinpaprikaspzoo/qdXqFGfH5cg6MFHp/logo/light.svg?fit=max\u0026auto=format\u0026n=qdXqFGfH5cg6MFHp\u0026q=85\u0026s=3815800db38511a4187280846c0bcbff\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dexpaprika.com#website\",\"name\":\"DexPaprika API\",\"url\":\"https://docs.dexpaprika.com\",\"publisher\":{\"@id\":\"https://docs.dexpaprika.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair#webpage\",\"url\":\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair\",\"name\":\"Get OHLCV data for a pool pair.\",\"description\":\"Retrieve historical OHLCV candles for a pool. Interval and history depth depend on your plan, from 24 hours of 1h candles without a key to unlimited on Pro.\",\"dateModified\":\"2026-10-16T08:41:01.604Z\",\"isPartOf\":{\"@id\":\"https://docs.dexpaprika.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Pools\",\"item\":\"https://docs.dexpaprika.com/api-reference/pools/advanced-pool-filtering-on-a-specific-network\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get OHLCV data for a pool pair.\",\"item\":\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair#apireference\",\"headline\":\"Get OHLCV data for a pool pair.\",\"name\":\"Get OHLCV data for a pool pair.\",\"description\":\"Retrieve historical OHLCV candles for a pool. Interval and history depth depend on your plan, from 24 hours of 1h candles without a key to unlimited on Pro.\",\"url\":\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dexpaprika.com/api-reference/pools/get-ohlcv-data-for-a-pool-pair#webpage\"},\"dateModified\":\"2026-10-16T08:41:01.604Z\",\"publisher\":{\"@id\":\"https://docs.dexpaprika.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dexpaprika.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DexPaprika API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"DexPaprika API","nav":{"global":{"anchors":[{"anchor":"REST API Reference","icon":"code","href":"https://docs.dexpaprika.com/api-reference/introduction"},{"anchor":"Discord Community","icon":"discord","href":"https://discord.gg/DhJge5TUGM"},{"anchor":"DexPaprika","icon":"browser","href":"https://dexpaprika.com"},{"anchor":"CoinPaprika","icon":"pepper-hot","href":"https://coinpaprika.com"},{"anchor":"CoinPaprika on X","icon":"x-twitter","href":"https://x.com/coinpaprika"}]},"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/introduction"}]},{"tab":"AI Integration","pages":[{"title":"AI Integration","href":"/ai-integration"}]},{"tab":"DEX REST API Reference","groups":[{"group":"Getting Started","pages":[{"title":"API reference: endpoints and parameters","sidebarTitle":"Introduction","href":"/api-reference/introduction"}]},{"group":"Networks","pages":[{"openapi":"api-reference/openapi.yml GET /networks","title":"Get a list of available blockchain networks.","href":"/api-reference/networks/get-a-list-of-available-blockchain-networks"}]},{"group":"DEXes","pages":[{"openapi":"api-reference/openapi.yml GET /networks/{network}/dexes","title":"Get a list of available dexes on a network.","href":"/api-reference/dexes/get-a-list-of-available-dexes-on-a-network"}]},{"group":"Pools","pages":[{"openapi":"api-reference/openapi.yml GET /networks/{network}/pools/search","title":"Advanced pool filtering on a specific network.","href":"/api-reference/pools/advanced-pool-filtering-on-a-specific-network"},{"openapi":"api-reference/openapi.yml GET /pools/search","title":"Advanced pool filtering across multiple networks.","href":"/api-reference/pools/advanced-pool-filtering-across-multiple-networks"},{"openapi":"api-reference/openapi.yml GET /networks/{network}/pools/{pool_address}","description":"Get detailed liquidity, reserves, pricing, and metadata for a specific pool on a blockchain network","title":"Get a pool on a network.","href":"/api-reference/pools/get-a-pool-on-a-network"},{"openapi":"api-reference/openapi.yml GET /networks/{network}/pools/{pool_address}/ohlcv","tag":"PAID","title":"Get OHLCV data for a pool pair.","href":"/api-reference/pools/get-ohlcv-data-for-a-pool-pair"},{"openapi":"api-reference/openapi.yml GET /networks/{network}/pools/{pool_address}/transactions","description":"List recent swaps, liquidity adds, and removes for a pool with page or cursor-based pagination. Paid plans only: Dev, Pro and Enterprise keys on api-pro.dexpaprika.com.","tag":"PAID","title":"Get transactions of a pool on a network. Paging can be used up to 100 pages.","href":"/api-reference/pools/get-transactions-of-a-pool-on-a-network-paging-can-be-used-up-to-100-pages"}]},{"group":"Tokens","pages":[{"openapi":"api-reference/openapi.yml GET /networks/{network}/tokens/search","title":"Advanced token filtering on a specific network.","href":"/api-reference/tokens/advanced-token-filtering-on-a-specific-network"},{"openapi":"api-reference/openapi.yml GET /tokens/search","title":"Advanced token filtering across multiple networks.","href":"/api-reference/tokens/advanced-token-filtering-across-multiple-networks"},{"openapi":"api-reference/openapi.yml GET /networks/{network}/tokens/{token_address}","title":"Get a token's latest data on a network.","href":"/api-reference/tokens/get-a-tokens-latest-data-on-a-network"},{"openapi":"api-reference/openapi.yml GET /networks/{network}/multi/prices","title":"Get batched prices for multiple tokens on a network.","href":"/api-reference/tokens/get-batched-prices-for-multiple-tokens-on-a-network"},{"openapi":"api-reference/openapi.yml GET /networks/{network}/tokens/{token_address}/ohlcv","title":"Get OHLCV data for a token","tag":"PAID","href":"/api-reference/tokens/get-ohlcv-data-for-a-token"}]},{"group":"Indicators","pages":[{"openapi":"api-reference/openapi.yml GET /networks/{network}/pools/{pool_address}/indicators","title":"Get a technical indicator for a pool.","href":"/api-reference/pools/get-a-technical-indicator-for-a-pool"},{"openapi":"api-reference/openapi.yml GET /networks/{network}/tokens/{token_address}/indicators","tag":"PAID","title":"Get a technical indicator for a token.","href":"/api-reference/tokens/get-a-technical-indicator-for-a-token"}]},{"group":"Search","pages":[{"openapi":"api-reference/openapi.yml GET /search","title":"Search for tokens, pools, and DEXes","href":"/api-reference/search/search-for-tokens-pools-and-dexes"}]},{"group":"Utils","pages":[{"openapi":"api-reference/openapi.yml GET /stats","title":"Retrieve high-level asset statistics","href":"/api-reference/utils/retrieve-high-level-asset-statistics"},{"openapi":"api-reference/openapi.yml GET /usage","title":"Get your plan and current-period credit usage.","href":"/api-reference/utils/get-your-plan-and-current-period-credit-usage"}]}]},{"tab":"API Pro","pages":[{"title":"API Pro","href":"/api-pro/introduction"}]},{"tab":"Streaming","pages":[{"title":"Streaming","href":"/streaming/introduction"}]},{"tab":"Streaming Reference","pages":[{"title":"Streaming Reference","href":"/api-reference/stream-real-time-prices-for-an-asset"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/changelog"}]},{"tab":"Status","href":"https://status.dexpaprika.com/"}]},"basePath":"","title":"Get OHLCV data for a pool pair. - DexPaprika API","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"]}