POST /v1/mailboxes (mailboxes:manage). Every message that arrives is read as a
submission, and a deal thread ends in one job:
- A message with attachments starts a job with every document its thread has sent so far.
- A reply that adds documents (the missing statement) starts a new job with the thread’s documents plus its
own; the earlier job’s
superseded_bynames it. Earlier reads are reused, so only the new files cost anything. - A forward whose documents the thread already holds returns the thread’s job (
merged). - A message with no document (a question, a thank-you) starts none.
GET /v1/mailboxes/{id}/messages lists what became of each message (job, merged, ignored:<reason> or
refused), never its subject, body or attachments. PATCH a mailbox to pause it.
Kinds of mailbox
- Forwarding address
- Gmail (Workspace)
- Microsoft 365
- IMAP
Works with any mail system.
POST /v1/mailboxes with {"kind": "forwarding"} answers a private address,
<token>@in.parser-app.com. Forward your deals inbox to it with a Gmail filter or an Outlook rule. Mail to an
unknown address bounces.Gmail first sends a confirmation code to a new forwarding address. It starts no job, and
GET /v1/mailboxes/{id}/verification shows the code and link so you can confirm it.Anyone who learns the address can mail it, so:- Allowed senders:
PATCH /v1/mailboxes/{id}with{"settings": {"allowed_sender_domains": ["funder.com"]}}takes only mail forwarded from those domains (and their subdomains), judged by the envelope sender: the mail system that forwards, not the ISO inFrom. A Gmail filter or Outlook rule ofdeals@funder.comkeepsfunder.comthere. Other mail isignored:sender_not_allowed. - Hourly cap: a mailbox takes 300 pushed messages an hour. Beyond that, mail is held and delivered later, never lost.
- Rotation:
POST /v1/mailboxes/{id}/rotate-addressgives the mailbox a new address. The old one bounces from then on, and Gmail asks you to confirm the new one.
POST /v1/mailboxes/{id}/resync?since= reads up
to 7 days back. A mailbox whose credential is revoked becomes reauth_required and emits mailbox.disconnected.
A provider posting mail itself
A forwarding mailbox also comes with aninbound_secret, shown once at creation, so a mail provider can post
raw messages for that mailbox to POST /v1/intake/email:
jobs:write), any raw email can be posted the same way, without a mailbox.
Routing
With theemail_routing module, each email is classified before it is parsed: new_submission,
more_documents, question_or_update, internal_note, contract_or_funding or not_deal_related. The answer
is on the job (result.email.routing) and on an ignored email’s response, for your CRM or inbox to route by.
Only an email judged not_deal_related with at least the tenant’s skip_confidence (0.9 by default), in a
thread that holds no deal, goes unparsed. A reply in a deal’s thread is never skipped, and an unsure verdict is
parsed as usual. The classifier sees the sender and recipient domains, the subject, the start of the body and the
attachments’ names and sizes, never their content. Bulk and automatic mail with no document (newsletters,
receipts, out-of-office replies) is not classified at all.