Developers

Render verified data videos from code.

One call runs the whole pipeline: profile → insights → AI story → claim verification → render. Plan limits (watermark, resolution, render minutes) apply exactly as in-app.

You'll need a free account to mint a key: sign in, then create one under Settings → API keys. Keys are shown once — store yours securely.

POST /api/v1/renders

CSV in, queued render out. Rate limit: 10 renders/min per workspace.

curl -X POST https://furlen.pro/api/v1/renders \
  -H "Authorization: Bearer sg_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "csv": "month,revenue\n2025-01,120000\n2025-02,145000\n2025-03,210000",
    "audience": "investor",
    "outputFormat": "video_16_9",
    "format": "mp4",
    "resolution": "1080p"
  }'

audience: investor · executive · linkedin · youtube · internal_team · client_report · student — outputFormat: video_16_9 · video_9_16 · video_1_1 — format: mp4 · gif — resolution: 720p · 1080p · 4k (capped by plan).

GET /api/v1/renders/:id

Poll every few seconds; renders typically take 30–90s. downloadUrl appears when completed.

{ "renderId": "…", "status": "completed", "progress": 100,
  "format": "mp4", "resolution": "1080p",
  "downloadUrl": "/api/render-jobs/<id>/download" }

Errors

Errors return a JSON body with a stable error string and the matching HTTP status.

400  { "error": "invalid_request", "message": "csv is required" }
401  { "error": "unauthorized", "message": "Missing or invalid API key" }
402  { "error": "plan_limit", "message": "4k renders require the Pro plan" }
429  { "error": "rate_limited", "message": "10 renders/min per workspace" }
500  { "error": "render_failed", "message": "Render worker error — safe to retry" }

402 plan-limit and 401 auth errors are terminal — fix the request. 429 and 500 are safe to retry with backoff.

MCP server for AI agents

Let Claude (or any MCP client) render verified data videos: the furlen-mcp server exposes furlen_render and furlen_render_status.

{
  "mcpServers": {
    "furlen": {
      "command": "npx",
      "args": ["-y", "furlen-mcp"],
      "env": { "FURLEN_API_KEY": "sg_live_..." }
    }
  }
}