Format
The payload is the parsed content of the message for the recipient of the delivery, with two additional fields:- The message fields are at the top level, not below
message. - The envelope sender is called
sender(version 1:envelope_from), theMessage-IDheadermessage-id(version 1:message_id). - Size and checksum of the original are in
download.size_bytesanddownload.sha256.
X-Talario-Signature header.
Large messages
If the payload would exceed 1,000,000 bytes, Talario delivers it withcontent_omitted: true:
body-plainandbody-htmlare"", andmessage-headersis[].- All other fields, the attachments with their links and the original download are included.
GET /receiving/messages/{id}/content and the recipient of the delivery, or parse the original message. Omitted fields are never truncated: they are either complete or empty.
The limit keeps payloads below common default request size limits, such as client_max_body_size 1m in nginx. A payload can still exceed it, for example for a message with very many attachments. Allow request bodies of a few megabytes at your endpoint.
Messages without parsed content
If the message could not be parsed, the payload hasparse_status: failed and a code in parse_warnings. Body fields, headers and attachments are empty; process the message from the original in download.
If the parsed content could not be stored within 6 hours of receipt, Talario still delivers the webhook with parse_status: failed and the warning content_unavailable. This warning occurs only in webhooks; the original message is available as usual.
Accepting version 2 webhooks
Store the verified payload durably before you answer2xx; downloading attachments can happen afterwards in a job. Links expire after at most an hour; request new ones through the API. See Process webhooks reliably.
Without an API key, your application must download the attachments and the original before the links expire, and when content_omitted is true only the original message is available to it.