object field naming its type, so a response is always
self-identifying:
Leads objects
List — a grid of prospects
List — a grid of prospects
POST /leads/lists for an
empty one, or POST /leads/searches,
which creates a list and fills it in one call.Row — one person
Row — one person
relevance_score, is_deduplicated, is_excluded).Comes from a search or fetch that sources people, or from
POST /leads/lists/{list_id}/rows/upsert
when you bring your own data.Column — one fact per row
Column — one fact per row
POST /leads/lists/{list_id}/columns
for a static or score column,
POST /leads/lists/{list_id}/enrich_custom
to add one from instructions, or
POST /leads/lists/{list_id}/columns/copy
to reuse one from another list.Columns come in three flavors. Code columns run Origami’s own research
and are the ones that spend credits — you get them by copying from another
list. Score columns rate a row for fit and carry a
relevance_weight. Static columns just hold values you write.Search — the criteria behind a list
Search — the criteria behind a list
remaining_count, has_more, tam_known). Ask for more leads and it
continues where it left off instead of starting over.Comes from POST /leads/searches
or POST /leads/lists/{list_id}/fetch.
A list has at most one active search.Send objects
Campaign — a sequence plus everyone in it
Campaign — a sequence plus everyone in it
draft →
active → paused.Comes from POST /send/campaigns
for a blank draft, or
POST /send/campaigns/draft, which
writes the schema and templates from a brief.Person — one enrolled prospect and their sequence
Person — one enrolled prospect and their sequence
sequence_id, contact details, per-step state,
and the exact copy that was rendered for them. Most people operations
address one by sequence_id.Comes from POST /send/campaigns/{campaign_id}/people,
either by pointing at a list (list_id, optionally specific row_ids) or
by passing people inline.Person schema — the columns of the People tab
Person schema — the columns of the People tab
{ key, description, required } fields declaring what context
each person carries into the template. { "fields": [] } means
identity-only.Comes from PUT /send/campaigns/{campaign_id}/people/schema,
or gets written for you by campaigns.draft. Set it before enrolling people
so their context has somewhere to land.Template — the messages, before personalization
Template — the messages, before personalization
instructions steer and a list of steps: a channel (email,
linkedin_message, linkedin_connect, linkedin_comment,
linkedin_react, or manual), a body, a delay_days, and which parts
should be personalized per recipient. Every variant keeps a variant_key
that is never reused.Comes from PUT /send/campaigns/{campaign_id}/templates
to replace the whole thing, or
POST /send/campaigns/{campaign_id}/templates/sequences
to add one variant at a time.Generated message — the copy one person will actually get
Generated message — the copy one person will actually get
POST /send/campaigns/{campaign_id}/examples.
One LLM call per person, so it returns a Job.Account objects
Sender — a mailbox or LinkedIn account that sends
Sender — a mailbox or LinkedIn account that sends
POST /account/senders/connect
for Google, Microsoft, or LinkedIn (OAuth finishes in the browser — you get
a handoff URL), or
POST /account/senders/imap
for any SMTP/IMAP mailbox. Credentials are write-only and never returned.Domain and mailbox — sending infrastructure Origami runs
Domain and mailbox — sending infrastructure Origami runs
POST /account/domains/purchase
(charges the card on file) and then
POST /account/mailboxes.Exclusion list — who you must never contact
Exclusion list — who you must never contact
POST /account/exclusion-lists/people
and the matching companies endpoint. Each organization has one; a project
can either share its parent’s or keep a private one.Project — a child organization
Project — a child organization
POST /account/projects.
Act inside one by sending x-origami-project: <project_id>.Chat — the in-app assistant, over the API
Chat — the in-app assistant, over the API
POST /account/chats,
then POST /account/chats/{chat_id}/messages.
Each message returns a Job.Webhook endpoint and API key
Webhook endpoint and API key
member or admin).Come from POST /account/webhooks
and POST /account/keys. Both are
admin-only.The Job
Every slow operation — sourcing, enrichment, copy generation, domain purchase, chat — returns the same Job object instead of blocking. A Job tells you what it’s working on (operation, target, phase), how far along it is
(progress), when to check again (next_poll_at), and what it cost
(credits).