APRESMAIL API & MCP
Errors
Every error the ApresMail REST API and MCP server can answer: one JSON shape, and each code with its HTTP status and what it means.
Added to the help center: November 5, 2026
Every error has the same shape, with a code that never changes meaning. Branch on the code; show the message.
409 Conflict
{
"error": {
"code": "conflict",
"message": "This campaign is already sending"
}
}
The message names the field when the input is wrong, and says what to do when a rule stops the action. MCP tools answer the same object in an error result. Sending a campaign that is already sending or sent answers conflict, so a retried send never goes out twice.
| Code | Status | Meaning |
|---|---|---|
| unauthorized | 401 | The API key is missing, malformed, unknown or revoked. |
| forbidden | 403 | The key’s level doesn’t allow this action: a signups only key can only add contacts. |
| not_found | 404 | The newsletter, campaign, contact, segment, domain or key isn’t in this account. |
| validation_failed | 400 | The input doesn’t match the schema or breaks a rule. The message names the field. |
| conflict | 409 | The resource’s state doesn’t allow it, e.g. sending a campaign that is already sending or sent. Retrying won’t help. |
| rate_limited | 429 | Too many requests with this key, or too many of one action for the account, whose keys, apps and dashboard share its limits. Wait and retry. |
| subscription_required | 402 | The account needs an active Apresly subscription. |
| plan_limit_emails | 402 | The send needs more emails than the account has left this month. |
| plan_limit_subscribers | 402 | The account has more active subscribers than its assigned limit allows. |
| account_blocked | 403 | The account is blocked after spam signals (bounce or complaint rates, Gmail’s spam rate in Google Postmaster Tools, a spam trap, the email provider) or by an admin. Nothing is sent, the tracked links in its emails stop redirecting, and only reads, pausing, unscheduling, revoking access work until an admin unblocks it. |
| sender_not_allowed | 422 | The from address is neither the newsletter’s shared address nor on a verified domain of this account. |
| send_check_failed | 422 | A pre-send check failed: no postal address, subject or content, the email is over 100 KB, or its segment was deleted. |
| no_recipients | 422 | Nobody is left to send to. |
| sending_disabled | 503 | Sending is turned off on this server. |
| unavailable | 503 | A service the action needs isn’t configured or didn’t answer. Retry later. |
| internal_error | 500 | Something failed on ApresMail’s side. |
| SMS_AMOUNT_INVALID | 400 | SMS operation could not complete (SMS_AMOUNT_INVALID). |
| SMS_REQUEST_INVALID | 400 | SMS operation could not complete (SMS_REQUEST_INVALID). |
| SMS_SENDER_INVALID | 400 | SMS operation could not complete (SMS_SENDER_INVALID). |
| SMS_PHONE_INVALID | 400 | SMS operation could not complete (SMS_PHONE_INVALID). |
| SMS_CONTENT_INVALID | 400 | SMS operation could not complete (SMS_CONTENT_INVALID). |
| SMS_CONTENT_TOO_LONG | 400 | SMS operation could not complete (SMS_CONTENT_TOO_LONG). |
| SMS_CODE_INVALID | 400 | SMS operation could not complete (SMS_CODE_INVALID). |
| SMS_BUDGET_INSUFFICIENT | 409 | SMS operation could not complete (SMS_BUDGET_INSUFFICIENT). |
| SMS_IDEMPOTENCY_CONFLICT | 409 | SMS operation could not complete (SMS_IDEMPOTENCY_CONFLICT). |
| SMS_VERSION_CONFLICT | 409 | SMS operation could not complete (SMS_VERSION_CONFLICT). |
| SMS_LIMIT_BELOW_USAGE | 409 | SMS operation could not complete (SMS_LIMIT_BELOW_USAGE). |
| SMS_QUALIFICATION_MISMATCH | 409 | SMS operation could not complete (SMS_QUALIFICATION_MISMATCH). |
| SMS_OUTSIDE_WINDOW | 409 | SMS operation could not complete (SMS_OUTSIDE_WINDOW). |
| SMS_AUDIENCE_LIMIT | 409 | SMS operation could not complete (SMS_AUDIENCE_LIMIT). |
| SMS_PHONE_UNAVAILABLE | 409 | SMS operation could not complete (SMS_PHONE_UNAVAILABLE). |
| SMS_OPERATION_EXPIRED | 410 | SMS operation could not complete (SMS_OPERATION_EXPIRED). |
| SMS_CODE_EXPIRED | 410 | SMS operation could not complete (SMS_CODE_EXPIRED). |
| SMS_RATE_LIMITED | 429 | SMS operation could not complete (SMS_RATE_LIMITED). |
| SMS_CONFIGURATION_UNAVAILABLE | 503 | SMS operation could not complete (SMS_CONFIGURATION_UNAVAILABLE). |
| SMS_DISABLED | 503 | SMS operation could not complete (SMS_DISABLED). |
| SMS_ACCOUNT_UNAVAILABLE | 503 | SMS operation could not complete (SMS_ACCOUNT_UNAVAILABLE). |
| SMS_NOT_QUALIFIED | 503 | SMS operation could not complete (SMS_NOT_QUALIFIED). |
| SMS_RATE_CARD_INVALID | 503 | SMS operation could not complete (SMS_RATE_CARD_INVALID). |
| SMS_SENDER_NOT_READY | 503 | SMS operation could not complete (SMS_SENDER_NOT_READY). |
| SMS_SCHEMA_UNAVAILABLE | 503 | SMS operation could not complete (SMS_SCHEMA_UNAVAILABLE). |
| SMS_COST_CHANGED | 409 | SMS operation could not complete (SMS_COST_CHANGED). |
| SMS_RATE_EXPIRED | 409 | SMS operation could not complete (SMS_RATE_EXPIRED). |
| SMS_BUILD_EXPIRED | 409 | SMS operation could not complete (SMS_BUILD_EXPIRED). |
| SMS_SOURCE_UNAVAILABLE | 503 | SMS operation could not complete (SMS_SOURCE_UNAVAILABLE). |