Destination type

Twilio MMS Destination

Use Twilio MMS destinations when routed events should become text messages with images or other media through Twilio Programmable Messaging.

TWILIO_MMSTwilio Messages API for MMSPOSTCommunication
Twilio MMS destination delivery flowFastHook routes accepted events through a connection to a Twilio MMS destination and stores delivery attempt evidence.AcceptedRequestsource verifiedConnectionRoute branchfilters and transformsretry policyTWILIO_MMSTwilio MMSTwilio Messages API for MMSPOSTAttemptEvidencestatus + bodyDestination config owns target, auth, method, rate limit, disabled state, and delivery attempt evidence.
For Twilio MMS destinations, FastHook renders the MMS body and media URL templates, sends through Twilio's Messages API, and stores the Twilio response as delivery attempt evidence.

When to use this destination type

Choose TWILIO_MMS when the receiver target is Twilio Messages API for MMS. Destinations are outbound delivery targets: they do not decide whether a source request should be accepted, and they do not own connection filters or transformations. They own where the final delivery goes and how FastHook should authenticate, pace, disable, and inspect that delivery.

A destination can be reused by multiple connections when several source branches should feed the same receiver. Reuse keeps receiver capacity, credentials, and attempt evidence attached to one destination id.

FastHook dashboard fields

In the dashboard, create a destination, set Destination Type to TWILIO_MMS, then fill the fields below.

From sender

MMS-capable Twilio number. Leave blank only when using a Messaging Service SID.

To recipient

Recipient phone number in +E.164 format, or a template value that renders to +E.164.

Message body

Plain MMS body template with FastHook tokens such as {{event_id}}, {{payload.message}}, and {{message}}.

Media URLs

One public media URL per line. Twilio must be able to fetch each URL. Payload URL fields can use {{payload.media_url}} or {{media_url}}.

Messaging Service SID

Optional MG... service SID for sender pools, compliance configuration, and Twilio-managed sender selection.

Account SID

Twilio AC... account identifier from Twilio Console or API keys & tokens.

Auth Token

Twilio account auth token from API keys & tokens. Treat it as a secret and rotate it if exposed.

Max delivery rate

Built-in one message per second pacing.

API config fields

The REST API stores destination-specific behavior under config. Use PATCH for focused edits and PUT only when your request contains the full config you want to keep.

config.from

MMS sender in E.164 format. Required unless config.messaging_service_sid is set.

config.to

Required MMS recipient in +E.164 format. Supports FastHook template tokens that render to a phone number.

config.body_template

Required MMS body template. FastHook renders tokens such as {{event_id}}, {{payload.message}}, and {{message}} before sending.

config.media_urls

Required array of one to ten public HTTP or HTTPS media URLs. Values can include FastHook template tokens such as {{payload.media_url}} or {{media_url}}.

config.messaging_service_sid

Optional Twilio Messaging Service SID starting with MG. Use this when Twilio should choose from a sender pool.

config.auth_type

TWILIO_AUTH_TOKEN.

config.auth.account_sid

Twilio Account SID used in the Messages API URL and Basic Auth username.

config.auth.auth_token

Twilio Auth Token used as the Basic Auth password.

config.rate_limit

Built-in delivery pacing for MMS messages.

config.rate_limit_period

Rate-limit period. Twilio MMS destinations use second.

Twilio MMS destination config
{
  "name": "ops-mms-alerts",
  "type": "TWILIO_MMS",
  "config": {
    "from": "+16824246644",
    "to": "+37120000000",
    "body_template": "FastHook MMS event {{event_id}}\n{{payload}}",
    "media_urls": [
      "https://demo.twilio.com/owl.png"
    ],
    "messaging_service_sid": null,
    "auth_type": "TWILIO_AUTH_TOKEN",
    "auth": {
      "account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "auth_token": "twilio-auth-token"
    },
    "rate_limit": 1,
    "rate_limit_period": "second"
  }
}
Create Twilio MMS destination with cURL
curl -X POST "https://api.fasthook.io/v1/destinations" \
  -H "Authorization: Bearer $FASTHOOK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "ops-mms-alerts",
  "type": "TWILIO_MMS",
  "config": {
    "from": "+16824246644",
    "to": "+37120000000",
    "body_template": "FastHook MMS event {{event_id}}\n{{payload}}",
    "media_urls": [
      "https://demo.twilio.com/owl.png"
    ],
    "messaging_service_sid": null,
    "auth_type": "TWILIO_AUTH_TOKEN",
    "auth": {
      "account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "auth_token": "twilio-auth-token"
    },
    "rate_limit": 1,
    "rate_limit_period": "second"
  }
}'

Authentication

Destination authentication is outbound. It helps the receiver trust or accept FastHook delivery, and it is separate from source authentication that verifies the original webhook producer.

  • Twilio Account SID and Auth Token
  • MMS-capable Twilio sender number or Messaging Service
  • Trial verified recipient and geo permissions for testing

HTTP methods and rate limit

This destination type uses the methods below for delivery attempts. Rate limits apply at the destination boundary, so every connection that targets the same destination shares that capacity.

POST

Rate limit: Locked to 1 request per second.

Delivery behavior

  • FastHook renders the MMS body and media URL templates per delivery, then sends through Twilio's Messages API.
  • MMS recipients use +E.164 format, for example +37126430246. Rendered template values must become a valid phone number.
  • Each media URL must be public HTTP or HTTPS. Twilio fetches the media from that URL after the request is accepted.
  • Trial accounts can usually send only to verified recipient numbers, and country, carrier, sender, and Twilio account rules still apply.
  • The From sender or Messaging Service must be able to send MMS. Some international routes support SMS but not MMS.
  • Twilio MMS destinations are locked to 1 request per second to avoid message bursts.

Setup checklist

  1. Open Twilio Console and copy the Account SID and Auth Token from API keys & tokens.
  2. Use a Twilio phone number that can send MMS, or create a Messaging Service and add one or more MMS-capable senders.
  3. Prepare one to ten public HTTP or HTTPS media URLs that Twilio can fetch.
  4. If the account is in trial mode, verify every recipient number in Twilio before sending.
  5. Confirm Messaging Geo Permissions and route support allow MMS to the destination country and carrier.
  6. Create a FastHook destination and choose TWILIO_MMS as the destination type.
  7. Set From sender to the Twilio MMS sender, or set Messaging Service SID and leave From sender blank.
  8. Set To recipient, Message body, Media URLs, Twilio Account SID, and Auth Token, then connect only MMS-worthy events through filters.

Troubleshooting

Attempts fail with Twilio error 21608.

Trial accounts can send only to verified recipient numbers. Verify the To number in Twilio, upgrade the account, or use a production-approved flow.

Attempts fail with Twilio error 21606.

The From sender cannot send to that To number. Use an MMS-capable Twilio number or Messaging Service configured for MMS.

Attempts fail with Twilio error 21408.

Enable Messaging Geo Permissions for the destination country in Twilio Console, then retry.

Twilio returns 201 but the recipient does not see the MMS.

Open Twilio message logs for the message SID and check the final status and error_code. FastHook records the Twilio response body on the attempt.

Media is missing or the message fails after acceptance.

Confirm every media URL is public, fetchable by Twilio, uses HTTP or HTTPS, and points to a supported content type.

Attempts fail with authentication errors.

Check config.auth.account_sid and config.auth.auth_token, then rotate the Auth Token if it was exposed or revoked.

Related docs