The outreach inbox
Every message to and from this org's contacts, grouped into conversations, most recently active first — sequenced sends, one-off emails, and replies together. `district_id` and `org_contact_id` narrow it to one entity's correspondence, which is how the district and school pages read it. Gated by the `sequencer` module.
Every message to and from this org's contacts, grouped into conversations, most recently active first — sequenced sends, one-off emails, and replies together. district_id and org_contact_id narrow it to one entity's correspondence, which is how the district and school pages read it. Gated by the sequencer module.
API key (sk_live_... prefix). Generate keys in the UI under Settings > API Keys, then send it as Authorization: Bearer sk_live_...
In: header
Query Parameters
What a row is. person puts everything said to one human in a single row whatever the channel — an email chain and a LinkedIn DM with the same superintendent are one relationship. district rolls up everyone at a district, which is what answers "has anyone here already been contacted?".
"person""person" | "district"Only conversations whose last message came from them.
uuiduuid50value <= 200Response Body
application/json
application/json
application/json
curl -X GET "https://loading/api/v1/org/communications"{
"data": [
{
"key": "string",
"grouping": "person",
"channels": [
"email"
],
"subject": "string",
"contactName": "string",
"contactTitle": "string",
"districtId": "dcfc5a80-c117-43e5-9945-b0823e3dd8ce",
"districtName": "string",
"schoolId": "dfe953a5-755d-47f9-a230-5efd591653e3",
"schoolName": "string",
"orgContactId": "f254015d-44cc-4ee5-9cea-2b17f50d6399",
"lastAt": "string",
"lastFromThem": true,
"awaitingReply": true,
"messageCount": -9007199254740991,
"peopleCount": -9007199254740991,
"preview": "string",
"messages": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"direction": "outbound",
"channel": "email",
"kind": "email",
"org_contact_id": "646776e9-0f7e-46f6-bce9-cfcace861993",
"provider_thread_id": "string",
"counterparty_name": "string",
"counterparty_title": "string",
"counterparty_contact_id": "9032d18f-dac8-486e-8d63-90dde0046e44",
"subject": "string",
"body": "string",
"to_address": "string",
"to_addresses": [
"string"
],
"from_address": "string",
"to_name": "string",
"from_name": "string",
"status": "string",
"sent_at": "string",
"received_at": "string",
"opened_at": "string",
"clicked_at": "string",
"created_at": "string",
"attachments": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"communication_id": "c99c0bd1-bbaf-4fd2-a5e5-eecf83c0bdb6",
"filename": "string",
"mime_type": "string",
"size_bytes": -9007199254740991,
"source": "ours"
}
]
}
]
}
]
}{
"error": "string",
"message": "string",
"statusCode": -9007199254740991
}{
"error": "module_required",
"module": "string",
"message": "string",
"contact": "string"
}Start an on-demand prospecting run POST
"Find me more opportunities" — kicks off one agent research run for a project the caller owns. Results land in the opportunities feed as they are verified (typically 30-45 minutes). Requires completed project onboarding.
Import mail history from a connected mailbox POST
Reads back through a connected mailbox and files the correspondence that belongs to a district. A message is kept when the person is already a contact, is in the corpus, or writes from a domain that belongs to exactly one district; anyone new is created as a contact and recorded against the org. Everything else is left alone. Idempotent — a second sweep over the same window writes nothing.