Skip to content

List API-triggered workflows

GET
/workflows
curl --request GET \
--url https://api.usesonora.com/v1/workflows \
--header 'Authorization: Bearer <token>'

The workflows a caller can start through the API, newest edit first, with the variables each takes.

Requires the workflows:read scope.

Every startable workflow.

Media typeapplication/json
object
data
required
Array<object>

An API-triggered workflow a caller can start.

object
id
required

The chain root id: what POST /workflows/{id}/runs takes, stable across edits.

string
name
required
string
active
required

Whether a call can start a run now. False for a draft (409 workflow_inactive) and for a workflow whose author was removed (409 workflow_has_no_owner).

boolean
acceptsRecipients
required

Whether a call names its recipients (recipients.roles / emails / contactIds).

boolean
variables
required
Array<object>
object
key
required
string
label
required
string | null
description
required
string | null
required
required
boolean
resendWindowHours
required
number
runsUrl
required

Where POST starts a run.

string
Examplegenerated
{
"data": [
{
"id": "example",
"name": "example",
"active": true,
"acceptsRecipients": true,
"variables": [
{
"key": "example",
"label": "example",
"description": "example",
"required": true
}
],
"resendWindowHours": 1,
"runsUrl": "example"
}
]
}

unauthorized: The Authorization header is missing, or the key is invalid, revoked or expired.

Media typeapplication/json

The one error shape every endpoint answers with.

object
error
required
object
code
required

Stable snake_case code to branch on; see the error table.

string
message
required

For humans; may change.

string
details
object
key
additional properties
requestId
required

Quote it when asking for help.

string | null
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {
"additionalProperty": "example"
},
"requestId": "example"
}
}

insufficient_scope: The key or token lacks the scope this endpoint needs, and details.required names it; or an OAuth access token called an endpoint only an API key can.

Media typeapplication/json

The one error shape every endpoint answers with.

object
error
required
object
code
required

Stable snake_case code to branch on; see the error table.

string
message
required

For humans; may change.

string
details
object
key
additional properties
requestId
required

Quote it when asking for help.

string | null
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {
"additionalProperty": "example"
},
"requestId": "example"
}
}

rate_limited: Too many requests for this key; retry after Retry-After seconds.

Media typeapplication/json

The one error shape every endpoint answers with.

object
error
required
object
code
required

Stable snake_case code to branch on; see the error table.

string
message
required

For humans; may change.

string
details
object
key
additional properties
requestId
required

Quote it when asking for help.

string | null
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {
"additionalProperty": "example"
},
"requestId": "example"
}
}

internal_error: Something went wrong on Sonora’s side. Retry, and quote requestId if it persists.

Media typeapplication/json

The one error shape every endpoint answers with.

object
error
required
object
code
required

Stable snake_case code to branch on; see the error table.

string
message
required

For humans; may change.

string
details
object
key
additional properties
requestId
required

Quote it when asking for help.

string | null
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {
"additionalProperty": "example"
},
"requestId": "example"
}
}

Try it

Run this request against your own Sonora workspace. Sign in, pick the workspace, and the page gets an access token that only reads, only what your role covers, for an hour.

GEThttps://api.usesonora.com/v1/workflows

As curl

$SONORA_TOKEN is your access token or an API key; the page never shows the token.