# E12xxx — SMS sending & delivery

Error codes in the `E12xxx` 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                                                                                                                   |
| ----------------------------------- | ------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| [`E12000`](/docs/api/errors/E12000) | `SMSBackendUnavailable`         | `503`  | The SMS service is temporarily unavailable. Please retry.                                                                 |
| [`E12001`](/docs/api/errors/E12001) | `SMSBodyTooLong`                | `422`  | The message text is too long. An SMS is limited to 12 segments; shorten the text or split it across multiple messages.    |
| [`E12002`](/docs/api/errors/E12002) | `SMSUnsupportedFeature`         | `422`  | This request contains a field that is reserved for a future release and is not yet supported.                             |
| [`E12003`](/docs/api/errors/E12003) | `SMSNoEligibleSender`           | `422`  | No eligible sender is available for this message. Supply a 'from' or configure a sender for this destination.             |
| [`E12004`](/docs/api/errors/E12004) | `SMSTLSVersionNotSupported`     | `422`  | TLS 1.3 is required to send to this destination.                                                                          |
| [`E12005`](/docs/api/errors/E12005) | `SMSTemplateNotFound`           | `422`  | No template matches the requested name.                                                                                   |
| [`E12006`](/docs/api/errors/E12006) | `SMSTemplateLanguageInvalid`    | `422`  | The requested template language is not a valid language tag.                                                              |
| [`E12007`](/docs/api/errors/E12007) | `SMSTemplateVariableMissing`    | `422`  | A required template variable is missing from parameters.                                                                  |
| [`E12008`](/docs/api/errors/E12008) | `SMSTemplateVariableUnexpected` | `422`  | parameters contains a variable the template does not define.                                                              |
| [`E12009`](/docs/api/errors/E12009) | `SMSTemplateVariableInvalid`    | `422`  | A template variable value does not satisfy its accepted format.                                                           |
| [`E12010`](/docs/api/errors/E12010) | `SMSTemplateTextConflict`       | `422`  | A message cannot supply both 'text' and 'template'. Send free text or a template, not both.                               |
| [`E12011`](/docs/api/errors/E12011) | `SMSTemplateMediaUnsupported`   | `422`  | Templates are text-only; 'media_urls' cannot be combined with 'template'.                                                 |
| [`E12012`](/docs/api/errors/E12012) | `SMSTemplateCategoryConflict`   | `422`  | A template send derives its category from the template; do not supply 'category'.                                         |
| [`E12013`](/docs/api/errors/E12013) | `SMSTemplateFromNotAllowed`     | `422`  | A template send selects its sender automatically; 'from' is not accepted.                                                 |
| [`E12014`](/docs/api/errors/E12014) | `SenderNotRegistered`           | `422`  | This sender is not registered to send to the destination country. Registration is required before sending there.          |
| [`E12015`](/docs/api/errors/E12015) | `SenderRegistrationPending`     | `422`  | This sender's registration for the destination country is not yet approved.                                               |
| [`E12016`](/docs/api/errors/E12016) | `SenderCategoryNotPermitted`    | `422`  | This sender's registration for the destination country does not permit messages of this category.                         |
| [`E12017`](/docs/api/errors/E12017) | `SMSSenderReserved`             | `422`  | This sender identity is reserved and cannot be used as a sender.                                                          |
| [`E12018`](/docs/api/errors/E12018) | `SMSAlphaNotSupported`          | `422`  | Alphanumeric senders are not available for the destination country.                                                       |
| [`E12019`](/docs/api/errors/E12019) | `SMSAlphaRegistrationRequired`  | `422`  | Alphanumeric senders require registration for the destination country. Register a sender for this country before sending. |
| [`E12020`](/docs/api/errors/E12020) | `SMSDestinationNotEnabled`      | `422`  | This destination country is not enabled for your workspace. Enable it in your SMS destination settings before sending.    |
| [`E12021`](/docs/api/errors/E12021) | `SMSSenderTypeNotSupported`     | `422`  | This sender is not available for the destination country.                                                                 |
| [`E12037`](/docs/api/errors/E12037) | —                               | —      | _Retired: no longer returned, never reused._                                                                              |

## Related

- [Errors](/docs/api/errors): the full wire contract, status mapping, and all code ranges
- [Error handling](/docs/guides/errors): branching on `type` and `code`, validation details, and `vendor_code`