http://localhost:11345 (default)
- Header:
x-api-key: your_keyorkey: your_key - Authorization Header:
Authorization: Bearer your_key - Request Body:
{"apiKey": "your_key"}or{"key": "your_key"}
Health
GET /api/health
Returns the server status and storage backend connectivity. Use this endpoint for uptime monitoring, load-balancer health checks, or verifying that Figranium is ready to accept work.
Response (healthy):
200 when healthy and 503 when degraded. This endpoint does not require authentication.
GET /api/capabilities
Describes the features and action schemas supported by the running server. Use it to check what an instance supports before building tasks. This endpoint does not require authentication.
Capacity and timeout errors
Execution endpoints can return these errors when resource protection is active:Trigger a task
POST /api/tasks/:id/api
Triggers an execution of a specific task. This is the primary endpoint most integrations use: send a POST to a task’s URL to run it on demand, optionally overriding variables or receiving a webhook callback when it finishes.
Body:
Content-Type: application/json header, Figranium treats the body as {} and runs the task with its default variables. This lets tools that can’t set request headers (for example, Clay’s HTTP action) trigger a task with a bare POST to the endpoint URL.To pass variables, webhookUrl, statelessExecution, or sessionId, you must send Content-Type: application/json and a JSON body.Completion webhook
When you include awebhookUrl, Figranium sends a POST request to that URL after the task finishes. The webhook URL is validated against the same SSRF rules as all other outbound requests (see Security). If the URL points to a private network and ALLOW_PRIVATE_NETWORKS is false, the request returns 400 INVALID_WEBHOOK_URL.
The callback payload looks like this:
Authentication
If enabled, authentication must be provided via one of the following methods:- Header:
x-api-key: your_keyorkey: your_key - Authorization Header:
Authorization: Bearer your_key - Request Body:
{"apiKey": "your_key"}or{"key": "your_key"}
Tasks
GET /api/tasks/list
GET /api/tasks/list
GET /api/tasks
GET /api/tasks
GET /api/tasks/list for lightweight listings.Response:POST /api/tasks
POST /api/tasks
id already exists, it is overwritten. Include ?version=true in the query string to save a version snapshot before overwriting.Body:description field is optional. When set, it appears on the canvas trigger card and in the tasks[] entries returned by GET /api/tasks/list so external tools and AI agents have context about the task without fetching its full definition.PATCH /api/tasks/:id
PATCH /api/tasks/:id
id and versions fields are ignored if supplied. Figranium takes a version snapshot of the task before applying the update, so you can restore the previous state from the version history.Use this endpoint when you want to change a single attribute (for example, a schedule, a variable, or one action) without re-sending the full task definition.Body: Any subset of the task’s top-level fields.DELETE /api/tasks/:id
DELETE /api/tasks/:id
POST /api/tasks/:id/api
POST /api/tasks/:id/api
Executions
GET /api/executions/list
GET /api/executions/list
GET /api/executions/:id. Requires API-key authentication.Response:GET /api/executions
GET /api/executions
limit: Number of results (default 50).status: Filter by status code.
GET /api/executions/:id
GET /api/executions/:id
MAX_PERSISTED_EXECUTION_BYTES (default 256 KB), the result in the history record is trimmed and marked with "truncated": true and "hasFullResult": true. Use GET /api/executions/:id/result to load the complete result.GET /api/executions/:id/result
GET /api/executions/:id/result
POST /api/executions/stop
POST /api/executions/stop
200:400 MISSING_RUN_ID if runId is missing.DELETE /api/executions/:id
DELETE /api/executions/:id
Data
GET /api/data/captures
GET /api/data/captures
DELETE /api/data/captures/:name
DELETE /api/data/captures/:name
Templates
Use these endpoints to list and fetch community templates from the official Templates Hub. Both endpoints require a signed-in workspace session (the session cookie set when you sign in). API keys are not accepted. Requests are rate limited. Figranium caches the Hub catalog for 5 minutes and waits up to 12 seconds for the Hub to respond.GET /api/templates
GET /api/templates
- Without query parameters: returns the full catalog as an array of templates, including
configuration,readme, andexpected_output. - With any query parameter: returns a page of template summaries as
{ "items": [...], "total": n }. Summaries omitconfiguration,readme, andexpected_output, and addaction_count.
GET /api/templates/:id
GET /api/templates/:id
configuration, readme, and expected_output. The id must be a UUID.Request:Cache-Control: private, max-age=60.
System settings
GET /api/settings/system
GET /api/settings/system
POST /api/settings/system
POST /api/settings/system
400 INVALID_SYSTEM_SETTINGS for values outside the range.POST /api/settings/export
POST /api/settings/export
application/zip with Content-Disposition: attachment; filename="figranium-export-YYYY-MM-DD.zip" and Cache-Control: no-store.Error responses:Proxies
GET /api/settings/proxies
GET /api/settings/proxies
POST /api/settings/proxies
POST /api/settings/proxies
400 with INVALID_URL.POST /api/settings/proxies/import
POST /api/settings/proxies/import
POST /api/settings/proxies. Every entry is validated individually against the SSRF blocklist — if any entry fails, the entire import is rejected.PUT /api/settings/proxies/:id
PUT /api/settings/proxies/:id
POST /api/settings/proxies. The server field is required and re-validated against the SSRF blocklist.DELETE /api/settings/proxies/:id
DELETE /api/settings/proxies/:id
Browser
Programmatic control of the managed headful browser session. Use these endpoints when an external tool or agent needs to open a browser, drive it, and inspect the page without going through the Figranium UI.POST /api/browser/open
POST /api/browser/open
sessionId you can pass to other endpoints and a WebSocket endpoint suitable for connecting a Playwright or Chrome DevTools client.Accepts either a signed-in dashboard session or an API key. Session-authenticated callers (the Figranium UI) can launch the browser without adding a header. External callers such as MCP servers or scripts authenticate with x-api-key, Authorization: Bearer, or an apiKey body field, as described under Authentication.Body:200):headless: true explicitly if you want to skip the failed first attempt.Error responses:Inspector
POST /api/inspector/highlight
POST /api/inspector/highlight
targetHint, returns up to five candidate elements with CSS selectors, XPath, and a confidence score. Optionally returns a base64-encoded JPEG snapshot of the current viewport with the top match visually outlined.Accepts either a signed-in dashboard session or an API key. This lets the Figranium UI drive the inspector directly while external clients (for example, an MCP server resolving a plain-language target into a selector) authenticate with an API key. See Authentication for accepted formats.Use this endpoint from an external agent or CLI to resolve a plain-language target (for example, "Sign in" or input[name="q"]) into a selector you can feed back into a task action. Match strategy, in order:- Treat
targetHintas a CSS selector and runquerySelectorAll. - Match common attributes (
name,placeholder,aria-label,title,alt,value,data-testid,data-test-id). - Match visible text on
button,a,label,span,div,h1–h4,li, andp.
url, Figranium launches one first.Body:200):Schedules
GET /api/schedules
GET /api/schedules
POST /api/schedules/:taskId
POST /api/schedules/:taskId
DELETE /api/schedules/:taskId
DELETE /api/schedules/:taskId
GET /api/schedules/:taskId/status
GET /api/schedules/:taskId/status