fal · Arazzo Workflow

fal Webhook-Backed Submission

Version 1.0.0

Submit an inference job with a webhook callback and confirm it was accepted into the queue.

1 workflow 1 source API 1 provider
View Spec View on GitHub AIArtificial IntelligenceGenerative AIGenerative MediaImage GenerationVideo GenerationAudio GenerationInferenceServerlessGPUMCPArazzoWorkflows

Provider

fal-ai

Workflows

webhook-submission
Queue a job with a completion webhook and confirm acceptance.
Submits an inference request configured to call back a webhook on completion, confirms the IN_QUEUE acceptance, and reads the initial status so the caller has a tracking handle while awaiting the webhook.
2 steps inputs: input, modelName, modelOwner, webhookUrl outputs: requestId, status, statusUrl
1
submitWithWebhook
submitRequest
Submit the inference request with the fal_webhook query parameter so fal delivers a completion callback, and confirm the IN_QUEUE acceptance.
2
confirmTracking
getRequestStatus
Read the request status once to confirm the queue is tracking the job while the caller awaits the webhook callback.

Source API Descriptions

Arazzo Workflow Specification

fal-ai-webhook-submission-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: fal Webhook-Backed Submission
  summary: Submit an inference job with a webhook callback and confirm it was accepted into the queue.
  description: >-
    For long-running jobs, fal can POST a callback to a webhook URL when the
    job finishes instead of requiring the client to poll. This workflow submits
    an inference request with the fal_webhook query parameter set, verifies the
    job was accepted into the queue, and reads back the status once to confirm
    the request is being tracked. The eventual completion is delivered to the
    supplied webhook out of band. Every step spells out its request inline so
    the flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
sourceDescriptions:
- name: falModelApis
  url: ../openapi/fal-model-apis-openapi.yml
  type: openapi
workflows:
- workflowId: webhook-submission
  summary: Queue a job with a completion webhook and confirm acceptance.
  description: >-
    Submits an inference request configured to call back a webhook on
    completion, confirms the IN_QUEUE acceptance, and reads the initial status
    so the caller has a tracking handle while awaiting the webhook.
  inputs:
    type: object
    required:
    - modelOwner
    - modelName
    - input
    - webhookUrl
    properties:
      modelOwner:
        type: string
        description: Owning organization of the model (e.g. "fal-ai").
      modelName:
        type: string
        description: Model identifier (e.g. "veo-3").
      input:
        type: object
        description: Model-specific JSON input (prompt, image_url, seed, etc.).
      webhookUrl:
        type: string
        description: URL that fal will POST to when the job finishes.
  steps:
  - stepId: submitWithWebhook
    description: >-
      Submit the inference request with the fal_webhook query parameter so fal
      delivers a completion callback, and confirm the IN_QUEUE acceptance.
    operationId: submitRequest
    parameters:
    - name: model_owner
      in: path
      value: $inputs.modelOwner
    - name: model_name
      in: path
      value: $inputs.modelName
    - name: fal_webhook
      in: query
      value: $inputs.webhookUrl
    requestBody:
      contentType: application/json
      payload: $inputs.input
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.status == "IN_QUEUE"
      type: jsonpath
    outputs:
      requestId: $response.body#/request_id
      status: $response.body#/status
      statusUrl: $response.body#/status_url
  - stepId: confirmTracking
    description: >-
      Read the request status once to confirm the queue is tracking the job
      while the caller awaits the webhook callback.
    operationId: getRequestStatus
    parameters:
    - name: model_owner
      in: path
      value: $inputs.modelOwner
    - name: model_name
      in: path
      value: $inputs.modelName
    - name: request_id
      in: path
      value: $steps.submitWithWebhook.outputs.requestId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
  outputs:
    requestId: $steps.submitWithWebhook.outputs.requestId
    statusUrl: $steps.submitWithWebhook.outputs.statusUrl
    status: $steps.confirmTracking.outputs.status