Skip to main content

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

Developer surface

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"
    ]
  }
}
Live example

cmd.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 build

Generate 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.

Additional assistantsOptional targets the generated app can select or hand off to.
Add another assistant only when the generated app should switch targets, compare specialists, or hand off between Siesta AI agents.
Written into the manifest as the build intent for this mode.
Siesta AI API operationsExternal API manifest includes only this endpoints set.
17
GET/api/v1/Agent

List or search available agents before choosing the implementation target.

X-Api-Key, X-Org-Id
POST/api/v1/Agent

Create an agent from a backend, setup wizard, or customer portal flow.

X-Api-Key, X-Org-Id, CreateAgentRequest
POST/api/v1/Agent/{agentId}/response

Send a message or structured request to a specific agent and receive the response.

X-Api-Key, X-Org-Id, agentId, CreateAgentResponseRequest
POST/api/v1/File

Upload files as multipart/form-data before attaching file context to an agent flow.

X-Api-Key, X-Org-Id, file
GET/api/v1/File/{id}

Download a file previously uploaded or returned through an External API flow.

X-Api-Key, X-Org-Id, id
GET/api/v1/DataSourceCollection

List persistent data source collections that can provide durable knowledge to agents.

X-Api-Key, X-Org-Id
POST/api/v1/DataSourceCollection

Create a persistent data source collection for reusable agent knowledge.

X-Api-Key, X-Org-Id, CreateDataSourceCollectionRequest
GET/api/v1/DataSourceCollection/{id}

Read one data source collection before attaching or updating knowledge context.

X-Api-Key, X-Org-Id, id
PUT/api/v1/DataSourceCollection/{id}

Update a data source collection after a governed change to reusable knowledge.

X-Api-Key, X-Org-Id, id, UpdateDataSourceCollectionRequest
GET/api/v1/Task

Search tasks by workspace, status, source agent, paging, and sort parameters.

X-Api-Key, X-Org-Id
GET/api/v1/Task/{id}

Read task details for follow-up, review, or synchronization back to another system.

X-Api-Key, X-Org-Id, id
POST/api/v1/Task

Create a task from an approved agent outcome.

X-Api-Key, X-Org-Id, CreateTaskRequest
PUT/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
GET/api/v1/Connection

Read configured connections that the integration can reference.

X-Api-Key, X-Org-Id
GET/api/v1/Workspace

Resolve workspaces for task routing and workspace-scoped operations.

X-Api-Key, X-Org-Id
GET/api/v1/AuditLog

Search audit records for compliance review, incident investigation, or synchronization logs.

X-Api-Key, X-Org-Id
GET/api/v1/AuditLog/{id}

Read one audit record with detailed changed properties and correlation context.

X-Api-Key, X-Org-Id, id
Values this manifest gives to the coding agentRequired values must be available before the implementation can run. Optional values add useful context when your product has them.
3
How to use this

Keep 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.

Included for External APIThese are written into requiredContextFields in the JSON preview.
agentIdRequired · uuid

Siesta AI agent that should handle the integration flow.

organizationIdRequired · uuid

Siesta AI organization sent as X-Org-Id.

workspaceIdOptional · uuid

Workspace used when creating or filtering tasks.

Add one value from your product

Examples: customerId for a CRM record, ticketId for a support case, siteUrl for a website preview, or workspaceSlug for tenant routing.

Send 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.
siesta-agent-manifest.jsonExternal API · 17 endpoints
{
  "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-Key and X-Org-Id are 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.