E04xxx — Email sending & delivery
Error codes in the E04xxx range that the public Bird API returns. Each code links to its own page (the page its doc_url points at) with the cause and what to do. Retired codes stay listed; they are never renamed or reused.
| Code | Name | Status | Message |
|---|---|---|---|
| E04000 | EmailBatchRequestTooLarge | 413 | The batch is larger than 20 MB. |
| E04001 | AttachmentContentTypeBlocked | 422 | The attachment content type is not allowed. See the email attachment documentation for the blocklist. |
| E04002 | MessageTooLarge | 413 | Once generated, this message is over the 20 MB limit. |
| E04004 | SuppressionNotFound | 404 | There is no suppression for that address. |
| E04006 | DomainNotVerified | 422 | The from address uses a domain that is not verified in this workspace. |
| E04007 | UnsupportedEmailFeature | 422 | This endpoint does not support what the request asked for: a field it cannot accept, or a combination of fields it cannot accept together. |
| E04008 | EmailBackendUnavailable | 503 | Email is temporarily unavailable. |
| E04009 | OnboardingRecipientNotAllowed | 422 | Sends from the shared onboarding domain can only go to verified members of your workspace. |
| E04010 | OnboardingSendLimitExceeded | 429 | The daily send limit for the shared onboarding domain has been reached. |
| E04011 | RecipientDomainNotAllowed | 422 | Sending to reserved testing domains such as @example.com or @test.com is not supported. These domains cannot receive mail. Use a real recipient address instead. |
| E04012 | EmailContentNotFound | 404 | We did not store the content of this message. |
| E04013 | EmailContentExpired | 410 | The stored content for this message has expired. |
| E04014 | EmailContentNotReady | 425 | The content of this message is not stored yet. |
| E04015 | MonthlySendLimitExceeded | 429 | This organization has reached its monthly email send limit. |
| E04016 | SendCeilingUnavailable | 503 | Email sending limits are temporarily unavailable. Retry in a moment. |
| E04017 | DailySendLimitExceeded | 429 | This organization has reached its daily email send limit. |
| E04021 | EmailTemplateNotFound | 404 | There is no template in this workspace with that id or slug. |
| E04024 | EmailTemplateNotPublished | 422 | This template has no published version, so there is nothing to send. |
| E04026 | ContactEmailExists | 409 | A contact with this email address already exists in this workspace. |
| E04027 | ContactExternalIdExists | 409 | A contact with this external_id already exists in this workspace. |
| E04028 | — | — | Retired: no longer returned, never reused. |
| E04029 | ContactPropertyArchived | 409 | This contact property is already archived. |
| E04030 | ContactPropertyNotArchived | 409 | This contact property is not archived. |
| E04031 | ContactPropertyLimit | 422 | This workspace has reached the maximum number of contact properties. Archived properties still count toward this limit, so archiving does not free a slot; reuse or update an existing property instead. |
| E04032 | ContactPropertyKeyExists | 409 | A contact property with this key already exists in this workspace. |
| E04033 | EmailSmtpConfigNotFound | 404 | There is no SMTP configuration for this API key. |
| E04036 | — | — | Retired: no longer returned, never reused. |
| E04045 | EmailTemplateLanguageInvalid | 422 | The language is not a valid language tag. |
| E04048 | EmailTemplateLanguageNotAvailable | 422 | This template does not have the language you asked for. |
| E04049 | EmailTemplateLanguageRequired | 422 | This template requires every send to name a language. |
| E04055 | ContactPhoneExists | 409 | A contact with this phone number already exists in this workspace. |
| E04056 | ContactIdentifierRequired | 422 | A contact needs at least one reachable identifier. Supply an email address, a phone number, or both. |
| E04057 | ContactPhoneInvalid | 422 | This does not look like a phone number. Send the international form, a leading plus sign, then the country code and number, for example +31612345678. |
| E04058 | ContactMatchAmbiguous | 409 | This entry's identifiers belong to more than one contact. |
| E04060 | ContactMatchKeyMissing | 422 | This entry does not carry the identifier the batch's match_on requires. |
| E04061 | EmailTemplateVariableInvalid | 422 | The content references a parameter whose name is not a single word. |
| E04062 | EmailTemplateParameterMissing | 422 | The send does not supply a value for every parameter the template uses. |
| E04065 | EmailTemplateContactUnavailable | 422 | The template reads contact data, which this send cannot fill. |
| E04066 | EmailTemplateVariableUnfillable | 422 | The template's published version reads a value nothing can fill. |
Related
- Errors: the full wire contract, status mapping, and all code ranges
- Error handling: branching on type and code, validation details, and vendor_code