# Docs - Platform: Build, deploy, and operate AI agents on the Dynamiq platform. - [Platform](/docs/platform): Build, deploy, and operate AI agents on the Dynamiq platform — from the visual workflow builder to production integrations. - Get Started - [Overview](/docs/platform/get-started/overview): What Dynamiq is, the four pillars of the platform, and where to start based on what you want to build. - [Quickstart: Chat](/docs/platform/get-started/quickstart-chat): Get your first answer from the Dynamiq Chat super agent in five minutes — modes, file attachments, and connectors. - [Quickstart: Build an Agent](/docs/platform/get-started/quickstart-build-an-agent): Create a workflow, add an Agent node with a web search tool, configure its LLM, and run a test — all on the canvas. - [Quickstart: Deploy & Call Your Agent](/docs/platform/get-started/quickstart-deploy-and-call): Deploy a workflow as an App, create an Access Key, and call the endpoint over HTTP — synchronous first, then streaming. - [Core Concepts](/docs/platform/get-started/core-concepts): The Dynamiq glossary: organizations, projects, workflows, apps, deployments, traces, access keys, and how they fit together. - [Navigating the Platform](/docs/platform/get-started/navigating-the-platform): A tour of the Dynamiq sidebar — what each item does and where its documentation lives. - Use Cases - [Use Cases](/docs/platform/use-cases): End-to-end journeys showing how enterprise teams assemble Dynamiq features into production agents — architecture, permissions, deployment, and evaluation. - [Build a Search Assistant](/docs/platform/use-cases/build-a-search-assistant): Build an assistant that searches the web and answers with cited sources — as a single agent, a manager-and-specialists team, or a deterministic pipeline. - [Customer Support: Triage Agent](/docs/platform/use-cases/customer-support): Build a support triage agent that answers from a product-docs Knowledge Base, holds multi-turn conversations, escalates to humans, and leaves an audit trail. - [Financial Services: Transaction Review](/docs/platform/use-cases/financial-services): A transaction-review and client-reporting agent with per-analyst database credentials, an approval gate before anything leaves the firm, and a full audit trail. - [Healthcare: Patient Document Intake](/docs/platform/use-cases/healthcare): A patient-document intake pipeline that screens for PII and prompt injection before any LLM sees the text, then extracts schema-conformant clinical data. - [Internal Knowledge Assistant](/docs/platform/use-cases/internal-knowledge-assistant): Build a company-wide Q&A assistant over Google Drive, Notion, and Confluence content — with per-team isolation, per-user memory, and measurable retrieval quality. - Chat - [Overview](/docs/platform/chat/overview): Chat is Dynamiq's built-in super agent — research, files, code, browsing, and your connected apps in one conversation. - [Chat Modes](/docs/platform/chat/chat-modes): Switch between the built-in Dynamiq Agent and your own deployed Apps, and pick the model that powers the conversation. - [Files & Artifacts](/docs/platform/chat/chat-files-and-artifacts): Attach files to a conversation, collect the documents and sites the agent produces, and inspect every tool step. - [Connectors](/docs/platform/chat/chat-connectors): Connect Google Drive, Gmail, Notion, Slack, databases, and more to the Dynamiq Agent — personally or org-wide, toggled per conversation. - [Skills & Commands](/docs/platform/chat/chat-skills-and-commands): Attach reusable Skills that change how the agent works, and turn your saved Prompts into slash commands. - [Scheduled Tasks](/docs/platform/chat/chat-scheduled-tasks): Have the Dynamiq Agent run a prompt for you once or on a daily, weekly, or monthly schedule, and review every run. - [Subagents & Sandbox](/docs/platform/chat/chat-subagents-and-sandbox): Every Dynamiq Agent conversation runs on its own cloud computer, and the Subagents toggle parallelizes large research tasks. - Wilson - [Overview](/docs/platform/wilson/overview): Wilson is the Slack-native AI coworker built on Dynamiq — the same agent, connectors, and sandbox as Chat, wherever your team already works. - [Install](/docs/platform/wilson/install): Connect your Slack workspace to Wilson: the OAuth install flow, who can run it, the workspace states, and how to uninstall. - [Using Wilson](/docs/platform/wilson/using-wilson): Link your Slack account, talk to Wilson in DMs and channels, manage connectors, and understand what differs from web Chat. - Workflows - [Overview](/docs/platform/workflows/overview): What a Dynamiq workflow is — the Input → nodes → Output anatomy, drafts vs. releases, and everywhere workflows run on the platform. - [Build Your First Workflow](/docs/platform/workflows/build-your-first-workflow): A hands-on tutorial: wire Input → Agent → Output, map the data between them, test-run it, inspect the trace, and release v1. - [Workflow Canvas](/docs/platform/workflows/workflow-canvas): Find your way around the editor — the node palette and its categories, adding and connecting nodes, sticky notes, groups, and canvas controls. - [How Nodes Connect](/docs/platform/workflows/how-nodes-connect): The rules behind every edge — flow handles, typed inputs and outputs, type compatibility, agent slots vs. edges, and the wiring mistakes to avoid. - [Node Configuration](/docs/platform/workflows/node-configuration): The node inspector explained tab by tab — Configuration, Output, and Error Handling — plus the special Input/Output node panels and retry semantics. - [Input Transformers & Jinja](/docs/platform/workflows/input-transformers-and-jinja): How data moves into a node — JSONPath selectors over upstream results, the literal-fallback rules, and Jinja templating inside prompts. - [Error Handling](/docs/platform/workflows/error-handling): What happens when a node fails — Raise vs. Return semantics, retries with backoff, timeouts, and fallback paths that keep the run alive. - [Testing & Debugging](/docs/platform/workflows/testing-and-debugging-workflows): Run a workflow straight from the editor — the Test panel's Request, Chat and Test cases tabs, per-node trace inspection, dry runs, and the iterate loop. - [Test Cases](/docs/platform/workflows/test-cases): Save requests with the output they must produce, run them against the canvas after every change, read pass/fail and mismatches, import and export cases as CSV, and see which rules they cover. - [Versions & Releases](/docs/platform/workflows/versions-and-releases): The full workflow lifecycle — drafts, what every Save creates, version history and previews, Save as new, archiving, export, and what Apps pin to. - [Templates](/docs/platform/workflows/templates): Start a workflow from the template gallery — browse by category, load a prebuilt graph onto the canvas, and customize it into your own. - [Troubleshooting Workflows](/docs/platform/workflows/workflow-troubleshooting): A symptom → cause → fix catalog for the most common workflow mistakes — empty outputs, broken mappings, agent loops, and draft confusion. - Agents - [The Agent Node](/docs/platform/workflows/agents/agent-node): Configure the Agent node — LLM, role, tools, memory, inference modes, loop limits, streaming, and structured output. - [Agent Tools](/docs/platform/workflows/agents/agent-tools): Attach tools to the Agent node, write descriptions the model can act on, and pass runtime tool parameters with tool_params. - [Agent Memory](/docs/platform/workflows/agents/agent-memory): Give agents multi-turn conversation memory — backends, user/session scoping, save modes, and retrieval strategies. - [Prompts, Roles & Inference Modes](/docs/platform/workflows/agents/agent-prompts-and-roles): Write agent roles and instructions, template them with Jinja variables, and enforce structured output with Response format. - [Sandbox](/docs/platform/workflows/agents/sandbox): Give your agent a full Linux computer — an isolated E2B or Daytona VM with a shell, a filesystem, code execution, and public web previews. - [Subagents & Delegation](/docs/platform/workflows/agents/subagents-and-delegation): Attach agents as tools of other agents — specialist delegation, delegate_final passthrough, parallel-safe factories, and per-run call limits. - [Context Management & Summarization](/docs/platform/workflows/agents/context-management): Automatic history compaction for long agent runs — token-based triggers, what gets summarized vs. preserved, and how to tune the thresholds. - [File Store & Artifacts](/docs/platform/workflows/agents/file-store): Give your agent a file workspace without a full sandbox — file read/write/search tools, todo lists, and how files flow in and out of a run. - Orchestration - [Orchestration Overview](/docs/platform/workflows/orchestration/overview): Choose the right coordination pattern — a single Agent, the Graph Orchestrator, or the deterministic operators: Choice, Map, Decision Table, Rules, Expression and Sub-workflow. - [Graph Orchestrator](/docs/platform/workflows/orchestration/graph-orchestrator): Build agentic state machines — states, tasks, edges, conditional routing, and shared context — on the canvas and in the Python SDK, with a complete worked example. - [Map Node](/docs/platform/workflows/orchestration/map-node): Run one node once per item of a list — fan-out with optional concurrency, failure behavior, and a predictable list output. - [Choice Node](/docs/platform/workflows/orchestration/choice-node): Branch a workflow deterministically — condition rules, operators, AND/OR groups, one labeled output per branch, and the default else branch. - [Decision Table Node](/docs/platform/workflows/orchestration/decision-table-node): Model business rules as a table — typed input columns, output columns, a rules grid with a cell grammar, hit policies, CSV import and export, and coverage from test cases. - [Rules Node](/docs/platform/workflows/orchestration/rules-node): Check a record against a list of rules — inputs read by path, derived values, severities, conditions and effective windows, messages that insert the record's values, CSV import and export, and findings in test cases. - [Judgement Node](/docs/platform/workflows/orchestration/judgement-node): Ask yes/no, choice and score questions about a record and route on calibrated answers — three judges, confidence thresholds, and review paths. - [Expression Node](/docs/platform/workflows/orchestration/expression-node): Compute derived values without code — named inputs, Jinja2 expressions for each output, typed results, and an optional pass-through of the inputs. - [Sub-workflow Node](/docs/platform/workflows/orchestration/sub-workflow-node): Run a released version of another workflow as one step — pick the workflow and version, map its Input fields, read its Output fields, and keep the pin stable across deployments. - Advanced - [MCP Servers](/docs/platform/workflows/advanced/mcp-servers): Connect agents to Model Context Protocol servers over SSE or Streamable HTTP — tool discovery, filtering, auth headers, and troubleshooting. - [Guardrails & Validators](/docs/platform/workflows/advanced/guardrails-and-validators): Screen workflow inputs with PII, prompt-injection, and LlamaGuard detectors, and validate outputs with JSON, Python, choices, and regex validators. - [Human in the Loop](/docs/platform/workflows/advanced/human-in-the-loop): Pause a running workflow for human input — the Human Feedback tool, per-node execution approval, and how replies resume the run. - Deploy & Integrate - [Overview](/docs/platform/deployments/overview): What you can deploy on Dynamiq — workflow Apps, AI models, vector databases, and services — and how the deployment lifecycle works. - [Deploy a Workflow App](/docs/platform/deployments/deploy-a-workflow-app): Turn a saved workflow version into a live App from the editor or the Deployments page, then tour every tab of the App page. - [Call Your App over HTTP](/docs/platform/deployments/call-your-app): The full HTTP contract for invoking a deployed Dynamiq App — auth, request body, synchronous responses, SSE streaming, async callbacks, and error codes. - [The Runs API](/docs/platform/deployments/run-api): Manage App executions on your App's hostname — upload files, create sync/streaming/background runs, list and inspect runs, cancel, send mid-run input, and replay events. - [Streaming & Async Jobs](/docs/platform/deployments/streaming-and-async): Stream app output over SSE or WebSocket, run jobs asynchronously with callbacks, and resume paused runs with human feedback. - [Conversations & Sessions](/docs/platform/deployments/conversations-and-sessions): Build multi-turn conversations with memory-enabled agents using user_id and session_id, and inspect session history in the UI or via API. - [End-User Connection Requirements](/docs/platform/deployments/end-user-requirements): Let each end user of a deployed App link their own account or credentials — define requirements at build time, detect unmet ones at run time, and fulfill them via the hosted connect page or the connect API. - [Chat Widget & Assistant](/docs/platform/deployments/chat-widget-and-assistant): Embed the Dynamiq chat widget in your site or share a standalone Chat Assistant URL — no custom frontend required. - [Triggers](/docs/platform/deployments/triggers): Invoke a deployed App automatically on a cron schedule, at a one-off time, or when an event arrives from a connected app such as Slack or email. - [Webhooks & Events](/docs/platform/deployments/webhooks-and-events): How deployed Apps push results to your systems — the async callback delivery contract, receiver requirements, and the event surfaces you can stream or poll. - [Variables](/docs/platform/deployments/variables): Configuration values and secrets for deployments — environment variables on Service Deployments, and where workflow Apps get their configuration instead. - [Runtime Connection Overrides](/docs/platform/deployments/runtime-connection-overrides): How a deployed App resolves node Connections at run time — server-side credential resolution, and per-user substitution through connection requirements. - [Monitoring, History & Traces](/docs/platform/deployments/monitoring-history-and-traces): Track invocations, latency, token usage, and cost for a deployed App, and drill into the full execution trace of every run. - [Deployment History & Rollback](/docs/platform/deployments/deployment-history-and-rollback): Audit every deployment of an App on the History tab and roll back by redeploying an earlier workflow version. - [Model Inference Deployments](/docs/platform/deployments/model-inference-deployments): Deploy open-source models on vLLM or LoRAX runtimes and call them through OpenAI-compatible chat, embeddings, and audio endpoints. - [Database Deployments](/docs/platform/deployments/database-deployments): Deploy a managed Weaviate vector database in one click, fetch its credentials, and wire it into workflows and Knowledge Bases. - [Service Deployments](/docs/platform/deployments/service-deployments): Run any Docker container on Dynamiq — bring an image or a source bundle and get a hostname with Access Key auth, pods, logs, and traces. - Voice Agents - [Overview](/docs/platform/voice-agents/overview): Real-time voice agents on Dynamiq — how they work, how callers reach them, and what each tab of the agent page does. - [Build a Voice Agent](/docs/platform/voice-agents/build-a-voice-agent): Create a voice agent with the Deploy Voice Agent wizard — instructions, models, actions, and advanced settings — then test it in the browser. - [Models & Voices](/docs/platform/voice-agents/models-and-voices): The voice agent model catalog — speech-to-text, LLM, text-to-speech, and speech-to-speech providers, with voices, cost, and latency. - [Tools & Transfers](/docs/platform/voice-agents/tools-and-transfers): Give a voice agent HTTP tools, client tools, and MCP servers, let it transfer callers to a human, and let it hang up. - [Turn-Taking & Latency](/docs/platform/voice-agents/turn-taking-and-latency): Tune how a voice agent decides the caller finished speaking, how it handles interruptions, and how quickly it replies. - [Telephony](/docs/platform/voice-agents/telephony): Connect phone numbers you already own to a Dynamiq voice agent with a SIP trunk, and handle inbound calls and keypad input. - [Test & Simulate](/docs/platform/voice-agents/test-and-simulate): Talk to a voice agent from your browser, and run scenario sets of simulated callers against it with an LLM judge. - [Calls & Observability](/docs/platform/voice-agents/calls-and-observability): Every voice agent call, with transcript, recording, per-turn latency waterfall, usage, and deployment history. - [Deploy & Integrate](/docs/platform/voice-agents/deploy-and-integrate): Deploy a voice agent, manage its deployments, and connect it to your own application over WebRTC. - [WebSocket Transport](/docs/platform/voice-agents/websocket-transport): Stream raw audio to a Dynamiq voice agent over a single WebSocket — the full message protocol, audio formats, and a runnable client. - Knowledge Bases - [Overview](/docs/platform/knowledge-bases/overview): Knowledge Bases are managed RAG: an ingestion workflow, vector storage, and a retrieval endpoint your agents can query as a tool. - [Create a Knowledge Base](/docs/platform/knowledge-bases/create-a-knowledge-base): Create a Knowledge Base with your choice of splitter settings, embedding provider, and vector store — Dynamiq generates the ingestion workflow for you. - Data Sources - [Data Sources](/docs/platform/knowledge-bases/data-sources): Fill a Knowledge Base by uploading files, crawling websites, or syncing OAuth sources like Google Drive and Notion — with pause, resume, and sync history. - [Confluence](/docs/platform/knowledge-bases/data-sources/confluence): Sync Confluence pages into a knowledge base via an Atlassian Connection. - [Google Drive](/docs/platform/knowledge-bases/data-sources/google-drive): Sync Google Drive files into a knowledge base via OAuth 2.0 or a Google Cloud service account. - [SharePoint](/docs/platform/knowledge-bases/data-sources/sharepoint): Sync SharePoint document libraries into a knowledge base, with optional permission syncing through a Microsoft Entra App. - [Chunking & Embedding](/docs/platform/knowledge-bases/chunking-and-embedding): How splitter strategy, chunk size, overlap, and embedder choice shape retrieval quality — and how to tune them in your Knowledge Base. - [Customize the Ingestion Workflow](/docs/platform/knowledge-bases/customize-ingestion-workflow): Open the ingestion workflow behind a Knowledge Base, edit its four stages, add your own nodes, and deploy a new version. - [Search & Test](/docs/platform/knowledge-bases/search-and-test): Query your Knowledge Base directly, inspect the returned chunks and scores, and validate retrieval quality before agents depend on it. - [Connect a Knowledge Base to Agents](/docs/platform/knowledge-bases/connect-kb-to-agents): Attach a Knowledge Base Retriever tool to an Agent node and tune top-k, hybrid search, filters, and similarity threshold. - [Knowledge Graphs](/docs/platform/knowledge-bases/knowledge-graphs): Turn on Build knowledge graph when you create a Knowledge Base to extract entities and relationships alongside the vector store. - [Vector Store Search vs Knowledge Base](/docs/platform/knowledge-bases/vector-store-vs-knowledge-base): When to use a managed Knowledge Base and when to query your own vector store directly with Vector Store Search and Writer nodes. - [Build a RAG Pipeline](/docs/platform/knowledge-bases/build-a-rag-pipeline): An end-to-end worked example: create a Knowledge Base, ingest files and a website, verify retrieval, attach it to an agent, deploy, and call it over HTTP. - [Knowledge Base API](/docs/platform/knowledge-bases/kb-api-ingestion-and-search): The full HTTP contract of a Knowledge Base's hostname — multipart ingestion, item reprocess and delete, and the documents search endpoint. - Connections - [Overview](/docs/platform/connections/overview): Connections store credentials and configuration for external services — encrypted at rest, scoped to a project, and resolved at runtime. - [Create a Connection](/docs/platform/connections/create-a-connection): Add credentials for LLM providers, databases, vector stores, MCP servers, and more — in the UI or through the API. - [OAuth Connections](/docs/platform/connections/oauth-connections): Connect Google, Dropbox, Microsoft, Box, and Notion with an OAuth consent flow — authorize, automatic token refresh, scopes, and expiry handling. - [Parameterized Connections](/docs/platform/connections/parameterized-connections): Http and HttpApiKey Connections carry default request parameters — URL, method, headers, query params, body — that nodes and run input extend or override at request time. - [SSH Tunnels](/docs/platform/connections/ssh-tunnels): Reach databases on private networks by adding an ssh_tunnel block to a database Connection — supported types, config fields, and where to configure it. - Prompts - [Prompts](/docs/platform/prompts/overview): Create reusable, versioned prompt templates and use them in LLM nodes and as Chat slash commands. - [Prompt Playground](/docs/platform/prompts/prompts-playground): Test prompt wording against real models, tune parameters, and compare up to ten prompt/model combinations side by side. - Skills - [Skills](/docs/platform/skills/overview): Package repeatable instructions as versioned skills that agents load on demand — in workflows and in Chat. - [Create a Skill](/docs/platform/skills/create-a-skill): Author a skill in the editor — name, description, markdown instructions — and grow it with new versions. - [Import Skills & the Official Library](/docs/platform/skills/skills-marketplace-and-import): Bring skills in from zip archives and GitHub folders, and add Dynamiq's official skills to your Chat library. - Evaluations - [Evaluations Overview](/docs/platform/evaluations/overview): Measure the quality of your workflows with metrics, datasets, and evaluation runs — before and after you deploy. - [Metrics](/docs/platform/evaluations/metrics): Define how outputs are scored: LLM-as-a-judge rubrics, predefined RAG evaluators, or your own Python code. - [Datasets](/docs/platform/evaluations/datasets): Versioned test data for evaluations: draft, release, and fork versions; add items by hand, from JSON files, or straight from traces. - [Evaluation Runs](/docs/platform/evaluations/evaluation-runs): Run metrics over a dataset version — optionally piping each row through a workflow first — and read, download, or rerun the results. - [Online Evaluations](/docs/platform/evaluations/online-evaluations): Score a deployed App's live traffic automatically from the App's Evaluations tab — sample rate, input path, and scored runs. - AI Gateway - [AI Gateway Overview](/docs/platform/gateway/overview): One OpenAI-compatible endpoint for many LLM providers, plus trace ingestion and LLM-powered document parsing and extraction. - [AI Models Router](/docs/platform/gateway/ai-models-router): Call any routed LLM through the OpenAI-compatible endpoint at router.getdynamiq.ai — base URL swap, streaming, and access-key auth. - [Gateway Tracing](/docs/platform/gateway/gateway-tracing): Ingest traces from open-source Dynamiq workflows into your project and inspect them in the AI Gateway's Tracing tab. - [Document Parse](/docs/platform/gateway/document-parse): Convert a PDF or image to clean Markdown with the gateway's LLM-based OCR endpoint — playground, API contract, and code samples. - [Document Extract](/docs/platform/gateway/document-extract): Extract structured JSON from PDFs and images: an OCR pass followed by schema-guided extraction, in the playground or via /v1/ocr/extract. - Administration - [Organizations & Projects](/docs/platform/administration/organizations-and-projects): How Organizations and Projects scope your resources, how to switch between and create them, and where member roles fit in. - [Members & Roles](/docs/platform/administration/members-and-roles): Organization roles, project membership, and the invitation flow — what each role can and cannot do. - [API Keys & Tokens](/docs/platform/administration/api-keys-and-tokens): When to use an Access Key vs. a Personal Access Token, how to create each, and how to rotate and revoke them safely. - [Usage & Billing](/docs/platform/administration/usage-and-billing): Read the Usage tab, understand how plan limits are resolved and enforced, and manage your subscription through Stripe. - [Security](/docs/platform/administration/security): How Dynamiq stores credentials, encrypts secrets, isolates code execution, and deletes your data. - Self-Hosted Deployment - [Self-Hosted Overview](/docs/platform/self-hosted/overview): Run the full Dynamiq platform in your own Kubernetes cluster with the official Helm chart, backed by your own Postgres, NATS, and object storage. - [System Requirements](/docs/platform/self-hosted/requirements): The cluster version, external services, hostnames, credentials, and resource baseline to have ready before installing self-hosted Dynamiq. - **Install** - [Install on Kubernetes (Helm)](/docs/platform/self-hosted/install-kubernetes): The canonical, cloud-agnostic install of self-hosted Dynamiq: namespaces, secrets, a values file, the Helm release, and migrations. - [Install on AWS (EKS)](/docs/platform/self-hosted/install-aws-eks): The AWS-specific deltas for self-hosted Dynamiq on EKS: RDS, S3 with IRSA, Secrets Manager, Route 53 wildcard TLS, and the Marketplace chart. - [Install on IBM Cloud (IKS)](/docs/platform/self-hosted/install-ibm-cloud): The IBM Cloud deltas for self-hosted Dynamiq on IKS: Databases for PostgreSQL, Cloud Object Storage over the S3-compatible endpoint, and ingress. - [Install on Red Hat OpenShift](/docs/platform/self-hosted/install-openshift): The OpenShift deltas for self-hosted Dynamiq: security context constraints, PostgreSQL, S3-compatible object storage, and wildcard Routes. - **Configure** - [Configuration Reference](/docs/platform/self-hosted/configuration): How the Dynamiq chart turns values into env vars: required keys, the secret contract, catalyst provider keys, object storage, and External Secrets. - [Networking, DNS & TLS](/docs/platform/self-hosted/networking-and-tls): Expose self-hosted Dynamiq: the hostname map, Ingress and Gateway API, wildcard certificates, and internal service traffic. - **Operate** - [Upgrades & Rollback](/docs/platform/self-hosted/upgrades-and-rollback): Upgrade a self-hosted Dynamiq release safely, roll back when it goes wrong, and understand what uninstall leaves behind. - [Operations & Troubleshooting](/docs/platform/self-hosted/operations): Day-two operations for self-hosted Dynamiq: health checks, logs, scaling, backup and restore, and fixes for the failures you'll actually hit. - Node Reference - [Node Reference](/docs/platform/nodes): Reference for every node in the Dynamiq workflow builder, organized by palette category. - Logic - [Logic Nodes](/docs/platform/nodes/logic): Logic nodes available in the Dynamiq workflow builder. - [Choice](/docs/platform/nodes/logic/choice): Defines conditions based on previous node parameters to decide the next step in a workflow. - [Decision Table](/docs/platform/nodes/logic/decision-table): Matches named inputs against rows of rules and returns the outputs of the matching rows, with the rules that fired. - [Rules](/docs/platform/nodes/logic/rules): Checks named inputs against a list of rules and reports one finding per rule: pass, fail, warn, info, not applicable or not evaluated, with the values it read. - [Judgement](/docs/platform/nodes/logic/judgement): Asks yes/no, choice and score questions about a record and returns calibrated answers with a confidence, judged by TypeSafe System One, an LLM or an agent. - [Expression](/docs/platform/nodes/logic/expression): Computes new fields from named inputs with Jinja2 expressions, the same syntax as template variables without the braces. - [Sub-workflow](/docs/platform/nodes/logic/sub-workflow): Runs a released version of another workflow in this project as one step and exposes its outputs. - [Map](/docs/platform/nodes/logic/map): Repeats a predefined node multiple times, depending on the amount of input data. - [Output](/docs/platform/nodes/logic/output): A utility node representing the output of workflow. - [Note](/docs/platform/nodes/logic/note): Free-floating canvas annotation for documenting a workflow; it has no inputs, outputs, or runtime behavior. - [Input](/docs/platform/nodes/logic/input): A utility node representing the input of workflow. - Agents - [Agents Nodes](/docs/platform/nodes/agents): Agents nodes available in the Dynamiq workflow builder. - [Agent](/docs/platform/nodes/agents/agent): Uses reasoning and tool-based actions to handle complex, dynamic tasks iteratively. - [Graph Orchestrator](/docs/platform/nodes/agents/graph-orchestrator): Orchestrates the execution of complex tasks, interconnected within the graph structure. - [Graph State](/docs/platform/nodes/agents/graph-state): Represents single state of graph flow. - Tools - [Tools Nodes](/docs/platform/nodes/tools): Tools nodes available in the Dynamiq workflow builder. - [LLM Nodes](/docs/platform/nodes/tools/llms): Every LLM provider node available in the workflow builder, with its node type and required connection. - [Web search with Tavily](/docs/platform/nodes/tools/web-search-with-tavily): Executes web searches using the Tavily search service. - [Web search with Jina](/docs/platform/nodes/tools/web-search-with-jina): Executes web searches using the Jina AI API. - [Web search with Exa](/docs/platform/nodes/tools/web-search-with-exa): Executes web searches using the Exa AI API. - [Web search with ScaleSerp](/docs/platform/nodes/tools/web-search-with-scaleserp): Performs web searches via the Scale SERP API. - [Web search with Firecrawl](/docs/platform/nodes/tools/web-search-with-firecrawl): A tool for performing Firecrawl searches. - [Scraping with ZenRows](/docs/platform/nodes/tools/scraping-with-zenrows): Extracts structured data from web pages using ZenRows. - [Scraping with Jina](/docs/platform/nodes/tools/scraping-with-jina): Extracts structured data from web pages using Jina AI. - [Scraping with Firecrawl](/docs/platform/nodes/tools/scraping-with-firecrawl): Extracts structured data from web pages using FireCrawl. - [Action](/docs/platform/nodes/tools/action): Runs actions from the connector catalog (send a Gmail message, post to Slack, update a CRM record) on behalf of the agent. - [Code Sandbox with E2B](/docs/platform/nodes/tools/code-sandbox-with-e2b): Executes Python code, shell commands, and file operations in a secure environment. - [Browser with Stagehand](/docs/platform/nodes/tools/browser-with-stagehand): Controls a remote web browser with natural-language actions using Stagehand. - [Custom Python Tool](/docs/platform/nodes/tools/custom-python-tool): Runs custom Python code for workflow flexibility. - [SQL Executor](/docs/platform/nodes/tools/sql-executor): Executes SQL queries dynamically for database interactions. - [HTTP API Call](/docs/platform/nodes/tools/http-api-call): Makes HTTP requests with configurable parameters and handles responses. - [Human Feedback](/docs/platform/nodes/tools/human-feedback): A unified tool for human interaction - both gathering feedback and sending messages. - [MCP Server](/docs/platform/nodes/tools/mcp-server): A tool that manages connections to MCP servers and initializes MCP tools. - [Context Manager Tool](/docs/platform/nodes/tools/context-manager-tool): A tool that generates a conversation summary. - [Cypher Graph Query](/docs/platform/nodes/tools/cypher-graph-query): Tool for executing Cypher queries against Neo4j, Apache AGE, or Neptune. - [Desktop VM with E2B](/docs/platform/nodes/tools/desktop-vm-with-e2b): Runs a remote desktop virtual machine via E2B for GUI automation tasks. - [File Read Tool](/docs/platform/nodes/tools/file-read-tool): A tool for reading files from storage with intelligent file processing. - [File Write Tool](/docs/platform/nodes/tools/file-write-tool): A tool for writing and editing files in storage. - [Image Generation](/docs/platform/nodes/tools/image-generation): Node for generating images using various AI models. - [Parallel Tool Calls Tool](/docs/platform/nodes/tools/parallel-tool-calls-tool): A meta-tool that signals the agent can execute multiple tools in parallel. - [Local Python Code Sandbox](/docs/platform/nodes/tools/local-python-code-sandbox): Execute ad-hoc Python code inside RestrictedPython with file store helpers. - [Sandbox Info Tool](/docs/platform/nodes/tools/sandbox-info-tool): A tool for the agent to get sandbox metadata and, when needed, the public URL for a port. - [Sandbox Shell Tool](/docs/platform/nodes/tools/sandbox-shell-tool): A tool for executing shell commands in a sandbox environment. - [Skills Tool](/docs/platform/nodes/tools/skills-tool): Tool for skills: discover and get content from a skill registry (Dynamiq or FileSystem). - [Sub Agent Tool](/docs/platform/nodes/tools/sub-agent-tool): Wraps an agent instance or factory as a callable tool for parent agents. - [Extended Thinking](/docs/platform/nodes/tools/extended-thinking): A tool for structured thinking and reasoning processes. - [Todo Write Tool](/docs/platform/nodes/tools/todo-write-tool): Write/update the todo list in storage. - Audio - [Audio Nodes](/docs/platform/nodes/audio): Audio nodes available in the Dynamiq workflow builder. - [Whisper](/docs/platform/nodes/audio/whisper): Converts speech to text using the Whisper model. - [ElevenLabs STS](/docs/platform/nodes/audio/elevenlabs-sts): Converts one audio input into another synthesized voice. - [ElevenLabs TTS](/docs/platform/nodes/audio/elevenlabs-tts): Generates speech from text using ElevenLabs' model. - Validators - [Validators Nodes](/docs/platform/nodes/validators): Validators nodes available in the Dynamiq workflow builder. - [Regex Match](/docs/platform/nodes/validators/regex-match): Checks if input matches a specified regex pattern. - [Valid Choices](/docs/platform/nodes/validators/valid-choices): Ensures input matches predefined valid options. - [Valid JSON](/docs/platform/nodes/validators/valid-json): Verifies that input is correctly formatted in JSON. - [Valid Python](/docs/platform/nodes/validators/valid-python): Confirms input follows correct Python syntax. - [LlamaGuard Detector](/docs/platform/nodes/validators/llamaguard-detector): Detects policy violations in messages. - [PII Detector](/docs/platform/nodes/validators/pii-detector): Identifies and flags personally identifiable information. - [Prompt Injection Detector](/docs/platform/nodes/validators/prompt-injection-detector): Detects unauthorized prompt injections. - [System One](/docs/platform/nodes/validators/system-one): Answers typed judgement questions with calibrated probabilities, as the judge inside a Judgement node. - Transformations - [Transformations Nodes](/docs/platform/nodes/transformations): Transformations nodes available in the Dynamiq workflow builder. - [Text Template](/docs/platform/nodes/transformations/text-template): Processes a text template by replacing placeholders with input values dynamically. - [Any to JSON](/docs/platform/nodes/transformations/any-to-json): Converts a list, dictionary, or other object into a JSON-formatted string. - [JSON to Any](/docs/platform/nodes/transformations/json-to-any): Converts a JSON string back into its original object form (e.g., list or dictionary). - [Regex Extractor](/docs/platform/nodes/transformations/regex-extractor): Finds and returns all matches in the text based on the provided regular expression. - [Extract by Index](/docs/platform/nodes/transformations/extract-by-index): Retrieves a specific element from a list using the given index. - [File Type Extractor](/docs/platform/nodes/transformations/file-type-extractor): Identifies whether a file is an audio, video, font, presentation, or another file type. - Pre-processing - [Pre-processing Nodes](/docs/platform/nodes/pre-processing): Pre-processing nodes available in the Dynamiq workflow builder. - [Unstructured Converter](/docs/platform/nodes/pre-processing/unstructured-converter): Converts various file formats for pre-processing. - [LLM Image Converter](/docs/platform/nodes/pre-processing/llm-image-converter): Extracts text from images. - [LLM PDF Converter](/docs/platform/nodes/pre-processing/llm-pdf-converter): Extracts text from PDF documents. - [PDF File Converter](/docs/platform/nodes/pre-processing/pdf-file-converter): Converts PDF files into a standardized document format. - [PPTX File Converter](/docs/platform/nodes/pre-processing/pptx-file-converter): Converts PPTX files into a standardized document format. - [DOCX File Converter](/docs/platform/nodes/pre-processing/docx-file-converter): A component for converting files to Documents using the docx converter. - [CSV File Converter](/docs/platform/nodes/pre-processing/csv-file-converter): Converts CSV files into a standardized document format. - [Text File Converter](/docs/platform/nodes/pre-processing/text-file-converter): A component for converting text files to Documents using the TextFileConverter. - [Multi-file Converter](/docs/platform/nodes/pre-processing/multi-file-converter): Converts various file formats for pre-processing. - Chunking - [Chunking Nodes](/docs/platform/nodes/chunking): Chunking nodes available in the Dynamiq workflow builder. - [Document Splitter](/docs/platform/nodes/chunking/document-splitter): Splits documents into smaller sections while retaining metadata. - [Recursive Character Splitter](/docs/platform/nodes/chunking/recursive-character-splitter): Recursively splits text by a list of separators into chunks. - [Markdown Header Splitter](/docs/platform/nodes/chunking/markdown-header-splitter): Splits Markdown by header levels into chunks. - [Auto Splitter](/docs/platform/nodes/chunking/auto-splitter): Automatically picks a splitting strategy per document. - [Semantic Splitter](/docs/platform/nodes/chunking/semantic-splitter): Splits text into semantically coherent chunks using an embedder. - Rankers - [Rankers Nodes](/docs/platform/nodes/rankers): Rankers nodes available in the Dynamiq workflow builder. - [LLM Document Ranker](/docs/platform/nodes/rankers/llm-document-ranker): Reranks documents using a Large Language Model (LLM). - [Time Weighted Document Ranker](/docs/platform/nodes/rankers/time-weighted-document-ranker): Adjusts the initial scores of documents based on their recency. - [Cohere Ranker](/docs/platform/nodes/rankers/cohere-ranker): Reranks documents using Cohere's reranking model. - Vectorization - [Vectorization Nodes](/docs/platform/nodes/vectorization): Vectorization nodes available in the Dynamiq workflow builder. - [Embedder Nodes](/docs/platform/nodes/vectorization/embedders): Document and text embedder nodes for every supported provider, with node types and required connections. - Vector Stores - [Vector Stores Nodes](/docs/platform/nodes/vector-stores): Vector Stores nodes available in the Dynamiq workflow builder. - [Knowledge Base Search](/docs/platform/nodes/vector-stores/knowledge-base-search): Retrieves relevant documents based on a query and knowledge base ID. - [Vector Store Search](/docs/platform/nodes/vector-stores/vector-store-search): Retrieves relevant documents based on a query while specifying the embedder and retriever. - [Vector Store Writer](/docs/platform/nodes/vector-stores/vector-store-writer): Node for writing documents to a vector store. - [Vector Store Retrievers](/docs/platform/nodes/vector-stores/retrievers): Store-specific retriever nodes that fetch documents by embedding similarity, with node types and connections. - [Vector Store Writers](/docs/platform/nodes/vector-stores/writers): Store-specific writer nodes that upsert embedded documents into a vector store. - Python SDK: The open-source Dynamiq orchestration framework for agentic AI applications. - [Python SDK](/docs/sdk): Dynamiq is an open-source Python orchestration framework for agentic AI and LLM applications — build workflows, agents, and RAG pipelines in code. - Get Started - [Installation](/docs/sdk/get-started/installation): Install the dynamiq Python package with pip or Poetry, check requirements, and set up provider API keys. - [Quickstart](/docs/sdk/get-started/quickstart): Run an LLM workflow in about 20 lines of Python, then build an agent that answers questions with a web-search tool. - [SDK vs Platform](/docs/sdk/get-started/sdk-vs-platform): Decide when to build with the open-source Python SDK, when to use the Dynamiq platform, and how the two connect through tracing, YAML, the gateway, and deployment. - Concepts - [Workflows, Flows & Nodes](/docs/sdk/concepts/workflows-flows-and-nodes): The three core SDK abstractions — Workflow, Flow, and Node — how the DAG is wired with depends_on() and .inputs(), and the node execution lifecycle. - [Connections & Credentials](/docs/sdk/concepts/connections-and-credentials): How SDK connection classes hold credentials, which environment variables they read by default, and how the ConnectionManager caches service clients. - [Running Workflows & Results](/docs/sdk/concepts/running-and-results): The run() interface, RunnableResult and statuses, RunnableConfig options, async execution, and mid-run cancellation. - [Streaming & Callbacks](/docs/sdk/concepts/streaming-and-callbacks): Stream tokens and intermediate steps from LLM and agent nodes with StreamingConfig, and hook every lifecycle event with callback handlers. - Operators - [Operators](/docs/sdk/operators/overview): The deterministic control-flow nodes — Choice, Map, Decision Table, Rules, Expression, and Sub-workflow — what each one does and when to reach for it. - [Decision Table](/docs/sdk/operators/decision-table): Match typed inputs against rows of condition cells — the cell grammar, hit policies and aggregations, input coercion, build-time validation, and the YAML form. - [Rules](/docs/sdk/operators/rules): Check a record against a list of rules — inputs read by path, derived values, severities and conditions, effective windows, what a missing value means, build-time validation, and the YAML form. - [Judgement](/docs/sdk/operators/judgement): Ask typed questions about a record and get calibrated answers — three judges, the confidence measure, thresholds, and routing into Choice and Decision Table. - [Expression](/docs/sdk/operators/expression): Compute derived fields from named inputs with sandboxed Jinja2 expressions — typed results, pass-through, missing-input semantics, and the YAML form. - [Sub-workflow](/docs/sdk/operators/sub-workflow): Run another Flow as one step — inputs and outputs, isolation per run, tracing, error propagation, recursion guards, Map fan-out, and nested flows in YAML. - Agents - [Agent](/docs/sdk/agents/agent): Configure the SDK's Agent class — LLM, role, tools, loops, inference modes, structured output, sandbox, file store, and streaming. - [Tools & Function Tools](/docs/sdk/agents/tools-and-function-tools): The built-in tool catalog, the function_tool decorator for wrapping Python functions, and custom tool nodes. - [Memory](/docs/sdk/agents/memory): Give agents conversation memory with pluggable backends — in-memory, SQL, vector stores, or the Dynamiq platform — plus save modes, retrieval strategies, and long-term fact memory. - [Orchestrators](/docs/sdk/agents/orchestrators): Coordinate multiple agents in code — manager-led delegation with agents as tools, and the Graph Orchestrator state machine. - RAG - [RAG Pipeline](/docs/sdk/rag/rag-pipeline): Build both halves of RAG in the SDK — an indexing flow that converts, splits, embeds, and stores documents, and a retrieval flow that answers questions over them. - [Document Processing](/docs/sdk/rag/document-processing): Convert files into documents and split them into chunks — the full converter and splitter catalog with configuration. - [Embedders & Vector Stores](/docs/sdk/rag/embedders-and-vector-stores): Eight embedding providers and eight vector stores — the provider/store matrix with writer configuration for each. - [Retrievers & Rankers](/docs/sdk/rag/retrievers-and-rankers): Query vector stores with per-store retriever nodes, bundle retrieval into an agent tool, and re-rank results with Cohere, an LLM, or time weighting. - [Knowledge Graphs](/docs/sdk/rag/knowledge-graphs): Extract entities and relationships from documents with an LLM, resolve them to durable identities, and upsert them into a graph store. - [Graph Retrieval](/docs/sdk/rag/graph-retrieval): Query a knowledge graph with KnowledgeGraphRetriever — seeded traversal, multi-hop beam search, and access control enforced on edges. - LLMs - [LLM Providers](/docs/sdk/llms/llm-providers): One unified LLM node across 27 providers — provider table, connection env vars, common parameters, vision and PDF support, and fallbacks. - [Prompts & Messages](/docs/sdk/llms/prompts-and-messages): Build Prompt and Message objects with Jinja templating, send images and files with VisionMessage, and attach tools and response schemas. - Platform Integration - [Tracing to Dynamiq](/docs/sdk/platform-integration/tracing-to-dynamiq): Send traces from open-source SDK workflows to the Dynamiq platform with DynamiqTracingCallbackHandler and view them under Gateway → Tracing. - [YAML Workflows](/docs/sdk/platform-integration/yaml-workflows): Define workflows in YAML, load them with WorkflowYAMLLoader, dump them back with WorkflowYAMLDumper, and resolve $type/$id requirements. - [Deploy from the SDK](/docs/sdk/platform-integration/deploy-from-sdk): Package an SDK application as a container and deploy it to Dynamiq as a service with the dynamiq CLI — from source build or prebuilt image. - [Platform Connections & Gateway](/docs/sdk/platform-integration/remote-connections-and-gateway): Call the Dynamiq AI Gateway from SDK code and use the Dynamiq connection to reach platform-managed memory and skills. - CLI - [CLI Overview](/docs/sdk/cli/cli-overview): Install and configure the dynamiq CLI — credentials, config files, and the org/project context that scopes every command. - [CLI Reference](/docs/sdk/cli/cli-reference): Complete reference for the dynamiq CLI command families — config, org, project, workflow, app, trigger, service and resource-profiles — with flags and examples. - Advanced - [Custom Nodes](/docs/sdk/advanced/custom-nodes): Subclass Node to build your own workflow components — input schemas, the execute contract, the execution lifecycle, and connection handling with ConnectionNode. - [Error Handling & Retries](/docs/sdk/advanced/error-handling-and-retries): Configure per-node timeouts, retries with exponential backoff, and failure propagation with the ErrorHandling model. - [Caching](/docs/sdk/advanced/caching): Cache node outputs in Redis so repeated runs with identical inputs skip execution — per-node opt-in plus a per-run cache config. - [Checkpoints](/docs/sdk/advanced/checkpoints): Persist flow state to a backend (in-memory, filesystem, PostgreSQL) and resume runs after crashes, timeouts, or human-input waits. - [Evaluations](/docs/sdk/advanced/evaluations-sdk): Score workflow outputs in code with ready-made RAG metrics, the LLMEvaluator for custom judged metrics, and the PythonEvaluator for programmatic checks. - [Sandboxes](/docs/sdk/advanced/sandboxes): Give agents an isolated remote filesystem and shell with E2B or Daytona sandbox backends — attach via SandboxConfig or drive the sandbox directly. - Examples - [Examples](/docs/sdk/examples/examples-index): A categorized catalog of the runnable examples in the dynamiq repository — agents, orchestrators, RAG, tools, checkpoints, streaming, evaluations, and full use-case apps. - [Worked Examples](/docs/sdk/examples/worked-examples): Three complete, runnable checkpoint programs — crash-resume across a multi-node flow, a human-in-the-loop approval that survives a process exit, and time travel through a Graph Orchestrator's checkpoint chain. - API Reference: REST API reference for integrating with deployed Dynamiq apps. - [API Reference](/docs/api-reference): REST API surface for integrating with Dynamiq: deployed apps, runs, conversations, knowledge bases, and the AI gateway. - [Authentication](/docs/api-reference/authentication): Which credential calls what: access keys for deployed apps and the gateway, personal access tokens for the management API. - Runs: Execute and observe runs of a deployed app. Served on the deployed app's own hostname. - [Upload a file](/docs/api-reference/runs/uploadRunFile): Uploads a file to the app's storage so it can later be attached to a run via `file_ids`. The maximum request size is 128 MiB. - [List runs](/docs/api-reference/runs/listRuns): Lists runs of the app, most recently started first by default. Runs with at least one unresolved human-feedback or approval request are reported with the synthetic `awaiting_input` status. - [Create a run](/docs/api-reference/runs/createRun): Starts a run of the deployed app. Three execution modes are supported: **synchronous** (default — the request blocks until the run reaches a terminal state and returns the final run), **background** (`background: true` — returns `202 Accepted` immediately with the created run), and **streaming** (`stream: true` — the response is a Server-Sent Events stream of run events). `stream` and `background` cannot both be true. Files can be attached either by referencing previously uploaded files via `file_ids` or by sending the request as `multipart/form-data` with one or more `files` parts (max 128 MiB). - [Get a run](/docs/api-reference/runs/getRun): Returns a single run. If the run has unresolved human-feedback or approval requests, its status is reported as `awaiting_input` and the pending requests are listed in `input_requests`. - [Cancel a run](/docs/api-reference/runs/cancelRun): Cancels a run that has not reached a terminal state. Cancelling an already completed, failed, or canceled run is a no-op and still returns 200. - [Send input to a run](/docs/api-reference/runs/sendRunInput): Answers a pending human-feedback or approval request of a run. Only runs in `started` or `paused` status accept input; a paused run is resumed from its latest checkpoint first. The `request_id` must match the `id` of a pending request from the run's `input_requests` (or the corresponding `agent.human_feedback.requested` / `approval_request.created` event). - [List run events](/docs/api-reference/runs/listRunEvents): Returns the persisted events of a run in sequence order. Useful for replaying a finished run; for live runs use the stream endpoint. - [Stream run events (SSE)](/docs/api-reference/runs/streamRunEvents): Streams the run's events over Server-Sent Events in strict sequence order, starting from the beginning or from `after_sequence`. The stream closes after a terminal event (`run.completed`, `run.failed`, `run.canceled`). A `: heartbeat` comment is emitted every 15 seconds of inactivity. - Apps: App management and observability — apps, traces, sessions, and run artifacts. Served on the management API. - [List apps](/docs/api-reference/apps/listApps): Lists apps in a project, sorted by name by default. - [Get an app](/docs/api-reference/apps/getApp): Returns a single app, including its hostname — the base URL for the app's Runs API. - [Invoke an app (proxy)](/docs/api-reference/apps/invokeApp): Proxies the request to the deployed app's own host, so you can run an app through the management API without resolving its hostname. The request body and response are **workflow-defined**: the body fields are the app workflow's Input-node fields (passthrough), and the response is whatever the app's Runs API endpoint returns. The route accepts any HTTP method; POST with a JSON body is the common case. - [List app traces](/docs/api-reference/apps/listAppTraces): Lists execution traces of an app, most recent first. Supports field filters on `started_at` (time), `status`, `session_id`, and `user_id` via query parameters of the form `started_at:gte=`, `status=`, and `session_id=`. - [Download app traces](/docs/api-reference/apps/downloadAppTraces): Streams an app's execution traces as a downloadable JSON file (`Content-Disposition: attachment; filename="-traces.json"`). The body is a JSON array of trace objects — each with `id`, `started_at`, `ended_at`, `status`, `input`, `output`, and `usage` — ordered by `started_at` descending. When `include_runs` is `true`, each trace also carries a `runs` array. Optional time-range filters on `started_at` use the `started_at:gt|gte|lt|lte=` form; `gt`/`gte` and `lt`/`lte` are mutually exclusive. - [Get an app trace](/docs/api-reference/apps/getAppTrace): Returns a single execution trace of an app. - [List app trace runs](/docs/api-reference/apps/listAppTraceRuns): Lists the individual runs — workflow, flow, and node executions — that make up a trace, ordered by `start_time` descending by default. - [List app sessions](/docs/api-reference/apps/listAppSessions): Lists conversation sessions of an app. A session groups runs that share a `session_id`. - [List session messages](/docs/api-reference/apps/listAppSessionMessages): Lists the input/output message exchanges of a session in chronological order. - [List run artifacts](/docs/api-reference/apps/listAppRunArtifacts): Lists files produced by a run, with short-lived download URLs. - Voice Agents: Real-time voice agents — agent lifecycle (CRUD, deploy, undeploy), the model catalog, WebRTC and WebSocket call sessions, SIP telephony, call records with transcripts and per-turn latency, and simulation scenario sets and runs. Served on the management API. - [Get the voice model catalog](/docs/api-reference/voice-agents/getVoiceCatalog): Returns every speech-to-text, LLM, text-to-speech, and realtime (speech-to-speech) provider available to voice agents, with their models, voices, languages, per-model cost and latency metrics, and the provider parameters the builder renders. Also reports whether call recording is configured on this environment. - [List voice agents](/docs/api-reference/voice-agents/listVoiceAgents): Lists the voice agents in a project, newest first by default. - [Create a voice agent](/docs/api-reference/voice-agents/createVoiceAgent): Creates a voice agent in `draft` status. The agent is not reachable until it is deployed. - [Get a voice agent](/docs/api-reference/voice-agents/getVoiceAgent) - [Update a voice agent](/docs/api-reference/voice-agents/updateVoiceAgent): Updates the agent's name, description, or configuration. Configuration changes take effect on the **next call** — no redeploy is required. Calls already in progress keep the configuration they started with. - [Delete a voice agent](/docs/api-reference/voice-agents/deleteVoiceAgent): Archives the agent: its hosted deployment is removed and its phone numbers are disconnected and released. Call records and deployment history are kept. - [Duplicate a voice agent](/docs/api-reference/voice-agents/duplicateVoiceAgent): Copies the agent's whole configuration into a new agent in `draft` status. Phone numbers are not copied — a number can be attached to only one agent. `POST /v1/agents/voice/agents/{agent_id}/copy` is an alias of this operation and behaves identically. - [Deploy a voice agent](/docs/api-reference/voice-agents/deployVoiceAgent): Provisions a hosted worker for the agent. Returns immediately with `202`; the agent's `status` moves from `deploying` to `deployed` (or `failed`, with `deploy_error` set) over the next few minutes. Poll the agent or read the deployment history to follow progress. There is no in-place redeploy: deploying an agent that is already `deployed` is rejected with `400`. Undeploy it first, then deploy again. - [Undeploy a voice agent](/docs/api-reference/voice-agents/undeployVoiceAgent): Removes the hosted worker and deactivates phone routing. The agent returns to `draft` and stays editable and testable. Telephony is torn down as part of this. Accepted only when the agent is `deployed` or `failed`; undeploying an agent that is already back to `draft` is rejected with `400`. - [List deployment history](/docs/api-reference/voice-agents/listVoiceAgentDeployments): One record per deploy attempt, most recent first. Configuration edits do not appear here — they require no deployment. - [Create a WebRTC session](/docs/api-reference/voice-agents/createVoiceAgentSession): Mints a short-lived realtime session for a browser or mobile client. Call this from your server and hand the client only `url` and `token` — the Personal Access Token must never reach the client. Note this response is **bare**: it is not wrapped in a `data` envelope. - [Create a WebSocket call](/docs/api-reference/voice-agents/createVoiceWebSocketCall): Reserves a call and returns a single-use WebSocket URL for streaming raw audio from your own backend. The URL carries its own token, is valid for about two minutes, and can be connected exactly once. Connecting to that URL can itself be refused with `503` and body `{"code": "capacity"}` when the serving replica has no free call slot. The reservation is not consumed in that case, so create a new call and connect again. The message protocol — audio framing and every JSON event in both directions — is documented under Platform → Voice Agents → WebSocket transport. - [Create a WebRTC session for a draft agent](/docs/api-reference/voice-agents/createVoiceDraftSession): Mints a realtime session without requiring a saved agent — pass a full `config` inline to talk to a configuration that has not been created yet. This is what the builder's **Live Preview** uses. Pass `agent_id` instead to mint a session for a saved agent; that is equivalent to `POST /v1/agents/voice/agents/{agent_id}/rooms`. The response is **bare** — it is not wrapped in a `data` envelope. - [Test an MCP server](/docs/api-reference/voice-agents/testVoiceMcpServer): Probes an MCP server and lists the tools it exposes, so you can verify a server before attaching it to an agent. Backs the **Test connection** button in the builder. A failed probe is reported as `200` with `ok: false` and an `error` string — it is not an HTTP error. The response is **bare**, with no `data` envelope. - [Get telephony configuration](/docs/api-reference/voice-agents/getVoiceAgentTelephony): Returns the agent's SIP trunks, the phone numbers attached to them, the SIP URI to point your trunk's origination at, and per-provider setup steps. - [Connect phone numbers](/docs/api-reference/voice-agents/createVoiceSipTrunk): Provisions an inbound SIP trunk and a routing rule for the agent, and reserves the numbers. The agent must already be `deploying` or `deployed`. Numbers are normalized before validation — spaces, dashes, dots and brackets are stripped — and must carry a country code. They are unique across the platform, so connecting a number already attached elsewhere fails with `409`. `auth_password` is passed through to the routing layer and is not returned afterwards. - [Disconnect phone numbers](/docs/api-reference/voice-agents/deleteVoiceSipTrunk): Removes the trunk and its routing rule. Inbound calls to its numbers stop reaching the agent immediately and the numbers are released. - [List calls](/docs/api-reference/voice-agents/listVoiceCalls): Every call the agent handled — web, phone, and WebSocket — most recently started first. Calls that were reserved but never connected are excluded. - [Get a call](/docs/api-reference/voice-agents/getVoiceCall): The full call record, including the transcript with per-turn latency, the aggregated metrics, and per-model usage. - [Get a call recording URL](/docs/api-reference/voice-agents/getVoiceCallRecordingUrl): Returns a short-lived signed URL for the call's audio. Available only when recording was enabled for the call and the recording has finished processing (`recording_status` is `available`). - [Draft a simulation scenario from a call](/docs/api-reference/voice-agents/createScenarioFromVoiceCall): Derives a simulation scenario from a real conversation — the caller's persona and the expected outcome — so a call that went wrong becomes a regression test. The scenario is returned, not saved; add it to a scenario set to keep it. - [Check simulation availability](/docs/api-reference/voice-agents/getVoiceSimulationsStatus): Reports whether simulated test calls are available for this workspace. Existing results stay readable even when new runs are not available. - [List scenario sets](/docs/api-reference/voice-agents/listVoiceSimulationSets): Scenario sets are project-scoped and reusable across every voice agent in the project. The list omits each set's scenarios; fetch a set to get them. - [Create a scenario set](/docs/api-reference/voice-agents/createVoiceSimulationSet) - [Get a scenario set](/docs/api-reference/voice-agents/getVoiceSimulationSet): Returns the set including its `scenarios`. - [Delete a scenario set](/docs/api-reference/voice-agents/deleteVoiceSimulationSet): Past runs keep their results; the set is no longer runnable. - [Update a scenario set](/docs/api-reference/voice-agents/updateVoiceSimulationSet): Replaces the set. Past runs snapshot the scenarios they ran, so editing a set never rewrites existing results. - [Generate scenarios](/docs/api-reference/voice-agents/generateVoiceSimulationScenarios): Drafts scenarios from the agent's own configuration. The scenarios are returned, not saved — review them and store them in a scenario set. - [List simulation runs](/docs/api-reference/voice-agents/listVoiceSimulationRuns) - [Start a simulation run](/docs/api-reference/voice-agents/startVoiceSimulationRun): Runs a scenario set against the **deployed** agent. `text` mode exercises reasoning and tool use; `audio` mode also exercises speech recognition and synthesis and is the only mode that produces meaningful latency numbers. - [Get a simulation run](/docs/api-reference/voice-agents/getVoiceSimulationRun): The run with its per-scenario results — verdict, rationale, scores, latency, and the full conversation. - [Cancel a simulation run](/docs/api-reference/voice-agents/cancelVoiceSimulationRun) - End User Requirements: End-user requirement fulfillment for deployed apps. An app's workflow can declare requirements that each end user must satisfy before runs can act on their behalf — providing connection credentials, completing an OAuth2 flow, or linking an action connector account. The status-check and connect-token endpoints are served on the deployed app's hostname; the `/v1/connect/*` fulfillment endpoints are served on the management API and authenticated with a short-lived connect token. - [Check requirements status for an end user](/docs/api-reference/end-user-requirements/getAppRequirementsStatus): Returns whether all end-user requirements of the app are satisfied for the given user, together with the list of unsatisfied requirements. A connection requirement counts as satisfied when the user has an active connection for it; an action connector account requirement counts as satisfied when the user has linked an account for it. The app is identified by the hostname. Private apps require an Access Key; public apps can be called without credentials. - [Create a connect token](/docs/api-reference/end-user-requirements/createConnectToken): Creates a short-lived **connect token** for an end user of the app. The token is a bearer JWT scoped to this app and this user, valid for **24 hours**, and is the credential accepted by the `/v1/connect/*` requirement-fulfillment endpoints on the management API — it is distinct from Access Keys and Personal Access Tokens. The response also includes the URL of the hosted connect page, pre-filled with the token, where the end user can fulfill the requirements in a browser. The app is identified by the hostname. Private apps require an Access Key; public apps can be called without credentials. - [List requirements](/docs/api-reference/end-user-requirements/listConnectRequirements): Lists the end-user requirements of the app the connect token is scoped to — the connection and action connector account requirements referenced by the app's deployed workflow version. Served on the management API; authenticate with a connect token. - [Get requirement statuses](/docs/api-reference/end-user-requirements/getConnectRequirementsStatus): Lists the end-user requirements of the app the connect token is scoped to, with a per-requirement `status` for the token's user: `completed` when the user has an active connection or a linked action connector account for the requirement, `pending` otherwise. Served on the management API; authenticate with a connect token. - [Submit credentials for a requirement](/docs/api-reference/end-user-requirements/createConnectRequirementCredentials): Submits connection credentials that satisfy a `connection` requirement for the token's user. The submitted `type` must match the connection type declared in the requirement's spec. OAuth2-based connection types are rejected — use the OAuth2 authorize endpoint instead. On success an active end-user connection is stored and the requirement becomes `completed`. Served on the management API; authenticate with a connect token. - [Start an OAuth2 authorization](/docs/api-reference/end-user-requirements/authorizeConnectRequirementOAuth2): Starts an OAuth2 authorization flow for a `connection` requirement whose connection type is OAuth2-based with a configured provider (Google, GitHub, Dropbox, Box, Notion, or Microsoft). Creates a pending end-user connection and returns the provider's authorization URL; redirect the end user there to grant consent. The connection becomes active — and the requirement `completed` — once the provider redirects back and the authorization completes. The request has no body. Served on the management API; authenticate with a connect token. - [Start linking an action connector account](/docs/api-reference/end-user-requirements/authorizeConnectRequirementActionConnector): Starts the hosted flow that links an action connector account for a `pipedream_account` requirement. Returns a connect URL, pre-targeted at the connector app declared in the requirement's spec (for example `gmail`); redirect the end user there to authorize their account. Once the account is linked, the requirement becomes `completed`. The request has no body. Served on the management API; authenticate with a connect token. - Knowledge Bases: Knowledge bases — lifecycle (CRUD), document ingestion and item management, connected sources and their syncs (management API), plus document search and uploads served on the knowledge base's own hostname. - [List knowledge bases](/docs/api-reference/knowledge-bases/listKnowledgebases): Lists the knowledge bases of a project, ordered by `name` by default. The `project_id` query parameter is required. - [Create a knowledge base](/docs/api-reference/knowledge-bases/createKnowledgebase): Creates a knowledge base in a project. The `flow` and `flow_ui` describe the ingestion workflow (how uploaded documents are chunked, embedded, and indexed) and its editor layout. On creation the knowledge base is provisioned with its own `hostname` for document search and uploads. - [Get a knowledge base](/docs/api-reference/knowledge-bases/getKnowledgebase): Returns a single knowledge base. - [Delete a knowledge base](/docs/api-reference/knowledge-bases/deleteKnowledgebase): Deletes a knowledge base along with its items, sources, and indexed documents. - [Update a knowledge base](/docs/api-reference/knowledge-bases/updateKnowledgebase): Updates a knowledge base. Supplying `workflow_version_id` publishes that ingestion-workflow version as the knowledge base's active configuration; `description` and `runtime_id` can be updated alongside it. - [Search knowledge base documents](/docs/api-reference/knowledge-bases/searchKnowledgebaseDocuments): Performs a semantic search over the knowledge base's documents using the knowledge base's configured embedder and retriever. Served on the knowledge base's own hostname (returned in the `hostname` field of the knowledge base resource). - [Upload documents (knowledge base hostname)](/docs/api-reference/knowledge-bases/uploadKnowledgebaseDocuments): Uploads one or more files for ingestion, served on the knowledge base's own hostname (returned in the `hostname` field of the knowledge base resource) and authenticated with an access key. Optional metadata is passed in the `metadata` form field as either a single JSON object (applied to every file) or a JSON array with one entry per file (its length must match the number of files). To replace existing items in place, pass their item IDs in the `ids` form field (JSON array, same length and order as `files`). The maximum request size is 128 MiB. Items are processed asynchronously; poll the items endpoints for status. - [Upload documents to a knowledge base](/docs/api-reference/knowledge-bases/uploadKnowledgebaseItems): Uploads one or more files for ingestion. Optional metadata is passed in the `metadata` form field as either a single JSON object (applied to every file) or a JSON array with one entry per file (its length must match the number of files). To replace existing items in place, pass their item IDs in the `ids` form field (JSON array, same length and order as `files`). The maximum request size is 128 MiB. Items are processed asynchronously; poll the items endpoints for status. - [Search knowledge base documents (management API)](/docs/api-reference/knowledge-bases/vectorSearchKnowledgebase): Performs a semantic search over a knowledge base's documents using the knowledge base's configured embedder and retriever. This is the management-API equivalent of the hostname `POST /v1/documents/search`, addressed by knowledge base ID and authenticated with a personal access token. - [List knowledge base items](/docs/api-reference/knowledge-bases/listKnowledgebaseItems): Lists items (ingested documents) of a knowledge base, most recently uploaded first by default. - [Bulk delete knowledge base items](/docs/api-reference/knowledge-bases/bulkDeleteKnowledgebaseItems): Deletes several knowledge base items (and their indexed documents) in one request. The `ids` array must contain unique item UUIDs. - [Reprocess knowledge base items](/docs/api-reference/knowledge-bases/reprocessKnowledgebaseItems): Re-runs ingestion for a knowledge base's items. Restrict the operation to items in specific processing states with the optional `statuses` array; when omitted, all items are reprocessed. Items are reprocessed asynchronously. - [Get a knowledge base item](/docs/api-reference/knowledge-bases/getKnowledgebaseItem): Returns a single knowledge base item. - [Delete a knowledge base item](/docs/api-reference/knowledge-bases/deleteKnowledgebaseItem): Deletes an item and its indexed documents from the knowledge base. - [Reprocess a knowledge base item](/docs/api-reference/knowledge-bases/reprocessKnowledgebaseItem): Re-runs ingestion for a single knowledge base item. The item is reprocessed asynchronously; poll the item endpoint for status. - [Replace a knowledge base item file](/docs/api-reference/knowledge-bases/replaceKnowledgebaseItem): Replaces an item's file in place and re-ingests it, keeping the same item ID. The new file is supplied in the `file` form field. The item is reprocessed asynchronously. - [Download a knowledge base item file](/docs/api-reference/knowledge-bases/downloadKnowledgebaseItem): Downloads the original file backing a knowledge base item as a binary attachment (`Content-Disposition: attachment; filename=""`). - [List knowledge base sources](/docs/api-reference/knowledge-bases/listKnowledgebaseSources): Lists the connected content sources of a knowledge base — for example Google Drive, SharePoint, Notion, or a crawled website — that feed documents into it. - [Create a knowledge base source](/docs/api-reference/knowledge-bases/createKnowledgebaseSource): Connects a content source to a knowledge base. `provider` selects the source type and `config` carries the provider-specific selection (drives, folders, files, or — for `website` — the URL and crawl limits). A `connection_id` referencing an OAuth connection is required for every provider except `website`. - [Get a knowledge base source](/docs/api-reference/knowledge-bases/getKnowledgebaseSource): Returns a single knowledge base source, including its latest sync. - [Delete a knowledge base source](/docs/api-reference/knowledge-bases/deleteKnowledgebaseSource): Disconnects a source from its knowledge base. Documents already ingested from the source remain unless deleted separately. - [Update a knowledge base source](/docs/api-reference/knowledge-bases/updateKnowledgebaseSource): Updates a source's provider-specific `config` (for example the selected drives, folders, files, or website crawl settings). `provider` must match the source's existing provider. - [List knowledge base source syncs](/docs/api-reference/knowledge-bases/listKnowledgebaseSourceSyncs): Lists the synchronization runs of a source, most recent first, each reporting its status and start/end times. - [Trigger a knowledge base source sync](/docs/api-reference/knowledge-bases/syncKnowledgebaseSource): Starts a synchronization run that pulls the latest content from the source and ingests new or changed items. The sync runs asynchronously; track progress via the syncs endpoint. - [List knowledge base source items](/docs/api-reference/knowledge-bases/listKnowledgebaseSourceItems): Lists the items discovered in a source (files, webpages, or text) with their type and provider metadata. - [Pause a knowledge base source](/docs/api-reference/knowledge-bases/pauseKnowledgebaseSource): Pauses automatic synchronization for a source. Its status becomes `paused` and scheduled syncs are suspended until resumed. - [Resume a knowledge base source](/docs/api-reference/knowledge-bases/resumeKnowledgebaseSource): Resumes automatic synchronization for a paused source. Its status returns to `active`. - Evaluations: Evaluations, both batch and online. Batch evaluations score a workflow against a dataset version with one or more metrics — starting and rerunning runs, listing and inspecting runs, aggregated metric summaries, and per-row results (readable or downloadable as a JSON file). Online evaluations attach a metric to a deployed app and continuously score a sampled share of its live traces. Served on the management API. - [List evaluations](/docs/api-reference/evaluations/listEvaluations): Lists the evaluation runs of a project, ordered by `name`. The `project_id` query parameter is required. - [Start an evaluation](/docs/api-reference/evaluations/startEvaluation): Starts a batch evaluation run. Each workflow in `config` is executed against every item of the released dataset version, then the configured metrics score the outputs. The dataset version must be released. Execution is asynchronous: the run is persisted and fanned out onto a task queue, and the response is returned immediately with `status` `running`. Poll the run — or its results — for completion. Status is one of `pending`, `running`, `failed`, `succeeded`, or `canceled`. - [Get an evaluation](/docs/api-reference/evaluations/getEvaluation): Returns a single evaluation run, including its status and configuration. - [Delete an evaluation](/docs/api-reference/evaluations/deleteEvaluation): Deletes an evaluation run along with its workflow runs, metric scores, and results. - [Rerun a failed evaluation](/docs/api-reference/evaluations/rerunEvaluation): Reruns only the failed tasks of a finished evaluation, reusing the run's existing configuration. The failed workflow and metric runs are discarded and re-queued, and the run's status returns to `running`. Returns `400` if the evaluation is still running or has no failed tasks to rerun. - [Get evaluation metric summary](/docs/api-reference/evaluations/getEvaluationMetrics): Returns aggregated metric statistics for an evaluation, grouped by workflow. Each metric reports its average, minimum, and maximum score across the dataset. - [List evaluation results](/docs/api-reference/evaluations/getEvaluationResults): Returns the per-dataset-item results of an evaluation — one row per dataset item, each with its workflow runs and metric scores. Paginated. - [Download evaluation results](/docs/api-reference/evaluations/downloadEvaluationResults): Streams the full evaluation results as a downloadable JSON file (`Content-Disposition: attachment; filename="evaluation--results.json"`). The body is a JSON object with the `evaluation` and a `results` array of the same per-item result objects returned by the results endpoint. - [List an app's online evaluations](/docs/api-reference/evaluations/listAppEvaluations): Lists the online evaluations configured on an app, most recently created first. Each online evaluation attaches a metric to the app and scores a sampled share of its live traces. - [Create an online evaluation](/docs/api-reference/evaluations/createAppEvaluation): Attaches a metric to an app so its live traces are scored continuously — the API behind the **Evaluations** tab on the App page. `metric_id` and `metric_version_id` select the scorer; `sample_rate` (0–1) is the fraction of incoming traces to score; `enabled` toggles sampling; and the optional `input_transformer` builds the metric's input from the trace. While enabled, every trace the app records afterwards (failed ones included) is sampled and, when selected, gets one evaluation run. Earlier traces are never backfilled. Send `enabled` and `sample_rate` explicitly: omitted, they default to `false` and `0`, which creates an evaluation that never scores anything. The metric must belong to the app's project. - [Get an online evaluation](/docs/api-reference/evaluations/getAppEvaluation): Returns a single online evaluation with its metric binding and sampling settings. - [Delete an online evaluation](/docs/api-reference/evaluations/deleteAppEvaluation): Deletes an online evaluation along with the runs it has recorded. - [Update an online evaluation](/docs/api-reference/evaluations/updateAppEvaluation): Updates an online evaluation's runtime settings — `name`, `description`, `enabled`, `sample_rate`, `input_transformer`, and the metric version (`metric_version_id`). This is a full replace, not a patch: send every field you want to keep. An omitted `description` or `input_transformer` is cleared, an omitted `enabled` becomes `false`, and an omitted `sample_rate` becomes `0`. The target metric itself is immutable (a `metric_id` in the body is ignored); the new version must belong to the same metric. - [List online evaluation runs](/docs/api-reference/evaluations/listAppEvaluationRuns): Lists the runs recorded by an online evaluation, most recent first. Each run corresponds to one sampled app trace and carries its `status`, `score`, and the `trace_id` it scored. Filter by status with the `status` query parameter. - Metrics: Evaluation metrics — reusable scorers (LLM-as-a-judge, predefined evaluators, or custom code) that grade workflow outputs. Covers metric lifecycle (CRUD), immutable version history, and ad-hoc metric testing. Served on the management API. - [List metrics](/docs/api-reference/metrics/listMetrics): Lists the metrics of a project, ordered by `name` by default. The `project_id` query parameter is required. - [Create a metric](/docs/api-reference/metrics/createMetric): Creates an evaluation metric in a project. The `config` shape depends on `type`: an LLM-as-a-judge prompt, a predefined evaluator plus its settings, or custom scoring code. Creating a metric also records its first version. - [Test metrics](/docs/api-reference/metrics/testMetrics): Runs one or more metric configurations against sample input without persisting anything, returning each metric's score. Useful for tuning a metric's prompt or settings before saving it. Each entry carries a `metric` configuration (with its `type`) and the `input` record to score; an optional `input_transformer` remaps the fields the metric receives. - [Get a metric](/docs/api-reference/metrics/getMetric): Returns a single metric with its current configuration. - [Delete a metric](/docs/api-reference/metrics/deleteMetric): Deletes a metric and its version history. - [Update a metric](/docs/api-reference/metrics/updateMetric): Updates a metric's `type` and `config`. Each update records a new immutable version; earlier versions remain retrievable through the versions endpoints. - [List metric versions](/docs/api-reference/metrics/listMetricVersions): Lists a metric's version history, most recent `version` first. Each entry omits the configuration body; fetch a specific version to retrieve its `config`. - [Get a metric version](/docs/api-reference/metrics/getMetricVersion): Returns a specific version of a metric, including its full `config`. The `version_id` path parameter accepts a version UUID or the literal `latest`. - Datasets: Datasets — versioned collections of evaluation rows. Covers dataset lifecycle (CRUD), draft and released versions with their item schemas, item management, and building rows from captured traces. Served on the management API. - [List datasets](/docs/api-reference/datasets/listDatasets): Lists the datasets of a project, ordered by `name` by default. The `project_id` query parameter is required. - [Create a dataset](/docs/api-reference/datasets/createDataset): Creates an empty dataset in a project. A dataset is a named container for versioned collections of rows; add rows by creating a version and adding items to it. - [Get a dataset](/docs/api-reference/datasets/getDataset): Returns a single dataset, including its latest released version when one exists. - [Delete a dataset](/docs/api-reference/datasets/deleteDataset): Deletes a dataset along with all of its versions and items. - [Create a dataset version](/docs/api-reference/datasets/createDatasetVersion): Creates a new draft version of a dataset. Drafts are mutable — you can add items, edit the schema, and release them. An optional `schema` constrains the fields of items added to the version; when omitted, the schema is inferred from the first items added. Draft versions carry a temporary, decreasing `version` number until they are released, at which point they take the next sequential positive version. - [List dataset versions](/docs/api-reference/datasets/listDatasetVersions): Lists the versions of a dataset, highest `version` first. The `dataset_id` query parameter is required. - [Get a dataset version](/docs/api-reference/datasets/getDatasetVersion): Returns a single dataset version, including its item `schema` and status. - [Delete a dataset version](/docs/api-reference/datasets/deleteDatasetVersion): Deletes a draft version and all of its items. Released versions cannot be deleted and return `400`. - [Update a dataset version](/docs/api-reference/datasets/updateDatasetVersion): Replaces a draft version's item `schema`. Only draft versions are editable; updating a released version returns `400`. The new schema must remain compatible with every existing item, otherwise the request is rejected. - [Download a dataset version](/docs/api-reference/datasets/downloadDatasetVersion): Streams a dataset version's items as a downloadable file (`Content-Disposition: attachment; filename="."`). The body is the array of item `data` objects, serialized as a JSON array (`format=json`, the default) or as newline-delimited JSON (`format=jsonl`). - [Fork a dataset version](/docs/api-reference/datasets/forkDatasetVersion): Creates a new draft version of the same dataset, copying the source version's schema and every item. Use this to derive an editable draft from a released version. The fork is always created as a draft, regardless of the source's status. - [Release a dataset version](/docs/api-reference/datasets/releaseDatasetVersion): Releases a draft version, making it immutable and assigning it the next sequential `version` number for the dataset. The dataset's latest-version pointer is updated to the released version, so evaluations can target it. A version that is already released returns `400`. Released versions can no longer be edited or deleted — fork one to continue editing. - [Update a dataset version schema](/docs/api-reference/datasets/updateDatasetVersionSchema): Incrementally edits a dataset version's item schema by adding and/or removing fields. Each `add` entry defines a field and its schema; each `delete` entry names a field to remove and, when `delete_from_items` is true, also strips that field from every existing item. The resulting schema must remain compatible with all existing items. - [Add items to a dataset version](/docs/api-reference/datasets/addDatasetVersionItems): Appends rows to a draft version. Send a JSON body with an `items` array, or upload a `.json` / `.jsonl` file as multipart/form-data in the `file` field. Only draft versions accept new items. When the version has a schema, every item is validated against it; when it does not, the schema is inferred from the first batch of items. - [Add a dataset item from a trace](/docs/api-reference/datasets/addDatasetItemFromTrace): Builds a new dataset item from a captured trace and appends it to a draft version — a fast way to turn a real, observed run into an evaluation row. The body identifies the target `dataset_id` and `dataset_version_id` and the source `trace_id`. - [List dataset items](/docs/api-reference/datasets/listDatasetItems): Lists the items of a dataset version. The `dataset_version_id` query parameter is required. - [Get a dataset item](/docs/api-reference/datasets/getDatasetItem): Returns a single dataset item and its `data` fields. - [Delete a dataset item](/docs/api-reference/datasets/deleteDatasetItem): Deletes a single dataset item from its version. - [Update a dataset item](/docs/api-reference/datasets/updateDatasetItem): Replaces a dataset item's `data`. The new data must satisfy the schema of the item's dataset version. - AI Gateway: OpenAI-compatible LLM gateway (chat completions) and OCR document parsing / structured extraction. - [Create a chat completion](/docs/api-reference/ai-gateway/createChatCompletion): OpenAI-compatible chat completions endpoint. The `model` is a Dynamiq router model slug; the gateway resolves it to the configured upstream provider and relays the request. Set `stream: true` to receive Server-Sent Events of `chat.completion.chunk` objects. Unknown request fields are passed through to the upstream provider. - [Parse a document with OCR](/docs/api-reference/ai-gateway/ocrParse): Extracts the text of a PDF or image as Markdown using an LLM-based OCR pipeline. The `options` form field is a JSON string selecting the LLM. With `"stream": true` the response is an SSE stream of extraction events instead of JSON. - [Extract structured data from a document](/docs/api-reference/ai-gateway/ocrExtract): Runs OCR on a PDF or image and then extracts structured data matching a JSON schema template. The `options` form field selects the OCR LLM, the structured-output LLM, and the extraction template. With `"stream": true` the response is an SSE stream instead of JSON. - Tracing: Trace observability — ingestion from the Dynamiq Python SDK (collector) and cross-resource trace reads across projects, services, and individual traces (management API). - [Ingest trace runs](/docs/api-reference/tracing/ingestTraces): Ingests a batch of workflow/flow/node trace runs, as produced by the Dynamiq Python SDK's `TracingCallbackHandler` / `DynamiqTracingClient`. The collector validates `id`, `name`, `type`, `trace_id`, `source_id`, `start_time`, `end_time`, and `status`; the remaining fields are stored as-is. SDK-emitted fields not listed in the schema (such as `session_id` and `tags`) are accepted and ignored by the collector. - [List project traces](/docs/api-reference/tracing/listProjectTraces): Lists execution traces across a project's apps, most recent first. Supports field filters on `started_at` (time) and `status` via query parameters of the form `started_at:gte=` and `status=`. - [Download project traces](/docs/api-reference/tracing/downloadProjectTraces): Streams a project's execution traces as a downloadable JSON file (`Content-Disposition: attachment; filename="-traces.json"`). The body is a JSON array of trace objects — each with `id`, `started_at`, `ended_at`, `status`, `input`, `output`, and `usage` — ordered by `started_at` descending. When `include_runs` is `true`, each trace also carries a `runs` array. Optional time-range filters on `started_at` use the `started_at:gt|gte|lt|lte=` form; `gt`/`gte` and `lt`/`lte` are mutually exclusive. - [List service traces](/docs/api-reference/tracing/listServiceTraces): Lists execution traces of a deployed service, most recent first (ordered by `started_at` descending). - [Get a trace with runs](/docs/api-reference/tracing/getTrace): Returns a single trace together with its full run tree. The trace carries `started_at`/`ended_at` while each run carries `start_time`/`end_time` — this mirrors the server responses and is intentional. - [Download a trace](/docs/api-reference/tracing/downloadTrace): Returns a single trace as a downloadable JSON file (`Content-Disposition: attachment; filename=".json"`). Set `include_runs=true` to embed the trace's run tree in the exported object.