Build With Siesta AI
Build production integrations by giving your coding agent a complete Siesta AI manifest. The manifest is a JSON file that describes the Siesta AI API surface, authentication headers, required parameters, custom context fields, endpoint purposes, automation intent, and the implementation rules the agent must follow.
The goal is simple: generate or download one JSON file, add it to your own agent or coding workflow, and start building with the integration context already defined.
Developer Entry Points
Pick the integration path, then hand your agent the manifest.
Start with the API surface that matches the experience: backend calls, realtime sessions, embedded web chat, or a generated implementation contract for your coding agent.
{
"siestaAi": {
"apiBaseUrl": "https://api.siesta.ai",
"requiredHeaders": ["X-Api-Key", "X-Org-Id"],
"operations": [
"POST /api/v1/Agent/{agentId}/response",
"POST /api/v1/Agent/{agentId}/realtime-session"
]
}
}Call agents from your backend
Create agents, send messages, upload files, manage tasks, inspect workspaces, and wire Siesta AI into your own product flows.
X-Api-KeyX-Org-Id/api/v1/Agent/{agentId}/responseBuild live voice and event sessions
Create one-time sessions, connect over WebSocket, stream provider events, handle client tools, and keep transcripts in the conversation.
gpt-realtime-2pcm16client toolsDrop an agent into any website
Embed the widget, pass safe page context, test with the dev agent, and turn a website into a guided assistant experience.
chat-widget.jspage contextbubble.siesta.aiInspect the contract
Use the generated OpenAPI reference for exact request shapes, schema names, parameters, and response contracts before coding.
schemasrequestsresponsescmd.siesta.ai
A live use case built on top of Siesta AI. Use it as a reference for how an agent-powered workflow can feel when the integration is already wired.
Open live buildGenerate An Agent Manifest
Use this builder to create a siesta-agent-manifest.json for your use case. Select one integration mode, add the IDs and fields your agent needs, then copy or download the generated JSON and give it to your coding agent. Each mode produces its own manifest shape; External API, Realtime API, and Web Plugin contracts are not mixed.
/api/v1/AgentList or search available agents before choosing the implementation target.
X-Api-Key, X-Org-Id/api/v1/AgentCreate an agent from a backend, setup wizard, or customer portal flow.
X-Api-Key, X-Org-Id, CreateAgentRequest/api/v1/Agent/{agentId}/responseSend a message or structured request to a specific agent and receive the response.
X-Api-Key, X-Org-Id, agentId, CreateAgentResponseRequest/api/v1/FileUpload files as multipart/form-data before attaching file context to an agent flow.
X-Api-Key, X-Org-Id, file/api/v1/File/{id}Download a file previously uploaded or returned through an External API flow.
X-Api-Key, X-Org-Id, id/api/v1/DataSourceCollectionList persistent data source collections that can provide durable knowledge to agents.
X-Api-Key, X-Org-Id/api/v1/DataSourceCollectionCreate a persistent data source collection for reusable agent knowledge.
X-Api-Key, X-Org-Id, CreateDataSourceCollectionRequest/api/v1/DataSourceCollection/{id}Read one data source collection before attaching or updating knowledge context.
X-Api-Key, X-Org-Id, id/api/v1/DataSourceCollection/{id}Update a data source collection after a governed change to reusable knowledge.
X-Api-Key, X-Org-Id, id, UpdateDataSourceCollectionRequest/api/v1/TaskSearch tasks by workspace, status, source agent, paging, and sort parameters.
X-Api-Key, X-Org-Id/api/v1/Task/{id}Read task details for follow-up, review, or synchronization back to another system.
X-Api-Key, X-Org-Id, id/api/v1/TaskCreate a task from an approved agent outcome.
X-Api-Key, X-Org-Id, CreateTaskRequest/api/v1/Task/{id}Update an existing task when an external workflow changes status, owner, or review context.
X-Api-Key, X-Org-Id, id, UpdateTaskRequest/api/v1/ConnectionRead configured connections that the integration can reference.
X-Api-Key, X-Org-Id/api/v1/WorkspaceResolve workspaces for task routing and workspace-scoped operations.
X-Api-Key, X-Org-Id/api/v1/AuditLogSearch audit records for compliance review, incident investigation, or synchronization logs.
X-Api-Key, X-Org-Id/api/v1/AuditLog/{id}Read one audit record with detailed changed properties and correlation context.
X-Api-Key, X-Org-Id, idKeep the Siesta fields that are already listed here. Add a custom field only when your own product has an ID, URL, status, customer record, or other value the agent needs to build the integration correctly.
requiredContextFields in the JSON preview.Siesta AI agent that should handle the integration flow.
Siesta AI organization sent as X-Org-Id.
Workspace used when creating or filtering tasks.
Examples: customerId for a CRM record, ticketId for a support case, siteUrl for a website preview, or workspaceSlug for tenant routing.
X-Api-Key and X-Org-Id on server-side Siesta API requests. Keep API keys out of browser code and prompts.Show generated manifest JSONHidden by default so the page keeps one primary manifest example visible below.
{
"manifestVersion": "1.0",
"manifestType": "siesta-external-api",
"name": "customer-support-copilot-on-siesta-ai",
"useCase": "Customer support copilot on Siesta AI",
"inputs": {
"baseUrl": "https://api.siesta.ai",
"organizationId": "<siesta-organization-id>",
"agentId": "<siesta-agent-id>",
"assistants": [
{
"role": "primary",
"label": "Primary assistant",
"agentId": "<siesta-agent-id>",
"purpose": "Default Siesta AI assistant used for endpoint paths, realtime sessions, or widget mounting."
}
],
"integrationMode": "external-api",
"requiredContextFieldCount": 3,
"operationCount": 17
},
"integration": {
"mode": "external-api",
"intent": "Use Siesta AI API v1 from a trusted backend to call the selected agent, upload files when the user provides attachments, and create tasks only after human approval."
},
"requiredContextFields": [
{
"name": "agentId",
"type": "uuid",
"required": true,
"description": "Siesta AI agent that should handle the integration flow."
},
{
"name": "organizationId",
"type": "uuid",
"required": true,
"description": "Siesta AI organization sent as X-Org-Id."
},
{
"name": "workspaceId",
"type": "uuid",
"required": false,
"description": "Workspace used when creating or filtering tasks."
}
],
"openApiSource": "https://api.siesta.ai/swagger/v1/swagger.json",
"apiReference": "https://api.siesta.ai/swagger/index.html?urls.primaryName=Public+API+v1",
"objective": "Give a coding agent only the External API v1 contract needed to call Siesta AI from a trusted backend.",
"siestaAi": {
"apiBaseUrl": "https://api.siesta.ai",
"assistants": [
{
"role": "primary",
"label": "Primary assistant",
"agentId": "<siesta-agent-id>",
"purpose": "Default Siesta AI assistant used for endpoint paths, realtime sessions, or widget mounting."
}
],
"docs": {
"externalApi": "https://docs.siesta.ai/external-api",
"apiReference": "https://api.siesta.ai/swagger/index.html?urls.primaryName=Public+API+v1"
},
"requiredHeaders": {
"X-Api-Key": "<siesta-api-key>",
"X-Org-Id": "<siesta-organization-id>"
},
"requiredPathParameters": {
"agentId": "<siesta-agent-id>"
}
},
"siestaApiOperations": [
{
"method": "GET",
"path": "/api/v1/Agent",
"purpose": "List or search available agents before choosing the implementation target.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id"
]
},
{
"method": "POST",
"path": "/api/v1/Agent",
"purpose": "Create an agent from a backend, setup wizard, or customer portal flow.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"CreateAgentRequest"
]
},
{
"method": "POST",
"path": "/api/v1/Agent/{agentId}/response",
"purpose": "Send a message or structured request to a specific agent and receive the response.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"agentId",
"CreateAgentResponseRequest"
]
},
{
"method": "POST",
"path": "/api/v1/File",
"purpose": "Upload files as multipart/form-data before attaching file context to an agent flow.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"file"
]
},
{
"method": "GET",
"path": "/api/v1/File/{id}",
"purpose": "Download a file previously uploaded or returned through an External API flow.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"id"
]
},
{
"method": "GET",
"path": "/api/v1/DataSourceCollection",
"purpose": "List persistent data source collections that can provide durable knowledge to agents.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id"
]
},
{
"method": "POST",
"path": "/api/v1/DataSourceCollection",
"purpose": "Create a persistent data source collection for reusable agent knowledge.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"CreateDataSourceCollectionRequest"
]
},
{
"method": "GET",
"path": "/api/v1/DataSourceCollection/{id}",
"purpose": "Read one data source collection before attaching or updating knowledge context.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"id"
]
},
{
"method": "PUT",
"path": "/api/v1/DataSourceCollection/{id}",
"purpose": "Update a data source collection after a governed change to reusable knowledge.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"id",
"UpdateDataSourceCollectionRequest"
]
},
{
"method": "GET",
"path": "/api/v1/Task",
"purpose": "Search tasks by workspace, status, source agent, paging, and sort parameters.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id"
]
},
{
"method": "GET",
"path": "/api/v1/Task/{id}",
"purpose": "Read task details for follow-up, review, or synchronization back to another system.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"id"
]
},
{
"method": "POST",
"path": "/api/v1/Task",
"purpose": "Create a task from an approved agent outcome.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"CreateTaskRequest"
]
},
{
"method": "PUT",
"path": "/api/v1/Task/{id}",
"purpose": "Update an existing task when an external workflow changes status, owner, or review context.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"id",
"UpdateTaskRequest"
]
},
{
"method": "GET",
"path": "/api/v1/Connection",
"purpose": "Read configured connections that the integration can reference.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id"
]
},
{
"method": "GET",
"path": "/api/v1/Workspace",
"purpose": "Resolve workspaces for task routing and workspace-scoped operations.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id"
]
},
{
"method": "GET",
"path": "/api/v1/AuditLog",
"purpose": "Search audit records for compliance review, incident investigation, or synchronization logs.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id"
]
},
{
"method": "GET",
"path": "/api/v1/AuditLog/{id}",
"purpose": "Read one audit record with detailed changed properties and correlation context.",
"requiredInputs": [
"X-Api-Key",
"X-Org-Id",
"id"
]
}
],
"assistants": [
{
"role": "primary",
"label": "Primary assistant",
"agentId": "<siesta-agent-id>",
"purpose": "Default Siesta AI assistant used for endpoint paths, realtime sessions, or widget mounting."
}
],
"automation": {
"intent": "Use Siesta AI API v1 from a trusted backend to call the selected agent, upload files when the user provides attachments, and create tasks only after human approval.",
"approvalPolicy": "Ask for human approval before creating tasks, uploading user files, calling external tools, or performing any write operation that changes platform state.",
"outputContract": {
"summary": "Short user-facing result.",
"actionsTaken": "Array of executed or proposed actions.",
"siestaRecordIds": "IDs created, uploaded, or updated through Siesta AI API.",
"followUpQuestions": "Questions the agent must ask if required fields are missing."
}
},
"implementationSteps": [
"Read the Public API v1 reference before coding request and response types.",
"Create a server-side Siesta API client with X-Api-Key and X-Org-Id headers.",
"Resolve or configure agentId before calling agent response endpoints.",
"Use POST /api/v1/Agent/{agentId}/response for standard backend calls.",
"Use POST /api/v1/File for attachments and keep uploaded file IDs in the request context.",
"Use POST /api/v1/Task only after the user or backend policy approves task creation."
],
"codingAgentInstructions": [
"Implement only siestaApiOperations.",
"Validate requiredContextFields before calling write endpoints.",
"Generate typed request helpers from the OpenAPI reference or mirror the documented schema names in code.",
"Do not add realtime WebSocket or widget runtime behavior unless the manifest mode changes."
]
}The generated JSON should tell the agent:
- what product or repository it is integrating with,
- where the Siesta AI API lives,
- how
X-Api-KeyandX-Org-Idare passed, - which Siesta AI endpoints and docs are relevant,
- which IDs and custom fields are required before execution,
- which selected API or widget operations are in scope,
- what the automation is supposed to do,
- what output contract and approval rules the implementation must follow.
Manifest Shape
Use this External API baseline if you want to write the JSON manually. For Realtime API or Web Plugin, use the builder so the manifest contains only that contract.
{
"openApiSource": "https://api.siesta.ai/swagger/v1/swagger.json",
"apiReference": "https://api.siesta.ai/swagger/index.html?urls.primaryName=Public+API+v1",
"manifestVersion": "1.0",
"name": "customer-support-copilot",
"useCase": "Customer support copilot on Siesta AI",
"objective": "Give a coding agent everything it needs to implement this Siesta AI integration without rediscovering endpoint contracts, authentication, required fields, or automation intent.",
"siestaAi": {
"apiBaseUrl": "https://api.siesta.ai",
"docs": {
"externalApi": "https://docs.siesta.ai/external-api",
"apiReference": "https://api.siesta.ai/swagger/index.html?urls.primaryName=Public+API+v1"
},
"requiredHeaders": {
"X-Api-Key": "<siesta-api-key>",
"X-Org-Id": "<siesta-organization-id>"
},
"requiredPathParameters": {
"agentId": "<siesta-agent-id>"
}
},
"integration": {
"mode": "external-api",
"intent": "Use Siesta AI to call the selected agent, upload files when the user provides attachments, and create a task after human approval.",
"secretHandling": "Store X-Api-Key server-side in a secret manager or environment variable."
},
"requiredContextFields": [
{
"name": "agentId",
"type": "uuid",
"required": true,
"description": "Siesta AI agent that should handle the integration flow."
}
],
"siestaApiOperations": [
{
"method": "GET",
"path": "/api/v1/Agent",
"purpose": "List or search available agents before choosing the implementation target.",
"requiredInputs": ["X-Api-Key", "X-Org-Id"]
},
{
"method": "POST",
"path": "/api/v1/Agent/{agentId}/response",
"purpose": "Send a message or structured request to a specific agent and receive the response.",
"requiredInputs": ["X-Api-Key", "X-Org-Id", "agentId", "CreateAgentResponseRequest"]
},
{
"method": "POST",
"path": "/api/v1/File",
"purpose": "Upload files as multipart/form-data before attaching file context to an agent flow.",
"requiredInputs": ["X-Api-Key", "X-Org-Id", "file"]
},
{
"method": "POST",
"path": "/api/v1/Task",
"purpose": "Create a task from an approved agent outcome.",
"requiredInputs": ["X-Api-Key", "X-Org-Id", "CreateTaskRequest"]
}
],
"automation": {
"intent": "Use Siesta AI to call the selected agent, upload files when needed, and create a task after approval.",
"approvalPolicy": "Ask for human approval before creating tasks, uploading user files, calling external tools, or performing any write operation that changes platform state.",
"outputContract": {
"summary": "Short user-facing result.",
"actionsTaken": "Array of executed or proposed actions.",
"siestaRecordIds": "IDs created, uploaded, or updated through Siesta AI API.",
"followUpQuestions": "Questions the agent must ask if required fields are missing."
}
},
"implementationSteps": [
"Read the Public API v1 reference before coding request and response types.",
"Create a server-side Siesta API client with X-Api-Key and X-Org-Id headers.",
"Use POST /api/v1/Agent/{agentId}/response for standard backend calls.",
"Use POST /api/v1/File for attachments and keep uploaded file IDs in the request context."
],
"codingAgentInstructions": [
"Read this manifest before writing code.",
"Implement only the External API operations listed in siestaApiOperations.",
"Validate requiredContextFields before calling write endpoints.",
"Generate typed request helpers from the OpenAPI reference or mirror the documented schema names in code.",
"Return a concise implementation plan, required environment variables, and test cases before changing production code."
]
}
What To Build First
- Use the External API when another system needs to create agents, call an agent, upload files, manage tasks, or read platform data.
- Use the Realtime API when the user experience needs live audio, streaming responses, custom client tools, or realtime event handling.
- Use the Web Plugin when the agent should be available on a website, customer portal, documentation site, or internal application with a tested embed script.
- Use a manifest-driven flow when the integration depends on a known repository structure, custom fields, or endpoint map that should be reusable across environments.