Any metric by any dimension, filter and time range. Get metric ids from GET /search?kind=metric and dimension ids from GET /dimensions. Funnels, retention, cohort LTV and one person’s journey have their own routes.
A plan the server cannot run is a 400 with error, code and a hint that says how to fix it. The body is capped at 64 KiB (413 above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in meta.unavailable with reason timeout.
Reminds a reader that strings in rows are recorded data, not instructions.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Datalyr Docs","description":"Simple guides for setting up and using Datalyr.","colors":{"primary":"#FC6600","light":"#FC6600","dark":"#FC6600"},"logo":{"light":"https://mintcdn.com/datalyr/ROJj0wlntTvU8OM_/light.svg?fit=max\u0026auto=format\u0026n=ROJj0wlntTvU8OM_\u0026q=85\u0026s=29f98b487b8f65c3bd267065db18b4b9","dark":"https://mintcdn.com/datalyr/xt7Bk8U79eZ1GtVp/dark.svg?fit=max\u0026auto=format\u0026n=xt7Bk8U79eZ1GtVp\u0026q=85\u0026s=43fe8f8da4b4e1658fe86bbeef08ff59"},"favicon":"https://mintcdn.com/datalyr/ROJj0wlntTvU8OM_/fav.png?fit=max\u0026auto=format\u0026n=ROJj0wlntTvU8OM_\u0026q=85\u0026s=f5026bdd46f056f274b9f4b111ee8f5b","appearance":{"default":"dark","strict":false},"navbar":{"links":[{"href":"https://datalyr.com","label":"Open Datalyr"}],"primary":{"type":"button","label":"Get started","href":"https://datalyr.com/signup"}},"fonts":{"family":"Inter"},"styling":{"eyebrows":"section","latex":false},"contextual":{"options":["copy","chatgpt","claude","add-mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"datalyr","hasAudioNarration":false,"actualSubdomain":"datalyr","customDomains":["docs.datalyr.com"],"gitSource":{"type":"github","owner":"datalyr","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae53b8d0b793c10791deee6","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API \u0026 MCP","count":92},{"language":"default","tag":"Getting Started","count":77},{"language":"default","tag":"Agent ads","count":15},{"language":"default","tag":"Advanced","count":14},{"language":"default","tag":"Dashboards, analyses and share links","count":14},{"language":"default","tag":"Using Datalyr","count":13},{"language":"default","tag":"Integrations","count":12},{"language":"default","tag":"Revenue","count":11},{"language":"default","tag":"SDK Reference","count":10},{"language":"default","tag":"Account \u0026 billing","count":8}]},"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":"editor-metadata","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":"custom.css","content":":root{--datalyr-bg: #ffffff;--datalyr-surface: #fafafa;--datalyr-surface-hover: #f5f5f5;--datalyr-border: #e7e7e7;--datalyr-text: #171717;--datalyr-muted: #666666;--datalyr-orange: #fc6600}.dark,[data-theme=\"dark\"]{--datalyr-bg: #141414;--datalyr-surface: #181818;--datalyr-surface-hover: #1d1d1d;--datalyr-border: #303030;--datalyr-text: #ededed;--datalyr-muted: #a8a8a8}html,body{background:var(--datalyr-bg)!important}body{color:var(--datalyr-text);font-feature-settings:\"cv02\", \"cv03\", \"cv04\", \"cv11\";letter-spacing:-0.006em}#navbar,#navbar-transition{background:color-mix(in srgb, var(--datalyr-bg) 94%, transparent)!important;border-color:var(--datalyr-border)!important;backdrop-filter:blur(16px)}#navbar a,#navbar button{letter-spacing:-0.01em}html body nav#sidebar{background:transparent!important;border-color:var(--datalyr-border)!important}#sidebar-content>div>div.sticky.top-0{background:transparent!important}#sidebar a,#sidebar button{border-radius:6px!important;font-size:14px;font-weight:400!important}#sidebar a:hover,#sidebar button:hover{background:var(--datalyr-surface-hover)!important}#sidebar a[aria-current=\"page\"]{background:transparent!important;box-shadow:none;border-radius:6px!important;color:var(--datalyr-orange)!important;font-weight:500!important}#sidebar a[aria-current=\"page\"]:hover{background:var(--datalyr-surface-hover)!important}#sidebar .sidebar-group{border-left:1px solid var(--datalyr-border);margin-left:4px;padding-left:8px}main{color:var(--datalyr-text)}main h1,main h2,main h3,main h4{color:var(--datalyr-text)!important;letter-spacing:-0.035em;font-weight:650}main h1{font-size:clamp(1.875rem, 3vw, 2rem)!important;line-height:1.16!important}main h2{font-size:1.5rem!important;line-height:1.25!important}main h3{font-size:1.125rem!important;line-height:1.35!important}main p,main li,main td{color:var(--datalyr-muted)!important;font-size:15.5px;line-height:1.72}main strong{color:var(--datalyr-text);font-weight:600}main a{text-underline-offset:3px}main a[class*=\"card\"],main [class*=\"Card\"]{background:var(--datalyr-surface)!important;border-color:var(--datalyr-border)!important;border-radius:10px!important;box-shadow:none!important;transition:background-color 140ms ease, border-color 140ms ease,\n transform 140ms ease}main a[class*=\"card\"]:hover{background:var(--datalyr-surface-hover)!important;border-color:#3a3a3a!important;transform:translateY(-1px)}main a[class*=\"card\"] h2,main [class*=\"Card\"] h2{font-size:1rem!important;line-height:1.35!important;letter-spacing:-0.015em}main [data-component-part=\"card-icon\"] svg{background:var(--datalyr-muted)!important;color:var(--datalyr-muted)!important}pre,code{border-radius:8px!important}aside[aria-label=\"Table of Contents\"],.toc,[class*=\"TableOfContents\"],nav[aria-labelledby=\"toc-heading\"]{position:sticky!important;top:88px!important;max-height:calc(100vh - 110px)!important;overflow-y:auto!important}@media (max-width: 768px){main h1{font-size:1.875rem!important}}"}],"page":{"pagePath":"api-reference/query/run-a-query-plan","slug":"/api-reference/query/run-a-query-plan","pageMetadata":{"title":"Run a query plan","description":"Any metric by any dimension, filter and time range. Get metric ids from `GET /search?kind=metric` and dimension ids from `GET /dimensions`. Funnels, retention, cohort LTV and one person's journey have their own routes.\n\nA plan the server cannot run is a `400` with `error`, `code` and a `hint` that says how to fix it. The body is capped at 64 KiB (`413` above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in `meta.unavailable` with reason `timeout`.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /query","href":"/api-reference/query/run-a-query-plan","autogeneratedByOpenApi":true},"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 ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Any metric by any dimension, filter and time range. Get metric ids from \", _jsx(_components.code, {\n children: \"GET /search?kind=metric\"\n }), \" and dimension ids from \", _jsx(_components.code, {\n children: \"GET /dimensions\"\n }), \". Funnels, retention, cohort LTV and one person’s journey have their own routes.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A plan the server cannot run is a \", _jsx(_components.code, {\n children: \"400\"\n }), \" with \", _jsx(_components.code, {\n children: \"error\"\n }), \", \", _jsx(_components.code, {\n children: \"code\"\n }), \" and a \", _jsx(_components.code, {\n children: \"hint\"\n }), \" that says how to fix it. The body is capped at 64 KiB (\", _jsx(_components.code, {\n children: \"413\"\n }), \" above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in \", _jsx(_components.code, {\n children: \"meta.unavailable\"\n }), \" with reason \", _jsx(_components.code, {\n children: \"timeout\"\n }), \".\"]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Run a query plan","description":"Any metric by any dimension, filter and time range. Get metric ids from `GET /search?kind=metric` and dimension ids from `GET /dimensions`. Funnels, retention, cohort LTV and one person's journey have their own routes.\n\nA plan the server cannot run is a `400` with `error`, `code` and a `hint` that says how to fix it. The body is capped at 64 KiB (`413` above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in `meta.unavailable` with reason `timeout`.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /query","href":"/api-reference/query/run-a-query-plan","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Query"],"summary":"Run a query plan","description":"Any metric by any dimension, filter and time range. Get metric ids from `GET /search?kind=metric` and dimension ids from `GET /dimensions`. Funnels, retention, cohort LTV and one person's journey have their own routes.\n\nA plan the server cannot run is a `400` with `error`, `code` and a `hint` that says how to fix it. The body is capped at 64 KiB (`413` above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in `meta.unavailable` with reason `timeout`.","operationId":"run-query","requestBody":"58471657-d957-42ee-b46a-1e67c212d851","responses":{"200":"2e7c6f40-5f1f-485d-b47d-380369546089","400":"74468de7-47ce-4860-8cc5-7744f2279e48","404":"642b1fd3-16a3-47f0-b944-0be25a8bf75a","413":"11453e1a-a897-4516-b3d5-3777d179c6cd","503":"d4c1d268-b584-42ba-bea7-fc811ecb7c59"},"method":"post","type":"path","servers":["78ceae59-a477-4949-898e-d94f40b1c3ae"],"security":["6042b473-0802-451b-85ea-c4070c75d098"],"path":"/query","baseUrlOptions":["https://api.datalyr.com/v1"],"title":"Run a query plan","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["metrics","date_range"],"properties":{"metrics":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","uniqueKey":"metrics.items.[INDEX]","typeLabel":"string"},"description":"Measure ids, such as `visitors`, `revenue`, `spend`, `provider_roas`, `attributed_revenue`, `active_subscriptions`, or `custom:\u003cevent_name>`.","isRequired":true,"uniqueKey":"metrics","typeLabel":"string[]"},"date_range":{"oneOf":[{"type":"object","description":"`{from, to}` (inclusive; `YYYY-MM-DD` in the workspace timezone, or ISO 8601 instants) or `{preset}`.","required":["from","to"],"properties":{"from":{"type":"string","isRequired":true,"uniqueKey":"date_range.oneOf.0.from","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"date_range.oneOf.0.to","typeLabel":"string"}},"isRequired":true,"uniqueKey":"date_range.oneOf.0","typeLabel":"object"},{"type":"object","description":"`{from, to}` (inclusive; `YYYY-MM-DD` in the workspace timezone, or ISO 8601 instants) or `{preset}`.","required":["preset"],"properties":{"preset":{"type":"string","enum":["today","yesterday","last_7_days","last_14_days","last_30_days","last_90_days","this_week","this_month","last_month"],"isRequired":true,"uniqueKey":"date_range.oneOf.1.preset","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"date_range.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"date_range","typeLabel":"object"},"dimensions":{"type":"array","maxItems":3,"items":{"type":"string","uniqueKey":"dimensions.items.[INDEX]","typeLabel":"string"},"description":"Dimension ids from `GET /dimensions`. Omit for totals only.","uniqueKey":"dimensions","typeLabel":"string[]"},"filters":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["dimension","op"],"properties":{"dimension":{"type":"string","description":"A dimension id, or `property:\u003ckey>` for a custom event property.","isRequired":true,"uniqueKey":"filters.items.[INDEX].dimension","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","in","not_in","contains","not_contains","gt","gte","lt","lte","is_set","not_set"],"isRequired":true,"uniqueKey":"filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"filters.items.[INDEX].value.oneOf.2.items.[INDEX]","typeLabel":"string | number"},"description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"filters.items.[INDEX].value.oneOf.2","typeLabel":"(string | number)[]"}],"uniqueKey":"filters.items.[INDEX].value","typeLabel":"string | number | (string | number)[]"}},"uniqueKey":"filters.items.[INDEX]","typeLabel":"object"},"description":"Combined with AND.","uniqueKey":"filters","typeLabel":"object[]"},"granularity":{"oneOf":[{"type":"string","enum":["hour","day","week","month",null],"description":"Adds a `bucket` column. Omit for one row per dimension combination.","uniqueKey":"granularity.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["hour","day","week","month",null],"description":"Adds a `bucket` column. Omit for one row per dimension combination.","uniqueKey":"granularity.oneOf.1","typeLabel":"null"}],"uniqueKey":"granularity","typeLabel":"enum\u003cstring> | null"},"compare":{"oneOf":[{"type":"string","enum":["previous_period",null],"description":"Also compute the preceding window of equal width.","uniqueKey":"compare.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["previous_period",null],"description":"Also compute the preceding window of equal width.","uniqueKey":"compare.oneOf.1","typeLabel":"null"}],"uniqueKey":"compare","typeLabel":"enum\u003cstring> | null"},"attribution":{"oneOf":[{"type":"object","description":"Required for `attributed_*` metrics; the workspace default applies when omitted. Echoed in `meta.resolved.attribution`.","required":["model","window_days"],"properties":{"model":{"type":"string","enum":["last_touch","first_touch","linear","time_decay"],"isRequired":true,"uniqueKey":"attribution.oneOf.0.model","typeLabel":"enum\u003cstring>"},"window_days":{"type":"integer","minimum":1,"maximum":90,"isRequired":true,"uniqueKey":"attribution.oneOf.0.window_days","typeLabel":"integer"}},"uniqueKey":"attribution.oneOf.0","typeLabel":"object"},{"type":"null","description":"Required for `attributed_*` metrics; the workspace default applies when omitted. Echoed in `meta.resolved.attribution`.","required":["model","window_days"],"properties":{"model":{"type":"string","enum":["last_touch","first_touch","linear","time_decay"]},"window_days":{"type":"integer","minimum":1,"maximum":90}},"uniqueKey":"attribution.oneOf.1","typeLabel":"null"}],"uniqueKey":"attribution","typeLabel":"object | null"},"order_by":{"type":"array","maxItems":3,"items":{"type":"object","required":["field","dir"],"properties":{"field":{"type":"string","description":"A metric or dimension id in this plan, or `bucket`.","isRequired":true,"uniqueKey":"order_by.items.[INDEX].field","typeLabel":"string"},"dir":{"type":"string","enum":["asc","desc"],"isRequired":true,"uniqueKey":"order_by.items.[INDEX].dir","typeLabel":"enum\u003cstring>"}},"uniqueKey":"order_by.items.[INDEX]","typeLabel":"object"},"uniqueKey":"order_by","typeLabel":"object[]"},"limit":{"type":"integer","minimum":1,"maximum":2000,"default":200,"uniqueKey":"limit","typeLabel":"integer"},"cursor":{"oneOf":[{"type":"string","description":"`meta.next_cursor` from the previous page.","uniqueKey":"cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"`meta.next_cursor` from the previous page.","uniqueKey":"cursor.oneOf.1","typeLabel":"null"}],"uniqueKey":"cursor","typeLabel":"string | null"},"response_format":{"type":"string","enum":["concise","detailed"],"default":"concise","uniqueKey":"response_format","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"example":{"metrics":["spend","provider_roas"],"dimensions":["campaign"],"filters":[{"dimension":"platform","op":"eq","value":"meta"}],"date_range":{"preset":"last_30_days"},"order_by":[{"field":"spend","dir":"desc"}],"limit":20},"examples":{"Example":{"title":"Example","value":{"metrics":["spend","provider_roas"],"dimensions":["campaign"],"filters":[{"dimension":"platform","op":"eq","value":"meta"}],"date_range":{"preset":"last_30_days"},"order_by":[{"field":"spend","dir":"desc"}],"limit":20}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"2e7c6f40-5f1f-485d-b47d-380369546089":{"description":"Successful response. Shape evolving — read fields defensively and do not depend on the absence of a field.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["rows","totals","meta"],"properties":{"rows":{"type":"array","description":"One object per dimension combination (and bucket). Keys are dimension ids, `bucket`, then metric ids. A `null` metric value means no data, not zero.","items":{"type":"object","additionalProperties":true,"uniqueKey":"rows.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"rows","typeLabel":"object[]"},"totals":{"type":"object","description":"One value per metric id over the whole, unpaginated result.","additionalProperties":{"oneOf":[{"type":"number","uniqueKey":"totals.additionalProperties.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"totals.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"totals.additionalProperties","typeLabel":"number | null"},"isRequired":true,"uniqueKey":"totals","typeLabel":"object"},"meta":{"type":"object","additionalProperties":true,"properties":{"resolved":{"type":"object","additionalProperties":true,"properties":{"metrics":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string","uniqueKey":"meta.resolved.metrics.items.[INDEX].id","typeLabel":"string"},"label":{"type":"string","uniqueKey":"meta.resolved.metrics.items.[INDEX].label","typeLabel":"string"},"unit":{"type":"string","enum":["count","currency","percentage","ratio","duration_seconds"],"uniqueKey":"meta.resolved.metrics.items.[INDEX].unit","typeLabel":"enum\u003cstring>"},"definition":{"type":"string","uniqueKey":"meta.resolved.metrics.items.[INDEX].definition","typeLabel":"string"},"domain":{"type":"string","enum":["events","money","ads","attribution","persons","subscriptions"],"uniqueKey":"meta.resolved.metrics.items.[INDEX].domain","typeLabel":"enum\u003cstring>"},"attributed":{"type":"boolean","uniqueKey":"meta.resolved.metrics.items.[INDEX].attributed","typeLabel":"boolean"},"currency":{"oneOf":[{"type":"string","uniqueKey":"meta.resolved.metrics.items.[INDEX].currency.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"meta.resolved.metrics.items.[INDEX].currency.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.resolved.metrics.items.[INDEX].currency","typeLabel":"string | null"}},"uniqueKey":"meta.resolved.metrics.items.[INDEX]","typeLabel":"object"},"uniqueKey":"meta.resolved.metrics","typeLabel":"object[]"},"dimensions":{"type":"array","items":{"type":"object","additionalProperties":true,"uniqueKey":"meta.resolved.dimensions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"meta.resolved.dimensions","typeLabel":"object[]"},"filters":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["dimension","op"],"properties":{"dimension":{"type":"string","description":"A dimension id, or `property:\u003ckey>` for a custom event property.","isRequired":true,"uniqueKey":"meta.resolved.filters.items.[INDEX].dimension","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","in","not_in","contains","not_contains","gt","gte","lt","lte","is_set","not_set"],"isRequired":true,"uniqueKey":"meta.resolved.filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"meta.resolved.filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"meta.resolved.filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"meta.resolved.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"meta.resolved.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"meta.resolved.filters.items.[INDEX].value.oneOf.2.items.[INDEX]","typeLabel":"string | number"},"description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"meta.resolved.filters.items.[INDEX].value.oneOf.2","typeLabel":"(string | number)[]"}],"uniqueKey":"meta.resolved.filters.items.[INDEX].value","typeLabel":"string | number | (string | number)[]"}},"uniqueKey":"meta.resolved.filters.items.[INDEX]","typeLabel":"object"},"uniqueKey":"meta.resolved.filters","typeLabel":"object[]"},"date_range":{"type":"object","properties":{"from":{"type":"string","description":"UTC instant, inclusive.","uniqueKey":"meta.resolved.date_range.from","typeLabel":"string"},"to":{"type":"string","description":"UTC instant, exclusive.","uniqueKey":"meta.resolved.date_range.to","typeLabel":"string"},"timezone":{"type":"string","uniqueKey":"meta.resolved.date_range.timezone","typeLabel":"string"},"preset":{"type":"string","uniqueKey":"meta.resolved.date_range.preset","typeLabel":"string"}},"uniqueKey":"meta.resolved.date_range","typeLabel":"object"},"granularity":{"oneOf":[{"type":"string","uniqueKey":"meta.resolved.granularity.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"meta.resolved.granularity.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.resolved.granularity","typeLabel":"string | null"},"attribution":{"oneOf":[{"type":"object","properties":{"model":{"type":"string","uniqueKey":"meta.resolved.attribution.oneOf.0.model","typeLabel":"string"},"window_days":{"type":"integer","uniqueKey":"meta.resolved.attribution.oneOf.0.window_days","typeLabel":"integer"},"source":{"type":"string","enum":["requested","workspace_default"],"uniqueKey":"meta.resolved.attribution.oneOf.0.source","typeLabel":"enum\u003cstring>"}},"uniqueKey":"meta.resolved.attribution.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"model":{"type":"string"},"window_days":{"type":"integer"},"source":{"type":"string","enum":["requested","workspace_default"]}},"uniqueKey":"meta.resolved.attribution.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.resolved.attribution","typeLabel":"object | null"}},"uniqueKey":"meta.resolved","typeLabel":"object"},"returned_rows":{"type":"integer","uniqueKey":"meta.returned_rows","typeLabel":"integer"},"truncated":{"type":"boolean","description":"True when rows stop at `limit`. Narrow the query or page with `next_cursor`.","uniqueKey":"meta.truncated","typeLabel":"boolean"},"total_rows":{"oneOf":[{"type":"integer","uniqueKey":"meta.total_rows.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"meta.total_rows.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.total_rows","typeLabel":"integer | null"},"next_cursor":{"oneOf":[{"type":"string","uniqueKey":"meta.next_cursor.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"meta.next_cursor.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.next_cursor","typeLabel":"string | null"},"freshness":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","uniqueKey":"meta.freshness.items.[INDEX].source","typeLabel":"string"},"latest_at":{"oneOf":[{"type":"string","uniqueKey":"meta.freshness.items.[INDEX].latest_at.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"meta.freshness.items.[INDEX].latest_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.freshness.items.[INDEX].latest_at","typeLabel":"string | null"}},"uniqueKey":"meta.freshness.items.[INDEX]","typeLabel":"object"},"uniqueKey":"meta.freshness","typeLabel":"object[]"},"unavailable":{"type":"array","description":"Metrics that were not measured. Never read them as zero.","items":{"type":"object","properties":{"metric":{"type":"string","uniqueKey":"meta.unavailable.items.[INDEX].metric","typeLabel":"string"},"reason":{"type":"string","description":"For example `source_not_connected`, `not_modelled`, `timeout`.","uniqueKey":"meta.unavailable.items.[INDEX].reason","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"meta.unavailable.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"meta.unavailable.items.[INDEX]","typeLabel":"object"},"uniqueKey":"meta.unavailable","typeLabel":"object[]"},"deep_link":{"oneOf":[{"type":"string","description":"Dashboard path that shows the same slice.","uniqueKey":"meta.deep_link.oneOf.0","typeLabel":"string"},{"type":"null","description":"Dashboard path that shows the same slice.","uniqueKey":"meta.deep_link.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.deep_link","typeLabel":"string | null"},"executed_in_ms":{"type":"integer","uniqueKey":"meta.executed_in_ms","typeLabel":"integer"},"notes":{"type":"array","items":{"type":"string","uniqueKey":"meta.notes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"meta.notes","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"meta","typeLabel":"object"},"comparison":{"oneOf":[{"type":"object","additionalProperties":true,"properties":{"date_range":{"type":"object","properties":{"from":{"type":"string","uniqueKey":"comparison.oneOf.0.date_range.from","typeLabel":"string"},"to":{"type":"string","uniqueKey":"comparison.oneOf.0.date_range.to","typeLabel":"string"}},"uniqueKey":"comparison.oneOf.0.date_range","typeLabel":"object"},"totals":{"type":"object","additionalProperties":{"oneOf":[{"type":"number","uniqueKey":"comparison.oneOf.0.totals.additionalProperties.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"comparison.oneOf.0.totals.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"comparison.oneOf.0.totals.additionalProperties","typeLabel":"number | null"},"uniqueKey":"comparison.oneOf.0.totals","typeLabel":"object"},"rows":{"type":"array","items":{"type":"object","additionalProperties":true,"uniqueKey":"comparison.oneOf.0.rows.items.[INDEX]","typeLabel":"object"},"uniqueKey":"comparison.oneOf.0.rows","typeLabel":"object[]"}},"uniqueKey":"comparison.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"properties":{"date_range":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}}},"totals":{"type":"object","additionalProperties":{"oneOf":[{"type":"number"},{"type":"null"}]}},"rows":{"type":"array","items":{"type":"object","additionalProperties":true}}},"uniqueKey":"comparison.oneOf.1","typeLabel":"null"}],"uniqueKey":"comparison","typeLabel":"object | null"},"data_notice":{"type":"string","description":"Reminds a reader that strings in rows are recorded data, not instructions.","uniqueKey":"data_notice","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"rows":[{}],"totals":{},"meta":{"resolved":{"metrics":[{"id":"\u003cstring>","label":"\u003cstring>","unit":"count","definition":"\u003cstring>","domain":"events","attributed":true,"currency":"\u003cstring>"}],"dimensions":[{}],"filters":[{"dimension":"\u003cstring>","op":"eq","value":"\u003cstring>"}],"date_range":{"from":"\u003cstring>","to":"\u003cstring>","timezone":"\u003cstring>","preset":"\u003cstring>"},"granularity":"\u003cstring>","attribution":{"model":"\u003cstring>","window_days":123,"source":"requested"}},"returned_rows":123,"truncated":true,"total_rows":123,"next_cursor":"\u003cstring>","freshness":[{"source":"\u003cstring>","latest_at":"\u003cstring>"}],"unavailable":[{"metric":"\u003cstring>","reason":"\u003cstring>","detail":"\u003cstring>"}],"deep_link":"\u003cstring>","executed_in_ms":123,"notes":["\u003cstring>"]},"comparison":{"date_range":{"from":"\u003cstring>","to":"\u003cstring>"},"totals":{},"rows":[{}]},"data_notice":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"74468de7-47ce-4860-8cc5-7744f2279e48":{"description":"The plan or parameters cannot run. `hint` says how to fix them.","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["unknown_metric","unknown_dimension","unsupported_dimension","invalid_filter","invalid_date_range","attribution_required","too_many_dimensions","too_many_metrics","invalid_cursor","invalid_order"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","description":"A concrete fix, such as the closest valid id.","uniqueKey":"hint","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"unknown_metric","hint":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"642b1fd3-16a3-47f0-b944-0be25a8bf75a":{"description":"Error response.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"11453e1a-a897-4516-b3d5-3777d179c6cd":{"description":"Error response.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"d4c1d268-b584-42ba-bea7-fc811ecb7c59":{"description":"Error response.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"6042b473-0802-451b-85ea-c4070c75d098":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Datalyr Agent key (dk_agent_…)","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"78ceae59-a477-4949-898e-d94f40b1c3ae":{"url":"https://api.datalyr.com/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"Datalyr Agent key (dk_agent_…)","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/read-api.yaml"},"subdomain":"datalyr","siteName":"Datalyr Docs","title":"Run a query plan - Datalyr Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T15:48:26.642Z","originalFileLocation":"api-reference/query/run-a-query-plan.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=\"Any metric by any dimension, filter and time range. Get metric ids from GET /search?kind=metric and dimension ids from GET /dimensions. Funnels, retention, cohort LTV and one person\u0026#x27;s journey have their own routes. A plan the server cannot run is a 400 with error, code and a hint that says how to fix it. The body is capped at 64 KiB (413 above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in meta.unavailable with reason timeout.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Datalyr Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_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/datalyr/OtXrSaasPyqjg3q6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_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/datalyr/OtXrSaasPyqjg3q6/_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/datalyr/OtXrSaasPyqjg3q6/_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/datalyr/OtXrSaasPyqjg3q6/_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/datalyr/OtXrSaasPyqjg3q6/_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/datalyr/OtXrSaasPyqjg3q6/_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/datalyr/OtXrSaasPyqjg3q6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Run a query plan - Datalyr Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Any metric by any dimension, filter and time range. Get metric ids from GET /search?kind=metric and dimension ids from GET /dimensions. Funnels, retention, cohort LTV and one person\u0026#x27;s journey have their own routes. A plan the server cannot run is a 400 with error, code and a hint that says how to fix it. The body is capped at 64 KiB (413 above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in meta.unavailable with reason timeout.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Datalyr Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.datalyr.com/api-reference/query/run-a-query-plan\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://datalyr.mintlify.site/_mintlify/api/og/v2?division=Query\u0026amp;title=Run+a+query+plan\u0026amp;description=Any+metric+by+any+dimension%2C+filter+and+time+range.+Get+metric+ids+from+%60GET+%2Fsearch%3Fkind%3Dmetric%60+and+dimension+ids+from+%60GET+%2Fdimensions%60.+Funnels%2C+retention%2C+\u0026amp;theme=cfd8a5cf5a95aa7efc3c16b4\u0026amp;signature=9da0aee4eb7cfe562d0ab66147aeaa46050609c0119217245b96b223325d8ceb\">\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=\"Run a query plan - Datalyr Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Any metric by any dimension, filter and time range. Get metric ids from GET /search?kind=metric and dimension ids from GET /dimensions. Funnels, retention, cohort LTV and one person\u0026#x27;s journey have their own routes. A plan the server cannot run is a 400 with error, code and a hint that says how to fix it. The body is capped at 64 KiB (413 above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in meta.unavailable with reason timeout.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://datalyr.mintlify.site/_mintlify/api/og/v2?division=Query\u0026amp;title=Run+a+query+plan\u0026amp;description=Any+metric+by+any+dimension%2C+filter+and+time+range.+Get+metric+ids+from+%60GET+%2Fsearch%3Fkind%3Dmetric%60+and+dimension+ids+from+%60GET+%2Fdimensions%60.+Funnels%2C+retention%2C+\u0026amp;theme=cfd8a5cf5a95aa7efc3c16b4\u0026amp;signature=9da0aee4eb7cfe562d0ab66147aeaa46050609c0119217245b96b223325d8ceb\">\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/datalyr/OtXrSaasPyqjg3q6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Datalyr Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FC6600\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.datalyr.com/api-reference/query/run-a-query-plan\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/query/run-a-query-plan.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.datalyr.com/#organization\",\"name\":\"Datalyr Docs\",\"url\":\"https://docs.datalyr.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/datalyr/ROJj0wlntTvU8OM_/light.svg?fit=max\u0026auto=format\u0026n=ROJj0wlntTvU8OM_\u0026q=85\u0026s=29f98b487b8f65c3bd267065db18b4b9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.datalyr.com#website\",\"name\":\"Datalyr Docs\",\"url\":\"https://docs.datalyr.com\",\"publisher\":{\"@id\":\"https://docs.datalyr.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.datalyr.com/api-reference/query/run-a-query-plan#webpage\",\"url\":\"https://docs.datalyr.com/api-reference/query/run-a-query-plan\",\"name\":\"Run a query plan\",\"description\":\"Any metric by any dimension, filter and time range. Get metric ids from GET /search?kind=metric and dimension ids from GET /dimensions. Funnels, retention, cohort LTV and one person's journey have their own routes. A plan the server cannot run is a 400 with error, code and a hint that says how to fix it. The body is capped at 64 KiB (413 above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in meta.unavailable with reason timeout.\",\"dateModified\":\"2026-10-15T15:48:26.642Z\",\"isPartOf\":{\"@id\":\"https://docs.datalyr.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.datalyr.com/api-reference/query/run-a-query-plan#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.datalyr.com/api-reference/query/run-a-query-plan#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Datalyr Docs\",\"item\":\"https://docs.datalyr.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Run a query plan\",\"item\":\"https://docs.datalyr.com/api-reference/query/run-a-query-plan\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.datalyr.com/api-reference/query/run-a-query-plan#apireference\",\"headline\":\"Run a query plan\",\"name\":\"Run a query plan\",\"description\":\"Any metric by any dimension, filter and time range. Get metric ids from GET /search?kind=metric and dimension ids from GET /dimensions. Funnels, retention, cohort LTV and one person's journey have their own routes. A plan the server cannot run is a 400 with error, code and a hint that says how to fix it. The body is capped at 64 KiB (413 above it). A query runs for at most 20 seconds; a source that did not answer in time is listed in meta.unavailable with reason timeout.\",\"url\":\"https://docs.datalyr.com/api-reference/query/run-a-query-plan\",\"mainEntityOfPage\":{\"@id\":\"https://docs.datalyr.com/api-reference/query/run-a-query-plan#webpage\"},\"dateModified\":\"2026-10-15T15:48:26.642Z\",\"publisher\":{\"@id\":\"https://docs.datalyr.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.datalyr.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Datalyr Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Datalyr Docs","nav":{"global":null,"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":""}]},{"tab":"Use cases","pages":[{"title":"Use cases","href":"/use-cases/shopify"}]},{"tab":"API \u0026 MCP","groups":[{"group":"Agents and MCP","pages":[{"title":"Agent access","href":"/api-reference/agents"},{"title":"Agent-driven setup","href":"/developer/agent-driven-setup"},{"title":"Connect Claude or Codex","href":"/datalyr-mcp"}]},{"group":"Agent ads","pages":[{"title":"Agent ads","href":"/agent-ads/index"},{"title":"Create your first agent ad","href":"/agent-ads/get-started"},{"title":"How agents publish","href":"/agent-ads/how-publishing-works"},{"title":"The review page","href":"/agent-ads/review-page"},{"title":"Ad playbooks","href":"/agent-ads/playbook"},{"title":"Access levels and who uploads","href":"/agent-ads/access-and-approvals"},{"title":"Turn ads on within spend limits","href":"/agent-ads/live-ads-and-spend-limits"},{"title":"Change ads after launch","href":"/agent-ads/change-ads"},{"title":"Stop agent ads and alerts","href":"/agent-ads/stop-and-alerts"},{"title":"Add ad files","href":"/agent-ads/files"},{"title":"Meta","href":"/agent-ads/meta"},{"title":"TikTok","href":"/agent-ads/tiktok"},{"title":"Google Ads","href":"/agent-ads/google"},{"title":"Agent ad tools","href":"/agent-ads/tools"},{"title":"Troubleshoot agent ads","href":"/agent-ads/troubleshooting"}]},{"group":"API Reference","pages":[{"title":"API reference","href":"/api-reference/index"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"TypeScript client","href":"/api-reference/typescript-client"},{"title":"Errors and limits","href":"/api-reference/errors-and-limits"},{"title":"Ingest API","href":"/api-reference/ingest"}]},{"group":"Analytics","pages":[{"title":"Get overview","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /overview","href":"/api-reference/analytics/get-overview"},{"title":"Get traffic","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /traffic","href":"/api-reference/analytics/get-traffic"},{"title":"Get devices","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /devices","href":"/api-reference/analytics/get-devices"},{"title":"Get locations","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /locations","href":"/api-reference/analytics/get-locations"},{"title":"Get realtime activity","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /realtime","href":"/api-reference/analytics/get-realtime-activity"}]},{"group":"Events and users","pages":[{"title":"List events","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /events","href":"/api-reference/events-and-users/list-events"},{"title":"List event properties","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /events/properties","href":"/api-reference/events-and-users/list-event-properties"},{"title":"List event names","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /event-names","href":"/api-reference/events-and-users/list-event-names"},{"title":"List users","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /users","href":"/api-reference/events-and-users/list-users"},{"title":"Get user","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /users/{userId}","href":"/api-reference/events-and-users/get-user"}]},{"group":"Attribution and revenue","pages":[{"title":"Get attribution","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /attribution","href":"/api-reference/attribution-and-revenue/get-attribution"},{"title":"Get ad performance","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /ads","href":"/api-reference/attribution-and-revenue/get-ad-performance"},{"title":"Get certified commerce metrics","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /commerce-metrics","href":"/api-reference/attribution-and-revenue/get-certified-commerce-metrics"},{"title":"Get revenue","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /revenue","href":"/api-reference/attribution-and-revenue/get-revenue"},{"title":"Get trackable link tags","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /tags","href":"/api-reference/attribution-and-revenue/get-trackable-link-tags"}]},{"group":"Cohorts and funnels","pages":[{"title":"Get retention cohorts","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /retention","href":"/api-reference/events-and-users/get-retention-cohorts"},{"title":"Get cohort LTV","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /ltv","href":"/api-reference/events-and-users/get-cohort-ltv"},{"title":"Get a conversion funnel","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /funnel","href":"/api-reference/events-and-users/get-a-conversion-funnel"}]},{"group":"Metrics","pages":[{"title":"Query metrics","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /metrics","href":"/api-reference/attribution-and-revenue/query-metrics"},{"title":"List queryable metrics","description":"Discover every metric id `POST /metrics` accepts, with its unit, category and availability. A metric with `supported: false` resolves but never queries a source: it returns an explicit `unavailableReason` instead of a number. Cached for five minutes.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /metrics/catalog","href":"/api-reference/attribution-and-revenue/list-queryable-metrics"}]},{"group":"Query","pages":[{"title":"Run a query plan","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /query","href":"/api-reference/query/run-a-query-plan"},{"title":"List query dimensions","description":"Every dimension id `POST /query` can group or filter by, with its domain. `enumerable: true` means `GET /dimension-values` can list its values. Filter-only ids such as `property:\u003ckey>` cannot be grouped by.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /dimensions","href":"/api-reference/query/list-query-dimensions"},{"title":"List dimension values","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /dimension-values","href":"/api-reference/query/list-dimension-values"},{"title":"Get workspace context","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /context","href":"/api-reference/query/get-workspace-context"},{"title":"Find ids by name","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /search","href":"/api-reference/query/find-ids-by-name"},{"title":"Get subscription state","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /subscriptions","href":"/api-reference/query/get-subscription-state"}]},{"group":"Workspace","pages":[{"title":"Get workspace","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /workspace","href":"/api-reference/workspace/get-workspace"},{"title":"Get usage","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /usage","href":"/api-reference/workspace/get-usage"},{"title":"Get onboarding status","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /onboarding","href":"/api-reference/signup-and-onboarding/get-onboarding-status"},{"title":"Start a signup","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /signup","href":"/api-reference/signup-and-onboarding/start-a-signup"},{"title":"Get signup status","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /signup/{signupId}","href":"/api-reference/signup-and-onboarding/get-signup-status"},{"title":"Search documentation","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /docs/search","href":"/api-reference/documentation/search-documentation"}]},{"group":"Keys and approvals","pages":[{"title":"Request a key by approval link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /keys/requests","href":"/api-reference/keys-and-approvals/request-a-key-by-approval-link"},{"title":"Poll a key request","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /keys/requests/{requestId}","href":"/api-reference/keys-and-approvals/poll-a-key-request"},{"title":"Exchange an OAuth token for a key","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /keys","href":"/api-reference/keys-and-approvals/exchange-an-oauth-token-for-a-key"}]},{"group":"Conversion rules","pages":[{"title":"List conversion rules","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /rules","href":"/api-reference/write-api/list-conversion-rules"},{"title":"Create a conversion rule","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /rules","href":"/api-reference/write-api/create-a-conversion-rule"},{"title":"Update a conversion rule","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /rules/{ruleId}","href":"/api-reference/write-api/update-a-conversion-rule"},{"title":"Delete a conversion rule","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /rules/{ruleId}","href":"/api-reference/write-api/delete-a-conversion-rule"}]},{"group":"Trackable links","pages":[{"title":"List trackable links","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /links","href":"/api-reference/write-api/list-trackable-links"},{"title":"Create a trackable link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /links","href":"/api-reference/write-api/create-a-trackable-link"},{"title":"Update a trackable link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /links/{linkId}","href":"/api-reference/write-api/update-a-trackable-link"},{"title":"Delete a trackable link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /links/{linkId}","href":"/api-reference/write-api/delete-a-trackable-link"}]},{"group":"Saved reports","pages":[{"title":"List saved reports","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /reports","href":"/api-reference/saved-reports/list-saved-reports"},{"title":"Create a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /reports","href":"/api-reference/saved-reports/create-a-saved-report"},{"title":"Get a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /reports/{reportId}","href":"/api-reference/saved-reports/get-a-saved-report"},{"title":"Update a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /reports/{reportId}","href":"/api-reference/saved-reports/update-a-saved-report"},{"title":"Delete a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /reports/{reportId}","href":"/api-reference/saved-reports/delete-a-saved-report"},{"title":"Run a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /reports/{reportId}/run","href":"/api-reference/saved-reports/run-a-saved-report"},{"title":"Reorder saved reports","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /reports/reorder","href":"/api-reference/saved-reports/reorder-saved-reports"}]},{"group":"Dashboards, analyses and share links","pages":[{"title":"List dashboards","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /dashboards","href":"/api-reference/dashboards/list-dashboards"},{"title":"Create a dashboard","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /dashboards","href":"/api-reference/dashboards/create-a-dashboard"},{"title":"Get a dashboard","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /dashboards/{dashboardId}","href":"/api-reference/dashboards/get-a-dashboard"},{"title":"Update a dashboard","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /dashboards/{dashboardId}","href":"/api-reference/dashboards/update-a-dashboard"},{"title":"Delete a dashboard","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /dashboards/{dashboardId}","href":"/api-reference/dashboards/delete-a-dashboard"},{"title":"Run a dashboard","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /dashboards/{dashboardId}/run","href":"/api-reference/dashboards/run-a-dashboard"},{"title":"List analyses","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /analyses","href":"/api-reference/dashboards/list-analyses"},{"title":"Create an analysis","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /analyses","href":"/api-reference/dashboards/create-an-analysis"},{"title":"Get an analysis","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /analyses/{analysisId}","href":"/api-reference/dashboards/get-an-analysis"},{"title":"Update an analysis","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /analyses/{analysisId}","href":"/api-reference/dashboards/update-an-analysis"},{"title":"Delete an analysis","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /analyses/{analysisId}","href":"/api-reference/dashboards/delete-an-analysis"},{"title":"List share links","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /share-links","href":"/api-reference/dashboards/list-share-links"},{"title":"Create a share link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /share-links","href":"/api-reference/dashboards/create-a-share-link"},{"title":"Revoke a share link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /share-links/{shareLinkId}","href":"/api-reference/dashboards/revoke-a-share-link"}]},{"group":"Session replay","pages":[{"title":"List recorded sessions","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /replay/sessions","href":"/api-reference/session-replay/list-recorded-sessions"},{"title":"Get session summaries","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /replay/summary","href":"/api-reference/session-replay/get-session-summaries"}]},{"group":"Exports","pages":[{"title":"List recent exports","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /exports","href":"/api-reference/exports/list-recent-exports"},{"title":"Start an export","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /exports","href":"/api-reference/exports/start-an-export"},{"title":"Get export status","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /exports/{exportId}","href":"/api-reference/exports/get-export-status"}]}]},{"tab":"SDK Reference","pages":[{"title":"SDK Reference","href":"/sdk-reference"}]}]},"basePath":"","title":"Run a query plan - Datalyr Docs","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}