Limits & Errors
SMS and MMS message limits, sender ID rules, what you cannot send, and the errors you will meet, each with its fix.
Limits
| Limit | Value |
|---|---|
| Text | At most 10 segments (1,530 GSM-7 or 670 unicode characters) |
| Segment size | GSM-7: 160 characters, or 153 per part of a multi-part message. UCS-2 (emoji, non-Latin scripts): 70, or 67 per part |
| MMS media | Up to 10 public mediaUrls per message; text is optional |
| Broadcast attachments | Up to 10 public http(s) URLs with no redirects; JPEG, PNG, GIF, WEBP, MP4 or 3GPP under 1 MB |
| Scheduling | sendAt as ISO 8601 with offset, in the future |
| Opt-out list | limit defaults to 500, at most 5,000, most recent first, no cursor |
| Destinations | Only the destinations in the SMS price list; others are blocked at send time |
| Sender ID name | 3 to 11 characters: letters, digits, spaces, at least one letter |
| Sender IDs per team | 1,000 active |
| Sender ID daily budget | 500 messages a day by default (level 1), then 2,000, 10,000 or 25,000 on request; shared across names, reset at midnight UTC |
| Sole-proprietor OTP | A new code at most once a minute |
| Opt-in proof upload | PNG, JPG, WebP, GIF or PDF, up to 4 MB |
| Hosted registration link | Single use, valid 7 days |
What you cannot do
SMS on Zernio does not allow:
- Delivering from a US number before its carrier registration is
approved - Texting from a number that is not SMS-capable (
enabled: falsewithsmsCapable: false) - Enabling SMS on WhatsApp numbers you brought through embedded signup
- Messaging a recipient who replied STOP (only they can re-subscribe, by replying START)
- Receiving replies on a sender ID
- Sending MMS from a sender ID
- Sending from a sender ID to the US, Canada or Puerto Rico
- Claiming a sender ID name for your team alone (names are not exclusive)
- Appealing a brand-level rejection (correct the brand details and re-verify instead)
- Appealing a toll-free verification (
/appealcovers 10DLC campaigns only) - Quoting an SMS price before sending (messages are carrier-rated after they are sent)
Common errors
| Status | Code | Cause | Fix |
|---|---|---|---|
400 | missing_required_field | A registration is missing a required field, named in param | Add the field and resubmit; run POST /v1/sms/registrations/preflight to catch every gap |
422 | The carrier registry rejected a registration field; param names it when known | Correct that field and resubmit | |
404 | No active SMS-enabled number matches from: you do not own it, or its US registration is not approved | Send from a number you own; wait for approved | |
409 | The recipient replied STOP | Drop them from your list; they come back only by replying START | |
409 | The same Idempotency-Key is still in flight | Wait for the first request to finish | |
422 | The Idempotency-Key was reused with a different body | Use a new key for a new message | |
400 | A broadcast attachment is on a private host, redirects, is over 1 MB, or there are more than 10 | Fix the attachment list | |
403 | alpha_destination_not_supported | A sender ID send to the US, Canada or Puerto Rico | Send from a phone number |
403 | mms_not_supported | mediaUrls on a sender ID send | Remove the media, or send from a number |
429 | alpha_daily_limit_reached | Today's sender ID budget is spent | Wait for the midnight UTC reset, or request a higher level |
403 | sender_id_limit_reached | The team holds 1,000 active sender IDs | Contact support to raise it |
422 | The sender ID name impersonates a well-known brand or institution | Use your own brand name | |
402 | No payment method is on file | Add a payment method |
A message that fails after it was accepted fires message.failed with the carrier's error code.
Every error uses the envelope in error handling.
Related
- Carrier registration: 10DLC, toll-free, reuse and appeals.
- Sending: SMS, MMS, opt-outs and lookups.
- Sender IDs: branded one-way sends.
- SMS rates: segment sizes and per-segment prices.
Was this page helpful?