> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.agentphone.ai/documentation/reference/messaging-rate-limits/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.agentphone.ai/_mcp/server. # Messaging Rate Limits > Daily message limits and throughput rates for SMS (10DLC) and iMessage ## 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. > **Note** > > 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](#delivery-and-reliability). ## Daily message limits T-Mobile publishes per-day segment caps based on campaign type and trust score. Since T-Mobile typically represents about one-third of US mobile traffic, you can estimate your **total daily capacity** by tripling the T-Mobile figure. | Campaign type | T-Mobile daily limit | Estimated total daily limit | | -------------------------- | -------------------- | --------------------------- | | Sole proprietor | 1,000 segments | \~3,000 segments | | Low volume | 2,000 segments | \~6,000 segments | | High volume -low trust | 2,000 segments | \~6,000 segments | | High volume -standard | 10,000 segments | \~30,000 segments | | High volume -high trust | 40,000 segments | \~120,000 segments | | High volume -highest trust | 200,000 segments | \~600,000 segments | > **Tip** > > A **segment** is a 160-character chunk of a standard SMS (or 70 characters for Unicode). A single message may count as multiple segments if it exceeds these limits. ### High volume vetting scores High volume campaigns go through a third-party vetting process that assigns a trust score. Your score determines which throughput tier you land in. Companies without an established reputation may initially receive the same 2,000 segment T-Mobile cap as low volume campaigns, even on a high volume campaign. The limit increases as your trust score improves. ## Throughput (messages per second) In addition to daily caps, carriers enforce per-second throughput limits: | Campaign type | Throughput | | -------------------------- | ---------- | | Sole proprietor | 2.25 MPS | | Low volume | 3.75 MPS | | High volume -standard | 12 MPS | | High volume -high trust | 120 MPS | | High volume -highest trust | 225 MPS | ## Exceeding your limits When your sending **rate** exceeds per-second throughput, accepted messages are queued and sent as capacity frees up; you don't need retry logic for throughput pacing. **Daily volume** is different: once a carrier's daily cap is reached, further messages may be rejected or later marked undelivered rather than held for the next day. Track delivery status and resend after the daily reset when appropriate. A request that is **rejected** with an error response is never queued. Messaging-limit `429`s (mostly on iMessage lines, see below) and provider errors must be handled by your application. See [Error Handling](/documentation/reference/error-handling) for which `429`s are worth retrying. For time-sensitive campaigns, plan your send volume against the limits above to ensure messages arrive within your expected window. ## Increasing your limits Your limits are tied to your 10DLC campaign registration and vetting score. To improve your throughput: 1. **[Register a high volume campaign](https://agentphone.ai/register)** if you're currently on low volume or sole proprietor. 2. **[Schedule a call](https://calendar.app.google/kJQSTCyNYTphvCGm7)** if you can't figure out the registration and vetting process and we'll help you through it. --- ## 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") > **Warning** > > 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. > **Tip** > > For the most reliable delivery, send messages to real mobile numbers rather than other VoIP or virtual numbers. --- ## iMessage iMessage limits depend on whether a contact messaged you first and how recently they interacted with your number. **Outbound iMessage lines can message up to 50 new contacts per day, per line.** | Scenario | Counts against | Limit | | ------------------------------------------------------------------------------- | ---------------------- | ----------------------------------- | | A contact texts you (inbound) | Inbound limit | 1,000 contacts/day/line | | You reply within 24 hours of their last message | No limit | Unlimited messages | | You message a contact who has never messaged you (outbound iMessage lines only) | Outbound-first limit | 50 contacts/day/line | | You re-engage a contact who messaged you before, but more than 24 hours ago | No daily contact limit | Capped per conversation (see below) | ### How it works * **Inbound conversations:** When a contact messages your number, that counts toward the 1,000 contacts/day/line inbound cap. Once a conversation is open, you can send unlimited replies as long as you respond within 24 hours of their most recent message. * **Limits are per-line:** Each phone number has its own independent limits. * **Outbound-first (cold outreach):** On outbound iMessage lines, if a contact has never messaged your number before and you message them first, that counts toward a separate outbound-first limit. This is capped at **50 new contacts/day/line** by default. Contact the team to increase this limit. Once the contact replies, the conversation is open and you can reply freely within 24 hours of their last message. * **Re-engaging past conversations:** Messaging a contact who has written to you before does **not** count toward the 50 contacts/day outbound-first limit, no matter how long ago they last replied. That limit only applies to contacts who have never messaged the line. Reminders, notifications and follow-ups to your existing contacts are not capped on a per-day contact basis. Unlike the carrier SMS limits above, hitting an iMessage daily cap returns an error instead of queueing: HTTP `429` with the code `OUTBOUND_LIMIT_REACHED` or `NEW_CONVERSATION_LIMIT_REACHED`. The caps reset daily, and retrying sooner won't clear them. ### Consecutive messages without a reply Separately from the daily limits, each conversation caps how many messages you can send in a row while the contact stays silent. Once you hit it, further sends to that thread fail with HTTP `429` and the code `CONVERSATION_STREAK_LIMIT` until the contact writes back. This is scoped to the single conversation, so your other threads are unaffected, and retrying will not clear it. Only an inbound reply resets the count. > **Tip** > > This mainly matters for automated follow-up sequences. If your agent sends reminders to a contact who never responds, space them out and stop after a few attempts rather than retrying on a 429. > **Tip** > > If you need higher inbound or outbound-first capacity, we recommend **load balancing across multiple numbers** on your end. Each additional line gives you another full set of daily limits. > Daily message limits and throughput rates for SMS (10DLC) and iMessage