http://localhost:11345 (default)
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):
| Field | Description |
|---|---|
status | "ok" or "degraded" |
uptime | Server uptime in seconds |
storage | "json" (file-based) or "postgres" |
storage_error | Present only when the database is unreachable |
200 when healthy and 503 when degraded. This endpoint does not require authentication.
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
Lists all saved tasks. Each task includes its full configuration except for the version history, which is fetched separately when you open a task in the editor.
Response:
description field is optional and only present if the task has one.
POST /api/tasks
Creates or updates a task. If a task with the same 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 GET /api/tasks/list response so external tools and AI agents have context about the task without fetching its full definition.
POST /api/tasks/:id/api
Triggers an execution of a specific task.
Body:
| Field | Type | Required | Description |
|---|---|---|---|
variables | object | No | Override task-level variables for this run |
webhookUrl | string | No | URL to receive a POST callback with the execution result |
statelessExecution | boolean | No | Run in a clean browser context with no saved cookies |
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:
Executions
GET /api/executions
Lists execution history.
Query Parameters:
limit: Number of results (default 50).status: Filter by status code.
GET /api/executions/:id
Gets detailed logs and result for a specific execution.
Data
GET /api/data/captures
Lists all captured files (screenshots, recordings).
DELETE /api/data/captures/:name
Deletes a specific capture file.
Settings
GET /api/settings/proxies
Lists configured proxies.
POST /api/settings/proxies
Adds a new proxy.
Body:
Credentials
GET /api/credentials
Lists all saved credentials. Tokens are redacted in the response.
Response:
POST /api/credentials
Creates a new output provider credential.
Body:
baseUrl is validated against SSRF rules. If the URL points to a private or internal network address (and ALLOW_PRIVATE_NETWORKS is false), the request returns:
PUT /api/credentials/:id
Updates an existing credential. The same URL validation applies when updating the baseUrl.
DELETE /api/credentials/:id
Deletes a credential by ID.
Response:
GET /api/credentials/:id/proxy/baserow/databases
Lists all Baserow databases accessible by the credential. This proxies the request through Figranium so your Baserow token is never exposed to the browser.
Response:
GET /api/credentials/:id/proxy/baserow/databases/:databaseId/tables
Lists all tables within a specific Baserow database.
Response:
POST /api/settings/api-key
Generates or regenerates the system API key. If you include an apiKey field in the request body, that value is saved as the new key (max 512 characters). If omitted, a new key is generated automatically.
Body (optional):
| Status | Error code | Cause |
|---|---|---|
400 | API_KEY_TOO_LONG | The supplied key exceeds 512 characters |
GET /api/settings/selector-finder
Returns the default selector finder preference.
Response:
"highlight" (standard point-and-click picker) or "ai" (AI Selector Finder).
POST /api/settings/selector-finder
Sets the default selector finder tool.
Body:
Headful
GET /api/headful/status
Returns the current state of the headful (VNC) browser session. Requires authentication.
Response (VNC enabled, session active):
| Field | Description |
|---|---|
useNovnc | Whether VNC support is enabled on the server |
novncPort | The port the noVNC viewer is running on (only present when enabled) |
isRunning | Whether a headful browser session is currently active |