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

# Plan and apply an edit from a natural-language message



## OpenAPI

````yaml /api-reference/orchestrator.openapi.json post /chat
openapi: 3.0.3
info:
  title: Avocado Studio Orchestrator API
  description: >-
    HTTP API exposed by the orchestrator. The brain that runs editor sessions,
    calls the LLMs, and serves draft state to integrated sites.


    The route list is the one the standalone Fastify server registers
    (`apps/orchestrator/src`); the handlers behind most of them live in
    `packages/orchestrator-core/src/http`, so library mode —
    `createOrchestrator()` from `@avocadostudio-ai/site-sdk` — serves the same
    shapes from the same code. Where the two differ, the route says so.


    **Note**: most routes carry no Fastify response schema, so responses are
    described in prose rather than typed here. Request shapes are taken from the
    handler source. See [the API Reference index](/api-reference) for context.


    **Auth**: in the standalone server only the agent surface enforces the
    access gate — `/chat` and `/ops` remain open. `createOrchestrator()` gates
    every route instead. Under that gate `GET /auth/status`, `POST
    /auth/verify`, `GET /health` and `GET /generated-images/*` are public — the
    first two are how a caller obtains a credential, a probe that needs one is
    not a probe, and an image tag on the rendered page cannot send a header —
    while every other route wants the token as `x-access-token`, `Authorization:
    Bearer`, or `?accessToken=` on `EventSource`. A refusal is `401` with
    `{"error":"unauthorized"}`. On a `closed` mount — `NODE_ENV=production` with
    no credential configured and no `auth` hook — that body also carries
    `reason`, the sentence naming the variable that would open it; `error` keeps
    its exact value either way, because that is the field the editor matches on
    to re-prompt.
  version: 0.11.1
servers:
  - url: http://localhost:4200
    description: Local development orchestrator (default port)
security: []
tags:
  - name: Sites
    description: Site registration and listing
  - name: Chat
    description: AI chat / planning endpoints
  - name: Sites Agent
    description: Site onboarding agent (migrate / integrate / create)
  - name: Draft
    description: Draft content read endpoints called by integrated sites
  - name: Publish
    description: Publishing and content snapshot endpoints
  - name: History
    description: Undo / redo / version log
  - name: Auth
    description: Optional access password gate
  - name: Media
    description: Image upload and generation
  - name: Health
    description: Service health and readiness
  - name: Operations
    description: Applying typed content operations directly
  - name: Checks
    description: Site-health check runs and findings
  - name: Restore
    description: Publish snapshots and rolling a draft back to one
  - name: Sessions
    description: Session introspection and admin
  - name: Preview
    description: Preview utilities
  - name: Telemetry
    description: Chat pipeline traces and feedback
  - name: Agent
    description: Open-ended agent loops — gated, and off in production by default
  - name: Jira
    description: Jira as a second input channel
paths:
  /chat:
    post:
      tags:
        - Chat
      summary: Plan and apply an edit from a natural-language message
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                session:
                  type: string
                siteId:
                  type: string
                componentsManifest:
                  anyOf:
                    - type: object
                      additionalProperties: {}
                    - type: string
                siteCapabilities:
                  anyOf:
                    - type: object
                      properties:
                        allowStructuralEdits:
                          type: boolean
                        manifestStatus:
                          type: string
                          enum:
                            - loading
                            - ready
                            - degraded
                        reason:
                          type: string
                        manifestVersion:
                          type: integer
                          exclusiveMinimum: true
                          maximum: 9007199254740991
                        blockCount:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        checkedAt:
                          type: string
                      required:
                        - allowStructuralEdits
                        - manifestStatus
                        - checkedAt
                    - type: string
                sitePurpose:
                  type: string
                siteHosting:
                  type: string
                businessContext:
                  anyOf:
                    - type: object
                      properties:
                        purpose:
                          type: string
                        tone:
                          type: string
                        constraints:
                          type: array
                          items:
                            type: string
                    - type: string
                siteContext:
                  anyOf:
                    - type: object
                      properties:
                        siteId:
                          type: string
                        siteName:
                          type: string
                        purpose:
                          type: string
                        hosting:
                          type: string
                        tone:
                          type: string
                        constraints:
                          type: array
                          items:
                            type: string
                        gdriveFolderId:
                          type: string
                    - type: string
                locale:
                  type: string
                slug:
                  type: string
                message:
                  type: string
                modelKey:
                  type: string
                  enum:
                    - fast
                    - balanced
                    - reasoning
                    - codex
                provider:
                  type: string
                  enum:
                    - openai
                    - anthropic
                    - gemini
                activeBlockId:
                  type: string
                activeBlockType:
                  type: string
                activeEditablePath:
                  type: string
                executionMode:
                  type: string
                  enum:
                    - auto
                    - plan_only
                    - apply_pending_plan
                    - discard_pending_plan
                    - continue_chain
                pendingPlanId:
                  type: string
                continuationChainId:
                  type: string
                attachments:
                  maxItems: 6
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      kind:
                        type: string
                        enum:
                          - image
                          - pdf
                      url:
                        type: string
                      mimeType:
                        type: string
                      name:
                        type: string
                      bytes:
                        type: number
                    required:
                      - id
                      - kind
                      - url
                      - mimeType
      responses:
        '200':
          description: Default Response

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.