Save a markdown write-up with the plans behind its numbers. Needs datalyr:write:reports.
Put the exact analytics_query plans you ran in plans; they are shown under “How this was calculated”. Each plan is validated as POST /query would validate it, without running it. Embed a saved report on its own line as ::report[<id>] and list the id in report_ids. An embed whose id is not in report_ids returns 422 with code: invalid_embed. Attached reports that are not embedded render after the body.
Retry-safe token for this create. The first request performed under a given key has its response kept for 24 hours; an identical retry returns that same response with Idempotent-Replay: true instead of creating a second resource. The record covers the request body, so reusing a key with different content is a new request rather than a replay. Ignored on a dry run, which creates nothing to be idempotent about.
The change, in full. A dry run returns the change it WOULD make; an applied write returns the change it DID make, in the same shape, so the two can be compared directly.
Present on an applied write. The handle POST /audit/{auditId}/undo takes.
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/dashboards/create-an-analysis","slug":"/api-reference/dashboards/create-an-analysis","pageMetadata":{"title":"Create an analysis","description":"Save a markdown write-up with the plans behind its numbers. Needs `datalyr:write:reports`.\n\nPut the exact `analytics_query` plans you ran in `plans`; they are shown under \"How this was calculated\". Each plan is validated as `POST /query` would validate it, without running it. Embed a saved report on its own line as `::report[\u003cid>]` and list the id in `report_ids`. An embed whose id is not in `report_ids` returns `422` with `code: invalid_embed`. Attached reports that are not embedded render after the body.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /analyses","href":"/api-reference/dashboards/create-an-analysis","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: [\"Save a markdown write-up with the plans behind its numbers. Needs \", _jsx(_components.code, {\n children: \"datalyr:write:reports\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Put the exact \", _jsx(_components.code, {\n children: \"analytics_query\"\n }), \" plans you ran in \", _jsx(_components.code, {\n children: \"plans\"\n }), \"; they are shown under “How this was calculated”. Each plan is validated as \", _jsx(_components.code, {\n children: \"POST /query\"\n }), \" would validate it, without running it. Embed a saved report on its own line as \", _jsx(_components.code, {\n children: \"::report[\u003cid>]\"\n }), \" and list the id in \", _jsx(_components.code, {\n children: \"report_ids\"\n }), \". An embed whose id is not in \", _jsx(_components.code, {\n children: \"report_ids\"\n }), \" returns \", _jsx(_components.code, {\n children: \"422\"\n }), \" with \", _jsx(_components.code, {\n children: \"code: invalid_embed\"\n }), \". Attached reports that are not embedded render after the body.\"]\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":"Create an analysis","description":"Save a markdown write-up with the plans behind its numbers. Needs `datalyr:write:reports`.\n\nPut the exact `analytics_query` plans you ran in `plans`; they are shown under \"How this was calculated\". Each plan is validated as `POST /query` would validate it, without running it. Embed a saved report on its own line as `::report[\u003cid>]` and list the id in `report_ids`. An embed whose id is not in `report_ids` returns `422` with `code: invalid_embed`. Attached reports that are not embedded render after the body.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /analyses","href":"/api-reference/dashboards/create-an-analysis","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Dashboards","analyses and share links"],"summary":"Create an analysis","description":"Save a markdown write-up with the plans behind its numbers. Needs `datalyr:write:reports`.\n\nPut the exact `analytics_query` plans you ran in `plans`; they are shown under \"How this was calculated\". Each plan is validated as `POST /query` would validate it, without running it. Embed a saved report on its own line as `::report[\u003cid>]` and list the id in `report_ids`. An embed whose id is not in `report_ids` returns `422` with `code: invalid_embed`. Attached reports that are not embedded render after the body.","operationId":"create-analysis","parameters":["ac44fa37-ea39-4797-8897-d188271b46ff"],"requestBody":"e941be72-3904-49cc-b29a-0d1211f065aa","responses":{"200":"d2c0a3f8-501e-4fb5-b63c-54ab8d8ae554","201":"912c0563-874a-4acb-a6f2-fb444a8f01eb","400":"2ab0dddf-a693-4bf3-b12e-fe1a01e77936","403":"d57f2d1b-f4ed-47ec-88b8-0b33c8643d94","409":"6aec2a61-4281-40d5-8ffd-09cd94086875","422":"d0c3c63d-ed38-434d-8e52-d0f6a364a7ef","429":"1666a912-2442-4f8d-8648-34266b800cbd"},"method":"post","type":"path","servers":["78ceae59-a477-4949-898e-d94f40b1c3ae"],"security":["6042b473-0802-451b-85ea-c4070c75d098"],"path":"/analyses","baseUrlOptions":["https://api.datalyr.com/v1"],"title":"Create an analysis","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ac44fa37-ea39-4797-8897-d188271b46ff":{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry-safe token for this create. The first request performed under a given key has its response kept for 24 hours; an identical retry returns that same response with `Idempotent-Replay: true` instead of creating a second resource. The record covers the request body, so reusing a key with different content is a new request rather than a replay. Ignored on a dry run, which creates nothing to be idempotent about.","schema":{"type":"string","maxLength":255,"isRequired":false,"description":"Retry-safe token for this create. The first request performed under a given key has its response kept for 24 hours; an identical retry returns that same response with `Idempotent-Replay: true` instead of creating a second resource. The record covers the request body, so reusing a key with different content is a new request rather than a replay. Ignored on a dry run, which creates nothing to be idempotent about.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["analysis"],"properties":{"analysis":{"type":"object","required":["title","body_md"],"properties":{"title":{"type":"string","minLength":1,"maxLength":120,"isRequired":true,"uniqueKey":"analysis.title","typeLabel":"string"},"body_md":{"type":"string","maxLength":50000,"isRequired":true,"uniqueKey":"analysis.body_md","typeLabel":"string"},"plans":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["id","plan"],"properties":{"id":{"type":"string","pattern":"^[a-z0-9_-]{1,32}$","description":"Unique within the analysis.","isRequired":true,"uniqueKey":"analysis.plans.items.[INDEX].id","typeLabel":"string"},"plan":{"type":"object","required":["metrics","date_range"],"properties":{"metrics":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","uniqueKey":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.date_range.oneOf.0.from","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"analysis.plans.items.[INDEX].plan.date_range.oneOf.0.to","typeLabel":"string"}},"isRequired":true,"uniqueKey":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.date_range.oneOf.1.preset","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"analysis.plans.items.[INDEX].plan.date_range.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"analysis.plans.items.[INDEX].plan.date_range","typeLabel":"object"},"dimensions":{"type":"array","maxItems":3,"items":{"type":"string","uniqueKey":"analysis.plans.items.[INDEX].plan.dimensions.items.[INDEX]","typeLabel":"string"},"description":"Dimension ids from `GET /dimensions`. Omit for totals only.","uniqueKey":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"analysis.plans.items.[INDEX].plan.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"analysis.plans.items.[INDEX].plan.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.filters.items.[INDEX].value.oneOf.2","typeLabel":"(string | number)[]"}],"uniqueKey":"analysis.plans.items.[INDEX].plan.filters.items.[INDEX].value","typeLabel":"string | number | (string | number)[]"}},"uniqueKey":"analysis.plans.items.[INDEX].plan.filters.items.[INDEX]","typeLabel":"object"},"description":"Combined with AND.","uniqueKey":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.granularity.oneOf.1","typeLabel":"null"}],"uniqueKey":"analysis.plans.items.[INDEX].plan.granularity","typeLabel":"enum\u003cstring> | null"},"compare":{"oneOf":[{"type":"string","enum":["previous_period",null],"description":"Also compute the preceding window of equal width.","uniqueKey":"analysis.plans.items.[INDEX].plan.compare.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["previous_period",null],"description":"Also compute the preceding window of equal width.","uniqueKey":"analysis.plans.items.[INDEX].plan.compare.oneOf.1","typeLabel":"null"}],"uniqueKey":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.attribution.oneOf.0.model","typeLabel":"enum\u003cstring>"},"window_days":{"type":"integer","minimum":1,"maximum":90,"isRequired":true,"uniqueKey":"analysis.plans.items.[INDEX].plan.attribution.oneOf.0.window_days","typeLabel":"integer"}},"uniqueKey":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.attribution.oneOf.1","typeLabel":"null"}],"uniqueKey":"analysis.plans.items.[INDEX].plan.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":"analysis.plans.items.[INDEX].plan.order_by.items.[INDEX].field","typeLabel":"string"},"dir":{"type":"string","enum":["asc","desc"],"isRequired":true,"uniqueKey":"analysis.plans.items.[INDEX].plan.order_by.items.[INDEX].dir","typeLabel":"enum\u003cstring>"}},"uniqueKey":"analysis.plans.items.[INDEX].plan.order_by.items.[INDEX]","typeLabel":"object"},"uniqueKey":"analysis.plans.items.[INDEX].plan.order_by","typeLabel":"object[]"},"limit":{"type":"integer","minimum":1,"maximum":2000,"default":200,"uniqueKey":"analysis.plans.items.[INDEX].plan.limit","typeLabel":"integer"},"cursor":{"oneOf":[{"type":"string","description":"`meta.next_cursor` from the previous page.","uniqueKey":"analysis.plans.items.[INDEX].plan.cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"`meta.next_cursor` from the previous page.","uniqueKey":"analysis.plans.items.[INDEX].plan.cursor.oneOf.1","typeLabel":"null"}],"uniqueKey":"analysis.plans.items.[INDEX].plan.cursor","typeLabel":"string | null"},"response_format":{"type":"string","enum":["concise","detailed"],"default":"concise","uniqueKey":"analysis.plans.items.[INDEX].plan.response_format","typeLabel":"enum\u003cstring>"}},"description":"The `analytics_query` plan behind a number in the body. Validated, never run, on save. Shown under \"How this was calculated\".","isRequired":true,"uniqueKey":"analysis.plans.items.[INDEX].plan","typeLabel":"object"},"label":{"type":"string","maxLength":120,"uniqueKey":"analysis.plans.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"analysis.plans.items.[INDEX]","typeLabel":"object"},"uniqueKey":"analysis.plans","typeLabel":"object[]"},"report_ids":{"type":"array","maxItems":12,"uniqueItems":true,"items":{"type":"string","format":"uuid","uniqueKey":"analysis.report_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"uniqueKey":"analysis.report_ids","typeLabel":"string\u003cuuid>[]"},"date_range":{"oneOf":[{"type":"object","description":"`{from, to}` (inclusive; `YYYY-MM-DD` in the workspace timezone, or ISO 8601 instants) or `{preset}`, as in `POST /query`.","required":["from","to"],"properties":{"from":{"type":"string","isRequired":true,"uniqueKey":"analysis.date_range.oneOf.0.from","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"analysis.date_range.oneOf.0.to","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"analysis.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}`, as in `POST /query`.","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":"analysis.date_range.oneOf.1.preset","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"analysis.date_range.oneOf.1","typeLabel":"object"},{"type":"null","uniqueKey":"analysis.date_range.oneOf.2","typeLabel":"null"}],"uniqueKey":"analysis.date_range","typeLabel":"object · object · null"},"expected_updated_at":{"type":"string","format":"date-time","description":"`PATCH` only. The `updated_at` you read. A mismatch returns `409 stale_analysis`.","uniqueKey":"analysis.expected_updated_at","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"analysis","typeLabel":"object"},"dry_run":{"type":"boolean","default":false,"uniqueKey":"dry_run","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"analysis":{"title":"\u003cstring>","body_md":"\u003cstring>","plans":[{"id":"\u003cstring>","plan":{"metrics":["\u003cstring>"],"date_range":{"from":"\u003cstring>","to":"\u003cstring>"},"dimensions":["\u003cstring>"],"filters":[{"dimension":"\u003cstring>","value":"\u003cstring>"}],"attribution":{"window_days":45},"order_by":[{"field":"\u003cstring>"}],"limit":200,"cursor":"\u003cstring>","response_format":"concise"},"label":"\u003cstring>"}],"report_ids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"date_range":{"from":"\u003cstring>","to":"\u003cstring>"},"expected_updated_at":"2023-11-07T05:31:56Z"},"dry_run":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"d2c0a3f8-501e-4fb5-b63c-54ab8d8ae554":{"description":"Nothing was written. The body describes the change that would have been made, including every effect beyond the row itself.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["dry_run","applied","diff"],"properties":{"dry_run":{"type":"boolean","isRequired":true,"uniqueKey":"dry_run","typeLabel":"boolean"},"applied":{"type":"boolean","description":"False on a dry run and on every error.","isRequired":true,"uniqueKey":"applied","typeLabel":"boolean"},"diff":{"type":"object","additionalProperties":true,"description":"The change, in full. A dry run returns the change it WOULD make; an applied write returns the change it DID make, in the same shape, so the two can be compared directly.","properties":{"action":{"type":"string","description":"`\u003cresource>.\u003cverb>`, such as conversion_rule.update.","uniqueKey":"diff.action","typeLabel":"string"},"resource":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","enum":["conversion_rule","trackable_link","saved_report","dashboard","analysis","share_link","script_proposal"],"uniqueKey":"diff.resource.type","typeLabel":"enum\u003cstring>"},"id":{"oneOf":[{"type":"string","description":"Null for a dry-run create, which has no id yet.","uniqueKey":"diff.resource.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Null for a dry-run create, which has no id yet.","uniqueKey":"diff.resource.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.resource.id","typeLabel":"string | null"},"label":{"oneOf":[{"type":"string","uniqueKey":"diff.resource.label.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"diff.resource.label.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.resource.label","typeLabel":"string | null"}},"uniqueKey":"diff.resource","typeLabel":"object"},"prior_state":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"diff.prior_state.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"diff.prior_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.prior_state","typeLabel":"object | null"},"new_state":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"diff.new_state.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"diff.new_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.new_state","typeLabel":"object | null"},"changes":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"field":{"type":"string","uniqueKey":"diff.changes.items.[INDEX].field","typeLabel":"string"},"from":{"oneOf":[{}],"uniqueKey":"diff.changes.items.[INDEX].from","typeLabel":"any"},"to":{"oneOf":[{}],"uniqueKey":"diff.changes.items.[INDEX].to","typeLabel":"any"}},"uniqueKey":"diff.changes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"diff.changes","typeLabel":"object[]"},"effects":{"type":"array","items":{"type":"object","additionalProperties":true,"description":"Something the write changes beyond the row itself. Read these before applying anything: `postback_target` is where a conversion rule sends events, which is the part that moves money.","properties":{"type":{"type":"string","enum":["postback_target","postback_target_removed","edge_kv","cache_revalidate","proposal_pending"],"uniqueKey":"diff.effects.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"summary":{"type":"string","description":"Plain-language statement of the effect.","uniqueKey":"diff.effects.items.[INDEX].summary","typeLabel":"string"},"platform":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].platform","typeLabel":"string"},"ad_account_id":{"oneOf":[{"type":"string","uniqueKey":"diff.effects.items.[INDEX].ad_account_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"diff.effects.items.[INDEX].ad_account_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].ad_account_id","typeLabel":"string | null"},"asset_id":{"oneOf":[{"type":"string","description":"The pixel, pixel code or conversion action receiving events.","uniqueKey":"diff.effects.items.[INDEX].asset_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The pixel, pixel code or conversion action receiving events.","uniqueKey":"diff.effects.items.[INDEX].asset_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].asset_id","typeLabel":"string | null"},"asset_field":{"oneOf":[{"type":"string","description":"The config key the postback worker reads the asset from.","uniqueKey":"diff.effects.items.[INDEX].asset_field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The config key the postback worker reads the asset from.","uniqueKey":"diff.effects.items.[INDEX].asset_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].asset_field","typeLabel":"string | null"},"endpoint_url_masked":{"oneOf":[{"type":"string","description":"`platform: webhook` only. The destination endpoint with its origin visible and its path masked (`https://hooks.acme.com/••••••••a1b2`). Masked because this effect is persisted on the audit row, and a webhook path is frequently the receiver's only credential. Null for every ad platform.","uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked.oneOf.0","typeLabel":"string"},{"type":"null","description":"`platform: webhook` only. The destination endpoint with its origin visible and its path masked (`https://hooks.acme.com/••••••••a1b2`). Masked because this effect is persisted on the audit row, and a webhook path is frequently the receiver's only credential. Null for every ad platform.","uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked","typeLabel":"string | null"},"trigger_event":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].trigger_event","typeLabel":"string"},"trigger_event_source":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].trigger_event_source","typeLabel":"string"},"platform_event":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].platform_event","typeLabel":"string"},"active":{"type":"boolean","description":"False means the rule exists and fires nothing.","uniqueKey":"diff.effects.items.[INDEX].active","typeLabel":"boolean"},"operation":{"type":"string","enum":["put","delete"],"description":"edge_kv only.","uniqueKey":"diff.effects.items.[INDEX].operation","typeLabel":"enum\u003cstring>"},"key":{"type":"string","description":"edge_kv only: the edge redirect key.","uniqueKey":"diff.effects.items.[INDEX].key","typeLabel":"string"},"path":{"type":"string","description":"cache_revalidate only.","uniqueKey":"diff.effects.items.[INDEX].path","typeLabel":"string"},"requires_approval":{"type":"boolean","description":"`proposal_pending` only, and always true: the absence of an effect, stated. A proposal changes nothing that runs anywhere until a human approves it.","uniqueKey":"diff.effects.items.[INDEX].requires_approval","typeLabel":"boolean"},"approver_roles":{"type":"array","items":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].approver_roles.items.[INDEX]","typeLabel":"string"},"description":"`proposal_pending` only: who can approve it.","uniqueKey":"diff.effects.items.[INDEX].approver_roles","typeLabel":"string[]"},"review_surface":{"type":"string","description":"`proposal_pending` only: where a human reviews it. Not an API path — there is none.","uniqueKey":"diff.effects.items.[INDEX].review_surface","typeLabel":"string"},"supersedes":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"diff.effects.items.[INDEX].supersedes.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"`proposal_pending` only: pending proposals for the same target this one retires.","uniqueKey":"diff.effects.items.[INDEX].supersedes","typeLabel":"string\u003cuuid>[]"}},"uniqueKey":"diff.effects.items.[INDEX]","typeLabel":"object"},"uniqueKey":"diff.effects","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"diff","typeLabel":"object"},"audit_id":{"type":"string","format":"uuid","description":"Present on an applied write. The handle `POST /audit/{auditId}/undo` takes.","uniqueKey":"audit_id","typeLabel":"string\u003cuuid>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"dry_run":true,"applied":true,"diff":{"action":"\u003cstring>","resource":{"type":"conversion_rule","id":"\u003cstring>","label":"\u003cstring>"},"prior_state":{},"new_state":{},"changes":[{"field":"\u003cstring>","from":"\u003cunknown>","to":"\u003cunknown>"}],"effects":[{"type":"postback_target","summary":"\u003cstring>","platform":"\u003cstring>","ad_account_id":"\u003cstring>","asset_id":"\u003cstring>","asset_field":"\u003cstring>","endpoint_url_masked":"\u003cstring>","trigger_event":"\u003cstring>","trigger_event_source":"\u003cstring>","platform_event":"\u003cstring>","active":true,"operation":"put","key":"\u003cstring>","path":"\u003cstring>","requires_approval":true,"approver_roles":["\u003cstring>"],"review_surface":"\u003cstring>","supersedes":["3c90c3cc-0d44-4b50-8888-8dd25736052a"]}]},"audit_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}},"exampleType":"generated"}},"exampleType":"generated"},"912c0563-874a-4acb-a6f2-fb444a8f01eb":{"description":"The write was applied. `diff` describes what changed, `data` is the analysis, and `audit_id` is the handle to undo it.","content":{"application/json":{"schema":{"type":"object","required":["dry_run","applied","diff"],"properties":{"dry_run":{"type":"boolean","isRequired":true,"uniqueKey":"dry_run","typeLabel":"boolean"},"applied":{"type":"boolean","description":"False on a dry run and on every error.","isRequired":true,"uniqueKey":"applied","typeLabel":"boolean"},"diff":{"type":"object","additionalProperties":true,"description":"The change, in full. A dry run returns the change it WOULD make; an applied write returns the change it DID make, in the same shape, so the two can be compared directly.","properties":{"action":{"type":"string","description":"`\u003cresource>.\u003cverb>`, such as conversion_rule.update.","uniqueKey":"diff.action","typeLabel":"string"},"resource":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","enum":["conversion_rule","trackable_link","saved_report","dashboard","analysis","share_link","script_proposal"],"uniqueKey":"diff.resource.type","typeLabel":"enum\u003cstring>"},"id":{"oneOf":[{"type":"string","description":"Null for a dry-run create, which has no id yet.","uniqueKey":"diff.resource.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Null for a dry-run create, which has no id yet.","uniqueKey":"diff.resource.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.resource.id","typeLabel":"string | null"},"label":{"oneOf":[{"type":"string","uniqueKey":"diff.resource.label.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"diff.resource.label.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.resource.label","typeLabel":"string | null"}},"uniqueKey":"diff.resource","typeLabel":"object"},"prior_state":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"diff.prior_state.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"diff.prior_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.prior_state","typeLabel":"object | null"},"new_state":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"diff.new_state.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"diff.new_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.new_state","typeLabel":"object | null"},"changes":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"field":{"type":"string","uniqueKey":"diff.changes.items.[INDEX].field","typeLabel":"string"},"from":{"oneOf":[{}],"uniqueKey":"diff.changes.items.[INDEX].from","typeLabel":"any"},"to":{"oneOf":[{}],"uniqueKey":"diff.changes.items.[INDEX].to","typeLabel":"any"}},"uniqueKey":"diff.changes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"diff.changes","typeLabel":"object[]"},"effects":{"type":"array","items":{"type":"object","additionalProperties":true,"description":"Something the write changes beyond the row itself. Read these before applying anything: `postback_target` is where a conversion rule sends events, which is the part that moves money.","properties":{"type":{"type":"string","enum":["postback_target","postback_target_removed","edge_kv","cache_revalidate","proposal_pending"],"uniqueKey":"diff.effects.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"summary":{"type":"string","description":"Plain-language statement of the effect.","uniqueKey":"diff.effects.items.[INDEX].summary","typeLabel":"string"},"platform":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].platform","typeLabel":"string"},"ad_account_id":{"oneOf":[{"type":"string","uniqueKey":"diff.effects.items.[INDEX].ad_account_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"diff.effects.items.[INDEX].ad_account_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].ad_account_id","typeLabel":"string | null"},"asset_id":{"oneOf":[{"type":"string","description":"The pixel, pixel code or conversion action receiving events.","uniqueKey":"diff.effects.items.[INDEX].asset_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The pixel, pixel code or conversion action receiving events.","uniqueKey":"diff.effects.items.[INDEX].asset_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].asset_id","typeLabel":"string | null"},"asset_field":{"oneOf":[{"type":"string","description":"The config key the postback worker reads the asset from.","uniqueKey":"diff.effects.items.[INDEX].asset_field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The config key the postback worker reads the asset from.","uniqueKey":"diff.effects.items.[INDEX].asset_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].asset_field","typeLabel":"string | null"},"endpoint_url_masked":{"oneOf":[{"type":"string","description":"`platform: webhook` only. The destination endpoint with its origin visible and its path masked (`https://hooks.acme.com/••••••••a1b2`). Masked because this effect is persisted on the audit row, and a webhook path is frequently the receiver's only credential. Null for every ad platform.","uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked.oneOf.0","typeLabel":"string"},{"type":"null","description":"`platform: webhook` only. The destination endpoint with its origin visible and its path masked (`https://hooks.acme.com/••••••••a1b2`). Masked because this effect is persisted on the audit row, and a webhook path is frequently the receiver's only credential. Null for every ad platform.","uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked","typeLabel":"string | null"},"trigger_event":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].trigger_event","typeLabel":"string"},"trigger_event_source":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].trigger_event_source","typeLabel":"string"},"platform_event":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].platform_event","typeLabel":"string"},"active":{"type":"boolean","description":"False means the rule exists and fires nothing.","uniqueKey":"diff.effects.items.[INDEX].active","typeLabel":"boolean"},"operation":{"type":"string","enum":["put","delete"],"description":"edge_kv only.","uniqueKey":"diff.effects.items.[INDEX].operation","typeLabel":"enum\u003cstring>"},"key":{"type":"string","description":"edge_kv only: the edge redirect key.","uniqueKey":"diff.effects.items.[INDEX].key","typeLabel":"string"},"path":{"type":"string","description":"cache_revalidate only.","uniqueKey":"diff.effects.items.[INDEX].path","typeLabel":"string"},"requires_approval":{"type":"boolean","description":"`proposal_pending` only, and always true: the absence of an effect, stated. A proposal changes nothing that runs anywhere until a human approves it.","uniqueKey":"diff.effects.items.[INDEX].requires_approval","typeLabel":"boolean"},"approver_roles":{"type":"array","items":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].approver_roles.items.[INDEX]","typeLabel":"string"},"description":"`proposal_pending` only: who can approve it.","uniqueKey":"diff.effects.items.[INDEX].approver_roles","typeLabel":"string[]"},"review_surface":{"type":"string","description":"`proposal_pending` only: where a human reviews it. Not an API path — there is none.","uniqueKey":"diff.effects.items.[INDEX].review_surface","typeLabel":"string"},"supersedes":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"diff.effects.items.[INDEX].supersedes.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"`proposal_pending` only: pending proposals for the same target this one retires.","uniqueKey":"diff.effects.items.[INDEX].supersedes","typeLabel":"string\u003cuuid>[]"}},"uniqueKey":"diff.effects.items.[INDEX]","typeLabel":"object"},"uniqueKey":"diff.effects","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"diff","typeLabel":"object"},"audit_id":{"type":"string","format":"uuid","description":"Present on an applied write. The handle `POST /audit/{auditId}/undo` takes.","uniqueKey":"audit_id","typeLabel":"string\u003cuuid>"},"data":{"type":"object","additionalProperties":true,"required":["id","title","report_ids","created_via","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"title":{"type":"string","minLength":1,"maxLength":120,"isRequired":true,"uniqueKey":"data.title","typeLabel":"string"},"report_ids":{"type":"array","maxItems":12,"uniqueItems":true,"items":{"type":"string","format":"uuid","uniqueKey":"data.report_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"The reports the analysis shows, embedded or after the body.","isRequired":true,"uniqueKey":"data.report_ids","typeLabel":"string\u003cuuid>[]"},"created_via":{"type":"string","enum":["dashboard","chat","mcp","api"],"description":"`dashboard` means the Datalyr app. `chat` means a person selected Save as analysis in AI chat.","isRequired":true,"uniqueKey":"data.created_via","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"workspace_id":{"type":"string","format":"uuid","uniqueKey":"data.workspace_id","typeLabel":"string\u003cuuid>"},"body_md":{"type":"string","maxLength":50000,"description":"Markdown. Raw HTML is not rendered. A line of the form `::report[\u003cid>]` embeds that report. Not in list responses.","uniqueKey":"data.body_md","typeLabel":"string"},"plans":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["id","plan"],"properties":{"id":{"type":"string","pattern":"^[a-z0-9_-]{1,32}$","description":"Unique within the analysis.","isRequired":true,"uniqueKey":"data.plans.items.[INDEX].id","typeLabel":"string"},"plan":{"type":"object","required":["metrics","date_range"],"properties":{"metrics":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","uniqueKey":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.date_range.oneOf.0.from","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"data.plans.items.[INDEX].plan.date_range.oneOf.0.to","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.date_range.oneOf.1.preset","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.plans.items.[INDEX].plan.date_range.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.plans.items.[INDEX].plan.date_range","typeLabel":"object"},"dimensions":{"type":"array","maxItems":3,"items":{"type":"string","uniqueKey":"data.plans.items.[INDEX].plan.dimensions.items.[INDEX]","typeLabel":"string"},"description":"Dimension ids from `GET /dimensions`. Omit for totals only.","uniqueKey":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"data.plans.items.[INDEX].plan.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.plans.items.[INDEX].plan.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.filters.items.[INDEX].value.oneOf.2","typeLabel":"(string | number)[]"}],"uniqueKey":"data.plans.items.[INDEX].plan.filters.items.[INDEX].value","typeLabel":"string | number | (string | number)[]"}},"uniqueKey":"data.plans.items.[INDEX].plan.filters.items.[INDEX]","typeLabel":"object"},"description":"Combined with AND.","uniqueKey":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.granularity.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.plans.items.[INDEX].plan.granularity","typeLabel":"enum\u003cstring> | null"},"compare":{"oneOf":[{"type":"string","enum":["previous_period",null],"description":"Also compute the preceding window of equal width.","uniqueKey":"data.plans.items.[INDEX].plan.compare.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["previous_period",null],"description":"Also compute the preceding window of equal width.","uniqueKey":"data.plans.items.[INDEX].plan.compare.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.attribution.oneOf.0.model","typeLabel":"enum\u003cstring>"},"window_days":{"type":"integer","minimum":1,"maximum":90,"isRequired":true,"uniqueKey":"data.plans.items.[INDEX].plan.attribution.oneOf.0.window_days","typeLabel":"integer"}},"uniqueKey":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.attribution.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.plans.items.[INDEX].plan.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":"data.plans.items.[INDEX].plan.order_by.items.[INDEX].field","typeLabel":"string"},"dir":{"type":"string","enum":["asc","desc"],"isRequired":true,"uniqueKey":"data.plans.items.[INDEX].plan.order_by.items.[INDEX].dir","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.plans.items.[INDEX].plan.order_by.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.plans.items.[INDEX].plan.order_by","typeLabel":"object[]"},"limit":{"type":"integer","minimum":1,"maximum":2000,"default":200,"uniqueKey":"data.plans.items.[INDEX].plan.limit","typeLabel":"integer"},"cursor":{"oneOf":[{"type":"string","description":"`meta.next_cursor` from the previous page.","uniqueKey":"data.plans.items.[INDEX].plan.cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"`meta.next_cursor` from the previous page.","uniqueKey":"data.plans.items.[INDEX].plan.cursor.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.plans.items.[INDEX].plan.cursor","typeLabel":"string | null"},"response_format":{"type":"string","enum":["concise","detailed"],"default":"concise","uniqueKey":"data.plans.items.[INDEX].plan.response_format","typeLabel":"enum\u003cstring>"}},"description":"The `analytics_query` plan behind a number in the body. Validated, never run, on save. Shown under \"How this was calculated\".","isRequired":true,"uniqueKey":"data.plans.items.[INDEX].plan","typeLabel":"object"},"label":{"type":"string","maxLength":120,"uniqueKey":"data.plans.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"data.plans.items.[INDEX]","typeLabel":"object"},"description":"At most 64 KB serialized. Not in list responses.","uniqueKey":"data.plans","typeLabel":"object[]"},"date_range":{"oneOf":[{"type":"object","description":"The range the attached reports run over. Null means each report's own default.","required":["from","to"],"properties":{"from":{"type":"string","isRequired":true,"uniqueKey":"data.date_range.oneOf.0.from","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"data.date_range.oneOf.0.to","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.date_range.oneOf.0","typeLabel":"object"},{"type":"object","description":"The range the attached reports run over. Null means each report's own default.","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":"data.date_range.oneOf.1.preset","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"data.date_range.oneOf.1","typeLabel":"object"},{"type":"null","description":"The range the attached reports run over. Null means each report's own default.","uniqueKey":"data.date_range.oneOf.2","typeLabel":"null"}],"uniqueKey":"data.date_range","typeLabel":"object · object · null"},"created_by":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","enum":["user","api_key","oauth","legacy_key"],"uniqueKey":"data.created_by.type","typeLabel":"enum\u003cstring>"},"id":{"type":"string","uniqueKey":"data.created_by.id","typeLabel":"string"},"client_id":{"type":"string","description":"The OAuth client, for `type: oauth`.","uniqueKey":"data.created_by.client_id","typeLabel":"string"}},"uniqueKey":"data.created_by","typeLabel":"object"},"deleted_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"data.deleted_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"data.deleted_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.deleted_at","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data","typeLabel":"object"}},"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"dry_run":true,"applied":true,"diff":{"action":"\u003cstring>","resource":{"type":"conversion_rule","id":"\u003cstring>","label":"\u003cstring>"},"prior_state":{},"new_state":{},"changes":[{"field":"\u003cstring>","from":"\u003cunknown>","to":"\u003cunknown>"}],"effects":[{"type":"postback_target","summary":"\u003cstring>","platform":"\u003cstring>","ad_account_id":"\u003cstring>","asset_id":"\u003cstring>","asset_field":"\u003cstring>","endpoint_url_masked":"\u003cstring>","trigger_event":"\u003cstring>","trigger_event_source":"\u003cstring>","platform_event":"\u003cstring>","active":true,"operation":"put","key":"\u003cstring>","path":"\u003cstring>","requires_approval":true,"approver_roles":["\u003cstring>"],"review_surface":"\u003cstring>","supersedes":["3c90c3cc-0d44-4b50-8888-8dd25736052a"]}]},"audit_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","data":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","title":"\u003cstring>","report_ids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"created_via":"dashboard","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","workspace_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","body_md":"\u003cstring>","plans":[{"id":"\u003cstring>","plan":{"metrics":["\u003cstring>"],"date_range":{"from":"\u003cstring>","to":"\u003cstring>"},"dimensions":["\u003cstring>"],"filters":[{"dimension":"\u003cstring>","op":"eq","value":"\u003cstring>"}],"granularity":"hour","compare":"previous_period","attribution":{"model":"last_touch","window_days":45},"order_by":[{"field":"\u003cstring>","dir":"asc"}],"limit":200,"cursor":"\u003cstring>","response_format":"concise"},"label":"\u003cstring>"}],"date_range":{"from":"\u003cstring>","to":"\u003cstring>"},"created_by":{"type":"user","id":"\u003cstring>","client_id":"\u003cstring>"},"deleted_at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"2ab0dddf-a693-4bf3-b12e-fe1a01e77936":{"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"},"d57f2d1b-f4ed-47ec-88b8-0b33c8643d94":{"description":"The key authenticated but does not carry the scope this route needs. This is fixable — ask for a key with that scope — and is distinct from a 401, which means the key is not valid at all.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["insufficient_scope"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"required_scope":{"oneOf":[{"type":"string","description":"A single scope, or the set of scopes any one of which would have been accepted (undo, where the exact scope depends on what is being undone).","uniqueKey":"required_scope.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"required_scope.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"A single scope, or the set of scopes any one of which would have been accepted (undo, where the exact scope depends on what is being undone).","uniqueKey":"required_scope.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"required_scope","typeLabel":"string | string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"insufficient_scope","required_scope":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"6aec2a61-4281-40d5-8ffd-09cd94086875":{"description":"The dashboard, analysis or share link cannot be written as sent. Branch on `code`. `hint` says how to fix it.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["unknown_report","invalid_filters","invalid_embed","stale_dashboard","stale_analysis","dashboard_limit","analysis_limit","share_limit"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","uniqueKey":"hint","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"unknown_report","hint":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"d0c3c63d-ed38-434d-8e52-d0f6a364a7ef":{"description":"The dashboard, analysis or share link cannot be written as sent. Branch on `code`. `hint` says how to fix it.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["unknown_report","invalid_filters","invalid_embed","stale_dashboard","stale_analysis","dashboard_limit","analysis_limit","share_limit"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","uniqueKey":"hint","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"unknown_report","hint":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"1666a912-2442-4f8d-8648-34266b800cbd":{"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":"Create an analysis - Datalyr Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T15:48:27.101Z","originalFileLocation":"api-reference/dashboards/create-an-analysis.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=\"Save a markdown write-up with the plans behind its numbers. Needs datalyr:write:reports. Put the exact analytics_query plans you ran in plans; they are shown under \u0026quot;How this was calculated\u0026quot;. Each plan is validated as POST /query would validate it, without running it. Embed a saved report on its own line as ::report[] and list the id in report_ids. An embed whose id is not in report_ids returns 422 with code: invalid_embed. Attached reports that are not embedded render after the body.\">\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=\"Create an analysis - Datalyr Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Save a markdown write-up with the plans behind its numbers. Needs datalyr:write:reports. Put the exact analytics_query plans you ran in plans; they are shown under \u0026quot;How this was calculated\u0026quot;. Each plan is validated as POST /query would validate it, without running it. Embed a saved report on its own line as ::report[] and list the id in report_ids. An embed whose id is not in report_ids returns 422 with code: invalid_embed. Attached reports that are not embedded render after the body.\">\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/dashboards/create-an-analysis\">\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=Dashboards%2C+analyses+and+share+links\u0026amp;title=Create+an+analysis\u0026amp;description=Save+a+markdown+write-up+with+the+plans+behind+its+numbers.+Needs+%60datalyr%3Awrite%3Areports%60.%0A%0APut+the+exact+%60analytics_query%60+plans+you+ran+in+%60plans%60%3B+they+are+s\u0026amp;theme=cfd8a5cf5a95aa7efc3c16b4\u0026amp;signature=2f2707b8e35b6600ff0bc11392a7143c075d868309ba7f28e93eb4abd5d0e098\">\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=\"Create an analysis - Datalyr Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Save a markdown write-up with the plans behind its numbers. Needs datalyr:write:reports. Put the exact analytics_query plans you ran in plans; they are shown under \u0026quot;How this was calculated\u0026quot;. Each plan is validated as POST /query would validate it, without running it. Embed a saved report on its own line as ::report[] and list the id in report_ids. An embed whose id is not in report_ids returns 422 with code: invalid_embed. Attached reports that are not embedded render after the body.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://datalyr.mintlify.site/_mintlify/api/og/v2?division=Dashboards%2C+analyses+and+share+links\u0026amp;title=Create+an+analysis\u0026amp;description=Save+a+markdown+write-up+with+the+plans+behind+its+numbers.+Needs+%60datalyr%3Awrite%3Areports%60.%0A%0APut+the+exact+%60analytics_query%60+plans+you+ran+in+%60plans%60%3B+they+are+s\u0026amp;theme=cfd8a5cf5a95aa7efc3c16b4\u0026amp;signature=2f2707b8e35b6600ff0bc11392a7143c075d868309ba7f28e93eb4abd5d0e098\">\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/dashboards/create-an-analysis\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/dashboards/create-an-analysis.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/dashboards/create-an-analysis#webpage\",\"url\":\"https://docs.datalyr.com/api-reference/dashboards/create-an-analysis\",\"name\":\"Create an analysis\",\"description\":\"Save a markdown write-up with the plans behind its numbers. Needs datalyr:write:reports. Put the exact analytics_query plans you ran in plans; they are shown under \\\"How this was calculated\\\". Each plan is validated as POST /query would validate it, without running it. Embed a saved report on its own line as ::report[] and list the id in report_ids. An embed whose id is not in report_ids returns 422 with code: invalid_embed. Attached reports that are not embedded render after the body.\",\"dateModified\":\"2026-10-15T15:48:27.101Z\",\"isPartOf\":{\"@id\":\"https://docs.datalyr.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/create-an-analysis#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/create-an-analysis#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Dashboards, analyses and share links\",\"item\":\"https://docs.datalyr.com/api-reference/dashboards/list-dashboards\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create an analysis\",\"item\":\"https://docs.datalyr.com/api-reference/dashboards/create-an-analysis\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/create-an-analysis#apireference\",\"headline\":\"Create an analysis\",\"name\":\"Create an analysis\",\"description\":\"Save a markdown write-up with the plans behind its numbers. Needs datalyr:write:reports. Put the exact analytics_query plans you ran in plans; they are shown under \\\"How this was calculated\\\". Each plan is validated as POST /query would validate it, without running it. Embed a saved report on its own line as ::report[] and list the id in report_ids. An embed whose id is not in report_ids returns 422 with code: invalid_embed. Attached reports that are not embedded render after the body.\",\"url\":\"https://docs.datalyr.com/api-reference/dashboards/create-an-analysis\",\"mainEntityOfPage\":{\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/create-an-analysis#webpage\"},\"dateModified\":\"2026-10-15T15:48:27.101Z\",\"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","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","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","description":"The workspace's live analyses, most recently updated first. Needs `datalyr:read`. The list leaves out `body_md` and `plans`; read one analysis for them.","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","description":"One analysis in full, with its body and plans. Needs `datalyr:read`.","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":"Create an analysis - 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"]}