Call shape
module / op / input, errors, idempotency.
POST /v1/{module}
Authorization: Bearer pim_sk_live_...
Idempotency-Key: optional
Content-Type: application/json
{ "op": "author", "workspaceId": "...", "prompt": "...", "resourceTypeId": "..." }Unified alias:
POST /v1
{ "module": "columns", "op": "author", "input": { "workspaceId": "...", "prompt": "..." } }Names match MCP pim_{module}({ op, ... }) without the pim_ prefix on the path.
Envelope
{ "ok": true, "module": "columns", "op": "author", "data": {} }{ "ok": false, "error": { "code": "forbidden", "message": "...", "module": "columns", "op": "publish" } }workspaceId is required unless the key is pinned to one workspace.
Long jobs (video, agent, column refresh) return { id, status } immediately. Poll generate.get or jobs.get_progress.