Skip to navigation

Messaging Rate Limits

SMS (10DLC)

SMS rate limits are determined by your 10DLC campaign type and vetting score. These limits are set by carriers, not by AgentPhone, and apply to all A2P (application-to-person) messaging in the US.

Carrier rate limits don’t usually surface as API errors. Messages accepted above your per-second throughput are queued and delivered as capacity allows. Daily caps behave differently: messages sent after the cap is reached may be rejected by the carrier or later marked undelivered. Monitor delivery status and resend after the daily reset when appropriate. See Delivery and reliability.

Daily message limits

SMS limits depend on the registered brand, campaign, carrier, and vetting result. A carrier-specific allowance is not a guarantee of total capacity across all US destinations. Do not estimate an account’s daily capacity by multiplying one carrier’s allowance.

Check your approved campaign and contact support for its assigned throughput and daily limits. A high-volume registration requests vetting; it does not guarantee the highest tier.

SMS is counted in segments. GSM-7 text fits 160 septets in one segment, or 153 per part when split. Unicode text fits 70 UTF-16 code units in one segment, or 67 per part when split; emoji can consume two units. See billing.

Throughput (messages per second)

Carriers can queue accepted traffic when it exceeds throughput. Daily caps can instead cause rejection or a later delivery failure. Monitor message history; an accepted send does not guarantee delivery, and retrying accepted traffic can create duplicates.

An API error is not a queued send. Handle endpoint throttles separately from carrier delivery failures using Error handling.

Increasing your limits

SMS campaign capacity and iMessage line limits are separate. For SMS, review the registration types and ask support about your assigned capacity before increasing traffic. For iMessage, the standard outbound-first ceiling remains 50 new contacts per day per outbound line.

First message requirements

When sending the first outbound SMS to a contact, your message must include:

  1. Brand name — identify who is sending the message
  2. Opt-in confirmation — acknowledge that the recipient agreed to receive messages
  3. Opt-out instructions — tell them how to stop (e.g. “Reply STOP to unsubscribe”)

Messages missing these elements may be silently filtered by carriers. The API will not return an error — the message will appear sent, but it may never reach the recipient’s device.

Example first message:

Hi! This is [Your Brand]. You're receiving this because you signed up
for updates. Reply STOP at any time to unsubscribe.

After the first compliant message, subsequent messages in the same conversation do not need to repeat the opt-in or opt-out language.

Delivery and reliability

All SMS delivery is done on a best-effort basis. A successful API response means the message was accepted by AgentPhone and handed off to the downstream carrier, but it does not guarantee delivery to the recipient’s device.

What “delivered” means: Delivery receipts indicate the message was received by the recipient’s carrier network. Once the carrier has the message, final delivery to the device depends on factors outside of AgentPhone’s control.

VoIP-to-VoIP filtering: Messages sent to other VoIP numbers (e.g. numbers provided by other VoIP providers) are frequently filtered by the receiving carrier. This is common carrier behavior and there is no error returned when it happens.

For the most reliable delivery, send messages to real mobile numbers rather than other VoIP or virtual numbers.


iMessage

Outbound iMessage lines have a standard ceiling of 50 new contacts per day per line. Inbound lines cannot initiate a conversation with a new recipient.

SituationWhat to expect
A contact initiates a conversationUp to 1,000 inbound contacts per day per line.
An outbound line starts a conversationUp to 50 new contacts per day per line.
A new contact has not repliedUp to three messages before a written reply; links and media can be restricted.
Repeated messages receive no replyA conversation streak limit can require a reply before sending resumes.
A conversation has been inactive for over 14 daysOne re-engagement message; further messages require a reply.
Sending triggers a safety pauseNew conversations can be paused separately from the daily quota. Follow the returned error and contact support if needed.

Replies to existing conversations do not consume the outbound-first daily quota. That does not exempt a conversation from reply-required, inactivity, content, or account safety controls.

Daily caps

OUTBOUND_LIMIT_REACHED or NEW_CONVERSATION_LIMIT_REACHED returns HTTP 429. Wait for the daily window to reset; repeatedly retrying will not clear it. The number response can include dailyNewContacts.used and dailyNewContacts.limit. A missing or null limit is not a promise of unlimited capacity.

Consecutive messages without a reply

CONVERSATION_AWAITING_REPLY, CONVERSATION_STREAK_LIMIT, and CONVERSATION_INACTIVE require a recipient reply. Pause automated follow-ups for that conversation. Changing lines does not resolve the reason for the restriction.

Safety pauses and restricted content

NEW_CONVERSATIONS_PAUSED is a safety control separate from the 50/day ceiling. Existing replies may continue while new conversations are paused. Review recipient engagement and message quality; do not keep retrying or switch numbers to bypass the pause.

CONVERSATION_CONTENT_RESTRICTED means a new conversation cannot yet receive links or media. Start with plain text and wait for a written reply. REPLY_ONLY permits replies to contact-initiated conversations; ACCOUNT_REVIEW requires support review. See Error handling for HTTP codes and next steps.

Additional lines have their own daily allowances, but do not bypass conversation or account safety restrictions. Ramp new traffic gradually and message recipients who expect to hear from you.