1. Resources
  • Welcome to the Cold Mail Reseller API
  • Get Started
    • Overview
    • Authentication
    • Quick Start
  • Core Concepts
    • Users
    • Domains
    • DNS Management
    • Mailboxes
    • Subscriptions
    • Pre-Warmup
    • Domain Renewal
    • 1+ Year Subscriptions
    • Mailbox Warmup
    • Platform Exports
    • OAuth Exports
    • Sandbox API
  • API Reference
    • Users
      • List Users
      • Get User
      • Create User
      • Update User
      • Delete User
    • Geo
      • List Countries
      • List States
    • Domains
      • Domain Renewal
        • Get Domain Renewal Prices
        • Renew Domains
        • Toggle Domain Auto-Renew
      • Get Domains by User
      • Check Domain Availability
      • Check Single Domain Availability
      • Check Workspace Existence
      • Set Domain Forwarding
      • Set Email Forwarding
      • Delete Domains
    • DNS
      • Get DNS Records
      • Add DNS Records
      • Update DNS Record
      • Update Nameservers
      • Delete DNS Record
    • Mailboxes
      • List Mailboxes
      • Get Mailboxes by User
      • Get Mailbox
      • Get Admin Mailbox Details
      • Update Mailbox Details
      • Delete Mailbox
    • Mailbox Warmup
      • Add Warmup to Mailbox
      • Toggle Warmup
      • Update Warmup Settings
      • Set Warmup Status
      • Disable Warmup
    • Orders
      • Get Order Status
      • Get Order Details
      • Create Order
      • Create Order (JSON)
      • Create Mailbox Order (JSON)
      • Process Order
    • Subscriptions
      • 1+ Year Subscription
        • Recreate Subscription
      • Get Subscriptions
      • Renew Subscriptions
      • Cancel Subscription
      • Toggle Auto-Renewal
    • Exports
      • Platform Exports
        • Get Platform Credentials
        • Add Platform Credential
        • Export Mailboxes to Platform
        • Remove Platform Credential
      • OAuth Exports
        • Perform OAuth
        • Add Client ID to Domains
    • Pre-Warmup
      • Sandbox
        • Get Sandbox Pre-warmup Domains
        • Order Sandbox Pre-warmup
        • Reset Sandbox Pre-warmup
      • Get Pre-warmup Domains
      • Order Pre-warmup
    • Placement Test
      • Create Placement Order
      • Get Placement Reports
  • Resources
    • Errors
    • Rate Limits
    • Pagination
    • Sandbox
    • MCP
  • Webhooks
    • Overview
    • Events
      • Domain Events
      • Mailbox Events
      • Subscription Events
      • Prewarmup Events
      • Mailbox Warmup Events
  • Schemas
    • Error
    • Success
    • MessageResponse
    • User
    • Domain
    • ErrorResponse
    • Mailbox
    • Subscription
    • DnsRecord
    • Error Response
    • Pagination Meta
    • Action Error Response
    • PrewarmupOrderResult
    • OrderCreationResult
  1. Resources

Errors

All CMR API responses (success and error) — use the same JSON envelope. Errors are never surfaced as HTML or plain text.

Response Format#

{
  "status": 422,
  "message": "Domain is not available for registration",
  "data": null
}
The status field in the JSON body always matches the HTTP status code. On success, data contains the response payload. On error, data is null.

HTTP Status Codes#

CodeMeaningWhen you'll see it
200SuccessRequest was processed
400Bad RequestMissing required field or invalid parameter
401UnauthorizedMissing or invalid cmr-x-api-key
403ForbiddenValid key but insufficient permissions
404Not FoundResource doesn't exist or belongs to another partner
409ConflictDuplicate resource — e.g. email already registered
422UnprocessableRequest is valid but fails business logic
429Too Many RequestsRate limit exceeded — check Retry-After header
500Server ErrorCMR internal error — safe to retry with backoff

Common Errors#

Auth errors
Domain errors
Subscription errors
CauseStatusMessage
Missing API key header401Please provide an api key or generate one from the dashboard
Invalid API key401Invalid api key
Missing userId400Please provide a userId
User not found404The requested user does not exist.

Async Operation Failures#

For async operations, failures don't arrive as HTTP error responses on the initial request — they arrive via webhook after CMR attempts the operation in the background.
INFO
Always handle both the success webhook and the failure webhook for every async operation you submit. Your UI should reflect the final webhook status, not the initial HTTP 200.
OperationSuccess webhookFailure webhook
Domain + mailbox orderdomain.order.successdomain.order.failed
Mailbox-only ordermailbox.order.successmailbox.order.failed
Domain renewaldomain.renewal.successdomain.renewal.failed
Subscription renewalsubscription.renewal.successsubscription.renewal.failed
Pre-warmup orderprewarmup.order.successprewarmup.order.failed

Retry Strategy#

WARNING
Never retry 4xx responses (except 429). They indicate a problem with your request — retrying won't help and may cause side effects like duplicate resource creation.
StatusRetry?Strategy
429YesWait for Retry-After header value + jitter
500YesExponential backoff — start at 5s, cap at 30s
503YesSame as 500
4xxNoFix the request first

Next Steps#

Rate Limits
How to handle 429s, batch requests, and stay safely under the 5 req/sec limit.
Pagination
Query parameter errors and out-of-range page/limit handling.
Webhooks Overview
Set up your webhook endpoint to receive async operation results.
Modified at 2026-08-05 16:12:50
Previous
Get Placement Reports
Next
Rate Limits
Built with