Emails

Get the conversation an email belongs to

Changed on

Returns the full conversation the given inbound email belongs to, as ordered, ready-to-prompt turns WITH bodies. It resolves the thread from the email and returns every message oldest-first, so an agent that received an email can pass messages straight to a chat model in one call instead of walking /threads/{id} plus /emails/{id} and /sent-emails/{id} per message.

Each message carries a direction (inbound | outbound) and a derived role: inbound -> user, outbound -> assistant (your own prior replies). The role mapping assumes the caller owns the outbound side, which is the agent-reply case this exists for. If the email has no thread yet (a brand-new message), the conversation is just that one message as a single user turn.

The message list is capped; check truncated to detect when older messages were omitted. Consecutive same-role turns are not merged here; that normalization is model-specific and left to the caller.

Pass since for an incremental read. since=start returns the full conversation plus a cursor. Sending that cursor back as since returns only the messages created or changed after it, oldest first, with the same per-message shape, and a new cursor. Without since the response carries no cursor and no per-message status.

To read an older part of a long conversation, such as the message a search result names, pass around with that message's id: the response is a window of messages around it with before_cursor and after_cursor to page older and newer. On these window reads {id} may be a sent email id as well as an inbound email id.

get/emails/{id}/conversation

Request

  • Base URL
    https://api.primitive.dev/v1
  • URL
    https://api.primitive.dev/v1/emails/{id}/conversation
  • Auth
    HTTP bearer

Query parameters

sincestring

Incremental read position. Either the literal start or a cursor returned by a previous read of this endpoint. Any other value returns 400 validation_error.

With start, the response holds every message the read without since would return, plus cursor. With a cursor, messages holds only the messages created or changed after it, oldest first. A change includes an inbound message becoming visible or its body being filled, withheld or discarded, and a delivery status change on an outbound message. thread_id, subject, message_count and truncated always describe the whole conversation, not the returned messages.

The cursor is an opaque string. Send it back verbatim and do not parse it or build one; its format can change. A message can be returned again by a later read (for example while older writes are still committing), so upsert messages by id. Deleted messages are not reported; a periodic since=start read (or a read without since) reconciles.

aroundstring uuid

Window read centred on one message: returns up to limit messages before it, the message itself, and up to limit after it, oldest first, so a client can open an older message (for example a search result) inside its conversation. The value is the id of an inbound email or a sent email in the same conversation as {id}. On a window read {id} may itself be a sent email id. Every message is scoped and withheld exactly as on the full read. A message that is not in this conversation, or that the credential cannot read, returns 404 not_found whether or not it exists elsewhere. A malformed around, before, after or limit, or more than one of since, around, before and after, returns 400 validation_error.

beforestring

Window read of up to limit messages strictly older than the position named by a before_cursor from an earlier window read. Pass it back unchanged; its format may change, so do not parse or construct it. Cannot be combined with since, around or after.

afterstring

Window read of up to limit messages strictly newer than the position named by an after_cursor from an earlier window read. Pass it back unchanged; its format may change, so do not parse or construct it. Cannot be combined with since, around or before.

limitinteger

Window reads only: messages on each side of around, or per before / after page. Ignored on any other read.

text'readable'

Set to readable to get each message's text sized for reading: every link target is replaced by the word [link], and the quoted history a reply repeats is removed, so each earlier message appears once. The response then carries quoted_chars_removed. Works with every read of this endpoint. For link targets, read an inbound message with GET /emails/{id}/readable?links=all, and an outbound one with GET /sent-emails/{id}, whose body has them (the readable read takes received email only). Any other value returns 400 validation_error.

Response

Conversation

successtrue required

