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

# Resume dispatch for a batch

> Admin only. Releases the batch's active hold(s), clears the dispatcher's skip flag on its queued work, and restores the batch to the status it held before the pause. Nothing is re-sent: work already dispatched stays dispatched, and dispatch picks up exactly where it stopped.

Idempotent: when nothing is held, an empty list comes back rather than an error. Releasing never deletes — each record survives with `released_at` and `released_by` completing its audit trail. Cross-tenant access returns 404, never 403.



## OpenAPI

````yaml /openapi.json post /batches/{batch_id}/resume
openapi: 3.1.0
info:
  title: GetDialed Flows API
  version: 0.1.0
servers:
  - url: https://api.getdialed.ai/flows
    description: Production
security: []
paths:
  /batches/{batch_id}/resume:
    post:
      tags:
        - batches
      summary: Resume dispatch for a batch
      description: >-
        Admin only. Releases the batch's active hold(s), clears the dispatcher's
        skip flag on its queued work, and restores the batch to the status it
        held before the pause. Nothing is re-sent: work already dispatched stays
        dispatched, and dispatch picks up exactly where it stopped.


        Idempotent: when nothing is held, an empty list comes back rather than
        an error. Releasing never deletes — each record survives with
        `released_at` and `released_by` completing its audit trail. Cross-tenant
        access returns 404, never 403.
      operationId: resume_batch_batches__batch_id__resume_post
      parameters:
        - name: batch_id
          in: path
          required: true
          schema:
            type: string
            title: Batch Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DispatchPauseResponse'
                title: Response Resume Batch Batches  Batch Id  Resume Post
        '401':
          description: Missing or invalid authentication
          content:
            application/json:
              example:
                detail: Authentication required
        '403':
          description: Caller is authenticated but not an admin
          content:
            application/json:
              example:
                detail: Admin role required
        '404':
          description: >-
            No such batch for this organization (cross-tenant access also
            returns 404)
          content:
            application/json:
              example:
                detail: Batch not found
        '422':
          description: The path or query failed validation
          content:
            application/json:
              example:
                detail: The request failed validation.
        '429':
          description: Rate limit exceeded — retry after the Retry-After header
          headers:
            Retry-After:
              description: Seconds to wait before retrying
              schema:
                type: integer
          content:
            application/json:
              example:
                detail: 'Rate limit exceeded: 100 per 1 minute'
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    DispatchPauseResponse:
      properties:
        id:
          type: string
          title: Id
        scope:
          type: string
          title: Scope
        tenancy_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Tenancy Id
        bucket:
          anyOf:
            - type: string
            - type: 'null'
          title: Bucket
        lane:
          anyOf:
            - type: string
            - type: 'null'
          title: Lane
        batch_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Batch Id
        status:
          type: string
          title: Status
        cause:
          type: string
          title: Cause
        reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Reason
        created_by:
          type: string
          title: Created By
        created_at:
          type: string
          format: date-time
          title: Created At
        expires_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Expires At
        released_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Released At
        released_by:
          anyOf:
            - type: string
            - type: 'null'
          title: Released By
        extensions:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Extensions
      type: object
      required:
        - id
        - scope
        - tenancy_id
        - bucket
        - lane
        - batch_id
        - status
        - cause
        - reason
        - created_by
        - created_at
        - expires_at
        - released_at
        - released_by
        - extensions
      title: DispatchPauseResponse
      description: |-
        One hold on dispatch — an admin hold or an automatic backoff.

        Both kinds share this one shape, so a single listing shows everything
        currently holding dispatch. `scope` says how much is held and the
        matching target field (`tenancy_id`, `lane`, `bucket`, or `batch_id`)
        says exactly what. `cause` is the machine-readable origin
        (`admin_request` for a human hold, the provider fault tag for an
        automatic backoff) and `reason` is the human note, if any. A released
        pause keeps its record: `released_at` and `released_by` complete the
        audit trail, and `extensions` lists every time a scheduled resume was
        pushed out.
      example:
        cause: admin_request
        created_at: '2026-07-29T12:00:00Z'
        created_by: user_11223344
        expires_at: '2026-07-29T13:00:00Z'
        extensions: []
        id: pause_9f2c1a7b3d4e5f60
        reason: Provider maintenance window
        scope: global
        status: active
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    HTTPBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````