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

# Send a private setup message

> Sends a private setup message. Requires `fleet:write`. Use the body's `operation_id` for retries; `Idempotency-Key` is refused. A 202 response confirms the message is saved for processing.



## OpenAPI

````yaml https://raw.githubusercontent.com/agentsfleet/agentsfleet/main/public/openapi.json post /v1/workspaces/{workspace_id}/drafts/{draft_id}/messages
openapi: 3.1.0
info:
  title: agentsfleet API
  description: API for managing workspaces, fleets, triggers, and runs.
  contact:
    name: agentsfleet
    url: https://agentsfleet.net
  license:
    name: MIT
    identifier: MIT
  version: 1.0.0
servers:
  - url: https://api.agentsfleet.net
    description: Production
security: []
paths:
  /v1/workspaces/{workspace_id}/drafts/{draft_id}/messages:
    post:
      tags:
        - Drafts
      summary: Send a private setup message
      description: >-
        Sends a private setup message. Requires `fleet:write`. Use the body's
        `operation_id` for retries; `Idempotency-Key` is refused. A 202 response
        confirms the message is saved for processing.
      operationId: send_workspace_draft_message
      parameters:
        - name: workspace_id
          in: path
          description: >-
            Workspace identifier (version 7 universally unique identifier, or
            UUID).
          required: true
          schema:
            type: string
        - name: draft_id
          in: path
          description: Draft identifier (version 7 universally unique identifier, or UUID).
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftMessageRequest'
        required: true
      responses:
        '202':
          description: Durably queued or exact replay
          headers:
            Location:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftMessageAccepted'
        '400':
          description: The request is invalid
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '401':
          description: Authentication is missing, invalid, or not accepted by this endpoint
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '403':
          description: You do not have permission for this action
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '404':
          description: Private draft unavailable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '409':
          description: State or replay conflict
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '410':
          description: Accepted resource purged
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '413':
          description: The request body exceeds this endpoint's size limit
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '429':
          description: A request or capacity limit has been reached
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '500':
          description: An internal server error occurred
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '503':
          description: A required service is unavailable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
      security:
        - BearerAuth: []
components:
  schemas:
    DraftMessageRequest:
      type: object
      description: Accept one user request into the durable private conversation.
      required:
        - message
        - operation_id
      properties:
        message:
          type: string
          description: 1..32768 UTF-8 bytes; line endings normalize to LF.
        operation_id:
          type: string
          description: >-
            Required retry identifier: a version 7 universally unique identifier
            (UUID).


            Retry within 24 hours with the same `operation_id` and unchanged
            request. After

            that window, inspect existing messages before retrying.
        save:
          type: boolean
          description: >-
            Defaults to false. When true, save the finalized setup after this
            message succeeds.

            Failed or stopped messages never save. Retry with the same value and
            operation identifier.
      additionalProperties: false
    DraftMessageAccepted:
      type: object
      description: The message is saved and queued. The model call happens separately.
      required:
        - status
        - sequence
        - replayed
      properties:
        replayed:
          type: boolean
          description: Whether this exact request had already committed.
        sequence:
          type: string
          description: Decimal user request sequence.
        status:
          type: string
          description: Always accepted.
    ProblemBody:
      type: object
      description: The body every refusal carries, under `application/problem+json`.
      required:
        - docs_uri
        - title
        - detail
        - error_code
        - request_id
      properties:
        action_id:
          type:
            - string
            - 'null'
          description: 'On that 409 only: the action the gate held.'
        current_state:
          type:
            - string
            - 'null'
          description: 'On a 409 only: the state that forbade the transition.'
        detail:
          type: string
          description: One sentence on what was refused and why.
        docs_uri:
          type: string
          description: Where the error code is documented.
        error_code:
          type: string
          description: The registry code, stable across releases.
        etag:
          type:
            - string
            - 'null'
          description: >-
            On a 412 only: the resource's current entity tag, to refetch and
            retry.
        gate_id:
          type:
            - string
            - 'null'
          description: 'On an answered approval gate''s 409 only: the gate that was answered.'
        outcome:
          type:
            - string
            - 'null'
          description: 'On that 409 only: the answer that stands.'
        request_id:
          type: string
          description: The request this refusal answers, for support.
        resolved_at:
          type:
            - string
            - 'null'
          format: date-time
          description: 'On that 409 only: when the standing answer was given.'
        resolved_by:
          type:
            - string
            - 'null'
          description: 'On that 409 only: who gave it.'
        title:
          type: string
          description: A short name for the refusal, safe to show a person.
        user_message:
          type:
            - string
            - 'null'
          description: A curated sentence for end users, where the code has one.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Send a dashboard session token, an account API key (`agt_t`), or a
        command-line credential (`afc_`) as a Bearer token. Each endpoint lists
        accepted credential types.

````

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