fal · Arazzo Workflow

fal Upload, Run Image-To-Image With Webhook

Version 1.0.0

Upload a reference image, submit an image-to-image job with a webhook, and confirm queue acceptance.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub Artificial IntelligenceGenerative AIGenerative MediaImage-GenerationVideo GenerationAudio GenerationInferenceServerlessGPUMCPArazzoWorkflows

Provider

fal-ai

Workflows

image-to-image-with-webhook
Register a reference image and queue an image-to-image job with a callback.
Initiates a signed upload for a reference image, submits an image-to-image inference request that passes the CDN file_url as image_url and sets a completion webhook, and confirms the IN_QUEUE acceptance.
2 steps inputs: fileName, modelName, modelOwner, prompt, webhookUrl outputs: fileUrl, requestId, statusUrl
1
initiateUpload
Request a signed upload URL and public CDN file_url for the PNG reference image. The client PUTs the image bytes to upload_url out of band.
2
submitWithWebhook
Submit the image-to-image request referencing the uploaded asset as image_url, register a completion webhook, and confirm IN_QUEUE acceptance.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: fal Upload, Run Image-To-Image With Webhook
  summary: Upload a reference image, submit an image-to-image job with a webhook, and confirm queue acceptance.
  description: >-
    Combines the fal Storage and Model APIs for an asynchronous image-to-image
    pipeline. The workflow obtains a signed upload URL and public CDN file_url
    for a reference image, then submits an image-to-image inference request that
    references that file_url and registers a completion webhook, confirming the
    job was accepted into the queue. The PUT of the image bytes to the signed
    upload_url and the eventual webhook callback both happen 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
  x-realizes-capability-ids:
  - BC-610.60
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-610.60
      capability_name: Artificial Intelligence Management
      spec: fal-ai-queue-api-openapi.yml
      confidence: 0.7
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: queueApi
  url: ../openapi/fal-ai-queue-api-openapi.yml
  type: openapi
- name: storageApi
  url: ../openapi/fal-ai-storage-api-openapi.yml
  type: openapi
workflows:
- workflowId: image-to-image-with-webhook
  summary: Register a reference image and queue an image-to-image job with a callback.
  description: >-
    Initiates a signed upload for a reference image, submits an image-to-image
    inference request that passes the CDN file_url as image_url and sets a
    completion webhook, and confirms the IN_QUEUE acceptance.
  inputs:
    type: object
    required:
    - fileName
    - modelOwner
    - modelName
    - prompt
    - webhookUrl
    properties:
      fileName:
        type: string
        description: Original file name of the reference image (e.g. "reference.png").
      modelOwner:
        type: string
        description: Owning organization of the model (e.g. "fal-ai").
      modelName:
        type: string
        description: Image-to-image model identifier (e.g. "flux/dev/image-to-image").
      prompt:
        type: string
        description: Natural-language prompt describing the desired transformation.
      webhookUrl:
        type: string
        description: URL that fal will POST to when the job finishes.
  steps:
  - stepId: initiateUpload
    description: >-
      Request a signed upload URL and public CDN file_url for the PNG reference
      image. The client PUTs the image bytes to upload_url out of band.
    operationId: initiateUpload
    requestBody:
      contentType: application/json
      payload:
        content_type: image/png
        file_name: $inputs.fileName
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      uploadUrl: $response.body#/upload_url
      fileUrl: $response.body#/file_url
  - stepId: submitWithWebhook
    description: >-
      Submit the image-to-image request referencing the uploaded asset as
      image_url, register a completion webhook, and confirm 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:
        prompt: $inputs.prompt
        image_url: $steps.initiateUpload.outputs.fileUrl
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.status == "IN_QUEUE"
      type: jsonpath
    outputs:
      requestId: $response.body#/request_id
      statusUrl: $response.body#/status_url
  outputs:
    fileUrl: $steps.initiateUpload.outputs.fileUrl
    requestId: $steps.submitWithWebhook.outputs.requestId
    statusUrl: $steps.submitWithWebhook.outputs.statusUrl

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/fal-ai-image-to-image-result-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.