API v1.0
SendPigeon Documentation
Everything you need to send transactional emails. SDKs for Node.js, Python, Go, PHP and REST API.
Error Codes
HTTP status codes and error responses.
| Status | Meaning | Resolution |
|---|---|---|
| 400 | Bad Request | Check request body format and required fields. |
| 401 | Unauthorized | Verify API key is valid and properly formatted. |
| 402 | Quota Exceeded | Upgrade your plan or wait for quota reset. |
| 403 | Domain Not Verified | Add DNS records for your sending domain. |
| 404 | Not Found | Check the resource ID exists. |
| 429 | Rate Limited | Slow down requests. Max 100/minute. |
| 500 | Server Error | Retry with exponential backoff. |
Error Response
{ "message": "Domain not verified. Add DNS records first.", "code": "DOMAIN_NOT_VERIFIED"}| Code | Meaning |
|---|---|
| QUOTA_EXCEEDED | Monthly email limit reached |
| DOMAIN_NOT_VERIFIED | Domain needs DNS verification |
| SENDING_DISABLED | Account disabled (high bounce/complaint rate) |
| TEMPLATE_NOT_FOUND | Template ID doesn't exist |
| MISSING_VARIABLES | Required template variables not provided |
| ATTACHMENT_TOO_LARGE | Attachment exceeds 7MB or total exceeds 25MB |
| ATTACHMENT_FETCH_FAILED | Could not fetch attachment from URL |
| NOT_FOUND | Resource not found |
Rate Limits
100 requests/minute per API key. Headers included in every response:
X-RateLimit-Limit: 100X-RateLimit-Remaining: 95X-RateLimit-Reset: 1640995200