Attachment fields
For an inline image, set
disposition to inline, provide a contentId, and reference the same value from HTML with a cid: URL.
A content ID alone does not make a regular attachment render inline.
Size accounting
Signal applies its attachment ceiling to decoded bytes, not the larger base64 text length. The exact configured ceiling can vary by deployment or entitlement; use the validation response and current product contract instead of assuming a copied number. The complete MIME message can contain at most 500 parts, including HTML and plain-text body parts as well as attachments. A request with many small files can therefore fail the part count even when decoded bytes remain below the size ceiling.Common validation failures
- The base64 string is truncated or contains a data-URL prefix.
- The filename includes
/,\, or control characters. contentTypeis blank.- The decoded total exceeds the configured limit.
- Body parts plus attachments exceed 500.
- HTML references a
cidthat does not match any attachmentcontentId.
Diagnostic sequence
- Decode each value locally and compare byte counts with the source files.
- Send the smallest failing attachment by itself.
- Remove any
data:...;base64,prefix; send only the base64 payload. - Confirm filename, media type, disposition, and content ID.
- Inspect the
400problem response for the failing field or configured boundary. - Use test mode to confirm API admission, then use one controlled real message to verify mailbox rendering.