Lengths count characters: a Chinese character, a Latin letter, and an emoji each count as one. Leading and trailing whitespace is ignored. Requests over a limit are rejected; nothing is shortened silently.
| Item |
Limit |
| Request body |
64 KB |
alert.title |
100 characters, one line |
alert.body |
1,000 characters |
alert.title + alert.body |
1,000 characters together |
url |
512 bytes, absolute http or https |
thread_key, idempotency_key |
128 characters |
event.type |
64 characters |
event.subject, event.fingerprint |
200 characters |
payload |
8 KB of JSON, nested at most 8 levels |
| Retention |
21 days, unless expires_at says otherwise |
Details: Send alerts.
| Item |
Limit |
emergency.retry_seconds |
At least 30; default 60 |
emergency.expire_seconds |
From retry_seconds to 10,800; default 3,600 |
| Item |
Limit |
encrypted.nonce |
Exactly 24 bytes |
encrypted.aad |
1 to 4,096 bytes |
| Encrypted content |
4,096 bytes; the character limits above do not apply. See Size limit. |
encrypted.ciphertext |
17 to 4,112 bytes decoded: the content plus the 16-byte tag |
| Item |
Limit |
| Heartbeats per channel |
50 |
| Name |
80 characters |
| Expected interval |
1 minute to 30 days |
| Grace period |
30 seconds to 7 days |
| Alert title and body |
The alert limits above, counted with the longest value each variable can have |
Details: Heartbeats.
| Item |
Limit |
| Requests per send URL |
60 per minute |
| Suspension of a send URL |
At least 100 rejected requests in a minute, or ten times its limit if that is higher |
| Requests per network address |
600 per minute, across all endpoints |
Details: Rate limits.