Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: slide_viewed accepts an optional skipped flag for views under the 2-second skip threshold, and slide_viewed_batch submits up to 25 slide views in one request. Narration playback outcomes are always batched via narration_played_batch (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. last_slide_reached is sent once per page load when the viewer arrives on the last slide. AI Presentations records presentation.completed only when that slide is the presentation’s last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. session_summary and narration_session_summary are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including narration_played_batch requests. Every view in a batch after the first costs 1 more. For slide_viewed_batch, that extra cost counts against the same per-IP limit. For narration_played_batch, it counts against a separate narration bucket. The limit returns 429 when exceeded. The action_detection and action_execution types, and untyped Q&A interaction bodies, are acknowledged with 200 for backward compatibility but are no longer stored.
Event type. presentation_started is sent when the viewer presses Start on the intro screen, and records a presentation.started event. slides_shown is sent once per visit, the first time the viewer shows slides. AI Presentations records the first time slides are shown to a homeowner as the presentation's start, once, and later visits never change it. Visits by Demand IQ staff, by signed-in members of your organization, in rep mode, or from presentations whose opened emails all went to Demand IQ staff or your organization's own users don't record a start. Visits from link scanners, such as Microsoft Safe Links, are ignored. action_detection and action_execution are deprecated: they are acknowledged but not stored.
Whether the viewer's primary pointer is coarse, as reported by the (pointer: coarse) media query. Optional. Applies to presentation_opened. AI Presentations combines it with the request's user agent to classify the device as mobile, tablet, or desktop.
The utm_source value from the presentation link. Optional. Applies to presentation_opened. AI Presentations lower-cases it and keeps it only when it is 1 to 40 characters of a-z, 0-9, _, or -. Any other value is dropped.
Per-visit ID generated by the viewer. Optional. AI Presentations stores one slide.viewed event per viewId. A later report with the same viewId updates that event's durationMs and skipped instead of adding a new event, as long as its durationMs is not lower. Omit it to record a new event for every report.
Slide ID. Required for slide_viewed and last_slide_reached. For last_slide_reached, send the presentation snapshot slide ID (the deck_presentation_slides row ID), not the deck slide ID. AI Presentations ignores any other ID and does not record presentation.completed. IDs longer than 100 characters are rejected with 400.
Whether the viewer left the slide in under 2 seconds. A flag, not a filter: fast flips are still recorded as slide.viewed events, not as a separate skip event.
Batched entries. Required when type is slide_viewed_batch or narration_played_batch. Each entry counts against the rate limit individually. For slide_viewed_batch, each item is a slide view (slideId, slideIndex, optional viewId, durationMs, and skipped). For narration_played_batch, each item is a narration outcome (slideId, slideIndex, narrationStarted, narrationCompleted, secondsPlayed, and secondsAvailable, which is null when the audio duration was never known).
Whether a sales rep is driving the presentation. Client-supplied; the server cannot resolve it. Applies to cta_clicked, slides_shown, last_slide_reached, session_summary, and narration_session_summary.
The first screen the viewer showed on this visit. Client-supplied and optional. Applies to cta_clicked and session_summary. Any value outside the enum is rejected with 400.
Session-to-date count of slides on which narration playback actually started. narration_session_summary only. > 0 is the derived read for "audio enabled".
Session-to-date count of Q&A answer audio plays that finished, where the question was asked by voice. Skips, errors, and rejected plays do not count. narration_session_summary only.
Session-to-date count of Q&A answer audio plays that finished, where the question was typed. Skips, errors, and rejected plays do not count. narration_session_summary only.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Demand IQ Docs","colors":{"primary":"#15ABE6","light":"#4DC4F5","dark":"#0D8FBF"},"logo":{"light":"https://mintcdn.com/demandiq/uEOIlnRlShq78CaU/logo/light.svg?fit=max\u0026auto=format\u0026n=uEOIlnRlShq78CaU\u0026q=85\u0026s=6b20bece67526eefd70ff64cc194f726","dark":"https://mintcdn.com/demandiq/uEOIlnRlShq78CaU/logo/dark.svg?fit=max\u0026auto=format\u0026n=uEOIlnRlShq78CaU\u0026q=85\u0026s=7c1536ee4a0142de77ede0db3669a9b3"},"favicon":"https://mintcdn.com/demandiq/uEOIlnRlShq78CaU/favicon.svg?fit=max\u0026auto=format\u0026n=uEOIlnRlShq78CaU\u0026q=85\u0026s=3977ad1b9501e84aaac387cc29d19e3c","styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"demandiq","hasAudioNarration":false,"actualSubdomain":"demandiq","customDomains":["developer.demand-iq.com"],"gitSource":{"type":"github","owner":"demand-iq","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aec99a98cb1f1c974b9defe","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"API Reference","count":102},{"language":"default","tag":"Endpoints","count":102},{"language":"default","tag":"Guides","count":13},{"language":"default","tag":"Presentations","count":12},{"language":"default","tag":"Company","count":10},{"language":"default","tag":"Decks","count":9},{"language":"default","tag":"Contracts","count":8},{"language":"default","tag":"Slides","count":8},{"language":"default","tag":"Configuration guides","count":6},{"language":"default","tag":"Authentication","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":[],"page":{"pagePath":"api-reference/presentations/record-a-presentation-event","slug":"/api-reference/presentations/record-a-presentation-event","pageMetadata":{"title":"Record a presentation event","description":"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: `slide_viewed` accepts an optional `skipped` flag for views under the 2-second skip threshold, and `slide_viewed_batch` submits up to 25 slide views in one request. Narration playback outcomes are always batched via `narration_played_batch` (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. `last_slide_reached` is sent once per page load when the viewer arrives on the last slide. AI Presentations records `presentation.completed` only when that slide is the presentation's last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. `session_summary` and `narration_session_summary` are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including `narration_played_batch` requests. Every view in a batch after the first costs 1 more. For `slide_viewed_batch`, that extra cost counts against the same per-IP limit. For `narration_played_batch`, it counts against a separate narration bucket. The limit returns `429` when exceeded. The `action_detection` and `action_execution` types, and untyped Q\u0026A interaction bodies, are acknowledged with `200` for backward compatibility but are no longer stored.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presentations/{presentationId}/events","href":"/api-reference/presentations/record-a-presentation-event","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: \", _jsx(_components.code, {\n children: \"slide_viewed\"\n }), \" accepts an optional \", _jsx(_components.code, {\n children: \"skipped\"\n }), \" flag for views under the 2-second skip threshold, and \", _jsx(_components.code, {\n children: \"slide_viewed_batch\"\n }), \" submits up to 25 slide views in one request. Narration playback outcomes are always batched via \", _jsx(_components.code, {\n children: \"narration_played_batch\"\n }), \" (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. \", _jsx(_components.code, {\n children: \"last_slide_reached\"\n }), \" is sent once per page load when the viewer arrives on the last slide. AI Presentations records \", _jsx(_components.code, {\n children: \"presentation.completed\"\n }), \" only when that slide is the presentation’s last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. \", _jsx(_components.code, {\n children: \"session_summary\"\n }), \" and \", _jsx(_components.code, {\n children: \"narration_session_summary\"\n }), \" are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including \", _jsx(_components.code, {\n children: \"narration_played_batch\"\n }), \" requests. Every view in a batch after the first costs 1 more. For \", _jsx(_components.code, {\n children: \"slide_viewed_batch\"\n }), \", that extra cost counts against the same per-IP limit. For \", _jsx(_components.code, {\n children: \"narration_played_batch\"\n }), \", it counts against a separate narration bucket. The limit returns \", _jsx(_components.code, {\n children: \"429\"\n }), \" when exceeded. The \", _jsx(_components.code, {\n children: \"action_detection\"\n }), \" and \", _jsx(_components.code, {\n children: \"action_execution\"\n }), \" types, and untyped Q\u0026A interaction bodies, are acknowledged with \", _jsx(_components.code, {\n children: \"200\"\n }), \" for backward compatibility but are no longer stored.\"]\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":"Record a presentation event","description":"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: `slide_viewed` accepts an optional `skipped` flag for views under the 2-second skip threshold, and `slide_viewed_batch` submits up to 25 slide views in one request. Narration playback outcomes are always batched via `narration_played_batch` (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. `last_slide_reached` is sent once per page load when the viewer arrives on the last slide. AI Presentations records `presentation.completed` only when that slide is the presentation's last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. `session_summary` and `narration_session_summary` are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including `narration_played_batch` requests. Every view in a batch after the first costs 1 more. For `slide_viewed_batch`, that extra cost counts against the same per-IP limit. For `narration_played_batch`, it counts against a separate narration bucket. The limit returns `429` when exceeded. The `action_detection` and `action_execution` types, and untyped Q\u0026A interaction bodies, are acknowledged with `200` for backward compatibility but are no longer stored.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presentations/{presentationId}/events","href":"/api-reference/presentations/record-a-presentation-event","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Presentations"],"summary":"Record a presentation event","description":"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: `slide_viewed` accepts an optional `skipped` flag for views under the 2-second skip threshold, and `slide_viewed_batch` submits up to 25 slide views in one request. Narration playback outcomes are always batched via `narration_played_batch` (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. `last_slide_reached` is sent once per page load when the viewer arrives on the last slide. AI Presentations records `presentation.completed` only when that slide is the presentation's last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. `session_summary` and `narration_session_summary` are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including `narration_played_batch` requests. Every view in a batch after the first costs 1 more. For `slide_viewed_batch`, that extra cost counts against the same per-IP limit. For `narration_played_batch`, it counts against a separate narration bucket. The limit returns `429` when exceeded. The `action_detection` and `action_execution` types, and untyped Q\u0026A interaction bodies, are acknowledged with `200` for backward compatibility but are no longer stored.","parameters":["715b8f6a-93e7-41d6-b629-78379dad91e8"],"requestBody":"a9be27eb-18d9-413a-939b-86a3ade42880","responses":{"200":"dc711fe3-e1ee-48d2-89c4-6cb92c7d6820","400":"0e63bddf-0821-4012-8b1a-961b2d1203de","401":"3f44e13a-cc24-4ef2-a48b-98df7179d6b6","429":"269246a8-4bbc-46e5-9e26-9f22f5dfbc72","500":"01d2eb84-75c5-45db-ae83-dfd36fe0f5cc"},"method":"post","type":"path","servers":["8c1c298c-6efa-4eee-bbc2-ad374d34a17e","7c7f8449-1062-4369-8578-0037bf063220"],"security":[],"path":"/api/presentations/{presentationId}/events","baseUrlOptions":["https://app.demand-iq.com","http://localhost:3000"],"title":"Record a presentation event","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"715b8f6a-93e7-41d6-b629-78379dad91e8":{"in":"path","name":"presentationId","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["_token","type"],"properties":{"_token":{"type":"string","description":"HMAC authentication token","isRequired":true,"uniqueKey":"_token","typeLabel":"string"},"type":{"type":"string","enum":["presentation_opened","presentation_started","slides_shown","slide_viewed","slide_viewed_batch","narration_played_batch","cta_clicked","last_slide_reached","session_summary","narration_session_summary","action_detection","action_execution"],"description":"Event type. `presentation_started` is sent when the viewer presses Start on the intro screen, and records a `presentation.started` event. `slides_shown` is sent once per visit, the first time the viewer shows slides. AI Presentations records the first time slides are shown to a homeowner as the presentation's start, once, and later visits never change it. Visits by Demand IQ staff, by signed-in members of your organization, in rep mode, or from presentations whose opened emails all went to Demand IQ staff or your organization's own users don't record a start. Visits from link scanners, such as Microsoft Safe Links, are ignored. `action_detection` and `action_execution` are deprecated: they are acknowledged but not stored.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"pointerCoarse":{"type":"boolean","description":"Whether the viewer's primary pointer is coarse, as reported by the `(pointer: coarse)` media query. Optional. Applies to `presentation_opened`. AI Presentations combines it with the request's user agent to classify the device as mobile, tablet, or desktop.","uniqueKey":"pointerCoarse","typeLabel":"boolean"},"introShown":{"type":"boolean","description":"Whether this visit opened on the intro screen, so the viewer had a Start button to press. Optional. Applies to `presentation_opened`.","uniqueKey":"introShown","typeLabel":"boolean"},"openSource":{"type":"string","description":"The `utm_source` value from the presentation link. Optional. Applies to `presentation_opened`. AI Presentations lower-cases it and keeps it only when it is 1 to 40 characters of `a-z`, `0-9`, `_`, or `-`. Any other value is dropped.","uniqueKey":"openSource","typeLabel":"string"},"viewId":{"type":"string","format":"uuid","description":"Per-visit ID generated by the viewer. Optional. AI Presentations stores one `slide.viewed` event per `viewId`. A later report with the same `viewId` updates that event's `durationMs` and `skipped` instead of adding a new event, as long as its `durationMs` is not lower. Omit it to record a new event for every report.","uniqueKey":"viewId","typeLabel":"string\u003cuuid>"},"slideId":{"type":"string","description":"Slide ID. Required for `slide_viewed` and `last_slide_reached`. For `last_slide_reached`, send the presentation snapshot slide ID (the `deck_presentation_slides` row ID), not the deck slide ID. AI Presentations ignores any other ID and does not record `presentation.completed`. IDs longer than 100 characters are rejected with `400`.","uniqueKey":"slideId","typeLabel":"string"},"slideIndex":{"type":"integer","uniqueKey":"slideIndex","typeLabel":"integer"},"durationMs":{"type":"integer","uniqueKey":"durationMs","typeLabel":"integer"},"skipped":{"type":"boolean","description":"Whether the viewer left the slide in under 2 seconds. A flag, not a filter: fast flips are still recorded as `slide.viewed` events, not as a separate skip event.","uniqueKey":"skipped","typeLabel":"boolean"},"views":{"type":"array","maxItems":25,"description":"Batched entries. Required when `type` is `slide_viewed_batch` or `narration_played_batch`. Each entry counts against the rate limit individually. For `slide_viewed_batch`, each item is a slide view (`slideId`, `slideIndex`, optional `viewId`, `durationMs`, and `skipped`). For `narration_played_batch`, each item is a narration outcome (`slideId`, `slideIndex`, `narrationStarted`, `narrationCompleted`, `secondsPlayed`, and `secondsAvailable`, which is `null` when the audio duration was never known).","items":{"type":"object","required":["slideId","slideIndex"],"properties":{"slideId":{"type":"string","isRequired":true,"uniqueKey":"views.items.[INDEX].slideId","typeLabel":"string"},"slideIndex":{"type":"integer","isRequired":true,"uniqueKey":"views.items.[INDEX].slideIndex","typeLabel":"integer"},"viewId":{"type":"string","format":"uuid","description":"Per-visit ID for `slide_viewed_batch` items. Reports with the same `viewId` update one `slide.viewed` event.","uniqueKey":"views.items.[INDEX].viewId","typeLabel":"string\u003cuuid>"},"durationMs":{"type":"integer","uniqueKey":"views.items.[INDEX].durationMs","typeLabel":"integer"},"skipped":{"type":"boolean","uniqueKey":"views.items.[INDEX].skipped","typeLabel":"boolean"},"narrationStarted":{"type":"boolean","description":"Whether `play()` actually resolved for this slide's narration. Autoplay-policy failures are never counted as started.","uniqueKey":"views.items.[INDEX].narrationStarted","typeLabel":"boolean"},"narrationCompleted":{"type":"boolean","description":"Whether the narration audio played to the end for this slide.","uniqueKey":"views.items.[INDEX].narrationCompleted","typeLabel":"boolean"},"secondsPlayed":{"type":"number","minimum":0,"description":"Seconds of narration audio that actually played on this slide. Resumed or retried attempts credit only the remaining clip duration, so the total can never exceed `secondsAvailable`.","uniqueKey":"views.items.[INDEX].secondsPlayed","typeLabel":"number"},"secondsAvailable":{"oneOf":[{"type":"number","minimum":0,"description":"Duration of the narration audio for this slide, in seconds. `null` when the audio duration was never known (for example, playback failed before metadata loaded).","uniqueKey":"views.items.[INDEX].secondsAvailable.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"description":"Duration of the narration audio for this slide, in seconds. `null` when the audio duration was never known (for example, playback failed before metadata loaded).","uniqueKey":"views.items.[INDEX].secondsAvailable.oneOf.1","typeLabel":"null"}],"uniqueKey":"views.items.[INDEX].secondsAvailable","typeLabel":"number | null"}},"uniqueKey":"views.items.[INDEX]","typeLabel":"object"},"uniqueKey":"views","typeLabel":"object[]"},"ctaType":{"type":"string","uniqueKey":"ctaType","typeLabel":"string"},"ctaLabel":{"type":"string","uniqueKey":"ctaLabel","typeLabel":"string"},"ctaUrl":{"type":"string","description":"Destination URL of an `external_link` CTA. Send it only on `cta_clicked` events for that CTA type.","uniqueKey":"ctaUrl","typeLabel":"string"},"repMode":{"type":"boolean","description":"Whether a sales rep is driving the presentation. Client-supplied; the server cannot resolve it. Applies to `cta_clicked`, `slides_shown`, `last_slide_reached`, `session_summary`, and `narration_session_summary`.","uniqueKey":"repMode","typeLabel":"boolean"},"firstScreen":{"type":"string","enum":["intro","loading","slides","pending_data"],"example":"intro","description":"The first screen the viewer showed on this visit. Client-supplied and optional. Applies to `cta_clicked` and `session_summary`. Any value outside the enum is rejected with `400`.","uniqueKey":"firstScreen","typeLabel":"enum\u003cstring>"},"conversationId":{"type":"string","format":"uuid","description":"UUID that persists for the lifetime of the viewer's tab. Applies to `session_summary` and `narration_session_summary`.","uniqueKey":"conversationId","typeLabel":"string\u003cuuid>"},"slidesViewed":{"type":"integer","minimum":0,"description":"Session-to-date count of distinct slides viewed. `session_summary` only.","uniqueKey":"slidesViewed","typeLabel":"integer"},"slidesTotal":{"type":"integer","minimum":0,"description":"Total number of slides in the presentation. `session_summary` only.","uniqueKey":"slidesTotal","typeLabel":"integer"},"furthestSlideIndex":{"type":"integer","minimum":0,"description":"Highest 0-based slide index reached in this session. `session_summary` only.","uniqueKey":"furthestSlideIndex","typeLabel":"integer"},"totalDwellMs":{"type":"integer","minimum":0,"description":"Session-to-date wall-clock dwell across all slides, in milliseconds. `session_summary` only.","uniqueKey":"totalDwellMs","typeLabel":"integer"},"ctaConfigured":{"type":"boolean","description":"Whether the presentation has a CTA configured. `session_summary` only.","uniqueKey":"ctaConfigured","typeLabel":"boolean"},"slidesNarrationStarted":{"type":"integer","minimum":0,"description":"Session-to-date count of slides on which narration playback actually started. `narration_session_summary` only. `> 0` is the derived read for \"audio enabled\".","uniqueKey":"slidesNarrationStarted","typeLabel":"integer"},"slidesNarrationCompleted":{"type":"integer","minimum":0,"description":"Session-to-date count of slides on which narration played to the end. `narration_session_summary` only.","uniqueKey":"slidesNarrationCompleted","typeLabel":"integer"},"totalSecondsPlayed":{"type":"number","minimum":0,"description":"Session-to-date sum of `secondsPlayed` across all slides. `narration_session_summary` only.","uniqueKey":"totalSecondsPlayed","typeLabel":"number"},"totalSecondsAvailable":{"type":"number","minimum":0,"description":"Session-to-date sum of `secondsAvailable` across all slides for which narration was attempted. `narration_session_summary` only.","uniqueKey":"totalSecondsAvailable","typeLabel":"number"},"qaVoiceAudioStarted":{"type":"integer","minimum":0,"description":"Session-to-date count of Q\u0026A answer audio plays that actually started, where the question was asked by voice. `narration_session_summary` only.","uniqueKey":"qaVoiceAudioStarted","typeLabel":"integer"},"qaVoiceAudioCompleted":{"type":"integer","minimum":0,"description":"Session-to-date count of Q\u0026A answer audio plays that finished, where the question was asked by voice. Skips, errors, and rejected plays do not count. `narration_session_summary` only.","uniqueKey":"qaVoiceAudioCompleted","typeLabel":"integer"},"qaChatAudioStarted":{"type":"integer","minimum":0,"description":"Session-to-date count of Q\u0026A answer audio plays that actually started, where the question was typed. `narration_session_summary` only.","uniqueKey":"qaChatAudioStarted","typeLabel":"integer"},"qaChatAudioCompleted":{"type":"integer","minimum":0,"description":"Session-to-date count of Q\u0026A answer audio plays that finished, where the question was typed. Skips, errors, and rejected plays do not count. `narration_session_summary` only.","uniqueKey":"qaChatAudioCompleted","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"_token":"\u003cstring>","pointerCoarse":true,"introShown":true,"openSource":"\u003cstring>","viewId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","slideId":"\u003cstring>","slideIndex":123,"durationMs":123,"skipped":true,"views":[{"slideId":"\u003cstring>","slideIndex":123,"viewId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","durationMs":123,"skipped":true,"narrationStarted":true,"narrationCompleted":true,"secondsPlayed":1,"secondsAvailable":1}],"ctaType":"\u003cstring>","ctaLabel":"\u003cstring>","ctaUrl":"\u003cstring>","repMode":true,"firstScreen":"intro","conversationId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","slidesViewed":1,"slidesTotal":1,"furthestSlideIndex":1,"totalDwellMs":1,"ctaConfigured":true,"slidesNarrationStarted":1,"slidesNarrationCompleted":1,"totalSecondsPlayed":1,"totalSecondsAvailable":1,"qaVoiceAudioStarted":1,"qaVoiceAudioCompleted":1,"qaChatAudioStarted":1,"qaChatAudioCompleted":1}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"dc711fe3-e1ee-48d2-89c4-6cb92c7d6820":{"description":"Event recorded","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","uniqueKey":"success","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true}}},"exampleType":"generated"}},"exampleType":"generated"},"0e63bddf-0821-4012-8b1a-961b2d1203de":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"3f44e13a-cc24-4ef2-a48b-98df7179d6b6":{"description":"Invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"269246a8-4bbc-46e5-9e26-9f22f5dfbc72":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"01d2eb84-75c5-45db-ae83-dfd36fe0f5cc":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{"8c1c298c-6efa-4eee-bbc2-ad374d34a17e":{"url":"https://app.demand-iq.com","description":"Production"},"7c7f8449-1062-4369-8578-0037bf063220":{"url":"http://localhost:3000","description":"Local development"}}},"originalFileLocation":"openapi.json"},"subdomain":"demandiq","siteName":"Demand IQ Docs","title":"Record a presentation event - Demand IQ Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T19:16:29.455Z","originalFileLocation":"api-reference/presentations/record-a-presentation-event.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=\"system\"}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=\"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: slide_viewed accepts an optional skipped flag for views under the 2-second skip threshold, and slide_viewed_batch submits up to 25 slide views in one request. Narration playback outcomes are always batched via narration_played_batch (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. last_slide_reached is sent once per page load when the viewer arrives on the last slide. AI Presentations records presentation.completed only when that slide is the presentation\u0026#x27;s last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. session_summary and narration_session_summary are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including narration_played_batch requests. Every view in a batch after the first costs 1 more. For slide_viewed_batch, that extra cost counts against the same per-IP limit. For narration_played_batch, it counts against a separate narration bucket. The limit returns 429 when exceeded. The action_detection and action_execution types, and untyped Q\u0026amp;A interaction bodies, are acknowledged with 200 for backward compatibility but are no longer stored.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Demand IQ 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/demandiq/54pBlYBD7mNg2sEI/_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/demandiq/54pBlYBD7mNg2sEI/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/demandiq/54pBlYBD7mNg2sEI/_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/demandiq/54pBlYBD7mNg2sEI/_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/demandiq/54pBlYBD7mNg2sEI/_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/demandiq/54pBlYBD7mNg2sEI/_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/demandiq/54pBlYBD7mNg2sEI/_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/demandiq/54pBlYBD7mNg2sEI/_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/demandiq/54pBlYBD7mNg2sEI/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Record a presentation event - Demand IQ Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: slide_viewed accepts an optional skipped flag for views under the 2-second skip threshold, and slide_viewed_batch submits up to 25 slide views in one request. Narration playback outcomes are always batched via narration_played_batch (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. last_slide_reached is sent once per page load when the viewer arrives on the last slide. AI Presentations records presentation.completed only when that slide is the presentation\u0026#x27;s last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. session_summary and narration_session_summary are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including narration_played_batch requests. Every view in a batch after the first costs 1 more. For slide_viewed_batch, that extra cost counts against the same per-IP limit. For narration_played_batch, it counts against a separate narration bucket. The limit returns 429 when exceeded. The action_detection and action_execution types, and untyped Q\u0026amp;A interaction bodies, are acknowledged with 200 for backward compatibility but are no longer stored.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Demand IQ Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://demandiq.mintlify.site/_mintlify/api/og/v2?division=Presentations\u0026amp;title=Record+a+presentation+event\u0026amp;description=Ingests+interaction+events+from+the+presentation+viewer+%28opens%2C+presses+of+the+intro+Start+button%2C+the+first+time+slides+are+shown%2C+slide+views%2C+narration+playb\u0026amp;theme=6cb71c7b4cbe4450b6bff4c3\u0026amp;signature=76ca92a8b09633a2077c804c34ce7308de3d154593f59bef81dcef8fc49a03a0\">\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=\"Record a presentation event - Demand IQ Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: slide_viewed accepts an optional skipped flag for views under the 2-second skip threshold, and slide_viewed_batch submits up to 25 slide views in one request. Narration playback outcomes are always batched via narration_played_batch (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. last_slide_reached is sent once per page load when the viewer arrives on the last slide. AI Presentations records presentation.completed only when that slide is the presentation\u0026#x27;s last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. session_summary and narration_session_summary are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including narration_played_batch requests. Every view in a batch after the first costs 1 more. For slide_viewed_batch, that extra cost counts against the same per-IP limit. For narration_played_batch, it counts against a separate narration bucket. The limit returns 429 when exceeded. The action_detection and action_execution types, and untyped Q\u0026amp;A interaction bodies, are acknowledged with 200 for backward compatibility but are no longer stored.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://demandiq.mintlify.site/_mintlify/api/og/v2?division=Presentations\u0026amp;title=Record+a+presentation+event\u0026amp;description=Ingests+interaction+events+from+the+presentation+viewer+%28opens%2C+presses+of+the+intro+Start+button%2C+the+first+time+slides+are+shown%2C+slide+views%2C+narration+playb\u0026amp;theme=6cb71c7b4cbe4450b6bff4c3\u0026amp;signature=76ca92a8b09633a2077c804c34ce7308de3d154593f59bef81dcef8fc49a03a0\">\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/demandiq/54pBlYBD7mNg2sEI/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Demand IQ Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#15ABE6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/presentations/record-a-presentation-event.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.demand-iq.com/#organization\",\"name\":\"Demand IQ Docs\",\"url\":\"https://developer.demand-iq.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/demandiq/uEOIlnRlShq78CaU/logo/light.svg?fit=max\u0026auto=format\u0026n=uEOIlnRlShq78CaU\u0026q=85\u0026s=6b20bece67526eefd70ff64cc194f726\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.demand-iq.com#website\",\"name\":\"Demand IQ Docs\",\"url\":\"https://developer.demand-iq.com\",\"publisher\":{\"@id\":\"https://developer.demand-iq.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event#webpage\",\"url\":\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event\",\"name\":\"Record a presentation event\",\"description\":\"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: slide_viewed accepts an optional skipped flag for views under the 2-second skip threshold, and slide_viewed_batch submits up to 25 slide views in one request. Narration playback outcomes are always batched via narration_played_batch (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. last_slide_reached is sent once per page load when the viewer arrives on the last slide. AI Presentations records presentation.completed only when that slide is the presentation's last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. session_summary and narration_session_summary are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including narration_played_batch requests. Every view in a batch after the first costs 1 more. For slide_viewed_batch, that extra cost counts against the same per-IP limit. For narration_played_batch, it counts against a separate narration bucket. The limit returns 429 when exceeded. The action_detection and action_execution types, and untyped Q\u0026A interaction bodies, are acknowledged with 200 for backward compatibility but are no longer stored.\",\"dateModified\":\"2026-11-02T19:16:29.455Z\",\"isPartOf\":{\"@id\":\"https://developer.demand-iq.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://developer.demand-iq.com/api-reference/activity/list-recent-activity\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Presentations\",\"item\":\"https://developer.demand-iq.com/api-reference/presentations/list-presentations\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Record a presentation event\",\"item\":\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event#apireference\",\"headline\":\"Record a presentation event\",\"name\":\"Record a presentation event\",\"description\":\"Ingests interaction events from the presentation viewer (opens, presses of the intro Start button, the first time slides are shown, slide views, narration playback, CTA clicks, last-slide arrivals, and per-session summaries). Authenticated via an HMAC token in the request body. Every slide exit is recorded: slide_viewed accepts an optional skipped flag for views under the 2-second skip threshold, and slide_viewed_batch submits up to 25 slide views in one request. Narration playback outcomes are always batched via narration_played_batch (up to 25 outcomes per request); each outcome reports whether narration actually started, whether it completed, and seconds played vs. seconds available. last_slide_reached is sent once per page load when the viewer arrives on the last slide. AI Presentations records presentation.completed only when that slide is the presentation's last slide and the presentation is ready. It records a completion for every visit, including reloads on the last slide. session_summary and narration_session_summary are cumulative, monotone, page-exit mirrors written to PostHog only. Each request costs 1 against the per-IP rate limit of 60 requests per minute, including narration_played_batch requests. Every view in a batch after the first costs 1 more. For slide_viewed_batch, that extra cost counts against the same per-IP limit. For narration_played_batch, it counts against a separate narration bucket. The limit returns 429 when exceeded. The action_detection and action_execution types, and untyped Q\u0026A interaction bodies, are acknowledged with 200 for backward compatibility but are no longer stored.\",\"url\":\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event\",\"mainEntityOfPage\":{\"@id\":\"https://developer.demand-iq.com/api-reference/presentations/record-a-presentation-event#webpage\"},\"dateModified\":\"2026-11-02T19:16:29.455Z\",\"publisher\":{\"@id\":\"https://developer.demand-iq.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.demand-iq.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Demand IQ Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Demand IQ Docs","nav":{"global":null,"tabs":[{"tab":"Lead integrations","pages":[{"title":"Lead integrations","href":"/integrations/connecting-your-api"}]},{"tab":"Guides","icon":"book-open","pages":[{"title":"Guides","href":"/ai-presentations/introduction"}]},{"tab":"API Reference","icon":"code","groups":[{"group":"Endpoints","pages":[{"group":"Activity","expanded":false,"pages":[{"title":"List recent activity","deprecated":null,"version":null,"openapi":"/openapi.json get /api/activity","href":"/api-reference/activity/list-recent-activity"}]},{"group":"Engagement","expanded":false,"pages":[{"title":"Get engagement summary","deprecated":null,"version":null,"openapi":"/openapi.json get /api/engagement/summary","href":"/api-reference/engagement/get-engagement-summary"},{"title":"List homeowner questions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/engagement/questions","href":"/api-reference/engagement/list-homeowner-questions"},{"title":"Get email template performance","deprecated":null,"version":null,"openapi":"/openapi.json get /api/delivery/template-performance","href":"/api-reference/engagement/get-email-template-performance"},{"title":"Remove an earlier email template version","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/delivery/template-performance/{versionId}","href":"/api-reference/engagement/remove-an-earlier-email-template-version"},{"title":"Activate an earlier email template version","deprecated":null,"version":null,"openapi":"/openapi.json post /api/delivery/template-performance/{versionId}/activate","href":"/api-reference/engagement/activate-an-earlier-email-template-version"}]},{"group":"Decks","expanded":false,"pages":[{"title":"List decks","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks","href":"/api-reference/decks/list-decks"},{"title":"Create a deck","deprecated":null,"version":null,"openapi":"/openapi.json post /api/decks","href":"/api-reference/decks/create-a-deck"},{"title":"Import a presentation as a deck","deprecated":null,"version":null,"openapi":"/openapi.json post /api/decks/import","href":"/api-reference/decks/import-a-presentation-as-a-deck"},{"title":"Get a deck","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}","href":"/api-reference/decks/get-a-deck"},{"title":"Update a deck","deprecated":null,"version":null,"openapi":"/openapi.json put /api/decks/{deckId}","href":"/api-reference/decks/update-a-deck"},{"title":"Delete a deck","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/decks/{deckId}","href":"/api-reference/decks/delete-a-deck"},{"title":"Get intro page config","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/intro","href":"/api-reference/decks/get-intro-page-config"},{"title":"Upsert intro page config","deprecated":null,"version":null,"openapi":"/openapi.json put /api/decks/{deckId}/intro","href":"/api-reference/decks/upsert-intro-page-config"},{"title":"Delete intro page config","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/decks/{deckId}/intro","href":"/api-reference/decks/delete-intro-page-config"}]},{"group":"Generation","expanded":false,"pages":[{"title":"Poll generation status for every deck","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/generation-status","href":"/api-reference/generation/poll-generation-status-for-every-deck"},{"title":"Start AI generation from images","deprecated":null,"version":null,"openapi":"/openapi.json post /api/decks/{deckId}/generate","href":"/api-reference/generation/start-ai-generation-from-images"},{"title":"Poll generation status","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/generate/status","href":"/api-reference/generation/poll-generation-status"},{"title":"Analyze a slide image and generate content","deprecated":null,"version":null,"openapi":"/openapi.json post /api/slides/analyze-and-generate","href":"/api-reference/generation/analyze-a-slide-image-and-generate-content"},{"title":"Generate preview audio","deprecated":null,"version":null,"openapi":"/openapi.json post /api/decks/{deckId}/generate-preview","href":"/api-reference/generation/generate-preview-audio"},{"title":"Check preview audio status","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/preview-status","href":"/api-reference/generation/check-preview-audio-status"}]},{"group":"Slides","expanded":false,"pages":[{"title":"List slides","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/slides","href":"/api-reference/slides/list-slides"},{"title":"Create a slide","deprecated":null,"version":null,"openapi":"/openapi.json post /api/decks/{deckId}/slides","href":"/api-reference/slides/create-a-slide"},{"title":"Reorder slides","deprecated":null,"version":null,"openapi":"/openapi.json put /api/decks/{deckId}/slides/reorder","href":"/api-reference/slides/reorder-slides"},{"title":"Update a slide","deprecated":null,"version":null,"openapi":"/openapi.json put /api/slides/{slideId}","href":"/api-reference/slides/update-a-slide"},{"title":"Delete a slide","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/slides/{slideId}","href":"/api-reference/slides/delete-a-slide"},{"title":"Get product pricing data","deprecated":null,"version":null,"openapi":"/openapi.json get /api/slides/{slideId}/product-data","href":"/api-reference/slides/get-product-pricing-data"},{"title":"Upsert product pricing data","deprecated":null,"version":null,"openapi":"/openapi.json put /api/slides/{slideId}/product-data","href":"/api-reference/slides/upsert-product-pricing-data"},{"title":"Remove product pricing data","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/slides/{slideId}/product-data","href":"/api-reference/slides/remove-product-pricing-data"}]},{"group":"FAQs","expanded":false,"pages":[{"title":"List FAQs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/faqs","href":"/api-reference/faqs/list-faqs"},{"title":"Create a FAQ","deprecated":null,"version":null,"openapi":"/openapi.json post /api/decks/{deckId}/faqs","href":"/api-reference/faqs/create-a-faq"},{"title":"Update a FAQ","deprecated":null,"version":null,"openapi":"/openapi.json put /api/faqs/{faqId}","href":"/api-reference/faqs/update-a-faq"},{"title":"Delete a FAQ","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/faqs/{faqId}","href":"/api-reference/faqs/delete-a-faq"}]},{"group":"Branding","expanded":false,"pages":[{"title":"Get branding","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/branding","href":"/api-reference/branding/get-branding"},{"title":"Upsert branding","deprecated":null,"version":null,"openapi":"/openapi.json put /api/decks/{deckId}/branding","href":"/api-reference/branding/upsert-branding"}]},{"group":"Q\u0026A","expanded":false,"pages":[{"title":"Get Q\u0026A settings","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/qa-settings","href":"/api-reference/q\u0026a/get-q\u0026a-settings"},{"title":"Update Q\u0026A settings","deprecated":null,"version":null,"openapi":"/openapi.json put /api/decks/{deckId}/qa-settings","href":"/api-reference/q\u0026a/update-q\u0026a-settings"},{"title":"Answer a question","deprecated":null,"version":null,"openapi":"/openapi.json post /api/qa","href":"/api-reference/q\u0026a/answer-a-question"},{"title":"Stream the spoken audio for an answer","deprecated":null,"version":null,"openapi":"/openapi.json get /api/qa/audio","href":"/api-reference/q\u0026a/stream-the-spoken-audio-for-an-answer"},{"title":"Classify viewer intent after Q\u0026A","deprecated":null,"version":null,"openapi":"/openapi.json post /api/intent/continue","href":"/api-reference/q\u0026a/classify-viewer-intent-after-q\u0026a"}]},{"group":"Presentations","expanded":false,"pages":[{"title":"List presentations","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/presentations","href":"/api-reference/presentations/list-presentations"},{"title":"Create a presentation","deprecated":null,"version":null,"openapi":"/openapi.json post /api/decks/{deckId}/presentations","href":"/api-reference/presentations/create-a-presentation"},{"title":"Update a presentation","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/presentations/{presentationId}","href":"/api-reference/presentations/update-a-presentation"},{"title":"Delete a presentation","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/presentations/{presentationId}","href":"/api-reference/presentations/delete-a-presentation"},{"title":"Get presentation status","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presentations/{presentationId}/status","href":"/api-reference/presentations/get-presentation-status"},{"title":"Start a presentation","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presentations/{presentationId}/start","href":"/api-reference/presentations/start-a-presentation"},{"title":"Get presentation slides and Q\u0026A settings","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presentations/{presentationId}/content","href":"/api-reference/presentations/get-presentation-slides-and-q\u0026a-settings"},{"title":"Get product selections","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presentations/{presentationId}/product-selection","href":"/api-reference/presentations/get-product-selections"},{"title":"Save a product selection","description":"Saves a product tier selection for a specific slide during the presentation.","deprecated":null,"version":null,"openapi":"/openapi.json put /api/presentations/{presentationId}/product-selection","href":"/api-reference/presentations/save-a-product-selection"},{"title":"Record a presentation event","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presentations/{presentationId}/events","href":"/api-reference/presentations/record-a-presentation-event"},{"title":"Refresh an events token","description":"Exchanges an existing presentation token (which may be expired up to 7 days) for a fresh HMAC token. Used by the presentation viewer to maintain event tracking authentication. Rate-limited to 10 requests per minute per presentation.","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presentations/{presentationId}/events-token","href":"/api-reference/presentations/refresh-an-events-token"},{"title":"Send a follow-up email for an ingested presentation","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presentations/send","href":"/api-reference/presentations/send-a-follow-up-email-for-an-ingested-presentation"}]},{"group":"Narration","expanded":false,"pages":[{"title":"Synthesize narration for one slide","deprecated":null,"version":null,"openapi":"/openapi.json post /api/narration/single","href":"/api-reference/narration/synthesize-narration-for-one-slide"},{"title":"Synthesize narration for multiple slides","deprecated":null,"version":null,"openapi":"/openapi.json post /api/narration/batch","href":"/api-reference/narration/synthesize-narration-for-multiple-slides"},{"title":"Synthesize resume narration","deprecated":null,"version":null,"openapi":"/openapi.json post /api/narration/resume","href":"/api-reference/narration/synthesize-resume-narration"},{"title":"Synthesize narration for a slide","deprecated":null,"version":null,"openapi":"/openapi.json post /api/narration","href":"/api-reference/narration/synthesize-narration-for-a-slide"},{"title":"Synthesize Q\u0026A prompt audio","deprecated":null,"version":null,"openapi":"/openapi.json post /api/narration/qa-audio","href":"/api-reference/narration/synthesize-q\u0026a-prompt-audio"},{"title":"Generate a Q\u0026A resume prompt","deprecated":null,"version":null,"openapi":"/openapi.json post /api/narration/generate-prompt","href":"/api-reference/narration/generate-a-q\u0026a-resume-prompt"}]},{"group":"Images","expanded":false,"pages":[{"title":"List images","deprecated":null,"version":null,"openapi":"/openapi.json get /api/images","href":"/api-reference/images/list-images"},{"title":"Upload an image","deprecated":null,"version":null,"openapi":"/openapi.json post /api/images/upload","href":"/api-reference/images/upload-an-image"},{"title":"Delete an image","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/images/{imageId}","href":"/api-reference/images/delete-an-image"}]},{"group":"Voices","expanded":false,"pages":[{"title":"List available voices","deprecated":null,"version":null,"openapi":"/openapi.json get /api/voices/list","href":"/api-reference/voices/list-available-voices"}]},{"group":"Utility","expanded":false,"pages":[{"title":"Health check","deprecated":null,"version":null,"openapi":"/openapi.json get /api/health","href":"/api-reference/utility/health-check"},{"title":"Validate an address","deprecated":null,"version":null,"openapi":"/openapi.json post /api/address/validate","href":"/api-reference/utility/validate-an-address"}]},{"group":"Authentication","expanded":false,"pages":[{"title":"Log in","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/login","href":"/api-reference/authentication/log-in"},{"title":"Log out","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/logout","href":"/api-reference/authentication/log-out"},{"title":"Get current user","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/me","href":"/api-reference/authentication/get-current-user"},{"title":"Portal SSO via auth code exchange","deprecated":null,"version":null,"openapi":"/openapi.json get /api/auth/sso","href":"/api-reference/authentication/portal-sso-via-auth-code-exchange"},{"title":"Portal SSO token-bearer exchange","deprecated":null,"version":null,"openapi":"/openapi.json post /api/auth/sso/exchange","href":"/api-reference/authentication/portal-sso-token-bearer-exchange"},{"title":"CORS preflight for the SSO exchange","deprecated":null,"version":null,"openapi":"/openapi.json options /api/auth/sso/exchange","href":"/api-reference/authentication/cors-preflight-for-the-sso-exchange"}]},{"group":"Company","expanded":false,"pages":[{"title":"Get company contact info","deprecated":null,"version":null,"openapi":"/openapi.json get /api/company/contact","href":"/api-reference/company/get-company-contact-info"},{"title":"Update company contact info","deprecated":null,"version":null,"openapi":"/openapi.json put /api/company/contact","href":"/api-reference/company/update-company-contact-info"},{"title":"Mark the welcome wizard as seen","deprecated":null,"version":null,"openapi":"/openapi.json post /api/company/welcome-seen","href":"/api-reference/company/mark-the-welcome-wizard-as-seen"},{"title":"Get knowledge base profile","deprecated":null,"version":null,"openapi":"/openapi.json get /api/company/kb/profile","href":"/api-reference/company/get-knowledge-base-profile"},{"title":"Update knowledge base profile","deprecated":null,"version":null,"openapi":"/openapi.json put /api/company/kb/profile","href":"/api-reference/company/update-knowledge-base-profile"},{"title":"List knowledge base documents","deprecated":null,"version":null,"openapi":"/openapi.json get /api/company/kb/documents","href":"/api-reference/company/list-knowledge-base-documents"},{"title":"Initiate document upload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/company/kb/documents/upload-init","href":"/api-reference/company/initiate-document-upload"},{"title":"Complete document upload","deprecated":null,"version":null,"openapi":"/openapi.json post /api/company/kb/documents/complete","href":"/api-reference/company/complete-document-upload"},{"title":"Get a knowledge base document","deprecated":null,"version":null,"openapi":"/openapi.json get /api/company/kb/documents/{documentId}","href":"/api-reference/company/get-a-knowledge-base-document"},{"title":"Delete a knowledge base document","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/company/kb/documents/{documentId}","href":"/api-reference/company/delete-a-knowledge-base-document"}]},{"group":"Contracts","expanded":false,"pages":[{"title":"Import a contract document","deprecated":null,"version":null,"openapi":"/openapi.json post /api/contracts/import","href":"/api-reference/contracts/import-a-contract-document"},{"title":"List action configs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/action-configs","href":"/api-reference/contracts/list-action-configs"},{"title":"Create an action config","deprecated":null,"version":null,"openapi":"/openapi.json post /api/decks/{deckId}/action-configs","href":"/api-reference/contracts/create-an-action-config"},{"title":"Get an action config","deprecated":null,"version":null,"openapi":"/openapi.json get /api/decks/{deckId}/action-configs/{configId}","href":"/api-reference/contracts/get-an-action-config"},{"title":"Update an action config","deprecated":null,"version":null,"openapi":"/openapi.json put /api/decks/{deckId}/action-configs/{configId}","href":"/api-reference/contracts/update-an-action-config"},{"title":"Delete an action config","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/decks/{deckId}/action-configs/{configId}","href":"/api-reference/contracts/delete-an-action-config"},{"title":"Get contract for signing","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presentations/{presentationId}/sign-contract","href":"/api-reference/contracts/get-contract-for-signing"},{"title":"Sign a contract","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presentations/{presentationId}/sign-contract","href":"/api-reference/contracts/sign-a-contract"}]},{"group":"Notifications","expanded":false,"pages":[{"title":"List notification subscriptions","deprecated":null,"version":null,"openapi":"/openapi.json get /api/notifications/subscriptions","href":"/api-reference/notifications/list-notification-subscriptions"},{"title":"Create a notification subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /api/notifications/subscriptions","href":"/api-reference/notifications/create-a-notification-subscription"},{"title":"Get a notification subscription","deprecated":null,"version":null,"openapi":"/openapi.json get /api/notifications/subscriptions/{subscriptionId}","href":"/api-reference/notifications/get-a-notification-subscription"},{"title":"Update a notification subscription","deprecated":null,"version":null,"openapi":"/openapi.json put /api/notifications/subscriptions/{subscriptionId}","href":"/api-reference/notifications/update-a-notification-subscription"},{"title":"Delete a notification subscription","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/notifications/subscriptions/{subscriptionId}","href":"/api-reference/notifications/delete-a-notification-subscription"},{"title":"List event log","deprecated":null,"version":null,"openapi":"/openapi.json get /api/notifications/events","href":"/api-reference/notifications/list-event-log"}]},{"group":"Fonts","expanded":false,"pages":[{"title":"List available fonts","deprecated":null,"version":null,"openapi":"/openapi.json get /api/fonts","href":"/api-reference/fonts/list-available-fonts"}]},{"group":"Appointments","expanded":false,"pages":[{"title":"Get available appointment slots","deprecated":null,"version":null,"openapi":"/openapi.json get /api/presentations/{presentationId}/appointment","href":"/api-reference/appointments/get-available-appointment-slots"},{"title":"Book an appointment","deprecated":null,"version":null,"openapi":"/openapi.json post /api/presentations/{presentationId}/appointment","href":"/api-reference/appointments/book-an-appointment"}]},{"group":"Roof Measurements","expanded":false,"pages":[{"title":"Request roof measurements","deprecated":null,"version":null,"openapi":"/openapi.json post /api/roof-measurements","href":"/api-reference/roof-measurements/request-roof-measurements"},{"title":"Get roof measurement status","deprecated":null,"version":null,"openapi":"/openapi.json get /api/roof-measurements/{requestId}/status","href":"/api-reference/roof-measurements/get-roof-measurement-status"},{"title":"Cancel a roof measurement request","deprecated":null,"version":null,"openapi":"/openapi.json post /api/roof-measurements/{requestId}/cancel","href":"/api-reference/roof-measurements/cancel-a-roof-measurement-request"}]},{"group":"Actions","expanded":false,"pages":[{"title":"Detect a voice or text command","deprecated":null,"version":null,"openapi":"/openapi.json post /api/actions","href":"/api-reference/actions/detect-a-voice-or-text-command"}]},{"group":"Onboarding","expanded":false,"pages":[{"title":"Record a presentations onboarding completion or dismissal","deprecated":null,"version":null,"openapi":"/openapi.json post /api/onboarding/tour","href":"/api-reference/onboarding/record-a-presentations-onboarding-completion-or-dismissal"}]}]}]}]},"basePath":"","title":"Record a presentation event - Demand IQ Docs","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","Page-Dr40SSJq.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}