Manage Workflows

List, get, create, update, fork, and soft-delete Roboflow Workflows from the REST API.

Roboflow Workflows are visual computer-vision pipelines you can build in the web app and deploy as a hosted endpoint. The REST API exposes the management surface; for executing a workflow against an image or video stream, see Run a Model on an Image and the Workflows runtime docs.

api_key may be passed as a query parameter or in the request body. Required scopes are noted on each endpoint.

List Workflows

GET /:workspace/workflows

Lists all workflows in the workspace.

Query

Name
Type
Description
Required

api_key

string

API key for the workspace.

Example Request

curl "https://api.roboflow.com/my-workspace/workflows?api_key=$ROBOFLOW_API_KEY"

Response

{
  "workflows": [
    {
      "id": "wf_abc123",
      "name": "Slow webhooks",
      "url": "slow-webhooks",
      "createdAt": "2026-04-12T17:05:33.000Z"
    }
  ],
  "status": "ok"
}

Required scope: workflow:read.

Get a Workflow

GET /:workspace/workflows/:workflowUrl

Returns the workflow's specification, metadata, and (for non-public workflows) authorization status.

Public workflows can be accessed without an api_key. Private workflows require the workflow:read scope.

List Workflow Versions

GET /:workspace/workflows/:workflowUrl/versions

Returns the versioned snapshots of the workflow specification.

Create a Workflow

POST /:workspace/createWorkflow

Headers

Name
Value

Content-Type

application/json

Query

Name
Type
Description
Required

api_key

string

Workspace API key.

name

string

Display name.

url

string

URL slug for the workflow. Auto-generated from name if omitted.

config

string

JSON-encoded workflow specification (see note below).

template

string

JSON-encoded template metadata. Pass "{}" if you don't have one.

Note on config: the API expects the stored shape {"specification": {...}}. Passing a bare specification works through the SDK adapter, which auto-wraps it; for direct REST calls, wrap it yourself.

Example Request

Response

Required scope: workflow:create.

Update a Workflow

POST /:workspace/updateWorkflow

Headers

Name
Value

Content-Type

application/json

Body

Name
Type
Description
Required

id

string

Workflow's internal ID.

name

string

Display name.

url

string

URL slug.

config

string

JSON-encoded workflow specification (see note on Create).

Required scope: workflow:update.

Fork a Workflow

POST /:workspace/forkWorkflow

Copy a workflow from another workspace into this one.

Body

Name
Type
Description
Required

source_workspace

string

Slug of the workspace that owns the source workflow.

source_workflow

string

URL slug of the source workflow.

name

string

Display name for the fork. Defaults to source name.

url

string

URL slug for the fork. Auto-generated if omitted.

Required scope: workflow:create.

Generate a Workflow Token

POST /:workspace/workflowToken

Generate a short-lived token suitable for executing a workflow from a public client (e.g. a browser).

Delete (soft-delete) a Workflow

DELETE /:workspace/workflows/:workflowUrl

Moves the workflow to Trash. See Manage Trash for the response shape and restore flow.

Run a Workflow

Workflow execution lives at https://serverless.roboflow.com, not the management API. See Run a Model on an Image and the product docs on deploying a workflow.

Last updated

Was this helpful?