Prerequisites
- A Telnyx account with an API key
- A US/Canada long code, toll-free number, or short code with MMS enabled, assigned to a messaging profile
- For receiving: a publicly reachable webhook endpoint that accepts
multipart/relatedandtext/xmlPOST requests
Send MMS via MM7
Submit a standard MM7SubmitReq to:
multipart/related body: the first part is the MM7 SOAP envelope (SubmitReq), remaining parts are the media attachments.
The sender number must be owned by the account authenticating with the Bearer token. Each SubmitReq carries a TransactionID — Telnyx returns the same value in the response header so requests can be correlated.
The outbound MMS submitted via MM7 flows through the same routing, anti-spam, and rate-limiting pipeline as MMS sent through the Messages API.
SubmitReq supports To and Cc recipients, ShortCode and Number address forms, and a Subject element. Media content is re-hosted on Telnyx storage.Request
<ShortCode> in place of <Number> for short-code senders and recipients.
Response
On acceptance, Telnyx returns an MM7SubmitRsp with status 1000 (Success) and the Telnyx MessageID:
Status codes
The gateway always returns an MM7 response. Check both the HTTP status code and theContent-Type header: requests stopped at the edge router (authentication, routing) return a JSON error body instead of an MM7 response.
Limits
Receive MMS via MM7
By default, inbound MMS and delivery reports arrive as regular Telnyx JSON webhooks. To receive them as MM7 payloads instead, configuremm7_metadata on the messaging profile that owns the destination numbers:
If you have no failover webhook, omit
mm7_failover_webhook_url from the request body. Passing an explicit null for either field is rejected with error 10026 (invalid parameter type).mm7_metadata configured, the profile’s MM7 webhook receives POST requests with two payload types:
DeliverReq— inbound MMS from a handset. The SOAP envelope names sender, recipients, and subject; themultipart/relatedbody carries the message content parts, withstartpointing at the SMIL part.DeliveryReportReq— MM7 delivery reports for messages submitted via MM7. The envelope carries the originalMessageID,MMStatus,StatusText, sender, and recipient.
mm7_failover_webhook_url when configured.
Troubleshooting
Unknown 'from' number (2002)
Unknown 'from' number (2002)
The
SenderAddress in the SubmitReq does not match a number owned by the authenticating account, the number is not assigned to a messaging profile, or an explicit null was sent for an mm7_metadata field. Verify number ownership and profile assignment.Response is JSON, not MM7 XML
Response is JSON, not MM7 XML
The request was stopped at the edge router before reaching the MM7 gateway — usually authentication or a malformed
Content-Type. Confirm the Bearer token and that Content-Type is multipart/related with a boundary (and start pointing at the SOAP part). Check the HTTP status code alongside the body.Body too large (2560)
Body too large (2560)
The total request body — SOAP envelope plus all media parts, after any base64 expansion — must be under 2 MB. Split large media across multiple submissions or downscale media.
Not receiving MM7 webhooks
Not receiving MM7 webhooks
Confirm
mm7_metadata is set on the messaging profile that owns the destination number for inbound, or the profile used at submit time for delivery reports. Without mm7_metadata, all events arrive as standard JSON webhooks. Also confirm the endpoint accepts multipart/related and text/xml POSTs and allowlists Telnyx IPs.Next steps
Send & Receive MMS
Send MMS via the JSON Messages API with media attachments.
Messaging Profiles
Configure profiles, webhooks, and number pools.
Receiving Webhooks
Standard JSON webhook setup and signature verification.
MMS Media & Transcoding
Supported media formats and carrier size limits.