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

# Deliver an external callback

> Deliver the result of an external callback to a paused workflow node.
Requires the **`cases:callback`** scope.

Used only if your workflow has a node that pauses awaiting an external
system. After receiving an `external_callback.dispatch` webhook, the
external system POSTs its result to the one-time `callbackUrl` from the
dispatch payload (which encodes `caseId` and `callbackRef`) before it
expires. The body is a free-form JSON object the workflow node consumes.




## OpenAPI

````yaml /api-reference/openapi.yaml post /cases/{caseId}/callbacks/{callbackRef}
openapi: 3.1.0
info:
  title: Frayme Case API
  version: 1.0.0
  description: >
    The partner-facing HTTP API for the Frayme fraud-analysis platform. Submit

    **cases** (KYC, KYB, or Transaction), poll their status, act on paused

    workflow nodes, and deliver external callbacks.


    All requests authenticate with a tenant-scoped API key sent in the

    `X-API-Key` header. Each key carries one or more **scopes** — the required

    scope is listed on every operation below.


    | Scope | Grants |

    | --- | --- |

    | `cases:write` | Submit new cases (`POST /cases`) |

    | `cases:read` | Read a case, list paused nodes, list durable actions |

    | `cases:callback` | Deliver an external callback, or invoke a pending /
    durable action |


    Your tenant is derived from the API key — never send `tenantId` in a request

    body; it is ignored. The base URL and your webhook configuration are

    provisioned for you by Frayme.
servers:
  - url: https://core.us.api.frayme.io
    description: Production.
  - url: https://core.us.api.stg.frayme.io
    description: Staging.
security:
  - apiKeyAuth: []
tags:
  - name: Cases
    description: Submit and read cases.
  - name: Pending actions
    description: Act on a workflow node that is paused awaiting an external system.
  - name: Durable actions
    description: Invoke a broker action on a case after it has been decided.
  - name: Callbacks
    description: Deliver the result of an external callback back to a paused node.
paths:
  /cases/{caseId}/callbacks/{callbackRef}:
    post:
      tags:
        - Callbacks
      summary: Deliver an external callback
      description: |
        Deliver the result of an external callback to a paused workflow node.
        Requires the **`cases:callback`** scope.

        Used only if your workflow has a node that pauses awaiting an external
        system. After receiving an `external_callback.dispatch` webhook, the
        external system POSTs its result to the one-time `callbackUrl` from the
        dispatch payload (which encodes `caseId` and `callbackRef`) before it
        expires. The body is a free-form JSON object the workflow node consumes.
      operationId: deliverCallback
      parameters:
        - $ref: '#/components/parameters/CaseId'
        - name: callbackRef
          in: path
          required: true
          description: The one-time callback token from the dispatch payload.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              description: A free-form JSON object the workflow node consumes.
      responses:
        '202':
          description: Callback accepted.
        '400':
          description: Invalid JSON body, or a payload validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: No API key was supplied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: The API key is missing the `cases:callback` scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The token is invalid or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The callback was already consumed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  parameters:
    CaseId:
      name: caseId
      in: path
      required: true
      description: The case identifier returned by `POST /cases`.
      schema:
        type: string
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: A human-readable error message.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: A tenant-scoped API key provisioned by Frayme.

````