# Trigger Agent Webhook Source: https://docs.textql.com/api-reference/agents/webhooks/trigger-agent-webhook POST /v1/agents/webhook/trigger Trigger an agent run with a JSON webhook payload Use this endpoint to start an agent run from an external system. The webhook payload is added as context for the agent run. Webhook payloads are limited to 16KB after JSON serialization. Requests with larger payloads are rejected before the agent run is queued. You can find an agent's webhook trigger ID from the agent edit page in TextQL. # Create API Access Key Source: https://docs.textql.com/api-reference/api-keys/api-keys/create-api-access-key POST /v1/api-keys/create Create a new API access key for an external API provider # Delete API Access Key Source: https://docs.textql.com/api-reference/api-keys/api-keys/delete-api-access-key POST /v1/api-keys/delete Delete an API access key by ID # List API Access Keys Source: https://docs.textql.com/api-reference/api-keys/api-keys/list-api-access-keys POST /v1/api-keys List all API access keys for your organization # List API Providers Source: https://docs.textql.com/api-reference/api-keys/api-keys/list-api-providers POST /v1/api-providers List all supported API providers and their configuration templates # Update API Access Key Source: https://docs.textql.com/api-reference/api-keys/api-keys/update-api-access-key POST /v1/api-keys/update Update an existing API access key # Cancel Chat Source: https://docs.textql.com/api-reference/chat/chat/cancel-a-running-chat POST /v1/chat/cancel Cancel a running chat query **v2 available:** See [POST /v2/chats//cancel](/api-reference/v2/chat/cancel-stream) for the REST-native version of this endpoint. # Create Chat Source: https://docs.textql.com/api-reference/chat/chat/create POST /v1/chat Create a new chat **v2 available:** See [POST /v2/chats](/api-reference/v2/chat/create-chat) for the REST-native version of this endpoint. # Get Chat Source: https://docs.textql.com/api-reference/chat/chat/get-chat-details POST /v1/chat/get Retrieve details of a specific chat by ID **v2 available:** See [GET /v2/chats/](/api-reference/v2/chat/get-chat) for the REST-native version of this endpoint. # List Chats Source: https://docs.textql.com/api-reference/chat/chat/list-chats POST /v1/chat/list List chats with optional filtering and pagination **v2 available:** See [GET /v2/chats](/api-reference/v2/chat/list-chats) for the REST-native version of this endpoint. # Stream Chat Source: https://docs.textql.com/api-reference/chat/chat/stream Stream chat responses in real-time using Connect-RPC **v2 available:** See [POST /v2/chats/stream](/api-reference/v2/chat/stream-chat) for the REST-native version using standard SSE, which works with any HTTP client. This endpoint requires a Connect-RPC client and cannot be tested with a simple HTTP request. In TypeScript, the [SDK streaming client](/api-reference/sdk/streaming/overview) wraps it — `streaming.chats.streamChat(...)` / `streaming.chats.watchChat(...)` — with no Connect setup required. ## Overview The Stream Chat endpoint allows you to receive chat responses in real-time as they are generated. This is a server-streaming Connect-RPC endpoint that works over standard HTTP/1.1 or HTTP/2. **Endpoint:** `POST /v1/stream` ## Stream Flow Create a Connect-RPC transport with your API base URL and authentication token. Connect-RPC works over standard HTTP, so any HTTP client can be used with the Connect protocol. Send a `StreamRequest` with your question, optional `chat_id` (for continuation), and `tools` configuration. If no `chat_id` is provided, a new chat session is created. First `StreamResponse` contains metadata with: * `chat_id`: Use this for subsequent messages in the same conversation * `model`: The LLM model being used * `is_continuation`: Whether this continues an existing chat * `status`: Initially `QUERY_STATUS_IN_PROGRESS` Receive multiple `StreamResponse` messages as content is generated: * `meta_data`: ChatId, model * `text`: Incremental text deltas (append these to build the full response) * `preview`: Results and visualizations (charts, tables) ## Request Body ```json theme={null} { "question": "Your question here", "chat_id": "optional-chat-id", "tools": { "connector_ids": [1, 2], "web_search_enabled": true, "sql_enabled": true, "ontology_enabled": false, "google_drive_enabled": false, "powerbi_enabled": false } } ``` ## Response The endpoint streams `StreamResponse` messages containing: * **metadata**: Chat metadata including ID, model, status, and token usage * **cell**: Executable cells (SQL, Python, etc.) * **text**: Text content deltas * **preview**: Preview cells with results ### StreamMetadata | Field | Type | Description | | - | - | - | | `id` | string | Message ID | | `created_at` | timestamp | Creation timestamp | | `model` | string | LLM model used | | `chat_id` | string | Chat session ID | | `metadata` | map | Additional metadata | | `is_continuation` | boolean | Whether this continues an existing chat | | `usage` | ChatUsage | Token usage statistics | | `status` | ChatStatus | Current status (IN\_PROGRESS, COMPLETED, FAILED) | | `error` | string | Error message if failed | ### ChatTools | Field | Type | Description | | - | - | - | | `connector_ids` | int32\[] | Database connector IDs to use | | `web_search_enabled` | boolean | Enable web search | | `sql_enabled` | boolean | Enable SQL execution | | `ontology_enabled` | boolean | Enable ontology queries. Legacy Ontology only: on Ontology 3.0 TQL queries are always enabled unless the org forbids the tool | | `google_drive_enabled` | boolean | Enable Google Drive access | | `powerbi_enabled` | boolean | Enable Power BI access | ## Notes * This endpoint uses Connect-RPC server streaming over standard HTTP/1.1 or HTTP/2 * Connect-RPC is fully HTTP-compatible - no special gRPC infrastructure needed * Responses are streamed incrementally as the AI generates content * The stream will remain open until the query completes, fails, or is cancelled * Use the [Cancel Stream](/api-reference/chat/chat/cancel-a-running-chat) endpoint to stop an in-progress query # List Connectors Source: https://docs.textql.com/api-reference/connectors/connectors/list-all-connectors POST /v1/connectors Retrieve all connectors for your organization **v2 available:** See [GET /v2/connectors](/api-reference/v2/connectors/list-connectors) for the REST-native version of this endpoint. # Introduction Source: https://docs.textql.com/api-reference/introduction Welcome to the TextQL Platform API **v2 API is now available.** The v2 API uses standard REST conventions (proper HTTP methods, path parameters, plain JSON) instead of Connect-RPC. See the [v2 API Introduction](/api-reference/v2/introduction) to get started. The examples on this page use v1. ## Overview The TextQL Platform API provides programmatic access to TextQL's core functionality, enabling you to: * **Execute Chats**: Send and Stream chat queries * **Manage Playbooks**: Create, update, deploy, and delete automated playbooks * **Trigger Agents**: Start agent runs from external systems using webhooks * **List Connectors**: Access your configured data sources * **Manage API Keys**: Create, update, and delete outbound API access keys for external providers The following tools are unavailable via the API: * **Context Editor** - Organization context editing * **Ontology Editor** - Ontology editing * **Streamlit** - Streamlit execution (They are still available via [app.textql.com](https://app.textql.com)) ## Where to get API Key You can get your API key at **Settings → Developers → API Keys**. Click **+ Create API Key** to generate one. You must be an admin to create API keys. ## Base URL All API requests should be made to: ``` https://app.textql.com/v1 ``` ## Authentication All API requests require authentication using a Bearer token: ```bash theme={null} curl -X POST "https://app.textql.com/v1/chat" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"question": "What is the color of the sky?"}' ``` # Execute Code Source: https://docs.textql.com/api-reference/platform/sandbox/execute POST /v1/sandbox/execute Execute Python code in a running sandbox **v2 available:** See [POST /v2/sandcastles//execute](/api-reference/v2/sandbox/execute-code) for the REST-native version of this endpoint. # Load Connector Data Source: https://docs.textql.com/api-reference/platform/sandbox/load-connector-data POST /v1/sandbox/query Execute a SQL query against a connector and load the results into the sandbox as a pandas DataFrame **v2 available:** See [POST /v2/sandcastles//query](/api-reference/v2/sandbox/load-connector-data) for the REST-native version of this endpoint. # Start Sandbox Source: https://docs.textql.com/api-reference/platform/sandbox/start POST /v1/sandbox/start Start a new Python sandbox environment **v2 available:** See [POST /v2/sandcastles](/api-reference/v2/sandbox/start-sandbox) for the REST-native version of this endpoint. # Get Sandbox Status Source: https://docs.textql.com/api-reference/platform/sandbox/status POST /v1/sandbox/status Get the current status of a sandbox, including loaded dataframes and memory usage **v2 available:** See [GET /v2/sandcastles/](/api-reference/v2/sandbox/get-sandbox-status) for the REST-native version of this endpoint. # Stop Sandbox Source: https://docs.textql.com/api-reference/platform/sandbox/stop POST /v1/sandbox/stop Stop and destroy a running sandbox **v2 available:** See [DELETE /v2/sandcastles/](/api-reference/v2/sandbox/stop-sandbox) for the REST-native version of this endpoint. # Upload File Source: https://docs.textql.com/api-reference/platform/sandbox/upload POST /v1/sandbox/upload Upload a file into the sandbox filesystem **v2 available:** See [POST /v2/sandcastles//files](/api-reference/v2/sandbox/upload-file) for the REST-native version of this endpoint. # Create Playbook Source: https://docs.textql.com/api-reference/playbooks/playbooks/create-a-new-playbook POST /v1/playbooks/create Create a new playbook **v2 available:** See [POST /v2/playbooks](/api-reference/v2/playbooks/create-playbook) for the REST-native version of this endpoint. # Delete Playbook Source: https://docs.textql.com/api-reference/playbooks/playbooks/delete-a-playbook POST /v1/playbooks/delete Delete a playbook by playbookId **v2 available:** See [DELETE /v2/playbooks/](/api-reference/v2/playbooks/delete-playbook) for the REST-native version of this endpoint. # Deploy Playbook Source: https://docs.textql.com/api-reference/playbooks/playbooks/deploy-a-playbook POST /v1/playbooks/deploy Deploy a playbook by playbookId **v2 available:** See [POST /v2/playbooks//deploy](/api-reference/v2/playbooks/deploy-playbook) for the REST-native version of this endpoint. # Get Playbook Source: https://docs.textql.com/api-reference/playbooks/playbooks/get-a-playbook-by-id POST /v1/playbooks/get Get a playbook by playbookId **v2 available:** See [GET /v2/playbooks/](/api-reference/v2/playbooks/get-playbook) for the REST-native version of this endpoint. # List Playbooks Source: https://docs.textql.com/api-reference/playbooks/playbooks/list-playbooks POST /v1/playbooks/list Get all playbooks **v2 available:** See [GET /v2/playbooks](/api-reference/v2/playbooks/list-playbooks) for the REST-native version of this endpoint. # Run Playbook Source: https://docs.textql.com/api-reference/playbooks/playbooks/run-a-playbook POST /v1/playbooks/run Execute a playbook and return the generated report **v2 available:** See [POST /v2/playbooks//run](/api-reference/v2/playbooks/run-playbook) for the REST-native version of this endpoint. # Update Playbook Source: https://docs.textql.com/api-reference/playbooks/playbooks/update-a-playbook POST /v1/playbooks/update Update a playbook **v2 available:** See [PATCH /v2/playbooks/](/api-reference/v2/playbooks/update-playbook) for the REST-native version of this endpoint. # Create Agent Source: https://docs.textql.com/api-reference/sdk/agentservice/createagent api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/CreateAgent # Delete Agent Source: https://docs.textql.com/api-reference/sdk/agentservice/deleteagent api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/DeleteAgent # Duplicate Agent Source: https://docs.textql.com/api-reference/sdk/agentservice/duplicateagent api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/DuplicateAgent # Get Agent Source: https://docs.textql.com/api-reference/sdk/agentservice/getagent api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/GetAgent # Get Agent DB Schema Source: https://docs.textql.com/api-reference/sdk/agentservice/getagentdbschema api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/GetAgentDBSchema Read-only table/column list for the agent's private DuckDB memory (agent_db). # Get Agent DB Table Preview Source: https://docs.textql.com/api-reference/sdk/agentservice/getagentdbtablepreview api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/GetAgentDBTablePreview A bounded row preview of one agent_db table (SELECT ... LIMIT n). # Get Agent Run Source: https://docs.textql.com/api-reference/sdk/agentservice/getagentrun api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/GetAgentRun # List Agent Runs Source: https://docs.textql.com/api-reference/sdk/agentservice/listagentruns api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/ListAgentRuns # List Agents Source: https://docs.textql.com/api-reference/sdk/agentservice/listagents api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/ListAgents # Reset Agent Avatar Source: https://docs.textql.com/api-reference/sdk/agentservice/resetagentavatar api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/ResetAgentAvatar # Trigger Agent Source: https://docs.textql.com/api-reference/sdk/agentservice/triggeragent api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/TriggerAgent # Update Agent Source: https://docs.textql.com/api-reference/sdk/agentservice/updateagent api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/UpdateAgent # Upload Agent Avatar Source: https://docs.textql.com/api-reference/sdk/agentservice/uploadagentavatar api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.agent.AgentService/UploadAgentAvatar # Exchange Api O Auth Client Credentials Source: https://docs.textql.com/api-reference/sdk/apioauthservice/exchangeapioauthclientcredentials api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/ExchangeApiOAuthClientCredentials # Exchange Api O Auth Code Source: https://docs.textql.com/api-reference/sdk/apioauthservice/exchangeapioauthcode api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/ExchangeApiOAuthCode # Exchange Api O Auth Jwt Bearer Source: https://docs.textql.com/api-reference/sdk/apioauthservice/exchangeapioauthjwtbearer api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/ExchangeApiOAuthJwtBearer # Get Api O Auth Config Source: https://docs.textql.com/api-reference/sdk/apioauthservice/getapioauthconfig api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/GetApiOAuthConfig # Get Api O Auth Status Source: https://docs.textql.com/api-reference/sdk/apioauthservice/getapioauthstatus api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/GetApiOAuthStatus # Get Api O Auth URL Source: https://docs.textql.com/api-reference/sdk/apioauthservice/getapioauthurl api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/GetApiOAuthURL # Initiate Device Authorization Source: https://docs.textql.com/api-reference/sdk/apioauthservice/initiatedeviceauthorization api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/InitiateDeviceAuthorization # Poll Device Code Token Source: https://docs.textql.com/api-reference/sdk/apioauthservice/polldevicecodetoken api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/PollDeviceCodeToken # Revoke Api O Auth Token Source: https://docs.textql.com/api-reference/sdk/apioauthservice/revokeapioauthtoken api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/RevokeApiOAuthToken # Upsert Api O Auth Config Source: https://docs.textql.com/api-reference/sdk/apioauthservice/upsertapioauthconfig api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.api_oauth.ApiOAuthService/UpsertApiOAuthConfig Shared OAuth app configuration. Requires connector write permission. # App Heartbeat Source: https://docs.textql.com/api-reference/sdk/appservice/appheartbeat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/AppHeartbeat Keeps the viewed app's compute worker alive; first view spawns and pre-warms it (dashboard viewer-TTL parity). # Create App Source: https://docs.textql.com/api-reference/sdk/appservice/createapp api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/CreateApp # Delete App Source: https://docs.textql.com/api-reference/sdk/appservice/deleteapp api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/DeleteApp # Duplicate App Source: https://docs.textql.com/api-reference/sdk/appservice/duplicateapp api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/DuplicateApp Duplicates an app the caller can view into a new app they own, named "Copy of ". Copies code/files/data sources/compute functions/ schedule; never carries over the source's data snapshot. # Get App Source: https://docs.textql.com/api-reference/sdk/appservice/getapp api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/GetApp # Get App DB Schema Source: https://docs.textql.com/api-reference/sdk/appservice/getappdbschema api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/GetAppDBSchema Read-only table/column list for the app's private DuckDB (app_db). # Get App DB Table Preview Source: https://docs.textql.com/api-reference/sdk/appservice/getappdbtablepreview api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/GetAppDBTablePreview A bounded row preview of one app_db table (SELECT ... LIMIT n). # Get App Member State Source: https://docs.textql.com/api-reference/sdk/appservice/getappmemberstate api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/GetAppMemberState Per-member app state: one JSON blob per (app, member) so apps remember settings/progress. Member always resolved server-side from auth context; per-member persistence, so viewers with read access can save their own state. # Get App Version Source: https://docs.textql.com/api-reference/sdk/appservice/getappversion api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/GetAppVersion # Get App View Stats Source: https://docs.textql.com/api-reference/sdk/appservice/getappviewstats api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/GetAppViewStats View analytics: reads the engagement views recorded on app page load. # Get Members With Apps Source: https://docs.textql.com/api-reference/sdk/appservice/getmemberswithapps api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/GetMembersWithApps # Invoke App Compute Function Source: https://docs.textql.com/api-reference/sdk/appservice/invokeappcomputefunction api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/InvokeAppComputeFunction Executes a declared compute function on a pooled sandbox worker; gated, org-scoped, rate-limited. # List App Activity Since Source: https://docs.textql.com/api-reference/sdk/appservice/listappactivitysince api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/ListAppActivitySince Cross-member live activity: rows from every member of the app after a seq, each carrying member_id + display_name (resolved server-side; never email). # List Apps Source: https://docs.textql.com/api-reference/sdk/appservice/listapps api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/ListApps # List App Uploads Source: https://docs.textql.com/api-reference/sdk/appservice/listappuploads api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/ListAppUploads Lists the invoking viewer's uploads for this app. May recover legacy Library pointers on first use. # List App Versions Source: https://docs.textql.com/api-reference/sdk/appservice/listappversions api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/ListAppVersions Version history: git-backed, one version per save (plus legacy publish-era snapshots); authors can list and restore. # List My App Member Activity Source: https://docs.textql.com/api-reference/sdk/appservice/listmyappmemberactivity api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/ListMyAppMemberActivity # Move App To Folder Source: https://docs.textql.com/api-reference/sdk/appservice/moveapptofolder api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/MoveAppToFolder Moves an app into a library folder (or to root when folder_id is empty). # Presence Heartbeat Source: https://docs.textql.com/api-reference/sdk/appservice/presenceheartbeat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/PresenceHeartbeat Presence heartbeat: sets a short-TTL Valkey key for the member and nudges the app's stream. Presence never touches Postgres and never exposes emails. # Record App Member Activity Source: https://docs.textql.com/api-reference/sdk/appservice/recordappmemberactivity api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/RecordAppMemberActivity Append-only per-member activity log. Listing is own rows only; no cross-member reads in this release. # Refresh App Source: https://docs.textql.com/api-reference/sdk/appservice/refreshapp api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/RefreshApp Re-fetches data sources, rebuilds the document with a fresh snapshot, re-uploads. # Remove App Upload Source: https://docs.textql.com/api-reference/sdk/appservice/removeappupload api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/RemoveAppUpload Removes only this viewer's app association, never the dataset itself. # Restore App Version Source: https://docs.textql.com/api-reference/sdk/appservice/restoreappversion api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/RestoreAppVersion # Set App Member State Source: https://docs.textql.com/api-reference/sdk/appservice/setappmemberstate api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/SetAppMemberState # Set Favorite Source: https://docs.textql.com/api-reference/sdk/appservice/setfavorite api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/SetFavorite Favorite/unfavorite a library item (app or dashboard) for the calling member. Per-member, per-org; favorited=false hard-deletes the row. Covers both primitives since the merged library page pins apps and dashboards through one client. # Update App Source: https://docs.textql.com/api-reference/sdk/appservice/updateapp api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/UpdateApp # Verify App Render Source: https://docs.textql.com/api-reference/sdk/appservice/verifyapprender api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.app.AppService/VerifyAppRender Renders the live artifact in the production sandbox and returns browser diagnostics. This is synchronous so callers can verify an app before sharing its URL. # Configure Otlp Export Source: https://docs.textql.com/api-reference/sdk/auditlogservice/configureotlpexport api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/ConfigureOtlpExport # Configure S3 Export Source: https://docs.textql.com/api-reference/sdk/auditlogservice/configures3export api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/ConfigureS3Export # Delete Otlp Export Config Source: https://docs.textql.com/api-reference/sdk/auditlogservice/deleteotlpexportconfig api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/DeleteOtlpExportConfig # Delete S3 Export Config Source: https://docs.textql.com/api-reference/sdk/auditlogservice/deletes3exportconfig api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/DeleteS3ExportConfig # Get Otlp Export Config Source: https://docs.textql.com/api-reference/sdk/auditlogservice/getotlpexportconfig api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/GetOtlpExportConfig # Get S3 Export Config Source: https://docs.textql.com/api-reference/sdk/auditlogservice/gets3exportconfig api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/GetS3ExportConfig # List Audit Logs Source: https://docs.textql.com/api-reference/sdk/auditlogservice/listauditlogs api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/ListAuditLogs # Test Otlp Export Connection Source: https://docs.textql.com/api-reference/sdk/auditlogservice/testotlpexportconnection api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/TestOtlpExportConnection # Test S3 Export Connection Source: https://docs.textql.com/api-reference/sdk/auditlogservice/tests3exportconnection api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/TestS3ExportConnection # Trigger Otlp Export Source: https://docs.textql.com/api-reference/sdk/auditlogservice/triggerotlpexport api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/TriggerOtlpExport # Trigger S3 Export Source: https://docs.textql.com/api-reference/sdk/auditlogservice/triggers3export api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.audit_log.AuditLogService/TriggerS3Export # Python SDK release log Source: https://docs.textql.com/api-reference/sdk/changelog Release history for the TextQL Python SDK Install the latest release from [PyPI](https://pypi.org/project/textql-sdk/): ```bash theme={null} pip install textql-sdk ``` [View `textql-sdk` v1.1.30 on PyPI](https://pypi.org/project/textql-sdk/1.1.30). ```bash theme={null} pip install textql-sdk==1.1.30 ``` Generated with [Speakeasy CLI 1.798.0 (generator 2.938.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.29 on PyPI](https://pypi.org/project/textql-sdk/1.1.29). ```bash theme={null} pip install textql-sdk==1.1.29 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.28 on PyPI](https://pypi.org/project/textql-sdk/1.1.28). ```bash theme={null} pip install textql-sdk==1.1.28 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.27 on PyPI](https://pypi.org/project/textql-sdk/1.1.27). ```bash theme={null} pip install textql-sdk==1.1.27 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.26 on PyPI](https://pypi.org/project/textql-sdk/1.1.26). ```bash theme={null} pip install textql-sdk==1.1.26 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.25 on PyPI](https://pypi.org/project/textql-sdk/1.1.25). ```bash theme={null} pip install textql-sdk==1.1.25 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.24 on PyPI](https://pypi.org/project/textql-sdk/1.1.24). ```bash theme={null} pip install textql-sdk==1.1.24 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.23 on PyPI](https://pypi.org/project/textql-sdk/1.1.23). ```bash theme={null} pip install textql-sdk==1.1.23 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.22 on PyPI](https://pypi.org/project/textql-sdk/1.1.22). ```bash theme={null} pip install textql-sdk==1.1.22 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.21 on PyPI](https://pypi.org/project/textql-sdk/1.1.21). ```bash theme={null} pip install textql-sdk==1.1.21 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.20 on PyPI](https://pypi.org/project/textql-sdk/1.1.20). ```bash theme={null} pip install textql-sdk==1.1.20 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.19 on PyPI](https://pypi.org/project/textql-sdk/1.1.19). ```bash theme={null} pip install textql-sdk==1.1.19 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.18 on PyPI](https://pypi.org/project/textql-sdk/1.1.18). ```bash theme={null} pip install textql-sdk==1.1.18 ``` Generated with [Speakeasy CLI 1.796.4 (generator 2.935.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.17 on PyPI](https://pypi.org/project/textql-sdk/1.1.17). ```bash theme={null} pip install textql-sdk==1.1.17 ``` Generated with [Speakeasy CLI 1.796.3 (generator 2.934.1)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.16 on PyPI](https://pypi.org/project/textql-sdk/1.1.16). ```bash theme={null} pip install textql-sdk==1.1.16 ``` Generated with [Speakeasy CLI 1.796.2 (generator 2.933.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.15 on PyPI](https://pypi.org/project/textql-sdk/1.1.15). ```bash theme={null} pip install textql-sdk==1.1.15 ``` Generated with [Speakeasy CLI 1.796.2 (generator 2.933.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.14 on PyPI](https://pypi.org/project/textql-sdk/1.1.14). ```bash theme={null} pip install textql-sdk==1.1.14 ``` Generated with [Speakeasy CLI 1.796.2 (generator 2.933.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.13 on PyPI](https://pypi.org/project/textql-sdk/1.1.13). ```bash theme={null} pip install textql-sdk==1.1.13 ``` Generated with [Speakeasy CLI 1.796.2 (generator 2.933.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.12 on PyPI](https://pypi.org/project/textql-sdk/1.1.12). ```bash theme={null} pip install textql-sdk==1.1.12 ``` Generated with [Speakeasy CLI 1.796.2 (generator 2.933.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.11 on PyPI](https://pypi.org/project/textql-sdk/1.1.11). ```bash theme={null} pip install textql-sdk==1.1.11 ``` Generated with [Speakeasy CLI 1.796.2 (generator 2.933.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.10 on PyPI](https://pypi.org/project/textql-sdk/1.1.10). ```bash theme={null} pip install textql-sdk==1.1.10 ``` Generated with [Speakeasy CLI 1.796.0 (generator 2.932.15)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.9 on PyPI](https://pypi.org/project/textql-sdk/1.1.9). ```bash theme={null} pip install textql-sdk==1.1.9 ``` Generated with [Speakeasy CLI 1.796.0 (generator 2.932.15)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.8 on PyPI](https://pypi.org/project/textql-sdk/1.1.8). ```bash theme={null} pip install textql-sdk==1.1.8 ``` Generated with [Speakeasy CLI 1.795.3 (generator 2.932.9)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.7 on PyPI](https://pypi.org/project/textql-sdk/1.1.7). ```bash theme={null} pip install textql-sdk==1.1.7 ``` Generated with [Speakeasy CLI 1.795.3 (generator 2.932.9)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.6 on PyPI](https://pypi.org/project/textql-sdk/1.1.6). ```bash theme={null} pip install textql-sdk==1.1.6 ``` Generated with [Speakeasy CLI 1.795.3 (generator 2.932.9)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.5 on PyPI](https://pypi.org/project/textql-sdk/1.1.5). ```bash theme={null} pip install textql-sdk==1.1.5 ``` Generated with [Speakeasy CLI 1.795.3 (generator 2.932.9)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.4 on PyPI](https://pypi.org/project/textql-sdk/1.1.4). ```bash theme={null} pip install textql-sdk==1.1.4 ``` Generated with [Speakeasy CLI 1.795.3 (generator 2.932.9)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.3 on PyPI](https://pypi.org/project/textql-sdk/1.1.3). ```bash theme={null} pip install textql-sdk==1.1.3 ``` Generated with [Speakeasy CLI 1.795.0 (generator 2.931.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.2 on PyPI](https://pypi.org/project/textql-sdk/1.1.2). ```bash theme={null} pip install textql-sdk==1.1.2 ``` Generated with [Speakeasy CLI 1.795.0 (generator 2.931.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.1 on PyPI](https://pypi.org/project/textql-sdk/1.1.1). ```bash theme={null} pip install textql-sdk==1.1.1 ``` Generated with [Speakeasy CLI 1.795.0 (generator 2.931.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.1.0 on PyPI](https://pypi.org/project/textql-sdk/1.1.0). ```bash theme={null} pip install textql-sdk==1.1.0 ``` Generated with [Speakeasy CLI 1.795.0 (generator 2.931.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.22 on PyPI](https://pypi.org/project/textql-sdk/1.0.22). ```bash theme={null} pip install textql-sdk==1.0.22 ``` Generated with [Speakeasy CLI 1.793.2 (generator 2.928.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.21 on PyPI](https://pypi.org/project/textql-sdk/1.0.21). ```bash theme={null} pip install textql-sdk==1.0.21 ``` Generated with [Speakeasy CLI 1.793.1 (generator 2.928.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.20 on PyPI](https://pypi.org/project/textql-sdk/1.0.20). ```bash theme={null} pip install textql-sdk==1.0.20 ``` Generated with [Speakeasy CLI 1.793.1 (generator 2.928.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.19 on PyPI](https://pypi.org/project/textql-sdk/1.0.19). ```bash theme={null} pip install textql-sdk==1.0.19 ``` Generated with [Speakeasy CLI 1.793.1 (generator 2.928.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.18 on PyPI](https://pypi.org/project/textql-sdk/1.0.18). ```bash theme={null} pip install textql-sdk==1.0.18 ``` Generated with [Speakeasy CLI 1.792.0 (generator 2.927.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.17 on PyPI](https://pypi.org/project/textql-sdk/1.0.17). ```bash theme={null} pip install textql-sdk==1.0.17 ``` Generated with [Speakeasy CLI 1.791.4 (generator 2.926.8)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.16 on PyPI](https://pypi.org/project/textql-sdk/1.0.16). ```bash theme={null} pip install textql-sdk==1.0.16 ``` Generated with [Speakeasy CLI 1.791.4 (generator 2.926.8)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.15 on PyPI](https://pypi.org/project/textql-sdk/1.0.15). ```bash theme={null} pip install textql-sdk==1.0.15 ``` Generated with [Speakeasy CLI 1.791.4 (generator 2.926.8)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.14 on PyPI](https://pypi.org/project/textql-sdk/1.0.14). ```bash theme={null} pip install textql-sdk==1.0.14 ``` Generated with [Speakeasy CLI 1.791.3 (generator 2.926.2)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.13 on PyPI](https://pypi.org/project/textql-sdk/1.0.13). ```bash theme={null} pip install textql-sdk==1.0.13 ``` Generated with [Speakeasy CLI 1.791.1 (generator 2.926.2)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.12 on PyPI](https://pypi.org/project/textql-sdk/1.0.12). ```bash theme={null} pip install textql-sdk==1.0.12 ``` Generated with [Speakeasy CLI 1.791.0 (generator 2.924.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.11 on PyPI](https://pypi.org/project/textql-sdk/1.0.11). ```bash theme={null} pip install textql-sdk==1.0.11 ``` Generated with [Speakeasy CLI 1.791.0 (generator 2.924.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.10 on PyPI](https://pypi.org/project/textql-sdk/1.0.10). ```bash theme={null} pip install textql-sdk==1.0.10 ``` [View `textql-sdk` v1.0.9 on PyPI](https://pypi.org/project/textql-sdk/1.0.9). ```bash theme={null} pip install textql-sdk==1.0.9 ``` Generated with [Speakeasy CLI 1.791.0 (generator 2.924.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.8 on PyPI](https://pypi.org/project/textql-sdk/1.0.8). ```bash theme={null} pip install textql-sdk==1.0.8 ``` Generated with [Speakeasy CLI 1.791.0 (generator 2.924.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.7 on PyPI](https://pypi.org/project/textql-sdk/1.0.7). ```bash theme={null} pip install textql-sdk==1.0.7 ``` Generated with [Speakeasy CLI 1.791.0 (generator 2.924.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.6 on PyPI](https://pypi.org/project/textql-sdk/1.0.6). ```bash theme={null} pip install textql-sdk==1.0.6 ``` Generated with [Speakeasy CLI 1.791.0 (generator 2.924.0)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.5 on PyPI](https://pypi.org/project/textql-sdk/1.0.5). ```bash theme={null} pip install textql-sdk==1.0.5 ``` Generated with [Speakeasy CLI 1.790.3 (generator 2.918.4)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.4 on PyPI](https://pypi.org/project/textql-sdk/1.0.4). ```bash theme={null} pip install textql-sdk==1.0.4 ``` Generated with [Speakeasy CLI 1.790.3 (generator 2.918.4)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.3 on PyPI](https://pypi.org/project/textql-sdk/1.0.3). ```bash theme={null} pip install textql-sdk==1.0.3 ``` Generated with [Speakeasy CLI 1.790.3 (generator 2.918.4)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.2 on PyPI](https://pypi.org/project/textql-sdk/1.0.2). ```bash theme={null} pip install textql-sdk==1.0.2 ``` Generated with [Speakeasy CLI 1.790.3 (generator 2.918.4)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.1 on PyPI](https://pypi.org/project/textql-sdk/1.0.1). ```bash theme={null} pip install textql-sdk==1.0.1 ``` Generated with [Speakeasy CLI 1.790.3 (generator 2.918.4)](https://github.com/speakeasy-api/speakeasy). [View `textql-sdk` v1.0.0 on PyPI](https://pypi.org/project/textql-sdk/1.0.0). ```bash theme={null} pip install textql-sdk==1.0.0 ``` Generated with [Speakeasy CLI 1.790.2 (generator 2.918.3)](https://github.com/speakeasy-api/speakeasy). # Approve Context Prompt Change Source: https://docs.textql.com/api-reference/sdk/chatservice/approvecontextpromptchange api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/ApproveContextPromptChange # Approve Ontology Change Source: https://docs.textql.com/api-reference/sdk/chatservice/approveontologychange api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/ApproveOntologyChange # Attach Agent To Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/attachagenttochat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/AttachAgentToChat # Attach App Source: https://docs.textql.com/api-reference/sdk/chatservice/attachapp api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/AttachApp # Attach Dashboard Source: https://docs.textql.com/api-reference/sdk/chatservice/attachdashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/AttachDashboard # Attach Dataset Source: https://docs.textql.com/api-reference/sdk/chatservice/attachdataset api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/AttachDataset # Bookmark Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/bookmarkchat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/BookmarkChat Bookmark management # Cancel Stream Source: https://docs.textql.com/api-reference/sdk/chatservice/cancelstream api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/CancelStream # Check Chat Permissions Source: https://docs.textql.com/api-reference/sdk/chatservice/checkchatpermissions api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/CheckChatPermissions # Check Health Source: https://docs.textql.com/api-reference/sdk/chatservice/checkhealth api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/CheckHealth # Check Streamlit Health Source: https://docs.textql.com/api-reference/sdk/chatservice/checkstreamlithealth api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/CheckStreamlitHealth # Create Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/createchat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/CreateChat # Delete Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/deletechat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/DeleteChat # Dismiss Questions Source: https://docs.textql.com/api-reference/sdk/chatservice/dismissquestions api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/DismissQuestions # Duplicate Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/duplicatechat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/DuplicateChat # Get API Chat Answer Source: https://docs.textql.com/api-reference/sdk/chatservice/getapichatanswer api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetAPIChatAnswer # Get Artifact Source: https://docs.textql.com/api-reference/sdk/chatservice/getartifact api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetArtifact Full artifact data (lazy load when selected) # Get Auto Attached Files Source: https://docs.textql.com/api-reference/sdk/chatservice/getautoattachedfiles api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetAutoAttachedFiles # Get Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/getchat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetChat # Get Chat Artifacts Summary Source: https://docs.textql.com/api-reference/sdk/chatservice/getchatartifactssummary api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetChatArtifactsSummary Artifact summaries for drawer (lightweight, for listing) # Get Chat Execution Timing Source: https://docs.textql.com/api-reference/sdk/chatservice/getchatexecutiontiming api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetChatExecutionTiming # Get Chat History Source: https://docs.textql.com/api-reference/sdk/chatservice/getchathistory api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetChatHistory # Get Chats Source: https://docs.textql.com/api-reference/sdk/chatservice/getchats api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetChats # Get Completion Parameters Source: https://docs.textql.com/api-reference/sdk/chatservice/getcompletionparameters api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetCompletionParameters # Get Completion Parameters Batch Source: https://docs.textql.com/api-reference/sdk/chatservice/getcompletionparametersbatch api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetCompletionParametersBatch # Get Llm Usage Source: https://docs.textql.com/api-reference/sdk/chatservice/getllmusage api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetLlmUsage # Get Members With Chats Source: https://docs.textql.com/api-reference/sdk/chatservice/getmemberswithchats api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetMembersWithChats List distinct chat creators the user can access # Get Playbook Chats Source: https://docs.textql.com/api-reference/sdk/chatservice/getplaybookchats api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/GetPlaybookChats # Poll Chat Events Source: https://docs.textql.com/api-reference/sdk/chatservice/pollchatevents api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/PollChatEvents # Query One Shot Source: https://docs.textql.com/api-reference/sdk/chatservice/queryoneshot api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/QueryOneShot External API users # Rate Chat Cell Source: https://docs.textql.com/api-reference/sdk/chatservice/ratechatcell api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/RateChatCell RateChatCell appends a row to cell_rating for every click; thumbs-down also upserts a user_thumbs_down thread_warning. # Reject Context Prompt Change Source: https://docs.textql.com/api-reference/sdk/chatservice/rejectcontextpromptchange api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/RejectContextPromptChange # Reject Ontology Change Source: https://docs.textql.com/api-reference/sdk/chatservice/rejectontologychange api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/RejectOntologyChange # Run Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/runchat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/RunChat # Send Message Source: https://docs.textql.com/api-reference/sdk/chatservice/sendmessage api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/SendMessage # Submit Context Prompt Change Source: https://docs.textql.com/api-reference/sdk/chatservice/submitcontextpromptchange api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/SubmitContextPromptChange # Submit Questions Source: https://docs.textql.com/api-reference/sdk/chatservice/submitquestions api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/SubmitQuestions Resolve a halted questions cell. Submit hands the answers to the agent and resumes it; Dismiss hands over only the answered count and does NOT resume (the user's next message becomes the dismissal reason). # Unbookmark Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/unbookmarkchat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/UnbookmarkChat # Update Chat Source: https://docs.textql.com/api-reference/sdk/chatservice/updatechat api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.chat.ChatService/UpdateChat # Create Connector Source: https://docs.textql.com/api-reference/sdk/connectorservice/createconnector api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/CreateConnector # Delete Connector Source: https://docs.textql.com/api-reference/sdk/connectorservice/deleteconnector api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/DeleteConnector # Duplicate Connector Source: https://docs.textql.com/api-reference/sdk/connectorservice/duplicateconnector api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/DuplicateConnector # Execute Query Source: https://docs.textql.com/api-reference/sdk/connectorservice/executequery api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/ExecuteQuery # Get Connector Source: https://docs.textql.com/api-reference/sdk/connectorservice/getconnector api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetConnector # Get Connector Cell Durations Source: https://docs.textql.com/api-reference/sdk/connectorservice/getconnectorcelldurations api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetConnectorCellDurations # Get Connector Chats Source: https://docs.textql.com/api-reference/sdk/connectorservice/getconnectorchats api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetConnectorChats # Get Connector Dashboards Source: https://docs.textql.com/api-reference/sdk/connectorservice/getconnectordashboards api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetConnectorDashboards # Get Connectors Source: https://docs.textql.com/api-reference/sdk/connectorservice/getconnectors api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetConnectors # Get Connector Stats Source: https://docs.textql.com/api-reference/sdk/connectorservice/getconnectorstats api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetConnectorStats # Get Connector Usage Source: https://docs.textql.com/api-reference/sdk/connectorservice/getconnectorusage api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetConnectorUsage # Get Example Queries Source: https://docs.textql.com/api-reference/sdk/connectorservice/getexamplequeries api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetExampleQueries # Get Table Preview Source: https://docs.textql.com/api-reference/sdk/connectorservice/gettablepreview api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/GetTablePreview # List Connector Tables Source: https://docs.textql.com/api-reference/sdk/connectorservice/listconnectortables api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/ListConnectorTables # List Query Templates Source: https://docs.textql.com/api-reference/sdk/connectorservice/listquerytemplates api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/ListQueryTemplates # Test Connector Source: https://docs.textql.com/api-reference/sdk/connectorservice/testconnector api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/TestConnector # Update Connector Source: https://docs.textql.com/api-reference/sdk/connectorservice/updateconnector api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.connector.ConnectorService/UpdateConnector # Check Dashboard Health Source: https://docs.textql.com/api-reference/sdk/dashboardservice/checkdashboardhealth api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/CheckDashboardHealth # Create Dashboard Source: https://docs.textql.com/api-reference/sdk/dashboardservice/createdashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/CreateDashboard CRUD operations # Create Dashboard Folder Source: https://docs.textql.com/api-reference/sdk/dashboardservice/createdashboardfolder api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/CreateDashboardFolder Folder management # Delete Dashboard Source: https://docs.textql.com/api-reference/sdk/dashboardservice/deletedashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/DeleteDashboard # Delete Dashboard Folder Source: https://docs.textql.com/api-reference/sdk/dashboardservice/deletedashboardfolder api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/DeleteDashboardFolder # Discard Dashboard Changes Source: https://docs.textql.com/api-reference/sdk/dashboardservice/discarddashboardchanges api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/DiscardDashboardChanges # Duplicate Dashboard Source: https://docs.textql.com/api-reference/sdk/dashboardservice/duplicatedashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/DuplicateDashboard # Get Dashboard Source: https://docs.textql.com/api-reference/sdk/dashboardservice/getdashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/GetDashboard # Get Dashboard Version Source: https://docs.textql.com/api-reference/sdk/dashboardservice/getdashboardversion api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/GetDashboardVersion # Get Dashboard View Stats Source: https://docs.textql.com/api-reference/sdk/dashboardservice/getdashboardviewstats api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/GetDashboardViewStats View analytics # Get Members With Dashboards Source: https://docs.textql.com/api-reference/sdk/dashboardservice/getmemberswithdashboards api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/GetMembersWithDashboards Member management # List Dashboard Folders Source: https://docs.textql.com/api-reference/sdk/dashboardservice/listdashboardfolders api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/ListDashboardFolders # List Dashboards Source: https://docs.textql.com/api-reference/sdk/dashboardservice/listdashboards api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/ListDashboards # List Dashboard Versions Source: https://docs.textql.com/api-reference/sdk/dashboardservice/listdashboardversions api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/ListDashboardVersions Version history # Move Dashboard To Folder Source: https://docs.textql.com/api-reference/sdk/dashboardservice/movedashboardtofolder api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/MoveDashboardToFolder # Publish Dashboard Source: https://docs.textql.com/api-reference/sdk/dashboardservice/publishdashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/PublishDashboard Publishing workflow # Regenerate Screenshot Source: https://docs.textql.com/api-reference/sdk/dashboardservice/regeneratescreenshot api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/RegenerateScreenshot Screenshot management # Restore Dashboard Version Source: https://docs.textql.com/api-reference/sdk/dashboardservice/restoredashboardversion api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/RestoreDashboardVersion # Run Scheduled Dashboard Source: https://docs.textql.com/api-reference/sdk/dashboardservice/runscheduleddashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/RunScheduledDashboard # Spawn Dashboard Source: https://docs.textql.com/api-reference/sdk/dashboardservice/spawndashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/SpawnDashboard Dashboard execution # Update Dashboard Source: https://docs.textql.com/api-reference/sdk/dashboardservice/updatedashboard api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/UpdateDashboard # Update Dashboard Folder Source: https://docs.textql.com/api-reference/sdk/dashboardservice/updatedashboardfolder api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/UpdateDashboardFolder # Update Dashboard Schedule Source: https://docs.textql.com/api-reference/sdk/dashboardservice/updatedashboardschedule api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dashboard.DashboardService/UpdateDashboardSchedule Scheduling # Create Folder Source: https://docs.textql.com/api-reference/sdk/datasetservice/createfolder api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/CreateFolder # Create Power BI Dataset Source: https://docs.textql.com/api-reference/sdk/datasetservice/createpowerbidataset api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/CreatePowerBIDataset # Create Tableau Dataset Source: https://docs.textql.com/api-reference/sdk/datasetservice/createtableaudataset api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/CreateTableauDataset Create Tableau dataset from views/datasources # Create Upload Presign Url Source: https://docs.textql.com/api-reference/sdk/datasetservice/createuploadpresignurl api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/CreateUploadPresignUrl uploads # Delete Dataset Source: https://docs.textql.com/api-reference/sdk/datasetservice/deletedataset api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/DeleteDataset Delete a dataset (soft delete) # Export Dataset Source: https://docs.textql.com/api-reference/sdk/datasetservice/exportdataset api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/ExportDataset export dataset in "raw" format – original if dataset is uploaded, converted format otherwise (defaults to CSV) # Get Dataset Source: https://docs.textql.com/api-reference/sdk/datasetservice/getdataset api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/GetDataset GetDataset, GetDatasets only return metadata # Get Datasets Source: https://docs.textql.com/api-reference/sdk/datasetservice/getdatasets api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/GetDatasets # Get Datasets By Ids Source: https://docs.textql.com/api-reference/sdk/datasetservice/getdatasetsbyids api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/GetDatasetsByIds # Get Dataset Stats Source: https://docs.textql.com/api-reference/sdk/datasetservice/getdatasetstats api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/GetDatasetStats # Get Dataset Values Source: https://docs.textql.com/api-reference/sdk/datasetservice/getdatasetvalues api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/GetDatasetValues # Get Folders Source: https://docs.textql.com/api-reference/sdk/datasetservice/getfolders api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/GetFolders for AR: CreateFolderACL, UpdateFolderACL, DeleteFolderACL # Process Upload Presign Url Source: https://docs.textql.com/api-reference/sdk/datasetservice/processuploadpresignurl api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/ProcessUploadPresignUrl for AR: CreateDatasetACL, UpdateDatasetACL, DeleteDatasetACL # Update Dataset Source: https://docs.textql.com/api-reference/sdk/datasetservice/updatedataset api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.dataset.DatasetService/UpdateDataset Update dataset metadata # Embedding a Data App Source: https://docs.textql.com/api-reference/sdk/embed Render a TextQL Data App inside your own web app with @textql/sdk. For a runnable version of everything below, see the [embed-app example](https://github.com/TextQLLabs/textql-ts-sdk/tree/main/examples/embed-app). Embedding is available in the **TypeScript SDK** (`@textql/sdk`). The React component described here needs **v1.4.0+**; the server handler works from v1.3.8. On-prem, `TEXTQL_SERVER_URL` is read from **v1.4.1+**. ```bash theme={null} npm install @textql/sdk ``` Two environment variables on your server: ```bash theme={null} TEXTQL_API_KEY=... # Settings → Developers → API Keys (admin only) TEXTQL_APP_ID=... # from the app's URL in TextQL: /app/ ``` ## Quickstart **Server** — one catch-all route. This is the only place your API key lives. ```ts theme={null} // app/api/textql/[...path]/route.ts import { createEmbedHandler } from "@textql/sdk/embed"; export const { GET, POST } = createEmbedHandler(); ``` **Browser** — in React, one import and one tag: ```tsx theme={null} import { TextqlApp } from "@textql/sdk/embed/react"; export default function Page() { return ; } ``` That is the whole integration. Both halves default to `/api/textql`, so nothing needs configuring on the happy path. ## Your routes are the access control The API key is org-wide, so it stays on your server and the browser talks only to your routes — it is never told which app it renders and cannot ask for a different one. But nothing in the handler knows **who the caller is**. Without an `authorize` hook, the app is visible to anyone who can reach the route. ```ts theme={null} export const { GET, POST } = createEmbedHandler({ authorize: async (request) => (await getSession(request)) !== null, }); ``` Return `false` or throw to reject. ## The React component `@textql/sdk/embed/react` is a thin wrapper over the same custom element. Prefer it to the raw tag: JSX has no type for a custom element, and React cannot bind the events below because they are `CustomEvent`s. ```tsx theme={null} setTitle(meta.name)} onReady={(meta) => console.log("bridge up", meta)} onError={(error) => console.error(error.message)} /> ``` Where `createEmbedHandler` is mounted. Must match the handler's `basePath`. The element has no intrinsic size, like an iframe. Give it a real height. Applied to the host element. Metadata arrived: `name`, `screenshotUrl`, and the app's compute `functions`. Depends only on your server, so it fires even if the app's bridge never connects — use it to title your own chrome. The app's runtime completed its handshake. The app reported a runtime error. Already logged to the console by the element. ### Server-side rendering `` carries the `"use client"` directive and loads the custom element in an effect, so it server-renders to an inert tag and upgrades on the client. That also code-splits the element out of your initial bundle. Do **not** import `@textql/sdk/embed/element` directly in a Next.js app. It defines a class extending `HTMLElement` at module scope, so importing it on a server throws `HTMLElement is not defined` — including inside a `"use client"` component, which Next.js still renders on the server. `react` is an optional peer dependency (`^18 || ^19`). Nothing else in the SDK needs it. ## Other frameworks It is a custom element, so there is no framework binding to install. ```svelte theme={null} ``` Without a bundler, serve the element from your own origin. It is one self-contained file — it imports nothing, so serving it is a copy: ```bash theme={null} npm install @textql/sdk@^1.4.1 cp node_modules/@textql/sdk/esm/embed/element.js public/vendor/textql-element.js ``` ```html theme={null} ``` Copying it keeps the version pinned in your lockfile, where your existing review and scanning already look. A CDN saves the copy for a prototype: ```html theme={null} ``` Pin the version if you do. Don't ship the CDN form to a restricted network: it puts a third-party host in your `script-src`, adds an outbound request on every page load, and does not resolve air-gapped. Express, Fastify, and bare `node:http` predate the Web `Request` object, so wrap the handler: ```ts theme={null} import { createEmbedHandler, toNodeHandler } from "@textql/sdk/embed"; const embed = toNodeHandler(createEmbedHandler()); app.use(async (req, res, next) => { if (!(await embed(req, res))) next(); }); ``` Outside React, the same three events are `CustomEvent`s on the element: ```ts theme={null} element.addEventListener("app-meta", (event) => setTitle(event.detail.name)); ``` `element.meta` holds the same value for a listener that attached late. ## Sizing Data Apps lay out against the full viewport — the same region they get inside TextQL — so a narrow content column breaks the app's own layout, not the element. Full-bleed width and a real height are the safe defaults. ## Compute functions Apps that compute call back through your server. The handler relays them to `POST {basePath}/compute` and **refuses any function name the app does not declare**, so the route cannot become a generic runner for anything your API key can reach. The declared names arrive as `functions` on `onMeta`. An app with none renders exactly the same but never calls back, leaving the route unused. TextQL rate-limits compute server-side and returns `resource_exhausted`. A production host should retry that with backoff. ## Options | Option | Default | | | - | - | - | | `appId` | `TEXTQL_APP_ID` | A function `(request) => string` picks per request — from a session, tenant header, or route param. | | `client` | built from `TEXTQL_API_KEY` | Pass your own `Textql` instance. | | `basePath` | `/api/textql` | Where the handler is mounted. Must match `apiBase`. | | `authorize` | none | Return `false` or throw to reject. | | `rehostDocument` | `true` | See below. | The handler serves three routes under `basePath` and returns `null` for anything else, so it composes with your own routing: | Route | | | - | - | | `GET {basePath}/app` | the app's name, screenshot, and compute functions | | `GET {basePath}/document` | the app's HTML, served from your origin | | `POST {basePath}/compute` | runs one declared compute function | On-prem: set `TEXTQL_SERVER_URL` to the plain host. The SDK appends `/rpc/public` itself. ## Why the document is served from your origin TextQL pins a published app to the one origin it was published for, twice over: | Pin | Effect elsewhere | | - | - | | `frame-ancestors` CSP header | the browser refuses to frame the document at all | | `ANA_RUNTIME_CONFIG.hostOrigin`, baked in at publish time | the only origin the app's runtime will message, so the bridge is inert | So `GET {basePath}/document` fetches the app's HTML server-side and re-serves it from your origin: your response carries no `frame-ancestors`, and `hostOrigin` is rewritten to your origin. A `` keeps every subresource loading from the CDN, which already serves them with `Access-Control-Allow-Origin: *`. This is a workaround, with costs worth knowing: * Every document load proxies through your server as `no-store`, so the entry document is not CDN-cached. Subresources still are. * The rewrite is pinned to a string emitted by TextQL's app shell. If that shape changes, the handler returns a 502 telling you to upgrade rather than serving a document whose bridge will never connect. * The response carries `content-security-policy: sandbox allow-scripts`. Untrusted third-party HTML is being served from *your* origin, and that header is what keeps it out of your cookies and `localStorage`. If you reimplement this route, keep it. Set `rehostDocument: false` to point the iframe straight at the signed CDN URL instead. That is the better path, and it works once your origin is allowed platform-side. ## On-premise and restricted networks Nothing in the integration needs a TextQL-operated origin at runtime, so long as your instance also stores rendered apps somewhere you operate. Point the handler at your instance and serve the element yourself, and every host the browser reaches is one you run: ```bash theme={null} TEXTQL_SERVER_URL=https://textql.internal.example.com ``` Every client reads `TEXTQL_SERVER_URL` from **v1.4.1+** — the embed handler, `new Textql()`, and `createStreamingClient`. An explicit `serverURL` still wins. On earlier versions the variable is ignored and the SDK silently defaults to `app.textql.com`; pass the host at each construction site instead — `createEmbedHandler({ client: new Textql({ serverURL }) })`. | What the browser loads | From | | - | - | | the element script | your origin, once copied out of `node_modules` | | `{basePath}/app`, `/document`, `/compute` | your origin — the handler's three routes | | the app document's subresources | the asset origin your instance signs URLs for, via the injected `` | | the poster screenshot, before the app loads | the same asset origin | Check that last pair before assuming air-gapped. `rehostDocument` re-serves the entry document from your origin, but the scripts and styles inside it still load from wherever your instance stores rendered apps — your own object storage on-prem, TextQL's CDN against cloud. With the element self-hosted and `rehostDocument` on, the host page needs `script-src 'self'` and `frame-src 'self'` — the iframe's `src` is your own `{basePath}/document` — plus `style-src 'unsafe-inline'`, because the element writes its shadow-DOM stylesheet as an inline `