Limits & Errors
iMessage message and sending limits, what a sender cannot do, and the error codes you will meet, each with its fix.
Limits
| Limit | Value |
|---|---|
| Text | Under 10,000 characters; a longer text is refused with 400 |
| Attachments | 10 per message, public https URLs of at most 256 characters; large files take longer to reach the contact the first time |
| Voice notes | mp3, wav, m4a, caf or aac; dashboard recordings are transcoded |
| Edit window | 15 minutes after sending |
| Unsend window | 2 minutes after sending |
| New contacts | One new conversation every 15 minutes per sender; 2 per 24 hours on days 1 to 2 after the sender went live, 5 on days 3 to 4, 10 on days 5 to 7, 20 on days 8 to 14, 30 on days 15 to 21, 50 after that. See New Contacts |
| First message | An introduction, cold outreach included: no links, emails, phone numbers, prices or attachments. Until the contact replies, at most two follow-ups, 24 hours apart, each held to the same rule and counted in the new-contact limits |
| Quiet contacts | Messages to contacts who have not written in 24 hours are at least 2 minutes apart per sender |
| Contacts per day | 1,000 unique contacts per sender |
| Typing and read receipts | Only inside an active two-way conversation |
| Regions | US and UK numbers; instant activation depends on the provider's pool |
What you cannot do
iMessage on Zernio does not allow:
- Running iMessage on a number you already own with Zernio (Apple only registers numbers hosted by the provider)
- More than one sender per profile
- Ordering an email sender from the dashboard (order it through the API)
- Links, bare domains, emails, phone numbers, prices or attachments in a message to a contact who has not replied
- More than two follow-ups before the contact replies
- Starting conversations from a sender registered from your own provider account without the new-contacts add-on
- Editing a message after 15 minutes, or unsending it after 2 minutes
- Coordinates on an inbound shared location or sticker
- Starting conversations or group chats on the sandbox line
Common errors
| Status | Code | Meaning | Fix |
|---|---|---|---|
409 | recipient_opted_out | The contact opted out | Wait for their START or an opt-in link tap |
409 | recipient_must_message_first | The contact has not replied to your last three messages, or the sender cannot start conversations (senders registered by handle without that add-on) | Wait for the reply; share an opt-in link, or order a sender through Zernio |
400 | invalid_content | A first message to a new contact contains links, emails, phone numbers, prices or attachments | Remove it; the error shows an opener that works |
429 | new_contact_limit | The sender is inside the 15-minute or 2-minute spacing, or at its warm-up cap for the day, or a follow-up came less than 24 hours after the last one | Retry after the time in the error |
429 | rate_limited | The sender hit its plan's daily contact cap | Slow down, or spread contacts across senders |
400 | sender_unavailable | The sender is not active, or contactCard was sent with no contact card set | Check the sender's status, set the contact card |
400 | recipient_unreachable | The number is not a mobile or the contact blocked all messages | Verify the handle |
400 | The recipient is not a + international phone number or an email | Fix the recipient | |
409 | edit_window_expired / unsend_window_expired | Apple's window has passed | Send a follow-up instead |
402 | payment_method_required | No card on file for the profile owner | Add a payment method, then order again |
422 | usage_billing_required | The workspace is not on usage-based billing | Move the workspace to usage-based billing |
409 | imessage_sender_conflict | The sender is already registered to another profile | Cancel the existing sender before registering a different one |
403 | imessage_sender_limit | The team's sender cap is reached | Cancel a sender you no longer use |
502 | The provider rejected the order; nothing was charged | Retry with the same purchaseIntentId | |
403 | A sandbox send broke a sandbox limit | Read the reason in the error |
Every error uses the envelope in error handling.
Related
- New Contacts: first-message rules, pacing and warm-up.
- Opt-in & Audience: the fix for
recipient_opted_outandrecipient_must_message_first. - Senders: ordering, registering and canceling a sender.
- Pricing: what a sender costs.
Was this page helpful?