Skip to content
Inkbox

Inkbox

DocsPricingBlogContact
GuidesAPI ReferenceChangelog

Ctrl K

GuidesAPI ReferenceChangelog

Jump to

Contact Memory and Correspondence

Inkbox can derive concise memories from a contact's email, SMS, iMessage, and call history. Every memory includes one or more citations to the source correspondence.

Contact list, create, update, and merge responses include memory_count, the number of active memories for that contact.

Fact text is organization-wide. For an identity-scoped caller, citations owned by that identity include their source ID, locator, and resolver URL; citations owned by other identities remain in the response but redact those source details. Organization-wide authenticated callers can inspect correspondence across the organization. Unavailable or inaccessible citations report only their source type and availability.

List correspondence GET

GET /contacts/{contact_id}/correspondence

Returns correspondence between one contact and one agent identity across supported channels.

ParameterTypeDefaultDescription
identity_idUUIDCaller identityRequired for organization-wide callers; scoped callers use their own identity.
channelsstring[]AllRepeat or comma-separate email, sms, imessage, and calls.
afterdatetimeNoneInclude items at or after this time.
beforedatetimeNoneInclude items before this time.
limit_per_channelinteger25Default result limit for each selected channel.
email_limit, sms_limit, imessage_limit, calls_limitintegerNoneOverride the limit for one channel.
cursorstringNoneCursor returned by the previous response.
orderstringdescasc or desc.
contentstringpreviewmetadata, preview, or full.
transcriptsstringnonenone, abridged, or full for calls.
include_failedbooleanfalseInclude failed correspondence.

List memories GET

GET /contacts/{contact_id}/facts

Returns active memories in most-recently-updated order. Each fact contains id, contact_id, content, confidence, origin, timestamps, and a citations array.

Get a memory GET

GET /contacts/{contact_id}/facts/{fact_id}

Returns one active memory with its citations under the same information-flow boundary described above.

Delete a memory DELETE

DELETE /contacts/{contact_id}/facts/{fact_id}

Deletes one active memory. This requires an admin-scoped API key or an authenticated Console user.

The response identifies the deleted fact and returns the contact's remaining memory state:

JSONJSON

latest_memory is null when no active memories remain.

Resolve a citation GET

GET /contacts/{contact_id}/facts/{fact_id}/citations/{citation_id}

Returns the source ID and locator after rechecking that the caller can still access the underlying correspondence. Returns 404 when the citation or its source is unavailable.

Merge duplicate contacts POST

POST /contacts/{contact_id}/merge

Merges the contacts in losing_contact_ids into the contact named in the path. The survivor retains the combined identifiers, correspondence, and memories; losing contacts become merged records. This operation requires an admin-scoped API key or authenticated Console user.

JSONJSON

field_sources is optional. It selects which merged contact supplies each scalar profile field. Each value must be the survivor ID or one of the losing_contact_ids. Allowed keys are preferred_name, name_prefix, given_name, middle_name, family_name, name_suffix, company_name, job_title, birthday, and notes.

A contact can have at most 25 active memories. If the combined contacts would exceed that cap, the entire merge is rejected without changing any contact. Delete unwanted facts from the contacts being merged, then retry.

The response is the surviving contact and includes its current memory_count and latest_memory.

Inkbox

Copyright © 2026 Inkbox

This site is protected by reCAPTCHA.

Google Privacy Policy and Terms of Service apply.

Website

Inkbox

Copyright © 2026 Inkbox

This site is protected by reCAPTCHA.

Google Privacy Policy and Terms of Service apply.

Website

Y CombinatorBacked by Y Combinator
Contact Memory and Correspondence