> ## 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 signed event from one source to a fleet

> Sends a signed event to the fleet's webhook trigger with this source. Every request requires a valid signature under that trigger's scheme. A new event returns 202. A duplicate within 24 hours returns `status: duplicate`. A paused fleet returns `ignored: fleet_paused`. Send the event again after resuming the fleet. 



## OpenAPI

````yaml https://raw.githubusercontent.com/agentsfleet/agentsfleet/main/public/openapi.json post /v1/webhooks/{fleet_id}/{source}
openapi: 3.1.0
info:
  title: agentsfleet Control Plane 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/webhooks/{fleet_id}/{source}:
    post:
      tags:
        - Fleets
      summary: Send a signed event from one source to a fleet
      description: >-
        Sends a signed event to the fleet's webhook trigger with this source.
        Every request requires a valid signature under that trigger's scheme. A
        new event returns 202. A duplicate within 24 hours returns `status:
        duplicate`. A paused fleet returns `ignored: fleet_paused`. Send the
        event again after resuming the fleet. 
      operationId: receive_source_webhook
      parameters:
        - name: fleet_id
          in: path
          description: '`UUIDv7` of the fleet.'
          required: true
          schema:
            type: string
        - name: source
          in: path
          description: The `source` of the fleet's webhook trigger, such as `linear`.
          required: true
          schema:
            type: string
      requestBody:
        description: >-
          The provider's delivery, verbatim; read only once its signature
          verifies
        content:
          application/json:
            schema: {}
        required: true
      responses:
        '200':
          description: A correctly signed delivery this fleet does not act on, and why
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ignored'
        '202':
          description: >-
            Accepted for publication; a subscriber reading it is a separate
            event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Accepted'
        '400':
          description: The request could not be read
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '401':
          description: >-
            The signature does not verify, the timestamp is stale, or no signing
            secret is configured
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '404':
          description: No such resource, or none this caller may see
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '413':
          description: The payload is over this route's ceiling
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '429':
          description: The instance is at its ceiling
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '500':
          description: The daemon failed to answer
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '503':
          description: A dependency this route needs is unreachable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
      security: []
components:
  schemas:
    Ignored:
      type: object
      description: >-
        What a delivery this daemon deliberately dropped is answered with.


        `200` and a reason, never a 4xx. Every one of these is a real,

        correctly-signed delivery that simply does not wake this fleet — a green

        build, a label edit, a paused fleet. Answering an error would put it in
        the

        sender's retry queue forever, and retrying changes none of them.
      required:
        - ignored
      properties:
        ignored:
          type: string
          description: Which rule dropped it.
    Accepted:
      type: object
      description: >-
        What an accepted delivery is answered with.


        `202`, and the event id, so a provider's delivery log carries the
        identifier

        an operator can search the fleet's history by. A replayed delivery
        answers

        the FIRST attempt's id rather than a new one. That is the whole point of

        the at-most-once claim, and a sender comparing two responses should see
        the

        same event both times.
      required:
        - event_id
        - replayed
      properties:
        event_id:
          type: string
          description: The event the fleet will run, or already ran.
        replayed:
          type: boolean
          description: >-
            Whether an earlier delivery already produced it.


            Reported rather than hidden. A provider debugging a duplicate wants
            to

            know this daemon saw the repeat and declined to run twice. That is a

            different fact from the delivery having been lost.
    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:
            - integer
            - 'null'
          format: int64
          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.

````

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