List API-triggered workflows
const url = 'https://api.usesonora.com/v1/workflows';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Every startable workflow.
object
An API-triggered workflow a caller can start.
object
The chain root id: what POST /workflows/{id}/runs takes, stable across edits.
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).
Whether a call names its recipients (recipients.roles / emails / contactIds).
object
Where POST starts a run.
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.
The one error shape every endpoint answers with.
object
object
Stable snake_case code to branch on; see the error table.
For humans; may change.
object
Quote it when asking for help.
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.
The one error shape every endpoint answers with.
object
object
Stable snake_case code to branch on; see the error table.
For humans; may change.
object
Quote it when asking for help.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": { "additionalProperty": "example" }, "requestId": "example" }}rate_limited: Too many requests for this key; retry after Retry-After seconds.
The one error shape every endpoint answers with.
object
object
Stable snake_case code to branch on; see the error table.
For humans; may change.
object
Quote it when asking for help.
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.
The one error shape every endpoint answers with.
object
object
Stable snake_case code to branch on; see the error table.
For humans; may change.
object
Quote it when asking for help.
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.
Signed in.
As curl
$SONORA_TOKEN is your access token or an API key; the page never shows the token.