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

# Edit a queued send's copy or time before it goes out

> Edits a queued send before it goes out. Send any of `subject`, `body` and `scheduledAt`; omitted fields keep the queued row's current values. IMPORTANT: the edit is not an in-place update - the row you addressed is marked `overwritten` and a NEW queued row carries the content forward, so the response returns the new `id` (and the old one as `replacedSendId`) and any further edit must address the new id. Only a send still waiting to go out can be edited: a row in `scheduled` or `approval_required`, with a send time. Anything else - sent, skipped, stopped, already overwritten, replied or failed - answers 409. Only the owner of the send's campaign may edit it. Rate limit: 30 requests/minute and 1,000/day per token owner, shared by every campaign, scheduled-send, campaign-template and knowledge-hub endpoint.

Errors:
- `404` `SCHEDULED_SEND_NOT_FOUND` — No queued send with this id exists, or it belongs to a campaign you do not own.
- `409` `SCHEDULED_SEND_NOT_EDITABLE` — The send is no longer waiting to go out (sent, skipped, stopped, already overwritten, replied or failed), or it carries no send time.
- `422` `VALIDATION_FAILED` — Empty body, unknown key, a subject or body over its length cap, or a scheduledAt that is not an ISO 8601 date-time; `param` names the field.
- `429` `RATE_LIMITED` — More than 30 campaign requests in a minute, or 1,000 in a day, for this token owner (the bucket is shared by every /business/campaigns, /business/scheduled-sends, /business/campaign-templates and /business/knowledge-hubs call).
- `500` `UNEXPECTED_ERROR` — An unhandled failure; the detail stays in our logs and is never returned.

Requires one of the following token scopes: campaigns.



## OpenAPI

````yaml /openapi.json patch /business/scheduled-sends/{sendId}
openapi: 3.1.0
info:
  title: Fuse Business API
  version: 1.0.0
  description: >-
    External API for lists, campaigns, prospect search and contacts.
    Authenticate with your API token as HTTP Basic. All paths are under /api/v1.
servers:
  - url: https://api.tryfuse.ai/api/v1
    description: Production
security:
  - basicAuth: []
tags:
  - name: Lists
  - name: Custom columns
  - name: Smart columns
  - name: Exports
  - name: Campaigns
  - name: Knowledge hubs
  - name: Analytics
  - name: Website intent
  - name: Account
  - name: Prospect search
  - name: Campaign steps
  - name: Scheduled sends
  - name: Campaign templates
  - name: Agents
  - name: Research
  - name: Company search
  - name: Saved searches
  - name: Folders
  - name: Contacts
paths:
  /business/scheduled-sends/{sendId}:
    patch:
      tags:
        - Scheduled sends
      summary: Edit a queued send's copy or time before it goes out
      description: >-
        Edits a queued send before it goes out. Send any of `subject`, `body`
        and `scheduledAt`; omitted fields keep the queued row's current values.
        IMPORTANT: the edit is not an in-place update - the row you addressed is
        marked `overwritten` and a NEW queued row carries the content forward,
        so the response returns the new `id` (and the old one as
        `replacedSendId`) and any further edit must address the new id. Only a
        send still waiting to go out can be edited: a row in `scheduled` or
        `approval_required`, with a send time. Anything else - sent, skipped,
        stopped, already overwritten, replied or failed - answers 409. Only the
        owner of the send's campaign may edit it. Rate limit: 30 requests/minute
        and 1,000/day per token owner, shared by every campaign, scheduled-send,
        campaign-template and knowledge-hub endpoint.


        Errors:

        - `404` `SCHEDULED_SEND_NOT_FOUND` — No queued send with this id exists,
        or it belongs to a campaign you do not own.

        - `409` `SCHEDULED_SEND_NOT_EDITABLE` — The send is no longer waiting to
        go out (sent, skipped, stopped, already overwritten, replied or failed),
        or it carries no send time.

        - `422` `VALIDATION_FAILED` — Empty body, unknown key, a subject or body
        over its length cap, or a scheduledAt that is not an ISO 8601 date-time;
        `param` names the field.

        - `429` `RATE_LIMITED` — More than 30 campaign requests in a minute, or
        1,000 in a day, for this token owner (the bucket is shared by every
        /business/campaigns, /business/scheduled-sends,
        /business/campaign-templates and /business/knowledge-hubs call).

        - `500` `UNEXPECTED_ERROR` — An unhandled failure; the detail stays in
        our logs and is never returned.


        Requires one of the following token scopes: campaigns.
      operationId: updateScheduledSend
      parameters:
        - name: sendId
          in: path
          required: true
          description: >-
            The queued send's id (the _id of a GET
            /business/campaigns/{campaignId}/scheduled-sends row, 24-character
            hex ObjectId).
          schema:
            type: string
            description: >-
              The queued send's id (the _id of a GET
              /business/campaigns/{campaignId}/scheduled-sends row, 24-character
              hex ObjectId).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                subject:
                  type: string
                  maxLength: 500
                  description: >-
                    Replacement subject (up to 500 characters, may be empty).
                    Omit to keep the queued row's current subject.
                body:
                  type: string
                  maxLength: 20000
                  description: >-
                    Replacement message body (up to 20000 characters; {Variable}
                    tokens substitute at send time). Omit to keep the queued
                    row's current body.
                scheduledAt:
                  type: string
                  description: >-
                    New ISO 8601 send time (UTC). Omit to keep the queued row's
                    current send time.
      responses:
        '200':
          description: Success
          headers:
            RateLimit-Limit:
              schema:
                type: integer
              description: Requests permitted in the current window.
            RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            RateLimit-Reset:
              schema:
                type: integer
              description: Seconds until the current window resets.
          content:
            application/json:
              schema:
                type: object
                properties:
                  send:
                    type: object
                    properties:
                      id:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Id of the NEW queued row that carries the edit;
                          address this one from now on.
                      replacedSendId:
                        type: string
                        description: The row you addressed, now marked overwritten.
                      status:
                        type: string
                        enum:
                          - approval_required
                          - scheduled
                          - sent
                          - skipped
                          - stopped
                          - overwritten
                        description: The queue bucket the edit stays in.
                      subject:
                        type: string
                        description: >-
                          The subject now on the row (the previous one when you
                          omitted it).
                      scheduledAt:
                        type: string
                        format: date-time
                        description: >-
                          The send time now on the row (the previous one when
                          you omitted it).
                    required:
                      - id
                      - replacedSendId
                      - status
                      - subject
                      - scheduledAt
                required:
                  - send
              example:
                send:
                  id: 6a8dce64a4566f4f2454bd38
                  replacedSendId: 6a8da7adafc401ca94530e14
                  status: scheduled
                  subject: Quick question about BrightPay (edited)
                  scheduledAt: '2026-08-26T00:00:00.000Z'
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - basicAuth: []
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            param:
              type:
                - string
                - 'null'
            doc_url:
              type:
                - string
                - 'null'
            request_id:
              type:
                - string
                - 'null'
          required:
            - code
            - message
      required:
        - error
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Your API token (`af_…`) as the Basic-auth username, with an empty
        password.

````