> ## Documentation Index
> Fetch the complete documentation index at: https://docs.textql.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Embed TextQL in Your Product

> A workshop of short, hands-on modules for developers and product teams putting Ana-powered analytics inside their own application — from a one-line iframe to a fully custom chat…

A workshop of short, hands-on modules for **developers and product teams** putting Ana-powered analytics inside their own application — from a one-line iframe to a fully custom chat UI driven by the API, with the auth, multi-tenancy, and production hardening done right.

Total time: **about 2.5 hours.**

Builds directly on the **Developer Workshop (API & MCP)** — API fundamentals (keys, the v2 REST surface, streaming basics, the sandbox) live there and aren't re-taught; this workshop is about putting those pieces inside *your* product.

## Who this is for

* Engineers embedding analytics in an internal portal or a customer-facing SaaS — you should have completed (or skimmed) the [**Developer Workshop**](/workshops/developer/overview) first- Product teams scoping "AI analyst" features without building the analyst- Platform teams who'll own the auth, tenancy, and cost model underneath

## What you'll be able to do

<table><tr><th>After module</th><th>You can...</th></tr><tr><td>0</td><td>Pick the right embedding surface for your product need</td></tr><tr><td>1</td><td>Design auth with service accounts and scoped, short-lived keys — least privilege by default</td></tr><tr><td>2</td><td>Drive a streamed conversation through the Chat API into your own UI</td></tr><tr><td>3</td><td>Fetch answers, charts, and reports for rendering in your components</td></tr><tr><td>4</td><td>Embed the full Ana UI or dashboards via iframe, with tools and connectors locked down per embed</td></tr><tr><td>5</td><td>Choose and implement a multi-tenant scoping pattern</td></tr><tr><td>6</td><td>Harden for production: rate behavior, timeouts, cost, and nondeterminism in UX</td></tr></table>

## Workshop modules

<table><tr><th>Module</th><th>Time</th></tr><tr><td>0 · The Embedding Decision Map</td><td>`00_DECISION_MAP.md`</td><td>15 min</td></tr><tr><td>1 · Auth & Scoped Access</td><td>`01_AUTH_SCOPED_ACCESS.md`</td><td>20 min</td></tr><tr><td>2 · Embed Chat in Your App</td><td>`02_EMBED_CHAT.md`</td><td>25 min</td></tr><tr><td>3 · Embed Answers & Visuals</td><td>`03_ANSWERS_VISUALS.md`</td><td>20 min</td></tr><tr><td>4 · Embedded UI & Dashboards</td><td>`04_EMBEDDED_DASHBOARDS.md`</td><td>20 min</td></tr><tr><td>5 · Multi-Tenant Patterns</td><td>`05_MULTI_TENANT.md`</td><td>20 min</td></tr><tr><td>6 · Production Hardening</td><td>`06_PRODUCTION_HARDENING.md`</td><td>15 min</td></tr></table>

## How to use this workshop

* Prerequisites: completed (or skimmed) the [**Developer Workshop**](/workshops/developer/overview); admin access for service-account creation; a connected data source to embed against.- Work **in order** — Module 1's auth design is load-bearing for everything after it.- Code samples are `curl` and Python; the embedding surface details follow the current guide at [docs.textql.com/core/guides/embedding-ana](https://docs.textql.com/core/guides/embedding-ana) and the API reference — verify against them when building, as the surface evolves.- Where a capability is deployment-dependent, the module says so for that item specifically.

<Accordion title="For facilitators — running this as a guided session">
  **T-minus-1-day pre-flight:** run the workshop's key prompts end-to-end in the session workspace — confirm logins, connectors, and the features this workshop touches are enabled for every attendee; have a fallback demo workspace ready in case a customer connector fails live. **Pacing:** when a long prompt is running (2–4 min), fire it first, then discuss the concept while Ana works — never watch a spinner in silence. If behind schedule, cut sections marked optional, never the checkpoints. **Group sessions:** attendees drive, you narrate; collect every miss or wrong answer in a shared doc — that list is the ontology backlog. With 10+ attendees on one warehouse, stagger the heavy prompts.
</Accordion>
