API Reference

API Reference

Base URL: https://app.flow80.com/api/v1 — All requests require Authorization: Bearer <api_key> header.

Rate limitsSandbox: 1,000 req/min·Starter: 300 req/min·Growth: 1,000 req/min·Enterprise: Custom429 responses include a Retry-After header

Authentication

All API requests must include a valid API key in the Authorization header as a Bearer token. API keys are available in Settings → API Keys.

http
1Authorization: Bearer flw_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Authenticate a request

PHP
1<?php2$api_key = 'flw_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';3 4$ch = curl_init('https://app.flow80.com/api/v1/flows');5curl_setopt_array($ch, [6    CURLOPT_HTTPHEADER => [7        'Authorization: Bearer ' . $api_key,8        'Content-Type: application/json',9    ],10    CURLOPT_RETURNTRANSFER => true,11]);12$res  = curl_exec($ch);13$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);14curl_close($ch);

Endpoints

Workflows

GET/api/v1/flows

Returns a paginated list of all workflows in your account. Includes status, trigger type, and last run timestamp.

GET/api/v1/flows/:id

Returns a single workflow by ID, including its step definitions and current configuration.

POST/api/v1/flows/execute

Triggers a workflow execution programmatically. Use this to integrate Flow80 into your own systems.

Request body
{
  "flow_id": "wf_xxxxxxxxxxxxxxxx",
  "trigger": "api",
  "payload": {
    "order_id": "ORD-12345",
    "customer_email": "[email protected]"
  }
}
GET/api/v1/flows/:id/runs

Returns the execution history for a specific workflow. Supports cursor-based pagination.

Webhooks

POST/api/v1/webhooks/inbound

Inbound webhook endpoint. Flow80 POSTs here when receiving events from integrated third-party services.

GET/api/v1/webhooks

List all configured outbound webhooks for your account.

POST/api/v1/webhooks

Register a new outbound webhook URL and event types.

Request body
{
  "url": "https://your-app.com/webhooks/flow80",
  "events": ["flow.completed", "flow.failed"],
  "secret": "whsec_xxxxxxxxxxxxxxxx"
}

Account & Usage

GET/api/v1/account

Returns details about the authenticated account: plan, status, creation date, and billing info.

GET/api/v1/usage

Returns current API usage including executions used/remaining and rate limit status for the current window.

Trigger a workflow

PHP
1<?php2$ch = curl_init('https://app.flow80.com/api/v1/flows/execute');3curl_setopt_array($ch, [4    CURLOPT_HTTPHEADER => [5        'Authorization: Bearer ' . $api_key,6        'Content-Type: application/json',7    ],8    CURLOPT_POST           => true,9    CURLOPT_POSTFIELDS     => json_encode([10        'flow_id' => 'wf_xxxxxxxxxxxxxxxx',11        'trigger' => 'api',12        'payload' => ['order_id' => 'ORD-12345'],13    ]),14    CURLOPT_RETURNTRANSFER => true,15]);16$res  = curl_exec($ch);17$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);18curl_close($ch);

Error Codes

400Bad RequestInvalid JSON or missing required fields.
401UnauthorizedMissing or invalid API key.
403ForbiddenValid key but insufficient permissions for this resource.
404Not FoundFlow, webhook, or resource does not exist.
422UnprocessableRequest valid but action cannot be performed (e.g., paused flow).
429Too Many RequestsRate limit exceeded. Check Retry-After header.
500Internal ErrorSomething wrong on our end. Retry with exponential backoff.