Changes

    • breaking

      the response property //// became nullable for the status

    • warning

      added the new access_mode_unavailable enum value to the / response property for the response status

    • warning

      added the new access_mode_unavailable enum value to the / response property for the response status

    • warning

      added the new access_mode_unavailable enum value to the / response property for the response status

    • warning

      added the new builtin_role enum value to the / response property for the response status

    • warning

      added the new builtin_role enum value to the / response property for the response status

    • warning

      added the new builtin_role enum value to the / response property for the response status

    • warning

      added the new cleanup_incomplete enum value to the / response property for the response status

    • warning

      added the new cleanup_incomplete enum value to the / response property for the response status

    • warning

      added the new cleanup_incomplete enum value to the / response property for the response status

    • warning

      added the new cli_access_refused enum value to the / response property for the response status

    • warning

      added the new cli_access_refused enum value to the / response property for the response status

    • warning

      added the new cli_access_refused enum value to the / response property for the response status

    • warning

      added the new confirmation_required enum value to the / response property for the response status

    • warning

      added the new confirmation_required enum value to the / response property for the response status

    • warning

      added the new confirmation_required enum value to the / response property for the response status

    • warning

      added the new connection_owner_address_required enum value to the / response property for the response status

    • warning

      added the new connection_owner_address_required enum value to the / response property for the response status

    • warning

      added the new connection_owner_address_required enum value to the / response property for the response status

    • warning

      added the new email_rule_author_only enum value to the / response property for the response status

    • warning

      added the new email_rule_author_only enum value to the / response property for the response status

    • warning

      added the new email_rule_author_only enum value to the / response property for the response status

    • warning

      added the new email_rule_compiler_unavailable enum value to the / response property for the response status

    • warning

      added the new email_rule_compiler_unavailable enum value to the / response property for the response status

    • warning

      added the new email_rule_compiler_unavailable enum value to the / response property for the response status

    • warning

      added the new email_rule_conflict enum value to the / response property for the response status

    • warning

      added the new email_rule_conflict enum value to the / response property for the response status

    • warning

      added the new email_rule_conflict enum value to the / response property for the response status

    • warning

      added the new email_rule_not_compiled enum value to the / response property for the response status

    • warning

      added the new email_rule_not_compiled enum value to the / response property for the response status

    • warning

      added the new email_rule_not_compiled enum value to the / response property for the response status

    • warning

      added the new grant_forbidden enum value to the / response property for the response status

    • warning

      added the new grant_forbidden enum value to the / response property for the response status

    • warning

      added the new grant_forbidden enum value to the / response property for the response status

    • warning

      added the new keep_refused enum value to the / response property for the response status

    • warning

      added the new keep_refused enum value to the / response property for the response status

    • warning

      added the new keep_refused enum value to the / response property for the response status

    • warning

      added the new last_owner enum value to the / response property for the response status

    • warning

      added the new last_owner enum value to the / response property for the response status

    • warning

      added the new last_owner enum value to the / response property for the response status

    • warning

      added the new mailbox_not_claimable enum value to the / response property for the response status

    • warning

      added the new mailbox_not_claimable enum value to the / response property for the response status

    • warning

      added the new mailbox_not_claimable enum value to the / response property for the response status

    • warning

      added the new mailbox_shared_with_others enum value to the / response property for the response status

    • warning

      added the new mailbox_shared_with_others enum value to the / response property for the response status

    • warning

      added the new mailbox_shared_with_others enum value to the / response property for the response status

    • warning

      added the new member_address_reserved enum value to the / response property for the response status

    • warning

      added the new member_address_reserved enum value to the / response property for the response status

    • warning

      added the new member_address_reserved enum value to the / response property for the response status

    • warning

      added the new plan_required enum value to the / response property for the response status

    • warning

      added the new plan_required enum value to the / response property for the response status

    • warning

      added the new plan_required enum value to the / response property for the response status

    • warning

      added the new redeploy_failed enum value to the / response property for the response status

    • warning

      added the new redeploy_failed enum value to the / response property for the response status

    • warning

      added the new redeploy_failed enum value to the / response property for the response status

    • warning

      added the new removal_failed enum value to the / response property for the response status

    • warning

      added the new removal_failed enum value to the / response property for the response status

    • warning

      added the new removal_failed enum value to the / response property for the response status

    • warning

      added the new removal_timeout enum value to the / response property for the response status

    • warning

      added the new removal_timeout enum value to the / response property for the response status

    • warning

      added the new removal_timeout enum value to the / response property for the response status

    • warning

      added the new role_assigned enum value to the / response property for the response status

    • warning

      added the new role_assigned enum value to the / response property for the response status

    • warning

      added the new role_assigned enum value to the / response property for the response status

    • warning

      added the new role_assignment_unavailable enum value to the / response property for the response status

    • warning

      added the new role_assignment_unavailable enum value to the / response property for the response status

    • warning

      added the new role_assignment_unavailable enum value to the / response property for the response status

    • warning

      added the new role_key_taken enum value to the / response property for the response status

    • warning

      added the new role_key_taken enum value to the / response property for the response status

    • warning

      added the new role_key_taken enum value to the / response property for the response status

    • warning

      added the new rotation_in_progress enum value to the / response property for the response status

    • warning

      added the new rotation_in_progress enum value to the / response property for the response status

    • warning

      added the new rotation_in_progress enum value to the / response property for the response status

    • warning

      added the new rotation_incomplete enum value to the / response property for the response status

    • warning

      added the new rotation_incomplete enum value to the / response property for the response status

    • warning

      added the new rotation_incomplete enum value to the / response property for the response status

    • warning

      added the new step_up_invalid enum value to the / response property for the response status

    • warning

      added the new step_up_invalid enum value to the / response property for the response status

    • warning

      added the new step_up_invalid enum value to the / response property for the response status

    • warning

      added the new step_up_not_accepted enum value to the / response property for the response status

    • warning

      added the new step_up_not_accepted enum value to the / response property for the response status

    • warning

      added the new step_up_not_accepted enum value to the / response property for the response status

    • warning

      added the new step_up_refused enum value to the / response property for the response status

    • warning

      added the new step_up_refused enum value to the / response property for the response status

    • warning

      added the new step_up_refused enum value to the / response property for the response status

    • warning

      added the new step_up_required enum value to the / response property for the response status

    • warning

      added the new step_up_required enum value to the / response property for the response status

    • warning

      added the new step_up_required enum value to the / response property for the response status

    • warning

      added the new template_role enum value to the / response property for the response status

    • warning

      added the new template_role enum value to the / response property for the response status

    • warning

      added the new template_role enum value to the / response property for the response status

    • warning

      added the new upstream_unavailable enum value to the / response property for the response status

    • warning

      added the new upstream_unavailable enum value to the / response property for the response status

    • warning

      added the new upstream_unavailable enum value to the / response property for the response status

    This list may be incomplete.

    • warning

      added the new agent_changed enum value to the / response property for the response status

    • warning

      added the new agent_changed enum value to the / response property for the response status

    • warning

      added the new agent_changed enum value to the / response property for the response status

    • warning

      added the new agent_limit enum value to the / response property for the response status

    • warning

      added the new agent_limit enum value to the / response property for the response status

    • warning

      added the new agent_limit enum value to the / response property for the response status

    • warning

      added the new already_member enum value to the / response property for the response status

    • warning

      added the new already_member enum value to the / response property for the response status

    • warning

      added the new already_member enum value to the / response property for the response status

    • warning

      added the new directory_limit enum value to the / response property for the response status

    • warning

      added the new directory_limit enum value to the / response property for the response status

    • warning

      added the new directory_limit enum value to the / response property for the response status

    • warning

      added the new invitation_accepted enum value to the / response property for the response status

    • warning

      added the new invitation_accepted enum value to the / response property for the response status

    • warning

      added the new invitation_accepted enum value to the / response property for the response status

    • warning

      added the new invitation_changed enum value to the / response property for the response status

    • warning

      added the new invitation_changed enum value to the / response property for the response status

    • warning

      added the new invitation_changed enum value to the / response property for the response status

    • warning

      added the new invitation_pending enum value to the / response property for the response status

    • warning

      added the new invitation_pending enum value to the / response property for the response status

    • warning

      added the new invitation_pending enum value to the / response property for the response status

    • warning

      added the new invitation_sending enum value to the / response property for the response status

    • warning

      added the new invitation_sending enum value to the / response property for the response status

    • warning

      added the new invitation_sending enum value to the / response property for the response status

    • warning

      added the new invitation_unconfirmed enum value to the / response property for the response status

    • warning

      added the new invitation_unconfirmed enum value to the / response property for the response status

    • warning

      added the new invitation_unconfirmed enum value to the / response property for the response status

    • warning

      added the new invitations_pending enum value to the / response property for the response status

    • warning

      added the new invitations_pending enum value to the / response property for the response status

    • warning

      added the new invitations_pending enum value to the / response property for the response status

    • warning

      added the new member_changed enum value to the / response property for the response status

    • warning

      added the new member_changed enum value to the / response property for the response status

    • warning

      added the new member_changed enum value to the / response property for the response status

    • warning

      added the new project_changed enum value to the / response property for the response status

    • warning

      added the new project_changed enum value to the / response property for the response status

    • warning

      added the new project_changed enum value to the / response property for the response status

    • warning

      added the new recipient_changed enum value to the / response property for the response status

    • warning

      added the new recipient_changed enum value to the / response property for the response status

    • warning

      added the new recipient_changed enum value to the / response property for the response status