- Find leads. Hand Origami a brief; it creates a list, sources rows, and enriches them.
- Bring your own data. Upsert rows into a list, let its columns enrich them, and read the results back.
- Run outreach. Build a campaign as a linear recipe: people, templates, senders, launch.
Base URL
HTTP requests go to:https://origami.chat/mcp. Same bearer. See
the v3 overview for the client config.
Authenticate with a Bearer API key. See authentication.
Core conventions
A few conventions hold across every v3 endpoint:- snake_case. Request and response fields are
snake_case. Unknown fields are400 VALIDATION_ERROR. - Self-describing objects. Every object carries an
objectfield naming its type ("job","list","campaign", …). - One list envelope. Every list endpoint returns
{ "object": "list", "items": [...], "next_cursor": string | null, "url": string }. Passnext_cursorback ascursorto page;nullmeans the last page. - Async work is a Job. Async POSTs return
202with a Job. Poll untilstatusis terminal, honoringnext_poll_at, or subscribe tojob.*webhooks. - Idempotency. Any
POSTmay send anIdempotency-Keyheader for safe retries. - Errors. Every error is
{ error, code, details?, handoff? }with anUPPERCASE_SNAKE_CASEcode.
Quick links
v3 API
Named operations, the Job object, and how the three sections fit together.
Quickstart
Find leads with a brief, poll the Job, and read the rows back.
Authentication
API keys, roles, rate limits, and project scoping.
Webhooks
Signed POSTs for sequencer activity, table runs, and Job transitions.
Migrating from v2
Map every v2 flow to its v3 operation.
v2 API
The previous API. Still fully functional; deprecated for new work.