Request limits
Each account has its own limits, so other accounts never use up yours. All the API keys on your account count toward the same limits.
Each count resets at the start of every minute. Over the limit, the API returns
429 with a Retry-After header that tells you how many seconds are left until the reset:
Send pacing
Emails from the same sending domain go out at least a minimum interval apart. The interval is set by Deliveryman and applies to each domain separately, so two domains don’t slow each other down. If you call Send Email before the interval has passed, the email is queued instead of rejected:- The response is
202withstatus: "scheduled"and the time it will go out inscheduled_for. - The
message_idworks right away, so you can follow the email with Retrieve Sent Email while it waits. You also get asentwebhook when it goes out. - A scheduled email can’t be used as
reply_to_message_iduntil it has gone out. Trying returns409. - If the email can’t be sent when its time comes, for example because you ran out of credits, you get a
failedwebhook and itsstatusbecomesfailed.
429 until some of the queued emails have gone out.
Handling a 429
Both kinds of429 have a message field. A request limit response also has the Retry-After header. A full send queue doesn’t, since it depends on when the queued emails go out.
- For a request limit, wait for
Retry-Afterand retry. - For a full queue, stop sending from that domain for a while. Watch for
sentwebhooks to know when the queue has room again.