# Demand IQ Docs ## Docs - [Book an appointment](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/appointments/book-an-appointment.md): Books a new appointment for the prospect. Validates the time slot, syncs contact information, and emits an `appointment.booked` event. - [Get available appointment slots](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/appointments/get-available-appointment-slots.md): Returns available scheduling time slots and any existing appointment for the prospect. Resolves the prospect via the Demand IQ Core API and fetches scheduling settings, unavailability windows, and computes open slots grouped by date. - [Get current user](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/authentication/get-current-user.md): Returns the authenticated user's identity and organization. - [Log in](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/authentication/log-in.md): Authenticates with email and password. Returns user and organization info and sets a session cookie. Rate-limited to prevent brute-force attacks. - [Log out](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/authentication/log-out.md): Revokes the current session and clears the session cookie. - [Portal SSO via auth code exchange](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/authentication/portal-sso-via-auth-code-exchange.md): Exchanges a short-lived authorization code for an access token via the Core API, creates a new session, and redirects to the requested path. Used by the portal to embed Sales CoPilot in an iframe. - [Get branding](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/branding/get-branding.md) - [Upsert branding](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/branding/upsert-branding.md): Creates or replaces the branding configuration for a deck. - [Complete document upload](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/complete-document-upload.md): Marks a document as uploaded after the client finishes uploading to S3. Triggers background processing (text extraction, chunking, and embedding). - [Delete a knowledge base document](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/delete-a-knowledge-base-document.md): Removes the document from S3 and the database. Associated chunks are deleted automatically. - [Get a knowledge base document](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/get-a-knowledge-base-document.md) - [Get company contact info](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/get-company-contact-info.md): Returns the organization's contact details used in contracts and branding. - [Get knowledge base profile](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/get-knowledge-base-profile.md): Returns the company's knowledge base profile that guides how the AI answers customer questions. - [Initiate document upload](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/initiate-document-upload.md): Validates the file and returns a presigned S3 URL for direct upload. Call `/api/company/kb/documents/complete` after the upload finishes. - [List knowledge base documents](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/list-knowledge-base-documents.md): Returns all uploaded knowledge base documents for the organization, with usage metadata. - [Update company contact info](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/update-company-contact-info.md) - [Update knowledge base profile](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/company/update-knowledge-base-profile.md): Updates the company tagline, about text, trust signals, service coverage, and answer style used by the AI. - [Create an action config](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/contracts/create-an-action-config.md): Creates a new contract template or action configuration for a deck. - [Delete an action config](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/contracts/delete-an-action-config.md) - [Get an action config](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/contracts/get-an-action-config.md) - [Get contract for signing](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/contracts/get-contract-for-signing.md): Returns the contract template, company branding, and product data needed to render the signing view. - [Import a contract document](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/contracts/import-a-contract-document.md): Uploads a contract document (PDF or Word), extracts text, and uses AI to analyze it for template conversion. Returns detected variables that can be used in contract templates. - [List action configs](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/contracts/list-action-configs.md): Returns all action configurations (contract templates) for a deck. - [Sign a contract](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/contracts/sign-a-contract.md): Submits a contract signature. Validates the typed signature against the customer name, resolves the template with variables, and creates an audit-trailed signed document. - [Update an action config](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/contracts/update-an-action-config.md) - [Create a deck](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/decks/create-a-deck.md) - [Delete a deck](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/decks/delete-a-deck.md): Permanently deletes a deck and all associated slides, FAQs, and branding. - [Delete intro page config](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/decks/delete-intro-page-config.md) - [Get a deck](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/decks/get-a-deck.md): Returns the full deck including slides, FAQs, branding, and Q&A settings. - [Get intro page config](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/decks/get-intro-page-config.md): Returns the intro page configuration for a deck, including the background image, headline, and CTA button label. - [List decks](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/decks/list-decks.md): Returns all decks for the authenticated organization, ordered by most recently created. - [Update a deck](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/decks/update-a-deck.md) - [Upsert intro page config](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/decks/upsert-intro-page-config.md): Creates or updates the intro page for a deck. Enabling an intro page switches the deck to lazy generation mode. - [Create a FAQ](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/faqs/create-a-faq.md): Creates a FAQ and automatically generates TTS audio for the answer. - [Delete a FAQ](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/faqs/delete-a-faq.md) - [List FAQs](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/faqs/list-faqs.md) - [Update a FAQ](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/faqs/update-a-faq.md) - [List available fonts](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/fonts/list-available-fonts.md): Returns a list of available Google Fonts for use in deck branding. Results are cached for 24 hours. - [Analyze slide image and generate script](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/generation/analyze-slide-image-and-generate-script.md): Analyzes a slide image using GPT-4o Vision to extract content (title, key points), then generates a narration script. Optionally uses the deck context and slide-specific context to guide script generation. Does not generate audio — use the narration endpoints after saving the slide. - [Poll generation status](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/generation/poll-generation-status.md) - [Start AI generation from images](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/generation/start-ai-generation-from-images.md): Accepts uploaded slide images, runs them through GPT-4o Vision to extract content, generates narration scripts, and synthesizes audio. Returns a job ID — poll `/api/decks/{deckId}/generate/status` for progress. - [Delete an image](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/images/delete-an-image.md) - [List images](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/images/list-images.md): Returns all uploaded images for the authenticated organization. - [Upload an image](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/images/upload-an-image.md): Uploads and optimizes an image (max 1920px width, JPEG quality 85). Returns the S3 key and a presigned URL. - [Check preview audio status](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/narration/check-preview-audio-status.md): Checks whether a deck needs preview audio generation. Returns counts of slides that have personalization tokens, how many still need preview audio, and the total slide count. - [Generate preview audio for deck](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/narration/generate-preview-audio-for-deck.md): Triggers generation of preview audio for all slides that contain personalization tokens but lack preview audio. Preview audio uses placeholder values so deck managers can hear how slides will sound before creating presentations. - [Generate Q&A prompt audio](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/narration/generate-q&a-prompt-audio.md): Generates TTS audio for a Q&A resume or transition prompt and stores it in the deck's Q&A settings. Replaces any existing audio for the specified prompt type. - [Get resume prompt for playback](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/narration/get-resume-prompt-for-playback.md): Returns the Q&A resume prompt text and pre-generated audio for a deck. Used by the presentation viewer to play the resume prompt after answering a question. Falls back to a default prompt if no custom one is configured. - [Synthesize narration for multiple slides](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/narration/synthesize-narration-for-multiple-slides.md): Batch TTS generation. Per-slide failures return a fallback audio URL rather than failing the whole batch. - [Synthesize narration for one slide](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/narration/synthesize-narration-for-one-slide.md): Generates TTS audio for a slide script. Results are cached per session. - [Synthesize resume narration](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/narration/synthesize-resume-narration.md): Generates the spoken bridge from Q&A back into the presentation, using the deck's configured transition prompt. - [Create a notification subscription](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/notifications/create-a-notification-subscription.md): Subscribes to an event type via a delivery channel (webhook, email, or console). - [Delete a notification subscription](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/notifications/delete-a-notification-subscription.md) - [Get a notification subscription](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/notifications/get-a-notification-subscription.md) - [List event log](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/notifications/list-event-log.md): Returns a paginated, filterable log of all events for the organization. - [List notification subscriptions](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/notifications/list-notification-subscriptions.md): Returns all notification subscriptions for the organization. - [Update a notification subscription](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/notifications/update-a-notification-subscription.md) - [Create a presentation](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/create-a-presentation.md): Creates a personalized presentation for a homeowner. The address is validated via Google Geocoding. Returns a shareable URL immediately; audio generation may continue in the background. - [Delete a presentation](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/delete-a-presentation.md): Soft-deletes a presentation (sets `deletedAt`). The shareable URL stops working immediately. - [Get presentation status](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/get-presentation-status.md): Returns the current processing status and slide readiness. - [Get product selections](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/get-product-selections.md): Returns all product tier selections the viewer has made during the presentation. - [List presentations](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/list-presentations.md): Returns all non-deleted presentations created from this deck. - [Record a presentation event](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/record-a-presentation-event.md): Ingests interaction events from the presentation viewer (slide views, CTA clicks, Q&A logs). Authenticated via an HMAC token in the request body. - [Refresh event ingest token](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/refresh-event-ingest-token.md): Exchanges an expired presentation event token for a fresh one. Accepts tokens up to 7 days past expiry. Returns a new 24-hour token for continued event logging. - [Save a product selection](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/save-a-product-selection.md): Saves a product tier selection for a specific slide during the presentation. - [Start a presentation](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/start-a-presentation.md): Triggers lazy generation when a viewer clicks the CTA on the intro page. Safe to call multiple times — duplicate generation requests are ignored. - [Update a presentation](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/presentations/update-a-presentation.md): Partial update for homeowner data, voice settings, language, or price inputs. - [Answer a question](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/q&a/answer-a-question.md): Answers a viewer question. Checks FAQs first (exact then semantic match at >= 0.6 confidence), falls back to GPT-4o with slide context. Returns answer text plus synthesized audio. - [Get Q&A settings](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/q&a/get-q&a-settings.md): Returns the customizable resume and transition prompts for the deck's Q&A experience. - [Update Q&A settings](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/q&a/update-q&a-settings.md) - [Cancel a roof measurement request](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/roof-measurements/cancel-a-roof-measurement-request.md): Cancels or skips a roof measurement request. Use `cancel` to abort entirely, or `skip` to stop automated processing and allow manual entry of roof measurements. - [Poll roof measurement status](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/roof-measurements/poll-roof-measurement-status.md): Returns the current status of a roof measurement request. Each poll also advances one step of the processing state machine (polling-driven orchestration). - [Start a roof measurement request](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/roof-measurements/start-a-roof-measurement-request.md): Initiates an automated roof measurement for a homeowner address. Validates the address via geocoding and creates a measurement request that is processed asynchronously. Poll `/api/roof-measurements/{requestId}/status` for progress. - [Create a slide](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/slides/create-a-slide.md) - [Delete a slide](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/slides/delete-a-slide.md) - [Get product pricing data](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/slides/get-product-pricing-data.md): Returns the good/better/best product pricing tiers for a product pricing slide. - [List slides](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/slides/list-slides.md) - [Remove product pricing data](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/slides/remove-product-pricing-data.md): Removes product data and resets the slide type to `standard`. - [Reorder slides](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/slides/reorder-slides.md) - [Update a slide](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/slides/update-a-slide.md) - [Upsert product pricing data](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/slides/upsert-product-pricing-data.md): Sets product pricing tiers for a slide. The slide type is automatically set to `product_pricing_v1`. - [Health check](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/utility/health-check.md): Returns `{ ok: true }` if the service is running. - [Validate an address](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/utility/validate-an-address.md): Validates a physical address using geocoding. Returns formatted address, coordinates, and normalized components. - [Classify viewer input](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/viewer/classify-viewer-input.md): Classifies user input from the presentation viewer as either a system action (navigation, audio control, CTA trigger, continuation) or a question/statement. Uses GPT for classification with a regex-based fallback. - [Detect continuation intent](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/viewer/detect-continuation-intent.md): Detects whether a viewer's response after Q&A indicates they want to continue the presentation, go back to a previous slide, or ask a new question. Uses GPT for classification with a regex fallback. - [Load presentation for viewer](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/viewer/load-presentation-for-viewer.md): Returns the complete presentation data needed to render the viewer experience, including slides with audio URLs, live branding, FAQs, and Q&A settings. S3 keys are resolved to presigned URLs. Returns `410 Gone` if the parent deck was deleted. - [List available voices](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/api-reference/voices/list-available-voices.md): Returns a curated list of voices suitable for sales presentations. - [Introduction](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/journeys/introduction.md): Journeys is coming soon to Demand IQ. - [Branding](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/sales-copilot/guides/branding.md): Make presentations look like they came from you — your colors, logo, and messaging throughout. - [Setting Up Your First Deck](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/sales-copilot/guides/deck-types.md): Upload your slide images and let Sales CoPilot build a narrated presentation from them. - [FAQs](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/sales-copilot/guides/faqs.md): Pre-build answers to common questions so homeowners always get a consistent, on-brand response. - [Narration & Voices](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/sales-copilot/guides/narration.md): Choose the voice for your presentations and keep narration up to date as you edit slides. - [Introduction](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/sales-copilot/introduction.md): Sales CoPilot is an AI-powered presentation platform with narrated slides, live Q&A, and deck management. - [Quickstart](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/sales-copilot/quickstart.md): Go from zero to a live, personalized AI presentation in minutes. ## OpenAPI Specs - [openapi](https://demandiq-mintlify-sync-api-docs-1775595360.mintlify.app/openapi.json)