SMS and MMS at a Glance (US and Canada)
If reading long streams of text isn't your thing, this is a great quick reference for you.
Inbound / Outbound SMS Support | Yes |
Inbound / Outbound MMS Support | Yes |
Number Porting | Yes |
Valid Sending and Receiving Numbers | Long Code Toll-Free |
Accepted Number Format | E.164, i.e., 1NPANXXXXXX with optional + or international call prefix |
Message Concatenation Support | Yes |
Message Length (SMS) | Dependent on encoding type: 160 characters for ASCII 70 characters for UCS-2 |
Message Size Limit (MMS) | 750 kB (including text) |
Supported Content Types (MMS) | Refer to MMS API Overview. |
Sending Rate Limit (SMS & MMS) | 5 TPS (SMS) 1 TPS (MMS) |
Receiving Rate Limit (SMS & MMS) | No official limit but refer to Inbound SMS Limitations. |
Delivery Receipt Support | Yes |
Sending and Receiving Limitations
Flowroute's REST API for Messaging currently has two versions: v2 which allows you to send and receive SMS messages, and v2.1 which allows you to send and receive MMS messages as well. By default, your Flowroute account has a specific rate limit that you can distribute in multiple ways to handle queueing of outbound SMS or MMS messages. Note that the sending rate is applied to your user account tech prefix or access key and each endpoint that you hit. For example, user 290XXXXX can concurrently send up to 5 requests per second to /v2/messages and /v2.1/messages/{callback_type}.
On the inbound side, while we don't have a rate limit for receiving messages, we reserve the right to block a number that is sending a large volume of inbound messages to any Flowroute phone numbers on your account.Inbound Messages
- SMS
When an SMS is received, Flowroute will make an HTTP request to the SMS Callback URL that you have configured in your Manage account. Please make sure that your server is capable of handling a large amount of concurrent inbound traffic. Note that we may still block a number that is sending what we deem to be an unreasonable number of messages.
- MMS
For inbound MMS, the same general rules apply. We will make an HTTP request to the MMS Callback URL that you have configured in your Manage account.
Storing Inbound Messages
We have put together a Serverless service that will let you receive an inbound SMS and store the message details in a DynamoDB table. You should be able to adapt the service for MMS. Please see Receive and Store SMS using the Serverless Framework for a step-by-step guide.
We have other tutorials that can help you get up and running with our inbound messaging services:
Outbound Messages
- SMS
- MMS
By default, your Flowroute account (identified by your tech prefix) has a sending rate of 5 TPS (transactions per second). This rate can be distributed across multiple sources, but is metered at the account level. Additionally, you can configure a system that your servers can query to see the maximum throughput that they can use. When you exceed your outbound sending rate, the Flowroute Messaging API will return a 429 HTTP response (Too Many Requests) and will not save or cache any data for later retries. Excessive network delay between your server and the Flowroute API may have some impact on your ability to achieve full sending rate.
For outbound MMS, a sending rate of 1 TPS applies. In addition, the total size limit is 750 kB per message. Please review the MMS API reference page for supported authentication and content types.
API Upgrade
If you are currently using Messaging v2 and want to take advantage of our MMS offering, see Upgrade to Flowroute Messaging v2.1 to get started.
Formatting Phone Numbers
For sending SMS and MMS messages, the "To" and "From" phone numbers must be in 11-digit US and Canada format; e.g., 12065551234. Phone numbers without the trunk prefix "1" will be rejected. For an explanation on the numbering plan, please see NANPA Modern Plan. Flowroute has various resources with examples of how to send your SMS or MMS messages using different languages and tools:
Processing Long / Concatenated SMS
A message segment can contain up to 70 (UCS-2) or 160 (ASCII) characters depending on the type of encoding used. The cost of the message is then determined by the number of characters in the message body divided by the number of allowed characters per segment according to encoding type.
Outbound SMS
For outbound messages, Flowroute does not limit the length of the message but may truncate it into appropriately sized segments and add concatenation headers if the receiving carrier has a message length limitation. If the carrier does not support concatenation headers, the message will be received in multiple parts.
Message Recipient | Message Length Limit | Truncated? | Concatenation Header Support? | SMS Sent |
---|---|---|---|---|
Carrier A | None | No | N/A | 1 |
Carrier B | Yes | Yes | Yes | 1 |
Carrier C | Yes | Yes | No | Multiple |
Inbound SMS
For inbound messages, Flowroute will reassemble the message and deliver it to your endpoint as one continuous message if concatenation headers are received. You will still be charged per message segment; however the message will appear both at your callback URL and in the Message Detail Record (MDR) as one long message. If concatenation headers are not received, each message segment will be delivered separately along with a unique MDR for each received segment.
Message Sender | Concatenation Header? | SMS Received (on FR number and callback) |
---|---|---|
Carrier A | Yes | 1 |
Carrier B | No | Multiple |
For more details around message length, cost, and concatenation, please see Message Length & Concatenation.
Integrating Delivery Receipts for SMS
The transit path of an outbound SMS typically involves several stops before making its way to its recipient. While some carriers have minimal filtering mechanisms, other carriers use various methods including adaptive and Bayesian software systems to protect their users and may end up blocking your Flowroute number for any of the following reasons:
- Too many messages within a time period
- Mass marketing bulk messaging
- Content that makes it a high match for spam
Carrier Filtering Tip
To avoid carrier filtering of messages, we highly recommend following the guidelines mentioned in Messaging Principles and Basic Practices published by CTIA in Jan. 2017. To opt out of certain messages, please see How to Stop Unwanted Messages on your Flowroute Number.
For your peace of mind, Flowroute offers SMS delivery receipts on mobile phones as a way for you to track the status of each SMS that you send. For more details on how your messages are being transmitted from Flowroute all the way to the receiver's phone and the different delivery types, please see Delivery Receipts.
Because of the way messages travel along a network, your delivery notifications might arrive out of order. Flowroute will always attempt a best-effort delivery of your DLRs (delivery receipts). To learn more about the different delivery status codes, please see Delivery Receipt Response Codes.
Allocating More Throughput for Outbound Messaging
Please contact sales@flowroute.com to enable a higher throughput on your account.
The information in this online resource should serve as your general guidelines for working with Flowroute's Messaging API. We highly encourage your feedback in helping this be an up-to-date and reliable source for working smoothly with our SMS and MMS APIs.