HuluFlow · API

Models

Shared headers, response bodies, and errors across endpoints.

Authentication

All `/api/v1/*` calls need `Authorization: Bearer hulu_…`

Authorization: Bearer hulu_…

WorkflowOut

{
  "id": 12,
  "name": "Product pipeline",
  "status": "paused",
  "graph_json": { "nodes": [], "edges": [] },
  "interval_minutes": 1440,
  "next_run_at": null,
  "last_run_at": null,
  "last_error": null,
  "created_at": "2026-01-01T00:00:00Z"
}

WorkflowRunOut

{
  "id": 101,
  "workflow_id": 12,
  "status": "success",
  "error": null,
  "started_at": "2026-01-01T12:00:00Z",
  "finished_at": "2026-01-01T12:01:30Z"
}

DatasetOut / DatasetRowsOut

{
  "id": 3,
  "name": "Products",
  "row_count": 240,
  "column_count": 4,
  "columns": [{ "key": "title", "label": "title", "type": "text" }],
  "page": 1,
  "page_size": 50,
  "total": 240,
  "total_pages": 5,
  "rows": [{ "id": 1, "key_hash": "…", "data": { "title": "Item" }, "created_at": "…", "updated_at": "…" }]
}

Errors

FastAPI-style `detail`; quota exceeded is HTTP 402.

{ "detail": "Invalid API key" }
HTTP 401

{ "detail": "Credit quota exceeded" }
HTTP 402

{ "detail": "Workflow not found" }
HTTP 404

Pagination

List endpoints use `page`, `page_size`, `total`, `total_pages`.