[
  {
    "code": 400,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Bad Request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when a REST API request cannot be completed because the request is invalid. When a request is unsuccessful, the response includes an exception with the HTTP `status`, a `message`, and, when available, a Twilio-specific `code` and `more_info` value.\n\n### Possible causes\n\n- A required parameter is missing from the request.\n- One or more request parameters did not pass validation.\n- The resource you are trying to modify has moved into a state that is no longer valid for that operation.\n\n### Possible solutions\n\n- Inspect the response `message`, `code`, and `more_info` fields to identify the exact problem in the request.\n- Add any missing required parameters before you retry the request.\n- Validate each request value against the endpoint requirements and correct any malformed or unsupported input.\n- Verify that the resource exists and is still in a state that allows the requested update.\n- Retry the request only after you confirm the request is valid.\n\n#### Additional resources\n\n- [Our API: the basics](/docs/iam/api)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* A required parameter is missing from the request.\n* One or more request parameters did not pass validation.\n* The resource you are trying to modify has moved into a state that is no longer valid for that operation.",
    "solutions": "* Inspect the response `message`, `code`, and `more_info` fields to identify the exact problem in the request.\n* Add any missing required parameters before you retry the request.\n* Validate each request value against the endpoint requirements and correct any malformed or unsupported input.\n* Verify that the resource exists and is still in a state that allows the requested update.\n* Retry the request only after you confirm the request is valid.",
    "description": "Twilio returns this error when a REST API request cannot be completed because the request is invalid. When a request is unsuccessful, the response includes an exception with the HTTP `status`, a `message`, and, when available, a Twilio-specific `code` and `more_info` value.",
    "date_created": "2020-09-14T21:49:18Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 403,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Forbidden",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error means your request is not authorized. Verify the credentials used for the request and confirm that the account or API key has permission to access the endpoint you are calling.\n\n### Possible causes\n\n- The request used incorrect credentials, such as an invalid `Account SID`, `Auth Token`, API key SID, or API key secret.\n- The request used a Restricted API key that does not include permission for the resource or endpoint.\n- The account is suspended or closed, which prevents API access.\n- The `Auth Token` was rotated recently and part of your application, Service, or Function is still using the previous token. Services and Functions (Classic) can return `403 Forbidden` until the updated token finishes propagating.\n\n### Possible solutions\n\n- Authenticate the request with valid HTTP Basic authentication credentials. Use either your `Account SID` and `Auth Token` or a valid API key SID and secret.\n- If you are using a Restricted API key, add the permission required for the endpoint you are calling or use a `Standard` or `Main` API key when broader access is required.\n- Verify the status of your project in Console. If the account is suspended or closed, restore access through Console or contact Support through the Help Center.\n- After rotating an `Auth Token`, update every service that stores the old value. If you use Services or Functions (Classic), wait at least one minute before retrying the request.\n\n#### Additional resources\n\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [Restricted API keys](/docs/iam/api-keys/restricted-api-keys)\n- [REST API: Auth Token](/docs/iam/api/authtoken)\n",
    "causes": "* The request used incorrect credentials, such as an invalid `Account SID`, `Auth Token`, API key SID, or API key secret.\n* The request used a Restricted API key that does not include permission for the resource or endpoint.\n* The account is suspended or closed, which prevents API access.\n* The `Auth Token` was rotated recently and part of your application, Service, or Function is still using the previous token. Services and Functions (Classic) can return `403 Forbidden` until the updated token finishes propagating.",
    "solutions": "* Authenticate the request with valid HTTP Basic authentication credentials. Use either your `Account SID` and `Auth Token` or a valid API key SID and secret.\n* If you are using a Restricted API key, add the permission required for the endpoint you are calling or use a `Standard` or `Main` API key when broader access is required.\n* Verify the status of your project in Console. If the account is suspended or closed, restore access through Console or contact Support through the Help Center.\n* After rotating an `Auth Token`, update every service that stores the old value. If you use Services or Functions (Classic), wait at least one minute before retrying the request.",
    "description": "This error means your request is not authorized. Verify the credentials used for the request and confirm that the account or API key has permission to access the endpoint you are calling.",
    "date_created": "2023-05-02T17:53:30Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 404,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when it cannot find the resource in your request. This usually happens when the requested resource does not exist, the resource `SID` is incorrect or deleted, the request path is malformed, the resource name or casing does not match the documented endpoint, or the request was sent to the wrong product host.\n\n### Possible causes\n\n- The `SID` in the request does not exist, or the resource existed previously and has since been deleted.\n- The request path points to a resource that does not exist.\n- The request path uses the wrong resource name or casing.\n- A required `SID` is missing or empty in the request path.\n- The request was sent to the wrong host or base URL for the API you are calling.\n\n### Possible solutions\n\n- Copy the `SID` directly from the resource create or list response, then retry the request with the documented endpoint for that resource.\n- Confirm that the resource still exists before you fetch, update, or delete it.\n- Match the documented resource name and path casing exactly.\n- Validate every path value before you send the request. Ensure required values such as `AccountSid` and the target resource `SID` are present and non-empty.\n- Send the request to the correct product host and base URL for the endpoint you are calling.\n\n#### Additional resources\n\n- [Our API: the basics](/docs/iam/api)\n- [What is a SID?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* The `SID` in the request does not exist, or the resource existed previously and has since been deleted.\n* The request path points to a resource that does not exist.\n* The request path uses the wrong resource name or casing.\n* A required `SID` is missing or empty in the request path.\n* The request was sent to the wrong host or base URL for the API you are calling.",
    "solutions": "* Copy the `SID` directly from the resource create or list response, then retry the request with the documented endpoint for that resource.\n* Confirm that the resource still exists before you fetch, update, or delete it.\n* Match the documented resource name and path casing exactly.\n* Validate every path value before you send the request. Ensure required values such as `AccountSid` and the target resource `SID` are present and non-empty.\n* Send the request to the correct product host and base URL for the endpoint you are calling.",
    "description": "Twilio returns this error when it cannot find the resource in your request. This usually happens when the requested resource does not exist, the resource `SID` is incorrect or deleted, the request path is malformed, the resource name or casing does not match the documented endpoint, or the request was sent to the wrong product host.",
    "date_created": "2020-09-14T21:50:07Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 410,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unknown Error Code",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error means the requested resource is no longer available. Do not retry the same request because the condition is likely permanent.\n\n### Possible causes\n\n- The resource has reached a terminal state and is no longer available.\n- The request is targeting a resource or endpoint that is no longer valid for the operation you are attempting.\n\n### Possible solutions\n\n- Stop retrying the request.\n- Verify that the resource SID, URL, or endpoint you are using is still current.\n- Confirm that the resource is still in a state that supports the requested operation.\n- Update your integration to use a current resource or supported endpoint before sending the request again.\n\n#### Additional resources\n\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n- [Troubleshooting Twilio](/docs/usage/troubleshooting)\n",
    "causes": "* The resource has reached a terminal state and is no longer available.\n* The request is targeting a resource or endpoint that is no longer valid for the operation you are attempting.",
    "solutions": "* Stop retrying the request.\n* Verify that the resource SID, URL, or endpoint you are using is still current.\n* Confirm that the resource is still in a state that supports the requested operation.\n* Update your integration to use a current resource or supported endpoint before sending the request again.",
    "description": "This error means the requested resource is no longer available. Do not retry the same request because the condition is likely permanent.",
    "date_created": "2020-09-14T21:50:57Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 503,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio encountered an internal error while processing the request. This can also appear when the Twilio service is temporarily unavailable and cannot complete the request.\n\n### Possible causes\n\n- Twilio hit an internal processing error while handling the request.\n- The service was temporarily unavailable when the request reached Twilio.\n\n### Possible solutions\n\n- Retry the request later.\n- Check the Twilio Status Page to confirm whether there is an active incident, outage, or service degradation affecting the API platform.\n- Review the request in the Twilio Console Debugger to inspect the error details and identify repeated failures.\n\n#### Additional resources\n\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Twilio hit an internal processing error while handling the request.\n* The service was temporarily unavailable when the request reached Twilio.",
    "solutions": "* Retry the request later.\n* Check the Twilio Status Page to confirm whether there is an active incident, outage, or service degradation affecting the API platform.\n* Review the request in the Twilio Console Debugger to inspect the error details and identify repeated failures.",
    "description": "Twilio encountered an internal error while processing the request. This can also appear when the Twilio service is temporarily unavailable and cannot complete the request.",
    "date_created": "2020-09-14T21:55:34Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 10001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Account is not active",
    "secondary_message": "This account has been disabled and may not be used until it is reactived.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you send a request from an account or subaccount that is not active. A suspended account cannot use Twilio for calls, messages, or other API activity until it is reactivated.\n\n### Possible causes\n\n- Your account balance reached $0 or below and the account was suspended.\n- A parent account was suspended, which also suspended the subaccount making the request.\n- The account or subaccount `Status` was set to `suspended`.\n- The account was disabled for a Terms of Service or Acceptable Use Policy violation.\n\n### Possible solutions\n\n- Check your account balance in Console and add funds so the balance is above $0.\n- If you recently paid an overdue balance, allow 5 to 10 minutes for reactivation. If Console still shows the account as suspended, sign out and sign back in.\n- If you suspended a subaccount, update the `Status` parameter to `active` to restore service.\n- If the account was disabled for a policy review or it does not reactivate after payment, contact Twilio Support through the Help Center.\n\n#### Additional resources\n\n- [Billing](/docs/usage/billing)\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n",
    "causes": "* Your account balance reached $0 or below and the account was suspended.\n* A parent account was suspended, which also suspended the subaccount making the request.\n* The account or subaccount `Status` was set to `suspended`.\n* The account was disabled for a Terms of Service or Acceptable Use Policy violation.",
    "solutions": "* Check your account balance in Console and add funds so the balance is above $0.\n* If you recently paid an overdue balance, allow 5 to 10 minutes for reactivation. If Console still shows the account as suspended, sign out and sign back in.\n* If you suspended a subaccount, update the `Status` parameter to `active` to restore service.\n* If the account was disabled for a policy review or it does not reactivate after payment, contact Twilio Support through the Help Center.",
    "description": "This error occurs when you send a request from an account or subaccount that is not active. A suspended account cannot use Twilio for calls, messages, or other API activity until it is reactivated.",
    "date_created": "2016-03-31T17:13:21Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 10002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trial accounts do not support the feature you tried to use",
    "secondary_message": "Your account is currently in trial mode and therefore does not have access to the premium feature you attempted to use.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when your account is still in trial mode and your request attempts to use a feature that is limited to full accounts. Trial accounts have product-specific restrictions, and some Phone Numbers capabilities are available only after you upgrade.\n\n### Possible causes\n\n- Your account is still a trial account, and the request attempted to use a feature that is limited to full accounts.\n- You attempted to use functionality that is restricted during trial, such as a capability that requires an upgraded account before it can be enabled.\n- If you were working with Phone Numbers, you may have tried to provision more than one number, buy a number on a trial subaccount, or request a number that is not available to trial accounts. ([help.twilio.com](https://help.twilio.com/articles/360036052753))\n\n### Possible solutions\n\n- Upgrade your account in Console, then try the request again.\n- Review your trial restrictions to confirm whether the feature you want to use is available before upgrade.\n- If you need a different Twilio number during trial, release the current trial number first. If you need more than one number, need a number that is not offered to trial accounts, or need to buy numbers on a subaccount, upgrade the account. ([help.twilio.com](https://help.twilio.com/articles/360036052753))\n\n#### Additional resources\n\n- [Twilio trial account](/docs/usage/trials)\n- [Get started with your Twilio free trial account](/docs/usage/tutorials/how-to-use-your-free-trial-account)\n",
    "causes": "* Your account is still a trial account, and the request attempted to use a feature that is limited to full accounts.\n* You attempted to use functionality that is restricted during trial, such as a capability that requires an upgraded account before it can be enabled.\n* If you were working with Phone Numbers, you may have tried to provision more than one number, buy a number on a trial subaccount, or request a number that is not available to trial accounts. ([help.twilio.com](https://help.twilio.com/articles/360036052753))",
    "solutions": "* Upgrade your account in Console, then try the request again.\n* Review your trial restrictions to confirm whether the feature you want to use is available before upgrade.\n* If you need a different Twilio number during trial, release the current trial number first. If you need more than one number, need a number that is not offered to trial accounts, or need to buy numbers on a subaccount, upgrade the account. ([help.twilio.com](https://help.twilio.com/articles/360036052753))",
    "description": "This error occurs when your account is still in trial mode and your request attempts to use a feature that is limited to full accounts. Trial accounts have product-specific restrictions, and some Phone Numbers capabilities are available only after you upgrade.",
    "date_created": "2016-03-31T17:13:22Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 10003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Incoming call rejected due to inactive account",
    "secondary_message": "An incoming call was made to your application, but was not answered because your account was not active at the time.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when an incoming call reaches your Twilio application, but the call is not answered because the project was inactive at the time.\n\n### Possible causes\n\n- Your project balance reached zero or a negative amount, which suspended the project.\n- The subaccount that owns the phone number was suspended.\n- The project was suspended because of a Terms of Service or Acceptable Use Policy violation.\n\n### Possible solutions\n\n- Check your Twilio project balance. Add funds if the balance is zero or negative.\n- If you recently added funds, allow 5 to 10 minutes for reactivation. Then sign out and sign back in to refresh Console if the project still appears suspended.\n- Set a recharge or balance notification trigger to help prevent future suspensions.\n- Contact Twilio Support if you believe the project was suspended for a compliance reason or you are not sure why the project is inactive.\n",
    "causes": "* Your project balance reached zero or a negative amount, which suspended the project.\n* The subaccount that owns the phone number was suspended.\n* The project was suspended because of a Terms of Service or Acceptable Use Policy violation.",
    "solutions": "* Check your Twilio project balance. Add funds if the balance is zero or negative.\n* If you recently added funds, allow 5 to 10 minutes for reactivation. Then sign out and sign back in to refresh Console if the project still appears suspended.\n* Set a recharge or balance notification trigger to help prevent future suspensions.\n* Contact Twilio Support if you believe the project was suspended for a compliance reason or you are not sure why the project is inactive.",
    "description": "This error occurs when an incoming call reaches your Twilio application, but the call is not answered because the project was inactive at the time.",
    "date_created": "2016-03-31T17:13:22Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 10004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Call concurrency limit exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when a new Voice call would exceed the number of active calls allowed on your account. Concurrent calls are the total number of inbound and outbound calls on the account at the same time. Trial accounts and some upgraded accounts without an approved Primary Customer Profile have reduced concurrency.\n\n### Possible causes\n\n- Your trial account has reached its concurrent call limit.\n- Your upgraded account does not have an approved Primary Customer Profile, so concurrent call capacity is still limited.\n- Your account has reached another Twilio-defined concurrency limit for Voice calls.\n\n### Possible solutions\n\n- If you are using a trial account, upgrade the account to move beyond trial concurrency limits.\n- Create and submit a Primary Customer Profile in Trust Hub. An approved Business Primary Customer Profile removes limited concurrency for eligible Voice accounts.\n- If you need more call capacity than your account currently allows, contact your Twilio account team or Twilio Support.\n\n#### Additional resources\n\n- [Try out Twilio Voice](/docs/usage/trials/try-out-voice)\n- [Customer Profiles](/docs/trust-hub/trusthub-rest-api/customer-profiles)\n",
    "causes": "* Your trial account has reached its concurrent call limit.\n* Your upgraded account does not have an approved Primary Customer Profile, so concurrent call capacity is still limited.\n* Your account has reached another Twilio-defined concurrency limit for Voice calls.",
    "solutions": "* If you are using a trial account, upgrade the account to move beyond trial concurrency limits.\n* Create and submit a Primary Customer Profile in Trust Hub. An approved Business Primary Customer Profile removes limited concurrency for eligible Voice accounts.\n* If you need more call capacity than your account currently allows, contact your Twilio account team or Twilio Support.",
    "description": "This error occurs when a new Voice call would exceed the number of active calls allowed on your account. Concurrent calls are the total number of inbound and outbound calls on the account at the same time. Trial accounts and some upgraded accounts without an approved Primary Customer Profile have reduced concurrency.",
    "date_created": "2018-10-05T04:05:45Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 10005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice calling has been disabled for this account",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nVoice calling has been disabled for this account.\n\n### Possible causes\n\nVoice Calling has been disabled by Twilio.\n\nPotential causes may be:\n\n- Your account requires an approved Primary Customer Profile\n- Your account has been flagged for review due to suspicious activity\n\n### Possible solutions\n\n- Please create a Primary Customer Profile to enable Voice calling through [Trust Hub](https://console.twilio.com/us1/account/trust-hub/customer-profiles).\n- If you received an email regarding your account being compromised, please also follow the instructions in the email.\n",
    "causes": "Voice Calling has been disabled by Twilio. Potential causes may be: - Your account requires an approved Primary Customer Profile\n- Your account has been flagged for review due to suspicious activity",
    "solutions": "* Please create a Primary Customer Profile to enable Voice calling through [Trust Hub](https://console.twilio.com/us1/account/trust-hub/customer-profiles).\n* If you received an email regarding your account being compromised, please also follow the instructions in the email.",
    "description": "Voice calling has been disabled for this account.",
    "date_created": "2023-09-05T16:31:53Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Website URL doesn’t match the required format",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe website URL must be in a valid format, starting with https:// and followed by a valid domain name (e.g., https://example.com).\n\n### Possible causes\n\nThe URL doesn't start with https://.\n\nThe URL contains typos, spaces, or unsupported characters.\n\nThe domain name is incomplete or missing (e.g., \"https://example\" instead of \"https://example.com\" ).\n\nThe URL includes extra paths or parameters that make it invalid.\n\nThe URL uses an unsupported protocol (e.g., http:// or ftp://).\n\n### Possible solutions\n\nPlease review the possible causes and update the linked profile with the correct information:\n\n- Enter the full website URL in the Profile Website field, starting with https://.\n- Verify the domain name is complete and valid (e.g., https://example.com ) before saving the profile.\n- Remove any spaces, typos, or special characters from the website URL in the profile.\n- Ensure the website uses the https:// protocol - other protocols (e.g., http://, ftp://) are not supported.\n",
    "causes": "The URL doesn't start with https://. The URL contains typos, spaces, or unsupported characters. The domain name is incomplete or missing (e.g., \"https://example\" instead of \"https://example.com\" ). The URL includes extra paths or parameters that make it invalid. The URL uses an unsupported protocol (e.g., http:// or ftp://).",
    "solutions": "Please review the possible causes and update the linked profile with the correct information: - Enter the full website URL in the Profile Website field, starting with https://.\n- Verify the domain name is complete and valid (e.g., https://example.com ) before saving the profile.\n- Remove any spaces, typos, or special characters from the website URL in the profile.\n- Ensure the website uses the https:// protocol - other protocols (e.g., http://, ftp://) are not supported.",
    "description": "The website URL must be in a valid format, starting with https:// and followed by a valid domain name (e.g., https://example.com).",
    "date_created": "2025-10-30T12:03:27.366Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Authorized Representative must have a valid US phone number (+1).",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Authorized Representative phone number in the linked Business Profile is not a valid United States phone number. For Voice Integrity registration, the linked profile must include an authorized representative with a valid US phone number, and the phone number field for an authorized representative must be provided in `E.164` format.\n\n### Possible causes\n\n- The Authorized Representative phone number does not begin with `+1`.\n- The phone number is incomplete, contains invalid characters, or is not formatted in `E.164`.\n- The wrong contact number was entered for the authorized representative in the linked Customer Profile or Business Profile.\n\n### Possible solutions\n\n- Update the linked profile with an Authorized Representative phone number that begins with `+1`.\n- Enter the phone number in `E.164` format, for example `+14155552671`.\n- Review the Authorized Representative details in Trust Hub, correct the phone number, and resubmit the profile if it was rejected during vetting.\n- If you are registering for Voice Integrity, confirm that the linked Business Profile also meets the other required prerequisites, including a valid US business address and a secure website URL that uses `https://`.\n\n#### Additional resources\n\n- [Voice Integrity Onboarding](/docs/voice/spam-monitoring-with-voiceintegrity/voice-integrity-onboarding)\n- [Voice Integrity Onboarding in the Twilio Console](/docs/voice/spam-monitoring-with-voiceintegrity/voice-integrity-onboarding/voiceintegrity-onboarding-in-the-twilio-console)\n- [Trust Hub](/docs/trust-hub)\n",
    "causes": "* The Authorized Representative phone number does not begin with `+1`.\n* The phone number is incomplete, contains invalid characters, or is not formatted in `E.164`.\n* The wrong contact number was entered for the authorized representative in the linked Customer Profile or Business Profile.",
    "solutions": "* Update the linked profile with an Authorized Representative phone number that begins with `+1`.\n* Enter the phone number in `E.164` format, for example `+14155552671`.\n* Review the Authorized Representative details in Trust Hub, correct the phone number, and resubmit the profile if it was rejected during vetting.\n* If you are registering for Voice Integrity, confirm that the linked Business Profile also meets the other required prerequisites, including a valid US business address and a secure website URL that uses `https://`.",
    "description": "This error occurs when the Authorized Representative phone number in the linked Business Profile is not a valid United States phone number. For Voice Integrity registration, the linked profile must include an authorized representative with a valid US phone number, and the phone number field for an authorized representative must be provided in `E.164` format.",
    "date_created": "2025-10-30T12:06:58.562Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 11003,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Business address must be a US address.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Business Profile linked to your voice registration does not contain a valid US business address. Voice Integrity requires an approved Primary or Secondary Business Profile with a valid US business address and the correct ISO country code.\n\n### Possible causes\n\n- The Business Profile address is outside the United States.\n- The address country is not set to `US`.\n- The business address is incomplete and is missing required fields such as street address, city, state or province, or postal code.\n\n### Possible solutions\n\n- Update the Business Profile in Trust Hub to use the business's physical US street address.\n- Set the address country ISO code to `US`.\n- Complete all required address fields, including street address, city, state or province, and postal code.\n- If the profile was rejected, review the rejection reason, correct the address information, and resubmit the profile or registration.\n\n#### Additional resources\n\n- [Voice Integrity Onboarding](/docs/voice/spam-monitoring-with-voiceintegrity/voice-integrity-onboarding)\n- [Trust Hub](/docs/trust-hub)\n- [Console: Create a Primary Customer Profile](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n",
    "causes": "* The Business Profile address is outside the United States.\n* The address country is not set to `US`.\n* The business address is incomplete and is missing required fields such as street address, city, state or province, or postal code.",
    "solutions": "* Update the Business Profile in Trust Hub to use the business's physical US street address.\n* Set the address country ISO code to `US`.\n* Complete all required address fields, including street address, city, state or province, and postal code.\n* If the profile was rejected, review the rejection reason, correct the address information, and resubmit the profile or registration.",
    "description": "This error occurs when the Business Profile linked to your voice registration does not contain a valid US business address. Voice Integrity requires an approved Primary or Secondary Business Profile with a valid US business address and the correct ISO country code.",
    "date_created": "2025-10-30T12:09:35.586Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 11004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Business Registration Validation Failed.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Business Registration Number in your linked profile or registration does not meet validation requirements. Use EIN or DUNS as the registration authority and provide a valid 9-digit identifier that matches the registered business before you resubmit.\n\n### Possible causes\n\n- The linked profile or registration uses a business registration authority other than EIN or DUNS.\n- The Business Registration Number is invalid, incorrectly formatted, or not associated with the registered business.\n- The number includes extra characters, spaces, or symbols.\n\n### Possible solutions\n\n- Update the linked Business Profile or registration to use EIN or DUNS as the business registration authority where required for Voice Integrity or CNAM.\n- Enter the Business Registration Number exactly as issued to the business. Use a valid 9-digit value and remove spaces or special characters.\n- Confirm that the legal business name and registration number in the profile match the registered business details before you submit again.\n- If the Customer Profile was rejected, review the rejection reason, correct the business information, and resubmit the profile or registration.\n\n#### Additional resources\n\n- [Trust Hub](/docs/trust-hub)\n- [Register your business and phone numbers with Voice Integrity](/docs/voice/spam-monitoring-with-voiceintegrity)\n- [Brand your calls using CNAM](/docs/voice/brand-your-calls-using-cnam)\n",
    "causes": "* The linked profile or registration uses a business registration authority other than EIN or DUNS.\n* The Business Registration Number is invalid, incorrectly formatted, or not associated with the registered business.\n* The number includes extra characters, spaces, or symbols.",
    "solutions": "* Update the linked Business Profile or registration to use EIN or DUNS as the business registration authority where required for Voice Integrity or CNAM.\n* Enter the Business Registration Number exactly as issued to the business. Use a valid 9-digit value and remove spaces or special characters.\n* Confirm that the legal business name and registration number in the profile match the registered business details before you submit again.\n* If the Customer Profile was rejected, review the rejection reason, correct the business information, and resubmit the profile or registration.",
    "description": "This error occurs when the Business Registration Number in your linked profile or registration does not meet validation requirements. Use EIN or DUNS as the registration authority and provide a valid 9-digit identifier that matches the registered business before you resubmit.",
    "date_created": "2025-10-30T12:12:26.272Z",
    "last_updated": "2026-10-16T02:03:44-04:00"
  },
  {
    "code": 11005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Voice Integrity rejected as linked Business profile is not in approved status",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYour Voice Integrity Bundle can't be approved when the linked Business Profile is not in `twilio-approved` status. To use Voice Integrity, create a Business Profile in Trust Hub, submit it for vetting, and connect the Voice Integrity Trust Product to an approved profile.\n\n### Possible causes\n\n- The Business Profile linked to your Voice Integrity Bundle was rejected during vetting.\n- Twilio could not validate some of the business information in the linked profile.\n- The linked profile has not reached the `twilio-approved` status required to use Trust Products.\n\n### Possible solutions\n\n- In the Twilio Console, go to Trust Hub > Customer Profiles and review the rejection reason for the linked Business Profile.\n- Correct the business information that could not be validated, then resubmit the profile for review.\n- Make sure the Voice Integrity Trust Product is linked to a Business Profile in `twilio-approved` status before you submit it again.\n- Confirm that the phone numbers you want to register are already assigned to that same approved Business Profile before you assign them to the Voice Integrity Trust Product.\n\n#### Additional resources\n\n- [Voice Integrity Onboarding](/docs/voice/spam-monitoring-with-voiceintegrity/voice-integrity-onboarding)\n- [Trust Hub](/docs/trust-hub)\n- [CustomerProfile Resource](/docs/trust-hub/trusthub-rest-api/customer-profiles)\n",
    "causes": "* The Business Profile linked to your Voice Integrity Bundle was rejected during vetting.\n* Twilio could not validate some of the business information in the linked profile.\n* The linked profile has not reached the `twilio-approved` status required to use Trust Products.",
    "solutions": "* In the Twilio Console, go to Trust Hub > Customer Profiles and review the rejection reason for the linked Business Profile.\n* Correct the business information that could not be validated, then resubmit the profile for review.\n* Make sure the Voice Integrity Trust Product is linked to a Business Profile in `twilio-approved` status before you submit it again.\n* Confirm that the phone numbers you want to register are already assigned to that same approved Business Profile before you assign them to the Voice Integrity Trust Product.",
    "description": "Your Voice Integrity Bundle can't be approved when the linked Business Profile is not in `twilio-approved` status. To use Voice Integrity, create a Business Profile in Trust Hub, submit it for vetting, and connect the Voice Integrity Trust Product to an approved profile.",
    "date_created": "2025-11-12T07:25:40.82Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 11006,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Registration rejected: linked Business Profile is not approved",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYour registration could not be approved because the linked Business Profile has not passed verification.\n\n### Possible causes\n\n- The Business Profile linked to your registration did not pass verification.\n- Missing or incorrect business details in the KYC submission.\n\n### Possible solutions\n\n- Review the rejection reason on your Business Profile, update the required details based on the feedback provided, and resubmit for verification.\n\n#### Additional resources\n\n- [Brand your calls using CNAM](/docs/voice/brand-your-calls-using-cnam)\n- [Getting Started with CNAM Caller ID](https://help.twilio.com/articles/360051670533-Getting-Started-with-CNAM-Caller-ID)\n- [SHAKEN/STIR Onboarding](/docs/voice/trusted-calling-with-shakenstir/shakenstir-onboarding)\n",
    "causes": "* The Business Profile linked to your registration did not pass verification.\n* Missing or incorrect business details in the KYC submission.",
    "solutions": "* Review the rejection reason on your Business Profile, update the required details based on the feedback provided, and resubmit for verification.",
    "description": "Your registration could not be approved because the linked Business Profile has not passed verification.",
    "date_created": "2026-04-09T16:12:43+05:30",
    "last_updated": "2026-07-21T19:43:44+05:30"
  },
  {
    "code": 11007,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "CNAM registration rejected: display name does not match the registered business",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe display name you provided does not match the business name on your linked Business Profile.\n\n### Possible causes\n\n- The display name does not match your registered business name, or it may be associated with a different entity.\n\n### Possible solutions\n\n- Review and update the display name to match your registered business name, then resubmit for verification.\n\n#### Additional resources\n\n- [Brand your calls using CNAM](/docs/voice/brand-your-calls-using-cnam)\n- [Getting Started with CNAM Caller ID](https://help.twilio.com/articles/360051670533-Getting-Started-with-CNAM-Caller-ID)\n",
    "causes": "* The display name does not match your registered business name, or it may be associated with a different entity.",
    "solutions": "* Review and update the display name to match your registered business name, then resubmit for verification.",
    "description": "The display name you provided does not match the business name on your linked Business Profile.",
    "date_created": "2026-04-09T16:15:55+05:30",
    "last_updated": "2026-04-09T16:15:55+05:30"
  },
  {
    "code": 11008,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "CNAM registration rejected: display name contains prohibited content",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe display name you submitted includes prohibited content that is not permitted for CNAM registrations.\n\n### Possible causes\n\n- The display name contains a prohibited term. Terms such as FBI, Social Security Administration, Government, Police, and Medicare are not permitted.\n\n### Possible solutions\n\n- Update the display name to remove any prohibited terms, ensure it accurately reflects your business name, and resubmit for verification.\n\n#### Additional resources\n\n- [Brand your calls using CNAM](/docs/voice/brand-your-calls-using-cnam)\n- [Getting Started with CNAM Caller ID](https://help.twilio.com/articles/360051670533-Getting-Started-with-CNAM-Caller-ID)\n",
    "causes": "* The display name contains a prohibited term. Terms such as FBI, Social Security Administration, Government, Police, and Medicare are not permitted.",
    "solutions": "* Update the display name to remove any prohibited terms, ensure it accurately reflects your business name, and resubmit for verification.",
    "description": "The display name you submitted includes prohibited content that is not permitted for CNAM registrations.",
    "date_created": "2026-04-09T16:20:59+05:30",
    "last_updated": "2026-04-09T16:20:59+05:30"
  },
  {
    "code": 11009,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "CNAM registration rejected: display name does not meet requirements",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe display name you submitted does not meet one or more CNAM display name requirements.\n\n### Possible causes\n\n- Display name does not start with a letter.\n- Display name contains characters that are not permitted (only letters, numbers, spaces, periods, or commas are allowed).\n- Display name is too generic and does not accurately reflect the business (for example \"City\" or \"State\").\n- Display name is already in use by another registration.\n\n### Possible solutions\n\nUpdate the display name to meet the following requirements:\n\n- Must be 15 characters or fewer, start with a letter, and contain only letters, numbers, spaces, periods, or commas.\n- Ensure the name is unique and accurately reflects your registered business, then resubmit for verification.\n\n#### Additional resources\n\n- [Brand your calls using CNAM](/docs/voice/brand-your-calls-using-cnam)\n- [Getting Started with CNAM Caller ID](https://help.twilio.com/articles/360051670533-Getting-Started-with-CNAM-Caller-ID)\n",
    "causes": "* Display name does not start with a letter.\n* Display name contains characters that are not permitted (only letters, numbers, spaces, periods, or commas are allowed).\n* Display name is too generic and does not accurately reflect the business (for example \"City\" or \"State\").\n* Display name is already in use by another registration.",
    "solutions": "Update the display name to meet the following requirements: - Must be 15 characters or fewer, start with a letter, and contain only letters, numbers, spaces, periods, or commas.\n- Ensure the name is unique and accurately reflects your registered business, then resubmit for verification.",
    "description": "The display name you submitted does not meet one or more CNAM display name requirements.",
    "date_created": "2026-04-09T16:18:29+05:30",
    "last_updated": "2026-04-09T16:18:29+05:30"
  },
  {
    "code": 11010,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Letter of Authorization incomplete or invalid",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe Letter of Authorization (LOA) submitted with the Branded Calling registration contains incomplete, missing, or incorrect information.\n\n### Possible causes\n\n- The LOA is missing required fields or contains inaccurate information.\n- The information provided in the LOA cannot be linked to the business.\n- LOA isn't signed by the authorized contact.\n\n### Possible solutions\n\n- Review the LOA to ensure all required fields are accurately completed. Resubmit the registration with a corrected LOA for verification.\n\n#### Additional resources\n\n- [Getting Started Branded Calling](/docs/voice/branded-calling)\n",
    "causes": "* The LOA is missing required fields or contains inaccurate information.\n* The information provided in the LOA cannot be linked to the business.\n* LOA isn't signed by the authorized contact.",
    "solutions": "* Review the LOA to ensure all required fields are accurately completed. Resubmit the registration with a corrected LOA for verification.",
    "description": "The Letter of Authorization (LOA) submitted with the Branded Calling registration contains incomplete, missing, or incorrect information.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11011,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Company registration is less than 1 year old",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe business has been registered for less than one year and does not meet the minimum registration age requirement for Branded Calling.\n\n### Possible causes\n\n- The business was registered less than twelve months prior to the Branded Calling submission.\n\n### Possible solutions\n\n- Ensure the business meets the minimum registration age requirement before resubmitting the Branded Calling registration.\n\n#### Additional resources\n\n- [Getting Started Branded Calling](/docs/voice/branded-calling)\n",
    "causes": "* The business was registered less than twelve months prior to the Branded Calling submission.",
    "solutions": "* Ensure the business meets the minimum registration age requirement before resubmitting the Branded Calling registration.",
    "description": "The business has been registered for less than one year and does not meet the minimum registration age requirement for Branded Calling.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11012,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Display name does not match with the business",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe provided display name does not correspond with the registered business or is associated with another entity.\n\n### Possible causes\n\n- The display name cannot be linked to the business associated with the registration.\n- The display name is associated with a different business entity.\n\n### Possible solutions\n\n- Review and update the display name in the Branded Calling registration to ensure it accurately reflects the registered business. Resubmit the registration for verification.\n\n#### Additional resources\n\n- [Getting Started Branded Calling](/docs/voice/branded-calling)\n",
    "causes": "* The display name cannot be linked to the business associated with the registration.\n* The display name is associated with a different business entity.",
    "solutions": "* Review and update the display name in the Branded Calling registration to ensure it accurately reflects the registered business. Resubmit the registration for verification.",
    "description": "The provided display name does not correspond with the registered business or is associated with another entity.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11013,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Logo does not match the business",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe provided logo does not correspond with the registered business or is associated with another entity.\n\n### Possible causes\n\n- The logo cannot be linked to the business associated with the registration.\n- The logo is associated with a different business entity.\n\n### Possible solutions\n\n- Review and update the logo in the Branded Calling registration to ensure it accurately reflects the registered business. Resubmit the registration for verification.\n\n#### Additional resources\n\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced#logo-restrictions)\n",
    "causes": "* The logo cannot be linked to the business associated with the registration.\n* The logo is associated with a different business entity.",
    "solutions": "* Review and update the logo in the Branded Calling registration to ensure it accurately reflects the registered business. Resubmit the registration for verification.",
    "description": "The provided logo does not correspond with the registered business or is associated with another entity.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11014,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Display name does not adhere to formatting guidelines",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe display name contains content that is prohibited under Branded Calling guidelines. Prohibited content includes content that involves sex, hate, alcohol, firearms, or tobacco (SHAFT), government-impersonation keywords, offensive or defamatory language, or material that promotes illegal activity.\n\n### Possible causes\n\n- The display name contains SHAFT content, even if it forms part of the legal business name.\n- The display name contains prohibited keywords such as `FBI`, `Social Security Administration`, `Government`, `Police`, or `Medicare`.\n- The display name contains offensive, defamatory, profane, or racially insensitive content or acronyms.\n- The display name, logo, or call reason promotes illegal drugs, gambling, methods to evade legal penalties, threatening content, or terrorism and criminal activities.\n\n### Possible solutions\n\n- Review and update the display name to remove all prohibited or offensive content.\n- Ensure the updated content aligns with the registered business and does not fall within any prohibited category.\n- If you believe your business does not fall within a prohibited category, contact Twilio Support at trusthub-verify@twilio.com with additional information explaining your business.\n- Resubmit the registration for re-verification.\n\n#### Additional resources\n\n- [Getting Started Branded Calling](/docs/voice/branded-calling)\n",
    "causes": "* The display name contains SHAFT content, even if it forms part of the legal business name.\n* The display name contains prohibited keywords such as `FBI`, `Social Security Administration`, `Government`, `Police`, or `Medicare`.\n* The display name contains offensive, defamatory, profane, or racially insensitive content or acronyms.\n* The display name, logo, or call reason promotes illegal drugs, gambling, methods to evade legal penalties, threatening content, or terrorism and criminal activities.",
    "solutions": "* Review and update the display name to remove all prohibited or offensive content.\n* Ensure the updated content aligns with the registered business and does not fall within any prohibited category.\n* If you believe your business does not fall within a prohibited category, contact Twilio Support at trusthub-verify@twilio.com with additional information explaining your business.\n* Resubmit the registration for re-verification.",
    "description": "The display name contains content that is prohibited under Branded Calling guidelines. Prohibited content includes content that involves sex, hate, alcohol, firearms, or tobacco (SHAFT), government-impersonation keywords, offensive or defamatory language, or material that promotes illegal activity.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11015,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Logo does not comply with branding guidelines",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe logo contains content that is prohibited under Branded Calling guidelines. Prohibited content includes content that involves sex, hate, alcohol, firearms, or tobacco (SHAFT), government-impersonation keywords, offensive or defamatory language, or material that promotes illegal activity.\n\n### Possible causes\n\n- The logo contains SHAFT content, even if it forms part of the legal business name.\n- The logo contains prohibited keywords such as `FBI`, `Social Security Administration`, `Government`, `Police`, or `Medicare`.\n- The logo contains offensive, defamatory, profane, or racially insensitive content or acronyms.\n- The logo promotes illegal drugs, gambling, methods to evade legal penalties, threatening content, or terrorism and criminal activities.\n\n### Possible solutions\n\n- Review and update the logo to remove all prohibited or offensive content.\n- Ensure the updated content aligns with the registered business and does not fall within any prohibited category.\n- If you believe your business does not fall within a prohibited category, contact Twilio Support at trusthub-verify@twilio.com with additional information explaining your business.\n- Resubmit the registration for re-verification.\n\n#### Additional resources\n\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced#logo-restrictions)\n",
    "causes": "* The logo contains SHAFT content, even if it forms part of the legal business name.\n* The logo contains prohibited keywords such as `FBI`, `Social Security Administration`, `Government`, `Police`, or `Medicare`.\n* The logo contains offensive, defamatory, profane, or racially insensitive content or acronyms.\n* The logo promotes illegal drugs, gambling, methods to evade legal penalties, threatening content, or terrorism and criminal activities.",
    "solutions": "* Review and update the logo to remove all prohibited or offensive content.\n* Ensure the updated content aligns with the registered business and does not fall within any prohibited category.\n* If you believe your business does not fall within a prohibited category, contact Twilio Support at trusthub-verify@twilio.com with additional information explaining your business.\n* Resubmit the registration for re-verification.",
    "description": "The logo contains content that is prohibited under Branded Calling guidelines. Prohibited content includes content that involves sex, hate, alcohol, firearms, or tobacco (SHAFT), government-impersonation keywords, offensive or defamatory language, or material that promotes illegal activity.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11016,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Call reason does not adhere to the guidelines",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe call reason, or call reason contains content that is prohibited under Branded Calling guidelines. Prohibited content includes content that involves sex, hate, alcohol, firearms, or tobacco (SHAFT), government-impersonation keywords, offensive or defamatory language, or material that promotes illegal activity.\n\n### Possible causes\n\n- The call reason contains SHAFT content, even if it forms part of the legal business name.\n- The call reason contains prohibited keywords such as `FBI`, `Social Security Administration`, `Government`, `Police`, or `Medicare`.\n- The call reason contains offensive, defamatory, profane, or racially insensitive content or acronyms.\n- The call reason promotes illegal drugs, gambling, methods to evade legal penalties, threatening content, or terrorism and criminal activities.\n\n### Possible solutions\n\n- Review and update the call reason to remove all prohibited or offensive content.\n- Ensure the updated content aligns with the registered business and does not fall within any prohibited category.\n- If you believe your business does not fall within a prohibited category, contact Twilio Support at trusthub-verify@twilio.com with additional information explaining your business.\n- Resubmit the registration for re-verification.\n\n#### Additional resources\n\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced#call-reason-restrictions)\n",
    "causes": "* The call reason contains SHAFT content, even if it forms part of the legal business name.\n* The call reason contains prohibited keywords such as `FBI`, `Social Security Administration`, `Government`, `Police`, or `Medicare`.\n* The call reason contains offensive, defamatory, profane, or racially insensitive content or acronyms.\n* The call reason promotes illegal drugs, gambling, methods to evade legal penalties, threatening content, or terrorism and criminal activities.",
    "solutions": "* Review and update the call reason to remove all prohibited or offensive content.\n* Ensure the updated content aligns with the registered business and does not fall within any prohibited category.\n* If you believe your business does not fall within a prohibited category, contact Twilio Support at trusthub-verify@twilio.com with additional information explaining your business.\n* Resubmit the registration for re-verification.",
    "description": "The call reason, or call reason contains content that is prohibited under Branded Calling guidelines. Prohibited content includes content that involves sex, hate, alcohol, firearms, or tobacco (SHAFT), government-impersonation keywords, offensive or defamatory language, or material that promotes illegal activity.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11017,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Display name contains a typographical error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe display name submitted in the registration contains a typographical error that prevents it from being associated with the registered business.\n\n### Possible causes\n\n- The display name contains a spelling or typographical error.\n\n### Possible solutions\n\n- Review and correct the display name to ensure it is free of typographical errors and accurately reflects the registered business. Resubmit the registration for re-verification.\n\n#### Additional resources\n\n- [Getting Started Branded Calling](/docs/voice/branded-calling)\n",
    "causes": "* The display name contains a spelling or typographical error.",
    "solutions": "* Review and correct the display name to ensure it is free of typographical errors and accurately reflects the registered business. Resubmit the registration for re-verification.",
    "description": "The display name submitted in the registration contains a typographical error that prevents it from being associated with the registered business.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11018,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Display name must not be a phone number",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe display name submitted in the bundle is a phone number, which is not permitted.\n\n### Possible causes\n\n- The provided display name is a phone number rather than a business name or identifier.\n\n### Possible solutions\n\n- Review and update the display name to ensure it does not contain a phone number and accurately reflects the registered business. Resubmit the registration for re-verification.\n\n#### Additional resources\n\n- [Getting Started Branded Calling](/docs/voice/branded-calling)\n",
    "causes": "* The provided display name is a phone number rather than a business name or identifier.",
    "solutions": "* Review and update the display name to ensure it does not contain a phone number and accurately reflects the registered business. Resubmit the registration for re-verification.",
    "description": "The display name submitted in the bundle is a phone number, which is not permitted.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11019,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Logo does not match display name",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe brand logo submitted in the registration cannot be associated with the display name or the registered business.\n\n### Possible causes\n\n- The uploaded brand logo cannot be linked to the display name or the registered business.\n\n### Possible solutions\n\n- Review and update the logo to ensure it aligns with both the display name and the registered business. Resubmit the registration for re-verification.\n\n#### Additional resources\n\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced#logo-restrictions)\n",
    "causes": "* The uploaded brand logo cannot be linked to the display name or the registered business.",
    "solutions": "* Review and update the logo to ensure it aligns with both the display name and the registered business. Resubmit the registration for re-verification.",
    "description": "The brand logo submitted in the registration cannot be associated with the display name or the registered business.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11020,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Call reason must not contain a web link",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe call reason submitted in the registration includes a web link, which is not permitted.\n\n### Possible causes\n\n- The call reason contains a URL or web link.\n\n### Possible solutions\n\n- Review and update the call reason to remove any web links.\n- Ensure the call reason accurately reflects the purpose of the call and aligns with the declared use case.\n- Resubmit the registration for re-verification.\n\n#### Additional resources\n\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced#call-reason-restrictions)\n",
    "causes": "* The call reason contains a URL or web link.",
    "solutions": "* Review and update the call reason to remove any web links.\n* Ensure the call reason accurately reflects the purpose of the call and aligns with the declared use case.\n* Resubmit the registration for re-verification.",
    "description": "The call reason submitted in the registration includes a web link, which is not permitted.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11021,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Call reason must not contain personally identifiable information",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe call reason submitted in the registration includes personally identifiable information (PII), which is not permitted.\n\n### Possible causes\n\n- The call reason contains PII.\n\n### Possible solutions\n\n- Review and update the call reason to ensure it does not include any PII. Resubmit the registration for re-verification.\n\n#### Additional resources\n\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced#call-reason-restrictions)\n",
    "causes": "* The call reason contains PII.",
    "solutions": "* Review and update the call reason to ensure it does not include any PII. Resubmit the registration for re-verification.",
    "description": "The call reason submitted in the registration includes personally identifiable information (PII), which is not permitted.",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11022,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Brand Verification — No Customer Response",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe authorized contact did not respond to the verification email requesting confirmation of brand details and Letter of Authorization (LOA).\n\n### Possible causes\n\n- The verification email may have been routed to spam, the brand contact email on the submission may be incorrect or no longer active.\n\n### Possible solutions\n\n- Verify that the authorized contact email on the registration is correct, active, and monitored by the authorized contact. Check spam and junk folders for the verification email.\n\n#### Additional resources\n\n- [Getting Started Branded Calling](/docs/voice/branded-calling)\n",
    "causes": "* The verification email may have been routed to spam, the brand contact email on the submission may be incorrect or no longer active.",
    "solutions": "* Verify that the authorized contact email on the registration is correct, active, and monitored by the authorized contact. Check spam and junk folders for the verification email.",
    "description": "The authorized contact did not respond to the verification email requesting confirmation of brand details and Letter of Authorization (LOA).",
    "date_created": "2026-06-10T18:37:13+05:30",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 11100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid URL format",
    "secondary_message": "The format of the provided URL is invalid.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you configure or submit a URL that isn't in a valid absolute format. Use a fully qualified `http://` or `https://` URL that Twilio can reach over the public Internet for phone number webhooks, outbound call instructions, and TwiML callback URLs.\n\n### Possible causes\n\n- You configured an invalid webhook URL for a phone number.\n- You passed an invalid URL in an outbound call request.\n- You used an invalid URL in a `<Play>` or `<Redirect>` verb body.\n- You provided an invalid URL for a verb `action` attribute.\n- You didn't provide a URL for the `<Record>` verb `action` attribute when modifying a live call.\n- You included unsupported characters in the authentication portion of the URL.\n\n### Possible solutions\n\n- Submit a fully qualified URL that includes the protocol, hostname, path, and properly URL-encoded query parameters.\n- Make sure the endpoint is publicly reachable. Webhook requests can't be sent to a private or local URL directly.\n- If you are creating an outbound call, provide a valid absolute `Url` or send `Twiml` directly instead of having Twilio fetch instructions from a URL.\n- Review any `sms_url`, `voice_url`, or verb `action` value you configured and remove malformed URL components or unsupported authentication characters.\n- When you test locally, expose your application through a public tunnel and use the generated public HTTPS URL.\n\n#### Additional resources\n\n- [Webhooks Overview](/docs/usage/webhooks/webhooks-overview)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n- [Call resource](/docs/voice/api/call-resource)\n",
    "causes": "* You configured an invalid webhook URL for a phone number.\n* You passed an invalid URL in an outbound call request.\n* You used an invalid URL in a `<Play>` or `<Redirect>` verb body.\n* You provided an invalid URL for a verb `action` attribute.\n* You didn't provide a URL for the `<Record>` verb `action` attribute when modifying a live call.\n* You included unsupported characters in the authentication portion of the URL.",
    "solutions": "* Submit a fully qualified URL that includes the protocol, hostname, path, and properly URL-encoded query parameters.\n* Make sure the endpoint is publicly reachable. Webhook requests can't be sent to a private or local URL directly.\n* If you are creating an outbound call, provide a valid absolute `Url` or send `Twiml` directly instead of having Twilio fetch instructions from a URL.\n* Review any `sms_url`, `voice_url`, or verb `action` value you configured and remove malformed URL components or unsupported authentication characters.\n* When you test locally, expose your application through a public tunnel and use the generated public HTTPS URL.",
    "description": "This error occurs when you configure or submit a URL that isn't in a valid absolute format. Use a fully qualified `http://` or `https://` URL that Twilio can reach over the public Internet for phone number webhooks, outbound call instructions, and TwiML callback URLs.",
    "date_created": "2016-03-31T17:13:23Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 11200,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "HTTP retrieval failure",
    "secondary_message": "Twilio's servers were unable to fetch a non-error response from the designated URL.",
    "product": "Branded Comms, Programmable Voice",
    "products_used": [
      "messaging",
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio was unable to retrieve a successful response from your webhook URL. This error means Twilio sent an HTTP request to the URL you configured (for example, a TwiML endpoint or a status callback) and received either a non-2xx response, a connection failure, or a response it could not parse. When possible, Twilio raises a more specific error code. Error 11200 appears when the exact cause does not match a narrower code.\n\n### Possible causes\n\n- Your web server returned a 4xx or 5xx HTTP status code to Twilio.\n- A network disruption between Twilio and your server prevented the connection from completing. This can occur within your infrastructure, within Twilio, or anywhere on the public internet.\n- A firewall, WAF, or rate limiter blocked the inbound request from Twilio. WAF rules that apply to only a subset of requests can cause intermittent failures.\n- The webhook URL redirects (302) to an invalid or unreachable destination.\n- The URL is protected by HTTP authentication that Twilio cannot satisfy.\n- Your server does not accept HTTP `POST` requests for the resource (for example, a static `.xml` or `.html` file served by a server that only allows `GET`).\n- The URL host resolves to a private or localhost IP address that Twilio cannot reach.\n- No `Content-Type` header is included in the response, or the `Content-Type` does not match the actual content (for example, serving an MP3 file with `Content-Type: audio/x-wav` instead of `Content-Type: audio/mpeg`).\n- Your server takes too long to respond, causing the request to time out before Twilio receives a complete response.\n- You applied [webhook connection overrides](/docs/usage/webhooks/webhooks-connection-overrides) that reduced the timeout or changed connection behavior in a way that conflicts with your server's response time.\n\n### Possible solutions\n\n- Confirm your webhook URL returns a 2xx status code. Send a test request from your own machine or a monitoring tool to verify.\n- Check your server logs at the network edge to determine whether Twilio's request arrived. If TCP connections from Twilio are not reaching your infrastructure, review firewall, WAF, and load balancer rules that may block or rate-limit requests from Twilio. See [Webhooks and IP addresses](/docs/usage/webhooks/webhooks-security#webhooks-and-ip-addresses) for details on Twilio's cloud architecture.\n- If your URL performs a redirect, verify the redirect target is a valid, publicly reachable URL that also returns a 2xx response.\n- Remove HTTP authentication from the webhook endpoint, or use [webhook signature validation](/docs/usage/webhooks/webhooks-security) to verify requests instead.\n- Ensure your web server allows HTTP `POST` requests to the webhook path. If you serve static TwiML files, configure the server to respond to both `GET` and `POST`.\n- Verify the URL host resolves to a public IP address. Twilio cannot reach `127.0.0.1`, `10.x.x.x`, `192.168.x.x`, or other private ranges.\n- Measure response time from your server. If processing takes more than a few seconds, respond immediately with an empty `200 OK` or `204 No Content` and process the event asynchronously. For inbound messages, you can reply at any time by calling the REST API.\n- Remove any [webhook connection overrides](/docs/usage/webhooks/webhooks-connection-overrides) to restore default timeout and connection behavior, then test again.\n- Verify the response includes a `Content-Type` header that matches the actual body content.\n- Set a fallback URL on your Twilio phone number or TwiML app, ideally hosted on separate infrastructure, so Twilio can retry on a different endpoint if your primary URL fails.\n- If the error is intermittent and you have confirmed the requests are reaching your server correctly, collect the timestamps and request SIDs and [open a support ticket](https://www.twilio.com/console/support/tickets/create).\n\n#### Additional resources\n\n- [Webhook security](/docs/usage/webhooks/webhooks-security)\n- [Debugging tools](/docs/messaging/guides/debugging-tools)\n- [Event Streams](/docs/events)\n",
    "causes": "* Your web server returned a 4xx or 5xx HTTP status code to Twilio.\n* A network disruption between Twilio and your server prevented the connection from completing. This can occur within your infrastructure, within Twilio, or anywhere on the public internet.\n* A firewall, WAF, or rate limiter blocked the inbound request from Twilio. WAF rules that apply to only a subset of requests can cause intermittent failures.\n* The webhook URL redirects (302) to an invalid or unreachable destination.\n* The URL is protected by HTTP authentication that Twilio cannot satisfy.\n* Your server does not accept HTTP `POST` requests for the resource (for example, a static `.xml` or `.html` file served by a server that only allows `GET`).\n* The URL host resolves to a private or localhost IP address that Twilio cannot reach.\n* No `Content-Type` header is included in the response, or the `Content-Type` does not match the actual content (for example, serving an MP3 file with `Content-Type: audio/x-wav` instead of `Content-Type: audio/mpeg`).\n* Your server takes too long to respond, causing the request to time out before Twilio receives a complete response.\n* You applied [webhook connection overrides](/docs/usage/webhooks/webhooks-connection-overrides) that reduced the timeout or changed connection behavior in a way that conflicts with your server's response time.",
    "solutions": "* Confirm your webhook URL returns a 2xx status code. Send a test request from your own machine or a monitoring tool to verify.\n* Check your server logs at the network edge to determine whether Twilio's request arrived. If TCP connections from Twilio are not reaching your infrastructure, review firewall, WAF, and load balancer rules that may block or rate-limit requests from Twilio. See [Webhooks and IP addresses](/docs/usage/webhooks/webhooks-security#webhooks-and-ip-addresses) for details on Twilio's cloud architecture.\n* If your URL performs a redirect, verify the redirect target is a valid, publicly reachable URL that also returns a 2xx response.\n* Remove HTTP authentication from the webhook endpoint, or use [webhook signature validation](/docs/usage/webhooks/webhooks-security) to verify requests instead.\n* Ensure your web server allows HTTP `POST` requests to the webhook path. If you serve static TwiML files, configure the server to respond to both `GET` and `POST`.\n* Verify the URL host resolves to a public IP address. Twilio cannot reach `127.0.0.1`, `10.x.x.x`, `192.168.x.x`, or other private ranges.\n* Measure response time from your server. If processing takes more than a few seconds, respond immediately with an empty `200 OK` or `204 No Content` and process the event asynchronously. For inbound messages, you can reply at any time by calling the REST API.\n* Remove any [webhook connection overrides](/docs/usage/webhooks/webhooks-connection-overrides) to restore default timeout and connection behavior, then test again.\n* Verify the response includes a `Content-Type` header that matches the actual body content.\n* Set a fallback URL on your Twilio phone number or TwiML app, ideally hosted on separate infrastructure, so Twilio can retry on a different endpoint if your primary URL fails.\n* If the error is intermittent and you have confirmed the requests are reaching your server correctly, collect the timestamps and request SIDs and [open a support ticket](https://www.twilio.com/console/support/tickets/create).",
    "description": "Twilio was unable to retrieve a successful response from your webhook URL. This error means Twilio sent an HTTP request to the URL you configured (for example, a TwiML endpoint or a status callback) and received either a non-2xx response, a connection failure, or a response it could not parse. When possible, Twilio raises a more specific error code. Error 11200 appears when the exact cause does not match a narrower code.",
    "date_created": "2016-03-31T17:13:23Z",
    "last_updated": "2026-06-22T15:33:29+01:00"
  },
  {
    "code": 11201,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TCP connection timed out",
    "secondary_message": "Twilio cannot establish a TCP connection to your web server. The two attempts to connect to your web server were timed out. Each connection attempt has a 5 second timeout.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio cannot establish a TCP connection to your web server. The two attempts to connect to your web server were timed out. Each connection attempt has a 5 second timeout.\n\n### Possible causes\n\n- firewall in your network blocking incoming TCP traffic\n- network outage between Twilio and your web server\n- invalid host part in the HTTP URL pointing to non-existing host or private IP address\n\n### Possible solutions\n\n- verify firewall configuration in your network or on the web server\n- verify network connectivity to your web server\n- verify the HTTP URL provided is accessible to the public Internet\n",
    "causes": "* firewall in your network blocking incoming TCP traffic\n* network outage between Twilio and your web server\n* invalid host part in the HTTP URL pointing to non-existing host or private IP address",
    "solutions": "* verify firewall configuration in your network or on the web server\n* verify network connectivity to your web server\n* verify the HTTP URL provided is accessible to the public Internet",
    "description": "Twilio cannot establish a TCP connection to your web server. The two attempts to connect to your web server were timed out. Each connection attempt has a 5 second timeout.",
    "date_created": "2018-07-26T20:08:21Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11202,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TCP connection refused",
    "secondary_message": "Twilio cannot establish a TCP connection to your web server. Your web server rejected our two connection attempts.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio cannot establish a TCP connection to your web server. Your web server rejected our two connection attempts.\n\n### Possible causes\n\n- invalid port number in the HTTP URL\n- your web server process is down so no process is listening on the port\n- your web server is in a degraded state and is not accepting new connections (e.g., overloaded)\n\n### Possible solutions\n\n- verify the HTTP URL provided has the correct host and port number of your web server\n- verify your web server is running and listening on the correct port\n- verify your web server is properly provisioned to handle all requests\n",
    "causes": "* invalid port number in the HTTP URL\n* your web server process is down so no process is listening on the port\n* your web server is in a degraded state and is not accepting new connections (e.g., overloaded)",
    "solutions": "* verify the HTTP URL provided has the correct host and port number of your web server\n* verify your web server is running and listening on the correct port\n* verify your web server is properly provisioned to handle all requests",
    "description": "Twilio cannot establish a TCP connection to your web server. Your web server rejected our two connection attempts.",
    "date_created": "2018-07-26T20:08:56Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11203,
    "log_level": "ERROR",
    "log_type": null,
    "message": "HTTP communication total time out triggered",
    "secondary_message": "All attempts to communicate with your web server were timed out.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAll attempts to communicate with your web server were timed out. You set the total timeout using the tt parameter in the URL fragment identifier.\n\n### Possible solutions\n\n- Adjust the 'tt' (total timeout) parameter in the fragment part of the URL, the one after '#'.\n",
    "causes": null,
    "solutions": "* Adjust the 'tt' (total timeout) parameter in the fragment part of the URL, the one after '#'.",
    "description": "All attempts to communicate with your web server were timed out. You set the total timeout using the tt parameter in the URL fragment identifier.",
    "date_created": "2019-01-31T00:28:56Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 11205,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "HTTP connection failure",
    "secondary_message": "There was a network failure attempting to connect to this URL",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### HTTP connection failure\n\nThere was a network failure attempting to connect to this URL. Twilio will try for 10 seconds to establish a TCP connection to your URL (two 5-second attempts). Twilio will wait for a total of 15 seconds to receive an HTTP response. This includes the TCP connection time, so if it took six seconds to establish a TCP connection, your server would have 9 seconds to deliver an HTTP response. If either of those timers expire, we fail the request, fire a notification, and try your fallback URL, if one is specified.\n\n### Possible causes\n\n- Network outages between Twilio and your web server.\n- URLs that reference private IP addresses or localhost.\n- Twilio's TCP timeout is 10 seconds. If you see an error in Request Inspector after more than 10000 milliseconds, Twilio could locate your server, but could not establish a TCP connection with it.\n- Twilio's HTTP timeout is 15 seconds. If you see an error in Request Inspector returned after more than 15000 milliseconds, Twilio was able to establish a TCP connection with your server, but the HTTP response from the server failed.\n\n### Possible solutions\n\n- Verify the URL provided is accessible to the public internet.\n- Verify network connectivity to your web server.\n- Check your TCP logs to verify inbound connection attempts are successful.\n- Check HTTP server logs to verify a response was generated and returned within the timeout.\n- Check your edge element logs to verify responses are making it out of your infrastructure.\n",
    "causes": "* Network outages between Twilio and your web server.\n* URLs that reference private IP addresses or localhost.\n* Twilio's TCP timeout is 10 seconds. If you see an error in Request Inspector after more than 10000 milliseconds, Twilio could locate your server, but could not establish a TCP connection with it.\n* Twilio's HTTP timeout is 15 seconds. If you see an error in Request Inspector returned after more than 15000 milliseconds, Twilio was able to establish a TCP connection with your server, but the HTTP response from the server failed.",
    "solutions": "* Verify the URL provided is accessible to the public internet.\n* Verify network connectivity to your web server.\n* Check your TCP logs to verify inbound connection attempts are successful.\n* Check HTTP server logs to verify a response was generated and returned within the timeout.\n* Check your edge element logs to verify responses are making it out of your infrastructure.",
    "description": "",
    "date_created": "2016-03-31T17:13:23Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11206,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "HTTP protocol violation",
    "secondary_message": "There was an error speaking HTTP to the target URL.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a valid HTTP exchange can't be completed with the webhook URL configured for your messaging workflow. For incoming messages, Twilio makes an HTTP request to your webhook and expects a valid response. Invalid cookie data in that response can also trigger this error.\n\n### Possible causes\n\n- Your webhook endpoint returned malformed or incomplete HTTP data.\n- A network interruption broke the connection before Twilio received a valid response.\n- The configured URL sent HTTP traffic to an HTTPS port.\n- Your response included an invalid cookie character such as `\\t`, `\\r`, `\\n`, `\\v`, or `\\f`.\n- Your response set a cookie with an empty name.\n\n### Possible solutions\n\n- Make sure your webhook URL returns a valid HTTP response. When you respond to an incoming message with TwiML, return a supported content type such as `text/xml`, `application/xml`, or `text/html`.\n- Confirm that the URL and port match the protocol you configured. Do not send HTTP traffic to an HTTPS-only port.\n- Check your application, proxy, and network path for interruptions that can corrupt the HTTP exchange.\n- Remove invalid control characters from cookies, and make sure every cookie has a non-empty name before your application returns the response.\n- Review the failed request and response in Messaging Logs to inspect what Twilio received from your endpoint.\n\n#### Additional resources\n\n- [Twilio's request to your incoming message Webhook URL](/docs/messaging/guides/webhook-request)\n- [TwiML for Programmable Messaging](/docs/messaging/twiml)\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n",
    "causes": "* Your webhook endpoint returned malformed or incomplete HTTP data.\n* A network interruption broke the connection before Twilio received a valid response.\n* The configured URL sent HTTP traffic to an HTTPS port.\n* Your response included an invalid cookie character such as `\\t`, `\\r`, `\\n`, `\\v`, or `\\f`.\n* Your response set a cookie with an empty name.",
    "solutions": "* Make sure your webhook URL returns a valid HTTP response. When you respond to an incoming message with TwiML, return a supported content type such as `text/xml`, `application/xml`, or `text/html`.\n* Confirm that the URL and port match the protocol you configured. Do not send HTTP traffic to an HTTPS-only port.\n* Check your application, proxy, and network path for interruptions that can corrupt the HTTP exchange.\n* Remove invalid control characters from cookies, and make sure every cookie has a non-empty name before your application returns the response.\n* Review the failed request and response in Messaging Logs to inspect what Twilio received from your endpoint.",
    "description": "This error occurs when a valid HTTP exchange can't be completed with the webhook URL configured for your messaging workflow. For incoming messages, Twilio makes an HTTP request to your webhook and expects a valid response. Invalid cookie data in that response can also trigger this error.",
    "date_created": "2016-03-31T17:13:24Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 11210,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "HTTP bad host name",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe DNS entry for the URL's host cannot be resolved.\n\n### Possible causes\n\n- URL references a locally defined hostname (check your `/etc/hosts`)\n- URL references an undefined hostname\n\n### Possible solutions\n\n- Verify the hostname of the URL has a valid DNS record the can be resolved by the public\n",
    "causes": "* URL references a locally defined hostname (check your `/etc/hosts`)\n* URL references an undefined hostname",
    "solutions": "* Verify the hostname of the URL has a valid DNS record the can be resolved by the public",
    "description": "The DNS entry for the URL's host cannot be resolved.",
    "date_created": "2016-03-31T17:13:24Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11215,
    "log_level": "ERROR",
    "log_type": null,
    "message": "HTTP too many redirects",
    "secondary_message": "this request has been redirected too many times and may be in a loop.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nthis request has been redirected too many times and may be in a loop.\n\n### Possible causes\n\n- Twilio received too many HTTP redirect messages in a row for this request.\n\n### Possible solutions\n\n- Make certain your code is not stuck in an infinite loop.\n",
    "causes": "* Twilio received too many HTTP redirect messages in a row for this request.",
    "solutions": "* Make certain your code is not stuck in an infinite loop.",
    "description": "this request has been redirected too many times and may be in a loop.",
    "date_created": "2016-03-31T17:13:25Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11216,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "HTTP invalid redirect",
    "secondary_message": "The response from your server contained an invalid redirect.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio sent a webhook to your server and your server responded with a 3xx status code that was not a valid redirect.\n\n### Possible causes\n\n- Your server responded with an non-redirect HTTP status code in the 3xx series. Twilio will only follow redirects for status codes 301, 302, 303, and 307.\n- Your server did not include a location header in the redirect response\n\n### Possible solutions\n\n- Update your webhook configuration specifying the final URL you would like to be called, removing the need for redirects.\n- Ensure you are using a standard redirect HTTP status code (301, 302, 303, or 307)\n- Ensure that you are including a valid url in the location header of your response.\n",
    "causes": "* Your server responded with an non-redirect HTTP status code in the 3xx series. Twilio will only follow redirects for status codes 301, 302, 303, and 307.\n* Your server did not include a location header in the redirect response",
    "solutions": "* Update your webhook configuration specifying the final URL you would like to be called, removing the need for redirects.\n* Ensure you are using a standard redirect HTTP status code (301, 302, 303, or 307)\n* Ensure that you are including a valid url in the location header of your response.",
    "description": "Twilio sent a webhook to your server and your server responded with a 3xx status code that was not a valid redirect.",
    "date_created": "2023-10-04T07:53:56Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11217,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "HTTP error response code",
    "secondary_message": "Your server responded to the webhook request with an error response (4xx or 5xx)",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio sent a webhook to your server and your server responded with a 4xx or 5xx status code.\n\n### Possible causes\n\n- There was an error in your server (500).\n- There was a problem between your proxy and your server (502, 503, 504).\n- The URL specified in your webhook configuration is incorrect (404, 410).\n- Your server is attempting to rate limit Twilio's webhook requests (429). Twilio's webhooks do not support rate limiting.\n- Your webhook configuration does not have appropriate permissions to call the configured URL (403).\n\n### Possible solutions\n\n- Review the configured webhook URL to ensure that it is correct.\n- Look for and fix errors in your server logs.\n- Ensure that you can get 2xx status codes by calling your webhook URL.\n- Review your proxy and authentication configurations.\n- For rate limiting issues, consider shifting to Event Streams HTTP Sink which [support rate limiting](/docs/events/event-delivery-and-duplication#what-does-throttle-sink-means-for-eventstreams).\n",
    "causes": "* There was an error in your server (500).\n* There was a problem between your proxy and your server (502, 503, 504).\n* The URL specified in your webhook configuration is incorrect (404, 410).\n* Your server is attempting to rate limit Twilio's webhook requests (429). Twilio's webhooks do not support rate limiting.\n* Your webhook configuration does not have appropriate permissions to call the configured URL (403).",
    "solutions": "* Review the configured webhook URL to ensure that it is correct.\n* Look for and fix errors in your server logs.\n* Ensure that you can get 2xx status codes by calling your webhook URL.\n* Review your proxy and authentication configurations.\n* For rate limiting issues, consider shifting to Event Streams HTTP Sink which [support rate limiting](/docs/events/event-delivery-and-duplication#what-does-throttle-sink-means-for-eventstreams).",
    "description": "Twilio sent a webhook to your server and your server responded with a 4xx or 5xx status code.",
    "date_created": "2023-10-04T07:56:09Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11220,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SSL/TLS Handshake Error",
    "secondary_message": "During SSL/TLS negotiation, Twilio experienced a connection reset.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nDuring SSL/TLS negotiation, Twilio experienced a connection reset.\n\n### Possible causes\n\n- Incompatible cipher suites in use by the client and the server. This would require the client to use (or enable) a cipher suite that is supported by the server.\n\n### Possible solutions\n\n- Verify your TLS version and cipher suites are compatible with Twilio's security requirements. For more information, see [Monitoring Updates to Twilio REST API Security Settings](https://help.twilio.com/articles/226478767).\n",
    "causes": "* Incompatible cipher suites in use by the client and the server. This would require the client to use (or enable) a cipher suite that is supported by the server.",
    "solutions": "* Verify your TLS version and cipher suites are compatible with Twilio's security requirements. For more information, see [Monitoring Updates to Twilio REST API Security Settings](https://help.twilio.com/articles/226478767).",
    "description": "During SSL/TLS negotiation, Twilio experienced a connection reset.",
    "date_created": "2016-03-31T17:13:25Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11235,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Certificate Invalid - Domain Mismatch",
    "secondary_message": "Twilio tried to validate your SSL certificate but your certificate has a domain name that does not match the domain we requested.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio tried to validate your SSL certificate but your certificate has a domain name that does not match the domain we requested.\n\n### Possible causes\n\n- Your Certificate Name or Certificate Alternate Name on your SSL certificate does not match the domain Twilio requested.\n\n### Possible solutions\n\n- Obtain a SSL certificate with a Certificate Name or Certificate Alternate Name that matches this domain.\n",
    "causes": "* Your Certificate Name or Certificate Alternate Name on your SSL certificate does not match the domain Twilio requested.",
    "solutions": "* Obtain a SSL certificate with a Certificate Name or Certificate Alternate Name that matches this domain.",
    "description": "Twilio tried to validate your SSL certificate but your certificate has a domain name that does not match the domain we requested.",
    "date_created": "2016-03-31T17:13:25Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11236,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Certificate Invalid - Certificate Expired",
    "secondary_message": "Twilio tried to validate your SSL certificate but your certificate has expired.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when it makes an HTTPS request to your webhook or callback URL and the endpoint presents an expired certificate. Twilio logs webhook invocation problems in the Debugger, including the request and response details for the failed webhook request.\n\n### Possible causes\n\n- The certificate served by your HTTPS endpoint is past its expiration date.\n- Twilio is validating the HTTPS endpoint you configured for a webhook or callback URL, and that validation fails because the certificate is expired.\n\n### Possible solutions\n\n- Renew or replace the expired certificate for the exact hostname used by your webhook or callback URL.\n- After you renew the certificate, open the webhook URL in a browser or test it with your HTTP client to confirm the endpoint no longer returns certificate errors.\n- Review the Debugger or Request Inspector in Console to inspect the failing webhook request and confirm Twilio can reach the updated endpoint.\n\n#### Additional resources\n\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n- [Debugging your application](/docs/usage/troubleshooting/debugging-your-application)\n- [Getting started with Twilio webhooks](/docs/usage/webhooks/getting-started-twilio-webhooks)\n",
    "causes": "* The certificate served by your HTTPS endpoint is past its expiration date.\n* Twilio is validating the HTTPS endpoint you configured for a webhook or callback URL, and that validation fails because the certificate is expired.",
    "solutions": "* Renew or replace the expired certificate for the exact hostname used by your webhook or callback URL.\n* After you renew the certificate, open the webhook URL in a browser or test it with your HTTP client to confirm the endpoint no longer returns certificate errors.\n* Review the Debugger or Request Inspector in Console to inspect the failing webhook request and confirm Twilio can reach the updated endpoint.",
    "description": "Twilio returns this error when it makes an HTTPS request to your webhook or callback URL and the endpoint presents an expired certificate. Twilio logs webhook invocation problems in the Debugger, including the request and response details for the failed webhook request.",
    "date_created": "2016-03-31T17:13:25Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 11237,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Certificate Invalid - Could not find path to certificate",
    "secondary_message": "Twilio tried to validate your SSL certificate but was unable to find it in our certificate store.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio tried to validate your SSL certificate but was unable to find it in our certificate store.\n\n### Possible causes\n\n- You are using a self signed certificate.\n- The certificate authority you are using is not on our list of approved certificate authorities.\n- Your certificate chain is incomplete and requires an additional download.\n\n### Possible solutions\n\n- Do not use a self signed certificate.\n- Concatenate your certificate chain so that no additional download is required.\n- Twilio uses CAs that are approved by Mozilla, you can find the full list [here](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport).\n- For testing purposes you can [disable SSL Certificate Validation in Console](https://www.twilio.com/console/project/settings).\n",
    "causes": "* You are using a self signed certificate.\n* The certificate authority you are using is not on our list of approved certificate authorities.\n* Your certificate chain is incomplete and requires an additional download.",
    "solutions": "* Do not use a self signed certificate.\n* Concatenate your certificate chain so that no additional download is required.\n* Twilio uses CAs that are approved by Mozilla, you can find the full list [here](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport).\n* For testing purposes you can [disable SSL Certificate Validation in Console](https://www.twilio.com/console/project/settings).",
    "description": "Twilio tried to validate your SSL certificate but was unable to find it in our certificate store.",
    "date_created": "2016-03-31T17:13:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11240,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "HTTP connection edge location is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThere was an error connecting to the URL due to an invalid edge location parameter.\n\n### Possible causes\n\n- The edge location(s) specified in the 'e' parameter of your connection settings are not valid\n\n### Possible solutions\n\n- Correct the 'e' parameter in the fragment part of the URL, the one after '#'.\n",
    "causes": "* The edge location(s) specified in the 'e' parameter of your connection settings are not valid",
    "solutions": "* Correct the 'e' parameter in the fragment part of the URL, the one after '#'.",
    "description": "There was an error connecting to the URL due to an invalid edge location parameter.",
    "date_created": "2019-02-04T18:34:22Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11241,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "HTTP connection edge location is not supported",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThere was an error connecting to the URL due to an unsupported edge location parameter.\n\n### Possible causes\n\n- The edge location(s) specified in the 'e' parameter of your connection settings are not currently supported by Twilio.\n\n### Possible solutions\n\n- Correct the 'e' parameter in the fragment part of the URL, the one after '#'.\n",
    "causes": "* The edge location(s) specified in the 'e' parameter of your connection settings are not currently supported by Twilio.",
    "solutions": "* Correct the 'e' parameter in the fragment part of the URL, the one after '#'.",
    "description": "There was an error connecting to the URL due to an unsupported edge location parameter.",
    "date_created": "2019-02-04T18:35:12Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11242,
    "log_level": "ERROR",
    "log_type": null,
    "message": "HTTP connection over Twilio Interconnect is not allowed",
    "secondary_message": "Your account has not been enabled for HTTP connections over Twilio Interconnect.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour account has not been enabled for HTTP connections over Twilio Interconnect.\n\n### Possible solutions\n\n- Correct the 'r' (region) parameter in the fragment part of the URL, the one after '#'. Remove those with the '-ix' suffix.\n- Contact Twilio [customer support](/help/contact) to inquire further.\n",
    "causes": null,
    "solutions": "* Correct the 'r' (region) parameter in the fragment part of the URL, the one after '#'. Remove those with the '-ix' suffix.\n* Contact Twilio [customer support](/help/contact) to inquire further.",
    "description": "Your account has not been enabled for HTTP connections over Twilio Interconnect.",
    "date_created": "2019-02-04T18:37:33Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 11243,
    "log_level": "ERROR",
    "log_type": null,
    "message": "HTTP retry policy is invalid",
    "secondary_message": "One or more retry policies specified in the 'rp' parameter of your connection settings are invalid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne or more retry policies specified in the 'rp' parameter of your connection settings are invalid.\n\n### Possible solutions\n\n- Correct the 'rp' (retry policy) parameter in the fragment part of the URL, the one after '#'.\n",
    "causes": null,
    "solutions": "* Correct the 'rp' (retry policy) parameter in the fragment part of the URL, the one after '#'.",
    "description": "One or more retry policies specified in the 'rp' parameter of your connection settings are invalid.",
    "date_created": "2019-01-31T00:29:58Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 11251,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Fatal protocol violation",
    "secondary_message": "There was an HTTP protocol violation speaking to the target URL.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio encountered an unrecoverable HTTP protocol violation while speaking to the target URL you configured. This usually means Twilio could not complete a valid HTTP exchange with your webhook or callback endpoint, or the response included invalid cookie data.\n\n### Possible causes\n\n- Your target URL returned malformed or incomplete HTTP data.\n- A network interruption broke the connection before Twilio received a valid response.\n- The configured URL sent `http://` traffic to an HTTPS-only port.\n- Your response included an invalid cookie character such as `\\t`, `\\r`, `\\n`, `\\v`, or `\\f`.\n- Your response set a cookie with an empty name.\n\n### Possible solutions\n\n- Make sure the target URL returns a complete and valid HTTP response. If Twilio expects TwiML, return valid TwiML. If Twilio only needs an acknowledgment, return `200 OK` or `204 No Content`.\n- Confirm that the URL scheme and port match your server configuration. Do not send `http://` traffic to an HTTPS-only port.\n- Review your application, proxy, load balancer, and network path for interruptions that can corrupt or truncate the HTTP exchange.\n- Remove invalid control characters from any `Set-Cookie` header, and make sure every cookie has a non-empty name.\n- Test the endpoint directly with a browser, `curl`, or Postman so you can inspect the raw response and catch malformed headers or unexpected redirects.\n- Review the Twilio Debugger and request inspector to see the request Twilio made and the response your application returned.\n\n#### Additional resources\n\n- [Webhooks Overview](/docs/usage/webhooks/webhooks-overview)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n",
    "causes": "* Your target URL returned malformed or incomplete HTTP data.\n* A network interruption broke the connection before Twilio received a valid response.\n* The configured URL sent `http://` traffic to an HTTPS-only port.\n* Your response included an invalid cookie character such as `\\t`, `\\r`, `\\n`, `\\v`, or `\\f`.\n* Your response set a cookie with an empty name.",
    "solutions": "* Make sure the target URL returns a complete and valid HTTP response. If Twilio expects TwiML, return valid TwiML. If Twilio only needs an acknowledgment, return `200 OK` or `204 No Content`.\n* Confirm that the URL scheme and port match your server configuration. Do not send `http://` traffic to an HTTPS-only port.\n* Review your application, proxy, load balancer, and network path for interruptions that can corrupt or truncate the HTTP exchange.\n* Remove invalid control characters from any `Set-Cookie` header, and make sure every cookie has a non-empty name.\n* Test the endpoint directly with a browser, `curl`, or Postman so you can inspect the raw response and catch malformed headers or unexpected redirects.\n* Review the Twilio Debugger and request inspector to see the request Twilio made and the response your application returned.",
    "description": "Twilio encountered an unrecoverable HTTP protocol violation while speaking to the target URL you configured. This usually means Twilio could not complete a valid HTTP exchange with your webhook or callback endpoint, or the response included invalid cookie data.",
    "date_created": "2016-03-31T17:13:26Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 11300,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid template URL",
    "secondary_message": "The provided URL template has an invalid format. Please check to see if you have unclosed brackets.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error means the URL template you provided is not in a valid format. A common cause is an unclosed bracket in the template.\n\n### Possible causes\n\n- The template contains unclosed `{` or `}` brackets.\n- The template is not a fully qualified URL and is missing required parts such as the protocol, hostname, path, or properly URL-encoded query parameters.\n- The URL points to a local or private address that Twilio cannot reach from the public internet.\n\n### Possible solutions\n\n- Review the template and close any unmatched brackets before you save or submit the URL.\n- Update the template to use a fully qualified `http://` or `https://` URL with a valid hostname, path, and properly URL-encoded query parameters.\n- Make sure the endpoint is publicly reachable. If you are testing locally, expose your application through a public HTTPS tunnel before you configure the webhook URL.\n- Review the Twilio Debugger to inspect the failing webhook request and confirm which URL Twilio attempted to use.\n\n#### Additional resources\n\n- [Getting Started with Twilio Webhooks](/docs/usage/webhooks/getting-started-twilio-webhooks)\n- [Webhooks Overview](/docs/usage/webhooks/webhooks-overview)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The template contains unclosed `{` or `}` brackets.\n* The template is not a fully qualified URL and is missing required parts such as the protocol, hostname, path, or properly URL-encoded query parameters.\n* The URL points to a local or private address that Twilio cannot reach from the public internet.",
    "solutions": "* Review the template and close any unmatched brackets before you save or submit the URL.\n* Update the template to use a fully qualified `http://` or `https://` URL with a valid hostname, path, and properly URL-encoded query parameters.\n* Make sure the endpoint is publicly reachable. If you are testing locally, expose your application through a public HTTPS tunnel before you configure the webhook URL.\n* Review the Twilio Debugger to inspect the failing webhook request and confirm which URL Twilio attempted to use.",
    "description": "This error means the URL template you provided is not in a valid format. A common cause is an unclosed bracket in the template.",
    "date_created": "2016-03-31T17:13:26Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 11310,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid template token",
    "secondary_message": "The provided URL template references a nonexistent token.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when your URL template references a token that is not available for the webhook or callback you configured. The set of available parameters depends on the specific request type that Twilio sends.\n\n### Possible causes\n\n- Your URL template includes a placeholder for a parameter that Twilio does not send for this webhook or callback.\n- The token name in the template does not match a valid parameter name for the request, such as `CallSid` for a Voice `StatusCallback` request or `MessageSid` for an incoming Messaging webhook request.\n- You reused a template from another product, channel, or event type. Webhook parameters vary by channel and event type, so tokens that are valid for one webhook may not be available for another.\n\n### Possible solutions\n\n- Review the parameter list for the specific webhook or callback you configured, then update the template to use only parameter names that Twilio sends for that request.\n- Replace or remove any unsupported placeholder in the template. For Voice `StatusCallback` requests, use documented parameters such as `CallSid`, `AccountSid`, `From`, and `To` when they fit your use case.\n- Send a mock or test webhook request to your application and inspect the payload before you save the template. Twilio recommends using sample webhook requests, tools such as `curl` or Postman, or a request capture service during development.\n\n#### Additional resources\n\n- [Getting Started with Twilio Webhooks](/docs/usage/webhooks/getting-started-twilio-webhooks)\n- [Call resource](/docs/voice/api/call-resource)\n- [Twilio's request to your incoming message Webhook URL](/docs/messaging/guides/webhook-request)\n",
    "causes": "* Your URL template includes a placeholder for a parameter that Twilio does not send for this webhook or callback.\n* The token name in the template does not match a valid parameter name for the request, such as `CallSid` for a Voice `StatusCallback` request or `MessageSid` for an incoming Messaging webhook request.\n* You reused a template from another product, channel, or event type. Webhook parameters vary by channel and event type, so tokens that are valid for one webhook may not be available for another.",
    "solutions": "* Review the parameter list for the specific webhook or callback you configured, then update the template to use only parameter names that Twilio sends for that request.\n* Replace or remove any unsupported placeholder in the template. For Voice `StatusCallback` requests, use documented parameters such as `CallSid`, `AccountSid`, `From`, and `To` when they fit your use case.\n* Send a mock or test webhook request to your application and inspect the payload before you save the template. Twilio recommends using sample webhook requests, tools such as `curl` or Postman, or a request capture service during development.",
    "description": "Twilio returns this error when your URL template references a token that is not available for the webhook or callback you configured. The set of available parameters depends on the specific request type that Twilio sends.",
    "date_created": "2016-03-31T17:13:27Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 11320,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid template unclosed brackets",
    "secondary_message": "The provided URL template has an invalid format. Please check to see if you have unclosed brackets.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your URL template is not formatted correctly. Check the template for unmatched variable brackets, especially in `media` or button `url` fields that use Content API variables.\n\n### Possible causes\n\n- A variable placeholder in a URL starts with `{{` but does not end with `}}`.\n- A media URL or URL button was edited manually and left unmatched brackets in the template string.\n- A sample URL path was added incorrectly when inserting variables into a URL-based field.\n\n### Possible solutions\n\n- Review each templated URL and make sure every opening `{{` has a matching closing `}}`.\n- Use supported variable placeholders such as `{{1}}` or `{{IdName}}`. Do not include spaces inside variable names.\n- If the URL uses variables in `media` or `url`, provide a valid sample value in the `variables` object so the combined URL resolves to a publicly accessible file or website.\n- Save the corrected template in Console or resend the corrected Content API request.\n\n#### Additional resources\n\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Create templates with the Content Template Builder in Console](/docs/content/create-templates-with-the-content-template-builder)\n- [twilio/card content type](/docs/content/twiliocard)\n",
    "causes": "* A variable placeholder in a URL starts with `{{` but does not end with `}}`.\n* A media URL or URL button was edited manually and left unmatched brackets in the template string.\n* A sample URL path was added incorrectly when inserting variables into a URL-based field.",
    "solutions": "* Review each templated URL and make sure every opening `{{` has a matching closing `}}`.\n* Use supported variable placeholders such as `{{1}}` or `{{IdName}}`. Do not include spaces inside variable names.\n* If the URL uses variables in `media` or `url`, provide a valid sample value in the `variables` object so the combined URL resolves to a publicly accessible file or website.\n* Save the corrected template in Console or resend the corrected Content API request.",
    "description": "This error occurs when your URL template is not formatted correctly. Check the template for unmatched variable brackets, especially in `media` or button `url` fields that use Content API variables.",
    "date_created": "2016-03-31T17:13:27Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 11321,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Misconfigured webhook",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nAn incoming message reached one of your Twilio numbers, but Twilio could not send the webhook request because the configured URL is invalid. Configure the message URL in the Twilio Console or with the Messaging REST API, and make sure Twilio can reach the endpoint over the public internet.\n\n### Possible causes\n\n- The phone number or Messaging Service is configured with a malformed webhook URL.\n\n### Possible solutions\n\n- Verify the URL in the Twilio Console to make sure it is correct and accessible.\n- Use a fully qualified URL that includes the protocol, hostname, file path, and properly URL-encoded query parameters.\n- Make sure the endpoint is reachable from the public internet.\n\n#### Additional resources\n\n- [Twilio's request to your incoming message Webhook URL](/docs/messaging/guides/webhook-request)\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n- [How to Configure a Twilio Phone Number to Receive and Respond to Messages](https://help.twilio.com/articles/223136047)\n",
    "causes": "* The phone number or Messaging Service is configured with a malformed webhook URL.",
    "solutions": "* Verify the URL in the Twilio Console to make sure it is correct and accessible.\n* Use a fully qualified URL that includes the protocol, hostname, file path, and properly URL-encoded query parameters.\n* Make sure the endpoint is reachable from the public internet.",
    "description": "An incoming message reached one of your Twilio numbers, but Twilio could not send the webhook request because the configured URL is invalid. Configure the message URL in the Twilio Console or with the Messaging REST API, and make sure Twilio can reach the endpoint over the public internet.",
    "date_created": "2025-01-06T08:25:32Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 11322,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid webhook method",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning means Twilio received a message for one of your Twilio numbers but could not send the webhook request to your application because the configured HTTP method is incorrect. Configure the webhook URL and HTTP method in the Twilio Console or by using the Messaging REST API.\n\n### Possible causes\n\n- The incoming message webhook is configured with the wrong HTTP method for your application. Twilio supports `GET` and `POST`.\n\n### Possible solutions\n\n- Update the webhook configuration in the Twilio Console or Messaging REST API so the URL uses the HTTP method your application handles. Twilio supports `GET` and `POST`.\n- If you want Twilio to cache static TwiML pages, configure the webhook to use `GET` instead of `POST`.\n- Make sure your application is ready to receive the configured request method at the message URL for the number or Messaging Service.\n\n#### Additional resources\n\n- [Twilio's request to your incoming message Webhook URL](/docs/messaging/guides/webhook-request)\n- [TwiML Message: `<Message>`](/docs/messaging/twiml/message)\n- [Getting Started with Twilio Webhooks](/docs/usage/webhooks/getting-started-twilio-webhooks)\n",
    "causes": "* The incoming message webhook is configured with the wrong HTTP method for your application. Twilio supports `GET` and `POST`.",
    "solutions": "* Update the webhook configuration in the Twilio Console or Messaging REST API so the URL uses the HTTP method your application handles. Twilio supports `GET` and `POST`.\n* If you want Twilio to cache static TwiML pages, configure the webhook to use `GET` instead of `POST`.\n* Make sure your application is ready to receive the configured request method at the message URL for the number or Messaging Service.",
    "description": "This warning means Twilio received a message for one of your Twilio numbers but could not send the webhook request to your application because the configured HTTP method is incorrect. Configure the webhook URL and HTTP method in the Twilio Console or by using the Messaging REST API.",
    "date_created": "2025-01-06T08:28:03Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 11750,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TwiML response body too large",
    "secondary_message": "In your response to Twilio's request, the response body is larger than 64 kB.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nIn your response to Twilio's request, the response body is larger than 64 kB.\n\n### Possible causes\n\n- The TwiML that you are serving is larger than 64 kB\n- You are serving non-TwiML content in your response; e.g. error message output\n\n### Possible solutions\n\n- Verify that you are serving TwiML in your response to Twilio's request.\n- Verify that you are including this header in your TwiML response: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>`\n- Limit your TwiML response to 64 kB or less.\n- Does your TwiML include the [Play verb](/docs/voice/twiml/play)? Double-check the encoding and MIME type to ensure they are supported.\n- Check that your TwiML is formatted properly. To quickly verify your TwiML, you can copy and paste it into a new [TwiML bin in the Twilio Console](https://www.twilio.com/console/runtime/twiml-bins/create).\n- Check to see if your application is throwing errors. This may cause your application to send a large debug output back to Twilio instead of the expected TwiML.\n- If you are trying to send a `200` response in a status callback, use an empty TwiML response: `<Response/>`\n",
    "causes": "* The TwiML that you are serving is larger than 64 kB\n* You are serving non-TwiML content in your response; e.g. error message output",
    "solutions": "* Verify that you are serving TwiML in your response to Twilio's request.\n* Verify that you are including this header in your TwiML response: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>`\n* Limit your TwiML response to 64 kB or less.\n* Does your TwiML include the [Play verb](/docs/voice/twiml/play)? Double-check the encoding and MIME type to ensure they are supported.\n* Check that your TwiML is formatted properly. To quickly verify your TwiML, you can copy and paste it into a new [TwiML bin in the Twilio Console](https://www.twilio.com/console/runtime/twiml-bins/create).\n* Check to see if your application is throwing errors. This may cause your application to send a large debug output back to Twilio instead of the expected TwiML.\n* If you are trying to send a `200` response in a status callback, use an empty TwiML response: `<Response/>`",
    "description": "In your response to Twilio's request, the response body is larger than 64 kB.",
    "date_created": "2016-03-31T17:14:30Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 11751,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media Message - Media exceeds messaging provider size limit",
    "secondary_message": "The total size of the media message request exceeds the maximum size limit for the channel.",
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when the combined size of your outbound message and media exceeds the maximum allowed for the channel. The maximum size limit depends on the messaging channel.\n\n- For an MMS message, the size limit is [5MB](/docs/messaging/guides/accepted-mime-types).\n- For a WhatsApp message, the size limit is [16MB](/docs/whatsapp/guidance-whatsapp-media-messages).\n\n### Possible causes\n\n- One `MediaUrl` file is too large for the target channel, or the combined size of multiple media files exceeds the channel limit.\n- Your MMS request exceeds the 5 MB maximum total size allowed for the message media. Twilio supports up to 10 media files in an MMS request, but the total media payload must remain within 5 MB.\n- Your WhatsApp media message exceeds the maximum size allowed for WhatsApp. WhatsApp media messages can be up to 16 MB, and WhatsApp images are limited to 5 MB.\n\n### Possible solutions\n\n- Reduce the size of the media you send so the request stays within the channel limit.\n- If you need to send multiple attachments, split them across multiple requests so each request stays below the allowed maximum size.\n- Check the accepted media size limits for the channel before you send the message. If you send media through `MediaUrl`, make sure the file served at that URL is the file you expect to send.\n\n#### Additional resources\n\n- [Accepted MIME types for MMS and WhatsApp media](/docs/messaging/guides/accepted-mime-types)\n- [WhatsApp media messages guidance](/docs/whatsapp/guidance-whatsapp-media-messages)\n",
    "causes": "* One `MediaUrl` file is too large for the target channel, or the combined size of multiple media files exceeds the channel limit.\n* Your MMS request exceeds the 5 MB maximum total size allowed for the message media. Twilio supports up to 10 media files in an MMS request, but the total media payload must remain within 5 MB.\n* Your WhatsApp media message exceeds the maximum size allowed for WhatsApp. WhatsApp media messages can be up to 16 MB, and WhatsApp images are limited to 5 MB.",
    "solutions": "* Reduce the size of the media you send so the request stays within the channel limit.\n* If you need to send multiple attachments, split them across multiple requests so each request stays below the allowed maximum size.\n* Check the accepted media size limits for the channel before you send the message. If you send media through `MediaUrl`, make sure the file served at that URL is the file you expect to send.",
    "description": "This error occurs when the combined size of your outbound message and media exceeds the maximum allowed for the channel. The maximum size limit depends on the messaging channel. - For an MMS message, the size limit is [5MB](/docs/messaging/guides/accepted-mime-types).\n- For a WhatsApp message, the size limit is [16MB](/docs/whatsapp/guidance-whatsapp-media-messages).",
    "date_created": "2016-03-31T17:14:33Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 11770,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Empty response body",
    "secondary_message": "Twilio received a HTTP response with Transfer-encoding: chunked but an empty body. #### Possible Causes \\* Server misconfiguration \\* Network disruptions #### Possible Solutions \\* Verify that the server is serving a non-empty HTTP response \\* Verify that the network connection is stable",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio received a HTTP response with Transfer-encoding: chunked but an empty body.\n\n### Possible causes\n\n- Server misconfiguration\n- Network disruptions\n\n### Possible solutions\n\n- Verify that the server is serving a non-empty HTTP response\n- Verify that the network connection is stable\n",
    "causes": "* Server misconfiguration\n* Network disruptions",
    "solutions": "* Verify that the server is serving a non-empty HTTP response\n* Verify that the network connection is stable",
    "description": "Twilio received a HTTP response with Transfer-encoding: chunked but an empty body.",
    "date_created": "2016-03-31T17:14:06Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 12100,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Document parse failure",
    "secondary_message": "Twilio was unable to parse the provided XML Document.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio was unable to parse the provided XML Document.\n\nYour TwiML document must be a valid XML Document, or Twilio will not be able to read your document. You can debug XML parsing errors by getting the response body in the [debugger](/user/account/debugger), and then using an online validation tool like the [W3C Validation Service](http://validator.w3.org/#validate_by_input).\n\n### Possible causes\n\n- There is a leading space, or an empty line, before the XML type header (i.e. `<?xml version=\"1.0\" encoding=\"UTF-8\"?>`)\n- The root `<Response>` element is missing\n- There is an unclosed element\n- There is an unquoted attribute\n- There is an improperly nested element\n\n### Possible solutions\n\n- Make sure there is no extra space or line at the beginning of the file before the type header\n- Make sure your root element is `<Response>`\n- XML is case sensitive, make sure your start and end elements match case. (Twilio elements begin with a capital letter)\n- Make sure characters such as `< >` and & are escaped properly, as `&lt; &gt; and &amp;`.\n",
    "causes": "* There is a leading space, or an empty line, before the XML type header (i.e. `<?xml version=\"1.0\" encoding=\"UTF-8\"?>`)\n* The root `<Response>` element is missing\n* There is an unclosed element\n* There is an unquoted attribute\n* There is an improperly nested element",
    "solutions": "* Make sure there is no extra space or line at the beginning of the file before the type header\n* Make sure your root element is `<Response>`\n* XML is case sensitive, make sure your start and end elements match case. (Twilio elements begin with a capital letter)\n* Make sure characters such as `< >` and & are escaped properly, as `&lt; &gt; and &amp;`.",
    "description": "Twilio was unable to parse the provided XML Document. Your TwiML document must be a valid XML Document, or Twilio will not be able to read your document. You can debug XML parsing errors by getting the response body in the [debugger](/user/account/debugger), and then using an online validation tool like the [W3C Validation Service](http://validator.w3.org/#validate_by_input).",
    "date_created": "2016-03-31T17:13:27Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 12101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Twilio Markup XML version",
    "secondary_message": "The version attribute of the Response root element is not valid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe version attribute of the Response root element is not valid.\n\n### Possible causes\n\n- an invalid value was provided for the \"version\" attribute of the [Response](/docs/voice/twiml#responding-to-twilio) root element.\n\n### Possible solutions\n\n- refer to the [versions](/docs/voice/twiml#responding-to-twilio) documentation for information on valid version values.\n",
    "causes": "* an invalid value was provided for the \"version\" attribute of the [Response](/docs/voice/twiml#responding-to-twilio) root element.",
    "solutions": "* refer to the [versions](/docs/voice/twiml#responding-to-twilio) documentation for information on valid version values.",
    "description": "The version attribute of the Response root element is not valid.",
    "date_created": "2016-03-31T17:13:28Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 12102,
    "log_level": "ERROR",
    "log_type": null,
    "message": "The root element must be Response",
    "secondary_message": "The root element of a Twilio Markup XML document _must_ be [Response](/docs/api/twiml/response)",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe root element of a Twilio Markup XML document *must* be [Response](/docs/voice/twiml#responding-to-twilio)\n",
    "causes": null,
    "solutions": null,
    "description": "The root element of a Twilio Markup XML document *must* be [Response](/docs/voice/twiml#responding-to-twilio)",
    "date_created": "2016-03-31T17:13:28Z",
    "last_updated": "2020-08-04T10:00:29.17Z"
  },
  {
    "code": 12200,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Schema validation warning",
    "secondary_message": "The provided XML does not conform to the Twilio Markup XML schema. Please refer to the specific error and correct the problem.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Schema validation warning\n\nThe provided XML does not conform to the Twilio Markup XML schema. Please refer to the specific error and correct the problem.\n\n### Possible causes\n\n- Misspelled verbs\n- Incorrect case for verbs; TwiML is case-sensitive, so `<Say>` works, but `<say>` will not\n- Misspelled or unknown attributes\n- Unknown or unexpected nested elements.\n\n### Possible solutions\n\n- Check the line and column reported by the warning to see what part of your XML response caused the complaint\n- Verify that your application server is accepting and properly responding to any [custom parameters](https://support.twilio.com/hc/en-us/articles/115011213347) you may be passing\n",
    "causes": "* Misspelled verbs\n* Incorrect case for verbs; TwiML is case-sensitive, so `<Say>` works, but `<say>` will not\n* Misspelled or unknown attributes\n* Unknown or unexpected nested elements.",
    "solutions": "* Check the line and column reported by the warning to see what part of your XML response caused the complaint\n* Verify that your application server is accepting and properly responding to any [custom parameters](https://support.twilio.com/hc/en-us/articles/115011213347) you may be passing",
    "description": "",
    "date_created": "2016-03-31T17:13:29Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 12300,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Content-Type",
    "secondary_message": "Twilio is unable to process the Content-Type of the provided URL. Please see Twilio's [documentation on accepted content types ](/docs/sms/accepted-mime-types)for more information on valid Content-Types.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio is unable to process the `Content-Type` of the provided URL. Please see Twilio's [documentation on accepted content types ](/docs/voice/twiml#twilio-understands-mime-types)for more information on valid `Content-Type`s.\n\nYou must return a `Content-Type` for all requests. Requests without a `Content-Type` will appear in the [Debugger](/console/runtime/debugger) as a 502 Bad Gateway error.\n\n### Possible causes\n\n- Having a phone number, outgoing call request or action attribute refer to a non-XML or audio resource.\n- Having a Play verb attempt to play non-audio content, such as XML or text.\n\n### Possible solutions\n\n- Verify that that your web server is returning a `Content-Type` and it is the expected value\n- Make sure the URL noted refers to a valid resource\n- Make sure messages to or from your Twilio phone number are using a supported content-type. See the [full list of supported content types](/docs/messaging/guides/accepted-mime-types).\n- Use one of the [supported request types](/docs/serverless/functions-assets/functions/request-flow#supported-requests) to call a Twilio function.\n",
    "causes": "* Having a phone number, outgoing call request or action attribute refer to a non-XML or audio resource.\n* Having a Play verb attempt to play non-audio content, such as XML or text.",
    "solutions": "* Verify that that your web server is returning a `Content-Type` and it is the expected value\n* Make sure the URL noted refers to a valid resource\n* Make sure messages to or from your Twilio phone number are using a supported content-type. See the [full list of supported content types](/docs/messaging/guides/accepted-mime-types).\n* Use one of the [supported request types](/docs/serverless/functions-assets/functions/request-flow#supported-requests) to call a Twilio function.",
    "description": "Twilio is unable to process the `Content-Type` of the provided URL. Please see Twilio's [documentation on accepted content types ](/docs/voice/twiml#twilio-understands-mime-types)for more information on valid `Content-Type`s. You must return a `Content-Type` for all requests. Requests without a `Content-Type` will appear in the [Debugger](/console/runtime/debugger) as a 502 Bad Gateway error.",
    "date_created": "2016-03-31T17:13:29Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 12301,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Upload Content-Type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio is unable to process the `Content-Type` of the uploaded file. Please make sure the uploaded file is valid and supported.\n\n### Possible causes\n\n- Unsupported file format\n- File is malformed\n",
    "causes": "* Unsupported file format\n* File is malformed",
    "solutions": null,
    "description": "Twilio is unable to process the `Content-Type` of the uploaded file. Please make sure the uploaded file is valid and supported.",
    "date_created": "2019-04-11T18:36:06Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 12400,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal Failure",
    "secondary_message": "An internal error has occurred that prevented Twilio from processing your response.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn internal error has occurred that prevented Twilio from processing your response.\n\n### Possible causes\n\n- We screwed up. Sorry!\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it.\n- Note the time of the error and what you were trying to do when it occurred.\n",
    "causes": "* We screwed up. Sorry!",
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it.\n* Note the time of the error and what you were trying to do when it occurred.",
    "description": "An internal error has occurred that prevented Twilio from processing your response.",
    "date_created": "2016-03-31T17:13:29Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13000,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Conference Noun cannot be mixed with Number nouns",
    "secondary_message": "The Conference noun can only be used once inside a Dial verb",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis warning occurs when your `<Dial>` verb uses a `<Conference>` noun together with `<Number>` nouns, or when `<Conference>` is used more than once inside the same `<Dial>`. Use `<Conference>` to connect the current call to a named conference room. Use one or more `<Number>` nouns when you want `<Dial>` to call phone numbers.\n\n### Possible causes\n\n- Your TwiML nests both `<Conference>` and `<Number>` inside the same `<Dial>` verb.\n- Your TwiML includes more than one `<Conference>` noun inside a single `<Dial>` verb.\n- Your application generates `<Dial>` dynamically and appends conference and number nouns to the same response.\n- You used a simultaneous dialing pattern for `<Number>` nouns when you intended to place the caller into a conference.\n\n### Possible solutions\n\n- Update your TwiML so each `<Dial>` uses only one approach. Use a single `<Conference>` noun to join a conference room, or use one or more `<Number>` nouns to dial phone numbers.\n- Remove any extra `<Conference>` noun so the `<Dial>` verb contains only one conference target.\n- If you want to ring several phone numbers and connect the first answer, remove `<Conference>` and use multiple `<Number>` nouns inside `<Dial>`.\n- If you want multiple participants in the same conversation, route each participant to the same named `<Conference>` instead of mixing `<Conference>` with `<Number>` nouns in one `<Dial>`.\n- Inspect the final TwiML your application returns and confirm that each `<Dial>` contains only the noun type required for that call flow.\n\n#### Additional resources\n\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [TwiML Voice: `<Number>`](/docs/voice/twiml/number)\n",
    "causes": "* Your TwiML nests both `<Conference>` and `<Number>` inside the same `<Dial>` verb.\n* Your TwiML includes more than one `<Conference>` noun inside a single `<Dial>` verb.\n* Your application generates `<Dial>` dynamically and appends conference and number nouns to the same response.\n* You used a simultaneous dialing pattern for `<Number>` nouns when you intended to place the caller into a conference.",
    "solutions": "* Update your TwiML so each `<Dial>` uses only one approach. Use a single `<Conference>` noun to join a conference room, or use one or more `<Number>` nouns to dial phone numbers.\n* Remove any extra `<Conference>` noun so the `<Dial>` verb contains only one conference target.\n* If you want to ring several phone numbers and connect the first answer, remove `<Conference>` and use multiple `<Number>` nouns inside `<Dial>`.\n* If you want multiple participants in the same conversation, route each participant to the same named `<Conference>` instead of mixing `<Conference>` with `<Number>` nouns in one `<Dial>`.\n* Inspect the final TwiML your application returns and confirm that each `<Dial>` contains only the noun type required for that call flow.",
    "description": "This warning occurs when your `<Dial>` verb uses a `<Conference>` noun together with `<Number>` nouns, or when `<Conference>` is used more than once inside the same `<Dial>`. Use `<Conference>` to connect the current call to a named conference room. Use one or more `<Number>` nouns when you want `<Dial>` to call phone numbers.",
    "date_created": "2016-03-31T17:13:30Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 13110,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Annotate: Annotate must contain one valid nested element",
    "secondary_message": "Annotate must contain one valid nested element",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when you send Voice TwiML with an `<Annotate>` element that does not contain a valid child element. Twilio only allows `BillingReferenceTag` inside `<Annotate>`, so an empty `<Annotate>` element or one that contains a different child element triggers this error.\n\n### Possible causes\n\n- `<Annotate>` is empty and does not include a `BillingReferenceTag` child.\n- `<Annotate>` contains a nested element other than `BillingReferenceTag`. Twilio only allows `BillingReferenceTag` inside `<Annotate>`.\n- The nested element name is misspelled or uses the wrong case. TwiML element names are case-sensitive.\n\n### Possible solutions\n\n- Add a valid `BillingReferenceTag` child inside `<Annotate>`. For example, use `<Annotate><BillingReferenceTag>order-123</BillingReferenceTag></Annotate>`.\n- Remove any unsupported child elements from `<Annotate>` and keep only `BillingReferenceTag`.\n- Verify that the child element name and casing exactly match `BillingReferenceTag`.\n- Keep the `BillingReferenceTag` value at 128 characters or fewer to avoid error 13120.\n\n#### Additional resources\n\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n- [Call Annotation Resource](/docs/voice/voice-insights/api/call/call-annotation-resource)\n- [Debugging your Twilio application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* `<Annotate>` is empty and does not include a `BillingReferenceTag` child.\n* `<Annotate>` contains a nested element other than `BillingReferenceTag`. Twilio only allows `BillingReferenceTag` inside `<Annotate>`.\n* The nested element name is misspelled or uses the wrong case. TwiML element names are case-sensitive.",
    "solutions": "* Add a valid `BillingReferenceTag` child inside `<Annotate>`. For example, use `<Annotate><BillingReferenceTag>order-123</BillingReferenceTag></Annotate>`.\n* Remove any unsupported child elements from `<Annotate>` and keep only `BillingReferenceTag`.\n* Verify that the child element name and casing exactly match `BillingReferenceTag`.\n* Keep the `BillingReferenceTag` value at 128 characters or fewer to avoid error 13120.",
    "description": "Twilio returns this error when you send Voice TwiML with an `<Annotate>` element that does not contain a valid child element. Twilio only allows `BillingReferenceTag` inside `<Annotate>`, so an empty `<Annotate>` element or one that contains a different child element triggers this error.",
    "date_created": "2016-03-31T17:13:30Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 13111,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Annotate: Annotate must contain only one of element X",
    "secondary_message": "Annotate must contain only one of element X",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis error occurs when Twilio processes an `<Annotate>` instruction that contains more than one instance of a nested element that is allowed only once.\n\n### Possible causes\n- The `<Annotate>` block includes the same child element more than once.\n- Your application generated duplicate annotation elements while building TwiML dynamically.\n- Two XML fragments were combined into a single `<Annotate>` block and created a duplicate child element.\n\n### Possible solutions\n- Review the `<Annotate>` block and keep only one instance of each supported child element.\n- Inspect the final TwiML returned by your application and remove any duplicate nested elements before sending it to Twilio.\n- If you generate TwiML with templates or helper code, update that logic so each annotation field is added only once.\n\n#### Additional resources\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n- [Voice Insights overview](/docs/voice/voice-insights)\n- [Call Annotation Resource](/docs/voice/voice-insights/api/call/call-annotation-resource)\n",
    "causes": "* The `<Annotate>` block includes the same child element more than once.\n* Your application generated duplicate annotation elements while building TwiML dynamically.\n* Two XML fragments were combined into a single `<Annotate>` block and created a duplicate child element.",
    "solutions": "* Review the `<Annotate>` block and keep only one instance of each supported child element.\n* Inspect the final TwiML returned by your application and remove any duplicate nested elements before sending it to Twilio.\n* If you generate TwiML with templates or helper code, update that logic so each annotation field is added only once.",
    "description": "This error occurs when Twilio processes an `<Annotate>` instruction that contains more than one instance of a nested element that is allowed only once.",
    "date_created": "2016-03-31T17:13:30Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13112,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Annotate: Invalid nested element",
    "secondary_message": "You may only nest BillingReferenceTag elements in Annotate",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis warning is raised when `<Annotate>` contains a nested element other than `BillingReferenceTag`. Use only `BillingReferenceTag` inside `<Annotate>`.\n\n### Possible causes\n\n- Your TwiML nests an unsupported child element inside `<Annotate>` instead of `BillingReferenceTag`.\n- The nested element name is misspelled or uses incorrect casing. TwiML element names are case sensitive.\n- Your application generates TwiML dynamically and inserts extra XML elements that `<Annotate>` does not support, because Twilio only accepts specific TwiML verbs and nouns during parsing.\n\n### Possible solutions\n\n- Update your TwiML so `<Annotate>` contains only `BillingReferenceTag`.\n- Remove any other nested TwiML or custom XML elements from `<Annotate>`.\n- Verify the spelling and casing of `BillingReferenceTag` before you return the TwiML response.\n- Generate your TwiML with a Twilio helper library when possible. This can help you avoid invalid XML structure.\n\n#### Additional resources\n\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n- [Programmable Voice API Overview](/docs/voice/api)\n- [Troubleshooting Twilio](/docs/usage/troubleshooting)\n",
    "causes": "* Your TwiML nests an unsupported child element inside `<Annotate>` instead of `BillingReferenceTag`.\n* The nested element name is misspelled or uses incorrect casing. TwiML element names are case sensitive.\n* Your application generates TwiML dynamically and inserts extra XML elements that `<Annotate>` does not support, because Twilio only accepts specific TwiML verbs and nouns during parsing.",
    "solutions": "* Update your TwiML so `<Annotate>` contains only `BillingReferenceTag`.\n* Remove any other nested TwiML or custom XML elements from `<Annotate>`.\n* Verify the spelling and casing of `BillingReferenceTag` before you return the TwiML response.\n* Generate your TwiML with a Twilio helper library when possible. This can help you avoid invalid XML structure.",
    "description": "This warning is raised when `<Annotate>` contains a nested element other than `BillingReferenceTag`. Use only `BillingReferenceTag` inside `<Annotate>`.",
    "date_created": "2016-03-31T17:13:30Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13120,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Annotate->BillingReferenceTag cannot be over 128 characters",
    "secondary_message": "BillingReferenceTag cannot be over 128 characters",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Voice TwiML includes a `BillingReferenceTag` value longer than 128 characters. Twilio parses and executes the TwiML your application returns for a voice call. If Twilio cannot process that request because the TwiML is invalid, Twilio logs the event as an error.\n\n### Possible causes\n\n- The `BillingReferenceTag` value in your `Annotate` instruction is longer than 128 characters.\n- Your webhook returned TwiML that Twilio could not process because the `BillingReferenceTag` value exceeded the allowed limit.\n\n### Possible solutions\n\n- Shorten the `BillingReferenceTag` value so it is 128 characters or fewer before you return the TwiML response.\n- Review the TwiML your application generates and make sure the `BillingReferenceTag` value stays within the allowed length every time you build the response.\n- Check the Twilio Debugger for the failed request and inspect the returned TwiML so you can correct the invalid value.\n- Open the webhook URL in your browser or test client and verify that the response does not include an oversized `BillingReferenceTag`.\n\n#### Additional resources\n\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n- [Programmable Voice](/docs/voice)\n",
    "causes": "* The `BillingReferenceTag` value in your `Annotate` instruction is longer than 128 characters.\n* Your webhook returned TwiML that Twilio could not process because the `BillingReferenceTag` value exceeded the allowed limit.",
    "solutions": "* Shorten the `BillingReferenceTag` value so it is 128 characters or fewer before you return the TwiML response.\n* Review the TwiML your application generates and make sure the `BillingReferenceTag` value stays within the allowed length every time you build the response.\n* Check the Twilio Debugger for the failed request and inspect the returned TwiML so you can correct the invalid value.\n* Open the webhook URL in your browser or test client and verify that the response does not include an oversized `BillingReferenceTag`.",
    "description": "Twilio returns this error when your Voice TwiML includes a `BillingReferenceTag` value longer than 128 characters. Twilio parses and executes the TwiML your application returns for a voice call. If Twilio cannot process that request because the TwiML is invalid, Twilio logs the event as an error.",
    "date_created": "2016-03-31T17:13:31Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 13201,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial: Cannot Dial out from a Dial Call Segment",
    "secondary_message": "TwiML documents that execute on the called party's end (via the Dial->Number url attribute, before the parties are bridged) cannot issue a new Dial.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when the TwiML returned from a `<Dial><Number>` `url` tries to execute another `<Dial>`. Twilio runs that `url` on the called party's side after answer and before the call is bridged, and that pre-bridge TwiML cannot contain `<Dial>`.\n\n### Possible causes\n\n- Your application returned a `<Dial>` verb from the webhook configured in the `<Number>` `url` attribute.\n- You used the `<Number>` `url` webhook to route or transfer the call instead of screening or informing the called party before the bridge. That webhook is limited to TwiML such as `<Play>`, `<Say>`, `<Gather>`, and `<Hangup>`.\n- You expected the called party's pre-bridge call segment to create a new outbound leg directly. `<Dial>` can only dial a new party from an active call context, and Twilio does not allow that nested `<Dial>` in this pre-bridge flow.\n\n### Possible solutions\n\n- Remove the nested `<Dial>` from the TwiML returned by the `<Number>` `url`. Use that TwiML only for called-party instructions or screening before the bridge.\n- If you need the called party to hear a message or choose whether to accept the call, return supported pre-bridge TwiML such as `<Play>`, `<Say>`, `<Gather>`, and `<Hangup>`.\n- If you need to continue the original call flow after the `<Dial>` attempt, move that logic to the parent call by using the `<Dial>` `action` URL or the next verb in the original TwiML document.\n- If you need to redirect or change a live call asynchronously, update the in-progress call with the Calls API instead of trying to start a new `<Dial>` from the called party's pre-bridge TwiML.\n\n#### Additional resources\n\n- [TwiML Voice: `<Number>`](/docs/voice/twiml/number)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [Call resource](/docs/voice/api/call-resource)\n",
    "causes": "* Your application returned a `<Dial>` verb from the webhook configured in the `<Number>` `url` attribute.\n* You used the `<Number>` `url` webhook to route or transfer the call instead of screening or informing the called party before the bridge. That webhook is limited to TwiML such as `<Play>`, `<Say>`, `<Gather>`, and `<Hangup>`.\n* You expected the called party's pre-bridge call segment to create a new outbound leg directly. `<Dial>` can only dial a new party from an active call context, and Twilio does not allow that nested `<Dial>` in this pre-bridge flow.",
    "solutions": "* Remove the nested `<Dial>` from the TwiML returned by the `<Number>` `url`. Use that TwiML only for called-party instructions or screening before the bridge.\n* If you need the called party to hear a message or choose whether to accept the call, return supported pre-bridge TwiML such as `<Play>`, `<Say>`, `<Gather>`, and `<Hangup>`.\n* If you need to continue the original call flow after the `<Dial>` attempt, move that logic to the parent call by using the `<Dial>` `action` URL or the next verb in the original TwiML document.\n* If you need to redirect or change a live call asynchronously, update the in-progress call with the Calls API instead of trying to start a new `<Dial>` from the called party's pre-bridge TwiML.",
    "description": "This error occurs when the TwiML returned from a `<Dial><Number>` `url` tries to execute another `<Dial>`. Twilio runs that `url` on the called party's side after answer and before the call is bridged, and that pre-bridge TwiML cannot contain `<Dial>`.",
    "date_created": "2016-03-31T17:13:31Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13210,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid method value",
    "secondary_message": "You have provided an invalid value for the \"method\" attribute. Valid values are GET or POST. See the [Dial Verb](/docs/api/twiml/dial#method) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou have provided an invalid value for the \"method\" attribute. Valid values are `GET` or `POST`. See the [Dial Verb](/docs/voice/twiml/dial#method) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "You have provided an invalid value for the \"method\" attribute. Valid values are `GET` or `POST`. See the [Dial Verb](/docs/voice/twiml/dial#method) API Reference for more information.",
    "date_created": "2016-03-31T17:13:31Z",
    "last_updated": "2020-08-04T10:00:28.984Z"
  },
  {
    "code": 13211,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid ifMachine value",
    "secondary_message": "ifMachine must be either \"hangup\",\"continue\", or \"false\".",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when you set the `<Dial>` `ifMachine` value to anything other than `hangup`, `continue`, or `false`. Use `ifMachine` only with one of those supported values when you want call handling to change based on whether a machine answers.\n\n### Possible causes\n\n- You set `ifMachine` to a value outside the allowed set of `hangup`, `continue`, or `false`.\n- You passed a machine detection value intended for a different Voice parameter, such as `Enable` or `DetectMessageEnd`, instead of a supported `ifMachine` value.\n\n### Possible solutions\n\n- Update the `ifMachine` value in your `<Dial>` TwiML to `hangup`, `continue`, or `false`.\n- If you need answering machine detection for an outbound call flow, use the supported machine detection settings for the API surface you are using. Use `MachineDetection` on the Calls API or `machineDetection` on `<Dial><Number>` where supported.\n- Review the TwiML or API request that creates the outbound leg and make sure the parameter name matches the feature you are using. TwiML verb and attribute names are case sensitive.\n\n#### Additional resources\n\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [TwiML Voice: `<Number>`](/docs/voice/twiml/number)\n- [Answering Machine Detection](/docs/voice/answering-machine-detection)\n",
    "causes": "* You set `ifMachine` to a value outside the allowed set of `hangup`, `continue`, or `false`.\n* You passed a machine detection value intended for a different Voice parameter, such as `Enable` or `DetectMessageEnd`, instead of a supported `ifMachine` value.",
    "solutions": "* Update the `ifMachine` value in your `<Dial>` TwiML to `hangup`, `continue`, or `false`.\n* If you need answering machine detection for an outbound call flow, use the supported machine detection settings for the API surface you are using. Use `MachineDetection` on the Calls API or `machineDetection` on `<Dial><Number>` where supported.\n* Review the TwiML or API request that creates the outbound leg and make sure the parameter name matches the feature you are using. TwiML verb and attribute names are case sensitive.",
    "description": "Twilio returns this warning when you set the `<Dial>` `ifMachine` value to anything other than `hangup`, `continue`, or `false`. Use `ifMachine` only with one of those supported values when you want call handling to change based on whether a machine answers.",
    "date_created": "2016-03-31T17:13:31Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 13212,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid timeout value",
    "secondary_message": "timeout must be a positive integer, in seconds. See the [Dial Verb](/docs/api/twiml/dial#timeout) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\ntimeout must be a positive integer, in seconds. See the [Dial Verb](/docs/voice/twiml/dial#timeout) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "timeout must be a positive integer, in seconds. See the [Dial Verb](/docs/voice/twiml/dial#timeout) API Reference for more information.",
    "date_created": "2016-03-31T17:13:32Z",
    "last_updated": "2020-08-04T10:00:28.941Z"
  },
  {
    "code": 13213,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid hangupOnStar value",
    "secondary_message": "hangupOnStar must be \"true\" or \"false\". See the [Dial Verb](/docs/api/twiml/dial#hangupOnStar) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nhangupOnStar must be \"true\" or \"false\". See the [Dial Verb](/docs/voice/twiml/dial#hangupOnStar) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "hangupOnStar must be \"true\" or \"false\". See the [Dial Verb](/docs/voice/twiml/dial#hangupOnStar) API Reference for more information.",
    "date_created": "2016-03-31T17:13:32Z",
    "last_updated": "2020-08-04T10:00:28.922Z"
  },
  {
    "code": 13214,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Dial: Invalid callerId value",
    "secondary_message": "callerId must be the calling number, called number, or a validated outgoing number. See the [Dial Verb](/docs/api/twiml/dial#callerId) API Reference for more information.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Dial: Invalid callerId value\n\ncallerId must be the calling number, called number, or a validated outgoing number. Additionally, if the calling leg is a client leg, the caller ID is required and must be a validated outgoing number. See the [Dial Verb](/docs/voice/twiml/dial#callerId) API Reference for more information.\n\n### Possible causes\n\nCarriers may send invalid Caller IDs on Incoming calls to Twilio. If a specific Caller ID is not explicitly defined on the `<Dial>` verb, the invalid Caller ID will be passed to the destination. This may cause some destination providers to reject the call, and Twilio will mark it as failed.\n\n### Possible solutions\n\nTo work around this, your application should recognize invalid caller IDs, and substitute them with a valid Caller ID to construct the subsequent `<Dial>`.\n",
    "causes": "Carriers may send invalid Caller IDs on Incoming calls to Twilio. If a specific Caller ID is not explicitly defined on the `<Dial>` verb, the invalid Caller ID will be passed to the destination. This may cause some destination providers to reject the call, and Twilio will mark it as failed.",
    "solutions": "To work around this, your application should recognize invalid caller IDs, and substitute them with a valid Caller ID to construct the subsequent `<Dial>`.",
    "description": "",
    "date_created": "2016-03-31T17:13:32Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13215,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid nested element",
    "secondary_message": "The only valid nested element for Dial is Number. See the [Dial Verb](/docs/api/twiml/dial) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe only valid nested element for Dial is Number. See the [Dial Verb](/docs/voice/twiml/dial) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The only valid nested element for Dial is Number. See the [Dial Verb](/docs/voice/twiml/dial) API Reference for more information.",
    "date_created": "2016-03-31T17:13:33Z",
    "last_updated": "2020-08-04T10:00:28.876Z"
  },
  {
    "code": 13216,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid timeLimit value",
    "secondary_message": "timeLimit must be a positive integer, in seconds. See the [Dial Verb](/docs/api/twiml/dial#timeLimit) API Reference for more information.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\nThis warning appears when your `<Dial>` verb includes a `timeLimit` value that is not a positive integer in seconds. Use `timeLimit` to set the maximum duration of the `<Dial>`. If you omit `timeLimit`, Twilio uses the default limit of 14400 seconds, or 4 hours.\n\n### Possible causes\n- The `timeLimit` attribute is set to `0`, a negative value, or an empty value.\n- The `timeLimit` attribute contains a decimal value instead of a whole number of seconds.\n- The `timeLimit` attribute includes non-numeric characters or a malformed string.\n- Your application generates TwiML dynamically and passes an invalid value into the `<Dial>` verb.\n\n### Possible solutions\n- Set `timeLimit` to a positive integer in seconds, such as `timeLimit=\"120\"`.\n- Validate any user input or application variable before you add it to the `<Dial>` verb.\n- Convert dynamic values to a whole number before returning TwiML to Twilio.\n- Remove `timeLimit` if you want Twilio to use the default call limit.\n\n#### Additional resources\n- [TwiML `<Dial>`](/docs/voice/twiml/dial)\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n- [Make outbound phone calls](/docs/voice/tutorials/how-to-make-outbound-phone-calls)\n",
    "causes": "* The `timeLimit` attribute is set to `0`, a negative value, or an empty value.\n* The `timeLimit` attribute contains a decimal value instead of a whole number of seconds.\n* The `timeLimit` attribute includes non-numeric characters or a malformed string.\n* Your application generates TwiML dynamically and passes an invalid value into the `<Dial>` verb.",
    "solutions": "* Set `timeLimit` to a positive integer in seconds, such as `timeLimit=\"120\"`.\n* Validate any user input or application variable before you add it to the `<Dial>` verb.\n* Convert dynamic values to a whole number before returning TwiML to Twilio.\n* Remove `timeLimit` if you want Twilio to use the default call limit.",
    "description": "This warning appears when your `<Dial>` verb includes a `timeLimit` value that is not a positive integer in seconds. Use `timeLimit` to set the maximum duration of the `<Dial>`. If you omit `timeLimit`, Twilio uses the default limit of 14400 seconds, or 4 hours.",
    "date_created": "2016-03-31T17:13:33Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13217,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid record value",
    "secondary_message": "record must be \"true\" or \"false\".",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio raises this warning when your `<Dial>` verb includes a `record` attribute value that Twilio does not support. This error returns the message `record must be \"true\" or \"false\"`. For `<Dial>`, supported recording values are `do-not-record`, `record-from-answer`, `record-from-ringing`, `record-from-answer-dual`, and `record-from-ringing-dual`. For backward compatibility, `true` maps to `record-from-answer` and `false` maps to `do-not-record`.\n\n### Possible causes\n\n- Your `<Dial>` verb sets `record` to a value that is not one of the supported recording options.\n- Your application sends a typo, unexpected capitalization, or extra characters in the `record` value, so Twilio cannot match it to a valid option.\n- Your application builds TwiML dynamically and the variable used for `record` resolves to an empty or unsupported value at runtime.\n\n### Possible solutions\n\n- Update the `<Dial>` verb so the `record` attribute uses a supported value such as `do-not-record`, `record-from-answer`, `record-from-ringing`, `record-from-answer-dual`, or `record-from-ringing-dual`.\n- If you use the legacy boolean form, set `record=\"true\"` to use `record-from-answer`, or set `record=\"false\"` to use `do-not-record`.\n- Review any code or template logic that generates your TwiML and confirm it outputs the exact `record` value you expect before Twilio processes the `<Dial>` verb.\n\n#### Additional resources\n\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [Recordings resource](/docs/voice/api/recording)\n- [How to Record a Phone Call with Twilio](https://help.twilio.com/articles/223132867-Recording-a-phone-call-with-Twilio)\n",
    "causes": "* Your `<Dial>` verb sets `record` to a value that is not one of the supported recording options.\n* Your application sends a typo, unexpected capitalization, or extra characters in the `record` value, so Twilio cannot match it to a valid option.\n* Your application builds TwiML dynamically and the variable used for `record` resolves to an empty or unsupported value at runtime.",
    "solutions": "* Update the `<Dial>` verb so the `record` attribute uses a supported value such as `do-not-record`, `record-from-answer`, `record-from-ringing`, `record-from-answer-dual`, or `record-from-ringing-dual`.\n* If you use the legacy boolean form, set `record=\"true\"` to use `record-from-answer`, or set `record=\"false\"` to use `do-not-record`.\n* Review any code or template logic that generates your TwiML and confirm it outputs the exact `record` value you expect before Twilio processes the `<Dial>` verb.",
    "description": "Twilio raises this warning when your `<Dial>` verb includes a `record` attribute value that Twilio does not support. This error returns the message `record must be \"true\" or \"false\"`. For `<Dial>`, supported recording values are `do-not-record`, `record-from-answer`, `record-from-ringing`, `record-from-answer-dual`, and `record-from-ringing-dual`. For backward compatibility, `true` maps to `record-from-answer` and `false` maps to `do-not-record`.",
    "date_created": "2016-03-31T17:13:33Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 13218,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Dial: Invalid sequential value",
    "secondary_message": "sequential must be \"true\" or \"false\"",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe `sequential` attribute on `<Dial>` only accepts `true` or `false`. Setting `sequential=\"true\"` lets Twilio call up to ten agents one after the other, in the order they are specified in the verb.\n\n### Possible causes\n\nThe `sequential` attribute on `<Dial>` was set to a value other than `true` or `false`.\n\n### Possible solutions\n\n- Update the `<Dial>` verb so `sequential` is set to either `true` or `false`.\n- If you need sequential dialing, set `sequential=\"true\"` on `<Dial>` so Twilio calls up to ten agents one after the other in the specified order.\n\n#### Additional resources\n\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [Error and Warning Dictionary](/docs/api/errors)\n",
    "causes": "The `sequential` attribute on `<Dial>` was set to a value other than `true` or `false`.",
    "solutions": "* Update the `<Dial>` verb so `sequential` is set to either `true` or `false`.\n* If you need sequential dialing, set `sequential=\"true\"` on `<Dial>` so Twilio calls up to ten agents one after the other in the specified order.",
    "description": "The `sequential` attribute on `<Dial>` only accepts `true` or `false`. Setting `sequential=\"true\"` lets Twilio call up to ten agents one after the other, in the order they are specified in the verb.",
    "date_created": "2020-05-14T18:00:55Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13219,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Dial: Invalid answerOnBridge value",
    "secondary_message": "answerOnBridge must be \"true\" or \"false\".",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nanswerOnBridge must be \"true\" or \"false\".\n\n### Possible causes\n\nanswerOnBridge value is not \"true\" or \"false\".\n\n### Possible solutions\n\nanswerOnBridge must be \"true\" or \"false\".\n",
    "causes": "answerOnBridge value is not \"true\" or \"false\".",
    "solutions": "answerOnBridge must be \"true\" or \"false\".",
    "description": "answerOnBridge must be \"true\" or \"false\".",
    "date_created": "2020-05-16T02:48:19Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13220,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Dial: Invalid ringTone value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning is returned when a `<Dial>` verb includes an invalid `ringTone` attribute value. The `ringTone` attribute lets you override the ringback tone Twilio plays to the caller while executing `<Dial>`.\n\n### Possible causes\n\n- The `<Dial>` verb included a `ringTone` value that does not match one of Twilio's accepted ringtone overrides.\n- A custom ringtone override was supplied with a value outside the documented `ringTone` values for `<Dial>`.\n\n### Possible solutions\n\n- Update the `<Dial>` verb so `ringTone` is one of the accepted values for [ringTone](/docs/voice/twiml/dial#ringtone).\n- If you do not need to override ringback, omit `ringTone`. When it is not specified, Twilio will play ringback or pass ringback from the carrier if one is provided.\n\n#### Additional resources\n\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n",
    "causes": "* The `<Dial>` verb included a `ringTone` value that does not match one of Twilio's accepted ringtone overrides.\n* A custom ringtone override was supplied with a value outside the documented `ringTone` values for `<Dial>`.",
    "solutions": "* Update the `<Dial>` verb so `ringTone` is one of the accepted values for [ringTone](/docs/voice/twiml/dial#ringtone).\n* If you do not need to override ringback, omit `ringTone`. When it is not specified, Twilio will play ringback or pass ringback from the carrier if one is provided.",
    "description": "This warning is returned when a `<Dial>` verb includes an invalid `ringTone` attribute value. The `ringTone` attribute lets you override the ringback tone Twilio plays to the caller while executing `<Dial>`.",
    "date_created": "2020-05-16T02:49:41Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13221,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Number: Invalid method value",
    "secondary_message": "The method attribute of Number must be GET or POST. See the [Dial Verb](/docs/api/twiml/dial) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe method attribute of Number must be `GET` or `POST`. See the [Dial Verb](/docs/voice/twiml/dial) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The method attribute of Number must be `GET` or `POST`. See the [Dial Verb](/docs/voice/twiml/dial) API Reference for more information.",
    "date_created": "2016-03-31T17:13:33Z",
    "last_updated": "2020-08-04T10:00:28.728Z"
  },
  {
    "code": 13222,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Dial->Number: Invalid sendDigits value",
    "secondary_message": "The `sendDigits` attribute may contain numbers, the `#` and `*` characters, the letters `A`, `B`, `C`, `D`, as well as lowercase `w` to \"wait\" for half a second or uppercase `W` to \"wait\" for a full second. See the [Dial Verb](/docs/api/twiml/dial) API Reference for more information.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe `sendDigits` attribute may contain numbers, the `#` and `*` characters, the letters `A`, `B`, `C`, `D`, as well as lowercase `w` to \"wait\" for half a second or uppercase `W` to \"wait\" for a full second. See the [Dial Verb](/docs/voice/twiml/dial) API Reference for more information.\n\n### Possible causes\n\nThe attribute `sendDigits` includes an invalid character.\n\n### Possible solutions\n\nEnsure the `sendDigits` attribute only contains the characters: `0123456789ABCD*#wW`.\n",
    "causes": "The attribute `sendDigits` includes an invalid character.",
    "solutions": "Ensure the `sendDigits` attribute only contains the characters: `0123456789ABCD*#wW`.",
    "description": "The `sendDigits` attribute may contain numbers, the `#` and `*` characters, the letters `A`, `B`, `C`, `D`, as well as lowercase `w` to \"wait\" for half a second or uppercase `W` to \"wait\" for a full second. See the [Dial Verb](/docs/voice/twiml/dial) API Reference for more information.",
    "date_created": "2016-03-31T17:13:34Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13223,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Dial: Invalid phone number format",
    "secondary_message": "Phone Numbers must be in E.164 format. E.164 numbers are formatted \\[+] \\[country code] \\[subscriber number including area code] and can have a maximum of fifteen digits.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nPhone Numbers must be in E.164 format. E.164 numbers are formatted \\[+] \\[country code] \\[subscriber number including area code] and can have a maximum of 15 digits.\n\n### Possible causes\n\n- The phone number you are attempting to dial is not in E.164 format\n- The `<Number>` noun inside your `<Dial>` TwiML instructions is not present\n- You are attempting to dial something that is not a phone number\n\n### Possible solutions\n\nCheck the format of the phone number inside your `<Dial><Number>` TwiML.\n\nVerify that the number is in [E.164 format](/docs/glossary/what-e164):\n\n- Includes the country code\n- Includes the area code\n- Does not exceed 15 digits\n- Does not include any invalid characters, like hyphens or parentheses\n\nIn your TwiML instructions, the phone number must be between the opening and closing `<Number>` tags, which are nested within `<Dial>`'s opening and closing tags:\n\n```bash\n<Dial><Number>+15555555555</Number></Dial>\n```\n\nIf you are attempting to `<Dial>` an SDK end-user, ensure you're using the `<Client>` noun inside your `<Dial>` tags.\n\nIf you are attempting to `<Dial>` a SIP endpoint, ensure you're using the `<Sip>` noun inside your `<Dial>` tags.\n\nFor more information, read the [`<Dial>` docs](/docs/voice/twiml/dial).\n",
    "causes": "* The phone number you are attempting to dial is not in E.164 format\n* The `<Number>` noun inside your `<Dial>` TwiML instructions is not present\n* You are attempting to dial something that is not a phone number",
    "solutions": "Check the format of the phone number inside your `<Dial><Number>` TwiML. Verify that the number is in [E.164 format](/docs/glossary/what-e164): - Includes the country code\n- Includes the area code\n- Does not exceed 15 digits\n- Does not include any invalid characters, like hyphens or parentheses In your TwiML instructions, the phone number must be between the opening and closing `<Number>` tags, which are nested within `<Dial>`'s opening and closing tags: ```bash\n<Dial><Number>+15555555555</Number></Dial>\n``` If you are attempting to `<Dial>` an SDK end-user, ensure you're using the `<Client>` noun inside your `<Dial>` tags. If you are attempting to `<Dial>` a SIP endpoint, ensure you're using the `<Sip>` noun inside your `<Dial>` tags. For more information, read the [`<Dial>` docs](/docs/voice/twiml/dial).",
    "description": "Phone Numbers must be in E.164 format. E.164 numbers are formatted \\[+] \\[country code] \\[subscriber number including area code] and can have a maximum of 15 digits.",
    "date_created": "2016-03-31T17:13:34Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13224,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dial: Twilio does not support calling this number or the number is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when a `<Dial>` request targets a destination that Twilio cannot route or that is not a valid callable phone number. Format destination numbers in `E.164` and verify that the destination is valid and in service before you place the call.\n\n### Possible causes\n- The destination number is not formatted in `E.164`, such as a missing `+` or country code.\n- The destination uses a country code, area code, or exchange that does not exist or is not assigned.\n- The destination is a premium rate or shared-cost number that Twilio does not support for outbound calling.\n- The destination is formatted correctly, but no carrier partner can complete the call because of a local telecom network outage.\n\n### Possible solutions\n- Send the destination number in `E.164` format, for example `+14155552671`.\n- Check that the country code, area code, and subscriber number are valid for the destination you want to call.\n- Validate the number before you place the call. Use Twilio Lookup to confirm formatting and basic number validity.\n- Do not dial premium rate or shared-cost destinations.\n- If the number is valid and correctly formatted, try the call again later to rule out a temporary carrier outage.\n\n#### Additional resources\n- [TwiML Voice: `<Number>`](/docs/voice/twiml/number)\n- [What is E.164?](/docs/glossary/what-e164)\n- [Lookup v2 API](/docs/lookup/v2-api)\n",
    "causes": "* The destination number is not formatted in `E.164`, such as a missing `+` or country code.\n* The destination uses a country code, area code, or exchange that does not exist or is not assigned.\n* The destination is a premium rate or shared-cost number that Twilio does not support for outbound calling.\n* The destination is formatted correctly, but no carrier partner can complete the call because of a local telecom network outage.",
    "solutions": "* Send the destination number in `E.164` format, for example `+14155552671`.\n* Check that the country code, area code, and subscriber number are valid for the destination you want to call.\n* Validate the number before you place the call. Use Twilio Lookup to confirm formatting and basic number validity.\n* Do not dial premium rate or shared-cost destinations.\n* If the number is valid and correctly formatted, try the call again later to rule out a temporary carrier outage.",
    "description": "This error occurs when a `<Dial>` request targets a destination that Twilio cannot route or that is not a valid callable phone number. Format destination numbers in `E.164` and verify that the destination is valid and in service before you place the call.",
    "date_created": "2016-03-31T17:13:34Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13225,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dial: Call blocked by Twilio",
    "secondary_message": null,
    "product": "Programmable Voice, Trust-Hub",
    "products_used": [
      "voice",
      "trust-hub"
    ],
    "docs": "\n\n## Description\n\nTwilio blocked the outbound call before `<Dial>` connected it to the destination number. This usually happens when the destination is identified as high risk for fraud, a regulatory restriction prevents the call, or your account does not have a valid Primary Customer Profile for calls to a `+1` destination.\n\n### Possible causes\n\n- The destination was identified as a high-risk fraud target.\n- Regulatory requirements prevent Twilio from completing the call to that destination.\n- You are placing a call to a `+1` destination and your account does not have a valid Primary Customer Profile in Trust Hub. This can occur when:\n  - Your account does not have a Primary Customer Profile.\n  - Your account was created outside the United States or Canada after October 8, 2025 and only has an Individual Primary Customer Profile. In that case, an Individual profile does not satisfy the requirement for calling `+1` destinations.\n\n### Possible solutions\n\n- Confirm that you need to call the destination. If the number is legitimate and Twilio blocked it incorrectly, contact Support through the Console or Help Center and ask for the destination to be reviewed.\n- If you are calling a `+1` destination, verify that your account has an approved Primary Customer Profile in Trust Hub. If your account was created outside the United States or Canada after October 8, 2025, create a Business Primary Customer Profile and submit it for review before retrying the call.\n- Review the destination country's voice regulatory requirements and make sure your calling use case and number configuration comply before you retry the call.\n\n#### Additional resources\n\n- [Trust Hub](/docs/trust-hub)\n- [Console: Create a Primary Customer Profile](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n- [Requirements for Calling US and Canada Numbers (+1 Country Code)](https://help.twilio.com/articles/42720101060379)\n",
    "causes": "* The destination was identified as a high-risk fraud target.\n* Regulatory requirements prevent Twilio from completing the call to that destination.\n* You are placing a call to a `+1` destination and your account does not have a valid Primary Customer Profile in Trust Hub. This can occur when:\n  * Your account does not have a Primary Customer Profile.\n  * Your account was created outside the United States or Canada after October 8, 2025 and only has an Individual Primary Customer Profile. In that case, an Individual profile does not satisfy the requirement for calling `+1` destinations.",
    "solutions": "* Confirm that you need to call the destination. If the number is legitimate and Twilio blocked it incorrectly, contact Support through the Console or Help Center and ask for the destination to be reviewed.\n* If you are calling a `+1` destination, verify that your account has an approved Primary Customer Profile in Trust Hub. If your account was created outside the United States or Canada after October 8, 2025, create a Business Primary Customer Profile and submit it for review before retrying the call.\n* Review the destination country's voice regulatory requirements and make sure your calling use case and number configuration comply before you retry the call.",
    "description": "Twilio blocked the outbound call before `<Dial>` connected it to the destination number. This usually happens when the destination is identified as high risk for fraud, a regulatory restriction prevents the call, or your account does not have a valid Primary Customer Profile for calls to a `+1` destination.",
    "date_created": "2016-03-31T17:13:34Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13226,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid country code",
    "secondary_message": "The country code of the provided phone number is unknown",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nYou receive this warning when the phone number passed to `<Dial>` uses a country code that Twilio cannot identify. Destination numbers in `<Dial><Number>` should be valid phone numbers in E.164 format with a `+` and country code.\n\n### Possible causes\n- The value inside `<Dial><Number>` is not in E.164 format and does not include a recognizable country code.\n- The number starts with an invalid country code, or it begins with `0`, which is not a valid first digit for an E.164 country code.\n- An international destination was entered in local or national format instead of `+` followed by the country code and subscriber number. ([help.twilio.com](https://help.twilio.com/articles/223179888-How-do-I-dial-international-numbers-with-Twilio))\n\n### Possible solutions\n- Format the destination number in E.164 before you return `<Dial>` TwiML. Include `+`, a valid country code, the area code or national destination code, and the subscriber number. Keep the total length to 15 digits or fewer.\n- If you are converting a local number to E.164, remove any national trunk prefix such as a leading `0` before adding the country code when required for that country. ([help.twilio.com](https://help.twilio.com/articles/223179888-How-do-I-dial-international-numbers-with-Twilio))\n- Validate and normalize phone numbers with Twilio Lookup before you place the call or generate `<Dial><Number>`. Lookup can validate formatting and return invalid country code errors during validation.\n- If you are not dialing a PSTN phone number, use the correct `<Dial>` noun. Use `<Client>` for a Voice SDK identity or `<Sip>` for a SIP endpoint instead of `<Number>`.\n\n#### Additional resources\n- [TwiML Voice: `<Number>`](/docs/voice/twiml/number)\n- [What is E.164?](/docs/glossary/what-e164)\n- [Lookup v2 API](/docs/lookup/v2-api)\n",
    "causes": "* The value inside `<Dial><Number>` is not in E.164 format and does not include a recognizable country code.\n* The number starts with an invalid country code, or it begins with `0`, which is not a valid first digit for an E.164 country code.\n* An international destination was entered in local or national format instead of `+` followed by the country code and subscriber number. ([help.twilio.com](https://help.twilio.com/articles/223179888-How-do-I-dial-international-numbers-with-Twilio))",
    "solutions": "* Format the destination number in E.164 before you return `<Dial>` TwiML. Include `+`, a valid country code, the area code or national destination code, and the subscriber number. Keep the total length to 15 digits or fewer.\n* If you are converting a local number to E.164, remove any national trunk prefix such as a leading `0` before adding the country code when required for that country. ([help.twilio.com](https://help.twilio.com/articles/223179888-How-do-I-dial-international-numbers-with-Twilio))\n* Validate and normalize phone numbers with Twilio Lookup before you place the call or generate `<Dial><Number>`. Lookup can validate formatting and return invalid country code errors during validation.\n* If you are not dialing a PSTN phone number, use the correct `<Dial>` noun. Use `<Client>` for a Voice SDK identity or `<Sip>` for a SIP endpoint instead of `<Number>`.",
    "description": "You receive this warning when the phone number passed to `<Dial>` uses a country code that Twilio cannot identify. Destination numbers in `<Dial><Number>` should be valid phone numbers in E.164 format with a `+` and country code.",
    "date_created": "2016-03-31T17:13:35Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13227,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Geo Permission configuration is not permitting call",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call to a phone number that is not enabled on your account.\n\n### Possible causes\n\nUser dialed a destination your application is not enabled to support calling to.\n\n### Possible solutions\n\nPlease check your [Voice Dialing Geographic Permissions](https://www.twilio.com/console/voice/calls/geo-permissions), fix it, and try again.\n",
    "causes": "User dialed a destination your application is not enabled to support calling to.",
    "solutions": "Please check your [Voice Dialing Geographic Permissions](https://www.twilio.com/console/voice/calls/geo-permissions), fix it, and try again.",
    "description": "You attempted to initiate an outbound phone call to a phone number that is not enabled on your account.",
    "date_created": "2016-03-31T17:13:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13230,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Conference: Invalid muted value",
    "secondary_message": "placeholder",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis warning occurs when the `muted` attribute on `<Conference>` is set to a value other than `true` or `false`. The `muted` attribute controls whether a participant can speak in the conference and defaults to `false`.\n\n### Possible causes\n\n- The `muted` attribute on `<Conference>` was set to a value other than `true` or `false`.\n- Your application included `muted` in generated TwiML even though the participant did not need to join muted. When you do not set `muted`, Twilio uses the default value of `false`.\n- You need to change mute state after the participant joins, but the initial `<Conference>` TwiML is being used with an unsupported `muted` value instead of a valid boolean value.\n\n### Possible solutions\n\n- Set the `muted` attribute on `<Conference>` to `true` or `false` only.\n- If the participant should join unmuted, remove the `muted` attribute and let Twilio use the default value of `false`.\n- If you need to mute or unmute a participant after they join the conference, update the participant by using the Conference Participant API.\n\n#### Additional resources\n\n- [TwiML `<Conference>`](/docs/voice/twiml/conference)\n- [Conference Participants API](/docs/voice/api/conference-participant-resource)\n- [TwiML `<Dial>`](/docs/voice/twiml/dial)\n",
    "causes": "* The `muted` attribute on `<Conference>` was set to a value other than `true` or `false`.\n* Your application included `muted` in generated TwiML even though the participant did not need to join muted. When you do not set `muted`, Twilio uses the default value of `false`.\n* You need to change mute state after the participant joins, but the initial `<Conference>` TwiML is being used with an unsupported `muted` value instead of a valid boolean value.",
    "solutions": "* Set the `muted` attribute on `<Conference>` to `true` or `false` only.\n* If the participant should join unmuted, remove the `muted` attribute and let Twilio use the default value of `false`.\n* If you need to mute or unmute a participant after they join the conference, update the participant by using the Conference Participant API.",
    "description": "This warning occurs when the `muted` attribute on `<Conference>` is set to a value other than `true` or `false`. The `muted` attribute controls whether a participant can speak in the conference and defaults to `false`.",
    "date_created": "2016-03-31T17:13:35Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 13231,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Invalid endConferenceOnExit value",
    "secondary_message": "placeholder",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your `<Dial><Conference>` TwiML sets `endConferenceOnExit` to a value other than `true` or `false`. Use this attribute to control whether the conference ends when that participant leaves. If you omit the attribute, the default value is `false`.\n\n### Possible causes\n\n- Your application sends a value such as `True`, `FALSE`, `yes`, `1`, or another non-boolean string for `endConferenceOnExit`.\n- Your TwiML template or helper library inserts extra quotes, whitespace, or other invalid characters into the `endConferenceOnExit` attribute. This causes the final `<Conference>` noun to contain a value Twilio cannot parse as `true` or `false`.\n- Your application maps user input or configuration values directly into `endConferenceOnExit` without validating them first.\n\n### Possible solutions\n\n- Set `endConferenceOnExit` to `true` or `false` only. For example, use `<Conference endConferenceOnExit=\"true\">` or `<Conference endConferenceOnExit=\"false\">`.\n- If you do not need the conference to end when that participant exits, remove the `endConferenceOnExit` attribute and let Twilio use the default value of `false`.\n- Validate the generated TwiML before you return it to Twilio. Confirm that the final XML contains a valid `<Conference>` noun and that `endConferenceOnExit` is set to a supported boolean value.\n- If your application builds conference participants dynamically, normalize configuration values before rendering TwiML so only `true` or `false` is passed into the attribute.\n\n#### Additional resources\n\n- [TwiML `<Conference>` noun](/docs/voice/twiml/conference)\n- [TwiML `<Dial>` verb](/docs/voice/twiml/dial)\n- [Conference Participants resource](/docs/voice/api/conference-participant-resource)\n",
    "causes": "* Your application sends a value such as `True`, `FALSE`, `yes`, `1`, or another non-boolean string for `endConferenceOnExit`.\n* Your TwiML template or helper library inserts extra quotes, whitespace, or other invalid characters into the `endConferenceOnExit` attribute. This causes the final `<Conference>` noun to contain a value Twilio cannot parse as `true` or `false`.\n* Your application maps user input or configuration values directly into `endConferenceOnExit` without validating them first.",
    "solutions": "* Set `endConferenceOnExit` to `true` or `false` only. For example, use `<Conference endConferenceOnExit=\"true\">` or `<Conference endConferenceOnExit=\"false\">`.\n* If you do not need the conference to end when that participant exits, remove the `endConferenceOnExit` attribute and let Twilio use the default value of `false`.\n* Validate the generated TwiML before you return it to Twilio. Confirm that the final XML contains a valid `<Conference>` noun and that `endConferenceOnExit` is set to a supported boolean value.\n* If your application builds conference participants dynamically, normalize configuration values before rendering TwiML so only `true` or `false` is passed into the attribute.",
    "description": "Twilio returns this error when your `<Dial><Conference>` TwiML sets `endConferenceOnExit` to a value other than `true` or `false`. Use this attribute to control whether the conference ends when that participant leaves. If you omit the attribute, the default value is `false`.",
    "date_created": "2016-03-31T17:13:36Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 13232,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Conference: Invalid startConferenceOnEnter value",
    "secondary_message": "placeholder",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when the `<Conference>` noun inside `<Dial>` includes a `startConferenceOnEnter` value other than `true` or `false`. Use `startConferenceOnEnter` to control whether a participant starts the conference when joining. If you omit the attribute, the default value is `true`. If you set it to `false` before the conference starts, that participant is muted and hears background music until another participant joins with `startConferenceOnEnter=\"true\"`.\n\n### Possible causes\n\n- The `<Conference>` noun sets `startConferenceOnEnter` to a value other than `true` or `false`.\n- A dynamic value in your TwiML or application logic resolves to an unsupported value for `startConferenceOnEnter`. The attribute only accepts `true` or `false`.\n- You are trying to implement a moderated conference, but the participant who should start the conference was not assigned a valid `startConferenceOnEnter` value.\n\n### Possible solutions\n\n- Set `startConferenceOnEnter` to `true` or `false` in your `<Conference>` TwiML.\n- Remove the `startConferenceOnEnter` attribute if you want to use the default behavior. The default value is `true`.\n- If you are building a moderated conference, set `startConferenceOnEnter=\"true\"` for participants who should start the conference and `startConferenceOnEnter=\"false\"` for participants who should wait in the lobby with background music.\n- Validate the value before you generate TwiML so your application only sends supported boolean values.\n\n#### Additional resources\n\n- [`<Conference>` TwiML noun](/docs/voice/twiml/conference)\n- [`<Dial>` TwiML verb](/docs/voice/twiml/dial)\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n",
    "causes": "* The `<Conference>` noun sets `startConferenceOnEnter` to a value other than `true` or `false`.\n* A dynamic value in your TwiML or application logic resolves to an unsupported value for `startConferenceOnEnter`. The attribute only accepts `true` or `false`.\n* You are trying to implement a moderated conference, but the participant who should start the conference was not assigned a valid `startConferenceOnEnter` value.",
    "solutions": "* Set `startConferenceOnEnter` to `true` or `false` in your `<Conference>` TwiML.\n* Remove the `startConferenceOnEnter` attribute if you want to use the default behavior. The default value is `true`.\n* If you are building a moderated conference, set `startConferenceOnEnter=\"true\"` for participants who should start the conference and `startConferenceOnEnter=\"false\"` for participants who should wait in the lobby with background music.\n* Validate the value before you generate TwiML so your application only sends supported boolean values.",
    "description": "Twilio returns this warning when the `<Conference>` noun inside `<Dial>` includes a `startConferenceOnEnter` value other than `true` or `false`. Use `startConferenceOnEnter` to control whether a participant starts the conference when joining. If you omit the attribute, the default value is `true`. If you set it to `false` before the conference starts, that participant is muted and hears background music until another participant joins with `startConferenceOnEnter=\"true\"`.",
    "date_created": "2016-03-31T17:13:36Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 13233,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Conference: Invalid waitUrl",
    "secondary_message": "placeholder",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nSet `waitUrl` on `<Conference>` to a well-formed relative or absolute URL, or set it to `''` if you do not want to play anything before the conference starts. The `waitUrl` endpoint can return an MP3 file, a WAV file, or a TwiML document.\n\n### Possible causes\n- You passed a `waitUrl` value that is not a well-formed URL.\n- You provided a value that is neither a relative or absolute URL nor the empty string `''`.\n- You intended to play hold audio or TwiML before the conference starts, but the `waitUrl` value does not point to a valid endpoint Twilio can request.\n- You intended to disable waiting audio, but you used a placeholder or invalid value instead of the empty string `''`.\n\n### Possible solutions\n- Update `waitUrl` to a valid relative or absolute URL.\n- If you do not want to play anything while callers wait for the conference to start, set `waitUrl` to `''`.\n- Make sure the `waitUrl` endpoint returns supported content such as an MP3 file, a WAV file, or a TwiML document.\n- If `waitUrl` returns TwiML, use only supported verbs such as `<Play>`, `<Say>`, `<Pause>`, and `<Redirect>`.\n- If you need a simple hosted endpoint for valid TwiML, use a TwiML Bin and return properly formed TwiML from that URL.\n\n#### Additional resources\n- [TwiML `<Conference>`](/docs/voice/twiml/conference)\n- [Voice Conference](/docs/voice/conference)\n- [Get Started with TwiML Bins](/docs/serverless/twiml-bins/getting-started)\n",
    "causes": "* You passed a `waitUrl` value that is not a well-formed URL.\n* You provided a value that is neither a relative or absolute URL nor the empty string `''`.\n* You intended to play hold audio or TwiML before the conference starts, but the `waitUrl` value does not point to a valid endpoint Twilio can request.\n* You intended to disable waiting audio, but you used a placeholder or invalid value instead of the empty string `''`.",
    "solutions": "* Update `waitUrl` to a valid relative or absolute URL.\n* If you do not want to play anything while callers wait for the conference to start, set `waitUrl` to `''`.\n* Make sure the `waitUrl` endpoint returns supported content such as an MP3 file, a WAV file, or a TwiML document.\n* If `waitUrl` returns TwiML, use only supported verbs such as `<Play>`, `<Say>`, `<Pause>`, and `<Redirect>`.\n* If you need a simple hosted endpoint for valid TwiML, use a TwiML Bin and return properly formed TwiML from that URL.",
    "description": "Set `waitUrl` on `<Conference>` to a well-formed relative or absolute URL, or set it to `''` if you do not want to play anything before the conference starts. The `waitUrl` endpoint can return an MP3 file, a WAV file, or a TwiML document.",
    "date_created": "2016-03-31T17:13:36Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13234,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Conference: Invalid waitMethod",
    "secondary_message": "placeholder",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nSet `waitMethod` on `<Conference>` to `GET` or `POST` only. Twilio uses this attribute when requesting `waitUrl` before the conference starts. If you specify `waitUrl`, the default method is `POST`. If you do not specify `waitUrl`, Twilio requests the default hold music with `GET`. Use `GET` when `waitUrl` points directly to a static WAV or MP3 file so Twilio can cache it.\n\n### Possible causes\n\n- The `<Conference>` noun sets `waitMethod` to a value other than `GET` or `POST`.\n- Your application generates TwiML with an unsupported HTTP method for `waitUrl`.\n- You configured `waitUrl` for pre-conference audio or TwiML, but the associated `waitMethod` value is not valid.\n\n### Possible solutions\n\n- Update the `<Conference>` noun so `waitMethod` is set to `GET` or `POST`.\n- Use `GET` when `waitUrl` points directly to a static WAV or MP3 file.\n- If `waitUrl` returns TwiML, make sure your application accepts the same `GET` or `POST` method you configured in `waitMethod`.\n- If you do not need custom hold music or pre-conference TwiML, remove the custom `waitUrl` and let Twilio use the default hold music behavior.\n\n#### Additional resources\n\n- [TwiML `<Conference>`](/docs/voice/twiml/conference)\n- [TwiML `<Dial>`](/docs/voice/twiml/dial)\n- [Conference Participants API](/docs/voice/api/conference-participant-resource)\n",
    "causes": "* The `<Conference>` noun sets `waitMethod` to a value other than `GET` or `POST`.\n* Your application generates TwiML with an unsupported HTTP method for `waitUrl`.\n* You configured `waitUrl` for pre-conference audio or TwiML, but the associated `waitMethod` value is not valid.",
    "solutions": "* Update the `<Conference>` noun so `waitMethod` is set to `GET` or `POST`.\n* Use `GET` when `waitUrl` points directly to a static WAV or MP3 file.\n* If `waitUrl` returns TwiML, make sure your application accepts the same `GET` or `POST` method you configured in `waitMethod`.\n* If you do not need custom hold music or pre-conference TwiML, remove the custom `waitUrl` and let Twilio use the default hold music behavior.",
    "description": "Set `waitMethod` on `<Conference>` to `GET` or `POST` only. Twilio uses this attribute when requesting `waitUrl` before the conference starts. If you specify `waitUrl`, the default method is `POST`. If you do not specify `waitUrl`, Twilio requests the default hold music with `GET`. Use `GET` when `waitUrl` points directly to a static WAV or MP3 file so Twilio can cache it.",
    "date_created": "2016-03-31T17:13:37Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 13235,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Conference: Invalid beep value",
    "secondary_message": "placeholder",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis warning occurs when you set the `<Conference>` `beep` attribute to a value Twilio does not accept. Use only `true`, `false`, `onEnter`, or `onExit` to control whether notification beeps play when participants join or leave a conference.\n\n### Possible causes\n\n- The `beep` attribute in your `<Dial><Conference>` TwiML was set to a value other than `true`, `false`, `onEnter`, or `onExit`.\n- Your application generated the `beep` value dynamically and introduced a typo, unsupported casing, or another unsupported value. Twilio only accepts `true`, `false`, `onEnter`, or `onExit`.\n- You passed an unsupported `beep` value when creating or updating a conference participant through the Conference Participant API.\n\n### Possible solutions\n\n- Update your `<Conference>` TwiML so `beep` uses one of the supported values: `true`, `false`, `onEnter`, or `onExit`.\n- Choose the value that matches the participant experience you want. Use `true` for beeps on join and leave, `false` for no beeps, `onEnter` for join only, or `onExit` for leave only.\n- If you set conference options through the Conference Participant API, send the same supported `beep` values there and review any application logic that builds the request.\n\n#### Additional resources\n\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [Voice Conference overview](/docs/voice/conference)\n- [Conference Participants API](/docs/voice/api/conference-participant-resource)\n",
    "causes": "* The `beep` attribute in your `<Dial><Conference>` TwiML was set to a value other than `true`, `false`, `onEnter`, or `onExit`.\n* Your application generated the `beep` value dynamically and introduced a typo, unsupported casing, or another unsupported value. Twilio only accepts `true`, `false`, `onEnter`, or `onExit`.\n* You passed an unsupported `beep` value when creating or updating a conference participant through the Conference Participant API.",
    "solutions": "* Update your `<Conference>` TwiML so `beep` uses one of the supported values: `true`, `false`, `onEnter`, or `onExit`.\n* Choose the value that matches the participant experience you want. Use `true` for beeps on join and leave, `false` for no beeps, `onEnter` for join only, or `onExit` for leave only.\n* If you set conference options through the Conference Participant API, send the same supported `beep` values there and review any application logic that builds the request.",
    "description": "This warning occurs when you set the `<Conference>` `beep` attribute to a value Twilio does not accept. Use only `true`, `false`, `onEnter`, or `onExit` to control whether notification beeps play when participants join or leave a conference.",
    "date_created": "2016-03-31T17:13:37Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 13236,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Conference: Invalid Conference Sid",
    "secondary_message": "placeholder",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis warning occurs when you try to connect to a conference by `ConferenceSid`, but the SID does not identify an existing conference or the conference has already been completed. Conference SIDs use the `CF` prefix, and a `ConferenceSid` must refer to an active conference.\n\n### Possible causes\n- The `ConferenceSid` is mistyped, truncated, or otherwise invalid.\n- The `ConferenceSid` does not belong to a conference in your account.\n- The `ConferenceSid` refers to a conference that has already ended and is now `completed`.\n- Your application reused a stale `ConferenceSid` from an earlier call flow instead of the current active conference.\n\n### Possible solutions\n- Verify that you are passing the correct `ConferenceSid` for the conference you want to join. A valid conference SID starts with `CF`.\n- Check the conference status before you reuse a stored SID. If the conference has been completed, create or reference a new active conference instead.\n- If you want Twilio to create a conference when one does not already exist, use a named conference with `<Conference>` or use `FriendlyName` when creating a participant.\n- Update your application logic to store the current active conference identifier and avoid reusing old conference SIDs after the conference ends.\n\n#### Additional resources\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [Conferences resource](/docs/voice/api/conference-resource)\n- [Conference Participants subresource](/docs/voice/api/conference-participant-resource)\n",
    "causes": "* The `ConferenceSid` is mistyped, truncated, or otherwise invalid.\n* The `ConferenceSid` does not belong to a conference in your account.\n* The `ConferenceSid` refers to a conference that has already ended and is now `completed`.\n* Your application reused a stale `ConferenceSid` from an earlier call flow instead of the current active conference.",
    "solutions": "* Verify that you are passing the correct `ConferenceSid` for the conference you want to join. A valid conference SID starts with `CF`.\n* Check the conference status before you reuse a stored SID. If the conference has been completed, create or reference a new active conference instead.\n* If you want Twilio to create a conference when one does not already exist, use a named conference with `<Conference>` or use `FriendlyName` when creating a participant.\n* Update your application logic to store the current active conference identifier and avoid reusing old conference SIDs after the conference ends.",
    "description": "This warning occurs when you try to connect to a conference by `ConferenceSid`, but the SID does not identify an existing conference or the conference has already been completed. Conference SIDs use the `CF` prefix, and a `ConferenceSid` must refer to an active conference.",
    "date_created": "2016-03-31T17:13:37Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13237,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Conference: Invalid Conference Name",
    "secondary_message": "placeholder",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nTwilio returns this warning when the conference name passed to `<Dial><Conference>` is not valid. The conference room name must contain between 1 and 128 characters.\n\n### Possible causes\n- The `<Conference>` noun does not include a conference name.\n- The conference name is an empty string.\n- The conference name is longer than 128 characters.\n\n### Possible solutions\n- Provide a conference name inside `<Dial><Conference>`.\n- Keep the conference name between 1 and 128 characters.\n- Validate the conference name in your application before you return TwiML.\n- Use a conference name that does not include personal or sensitive data.\n\n#### Additional resources\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [Conferences resource](/docs/voice/api/conference-resource)\n",
    "causes": "* The `<Conference>` noun does not include a conference name.\n* The conference name is an empty string.\n* The conference name is longer than 128 characters.",
    "solutions": "* Provide a conference name inside `<Dial><Conference>`.\n* Keep the conference name between 1 and 128 characters.\n* Validate the conference name in your application before you return TwiML.\n* Use a conference name that does not include personal or sensitive data.",
    "description": "Twilio returns this warning when the conference name passed to `<Dial><Conference>` is not valid. The conference room name must contain between 1 and 128 characters.",
    "date_created": "2016-03-31T17:13:38Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13238,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dial->Conference: Invalid Verb used in waitUrl, holdUrl, or announceUrl TwiML",
    "secondary_message": "placeholder",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe TwiML that executes via the waitUrl, holdUrl, or announceUrl can only contain Say, Play, Pause, and Redirect verbs. Dial, Gather, Hangup and Record are not allowed.\n\n### Possible causes\n\nDial, Gather, Hangup or Record verbs are used in the TwiML.\n\n### Possible solutions\n\nRemove Dial, Gather, Hangup and Record verbs from the TwiML.\n",
    "causes": "Dial, Gather, Hangup or Record verbs are used in the TwiML.",
    "solutions": "Remove Dial, Gather, Hangup and Record verbs from the TwiML.",
    "description": "The TwiML that executes via the waitUrl, holdUrl, or announceUrl can only contain Say, Play, Pause, and Redirect verbs. Dial, Gather, Hangup and Record are not allowed.",
    "date_created": "2016-03-31T17:13:38Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13239,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Invalid Trim Value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `<Conference>` noun receives an invalid `trim` value. The documented `trim` values for `<Conference>` are `trim-silence` and `do-not-trim`.\n\n### Possible causes\n\n- The `<Conference>` noun includes a `trim` attribute with a value other than `trim-silence` or `do-not-trim`.\n\n### Possible solutions\n\n- Update the `<Conference>` noun so `trim` is set to `trim-silence` or `do-not-trim`.\n- Remove the `trim` attribute if you want Twilio to use the documented default value of `trim-silence`.\n\n## Additional resources\n\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n",
    "causes": "* The `<Conference>` noun includes a `trim` attribute with a value other than `trim-silence` or `do-not-trim`.",
    "solutions": "* Update the `<Conference>` noun so `trim` is set to `trim-silence` or `do-not-trim`.\n* Remove the `trim` attribute if you want Twilio to use the documented default value of `trim-silence`.",
    "description": "Twilio returns this error when the `<Conference>` noun receives an invalid `trim` value. The documented `trim` values for `<Conference>` are `trim-silence` and `do-not-trim`.",
    "date_created": "2017-02-14T23:37:04Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13240,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Dial->Conference: Invalid Whisper SID",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Call SID supplied for conference whisper or the `<Conference>` `coach` attribute is invalid. Twilio requires `coach` to reference a call that is currently connected to an in-progress conference. If the specified call SID does not exist or is no longer connected to that conference, Twilio throws 13240 and the call fails to the `action` URL.\n\n### Possible causes\n\n- The value passed for conference whisper or the `<Conference>` `coach` attribute is not a valid Call SID.\n- The referenced call SID does not exist.\n- The referenced call is no longer connected to the in-progress conference.\n- The participant's call has already ended, the associated conference has ended, or the call was modified to use new TwiML, so it is no longer available as an active conference participant.\n\n### Possible solutions\n\n- Verify that the value used for conference whisper or `coach` is the Call SID of an active participant in the same in-progress conference.\n- Confirm that the SID is a valid Call SID with the `CA` prefix and the expected 34-character SID format.\n- Check the active conference participant list before using `coach` to ensure the target call is still connected to the conference.\n- If the target participant has left the conference or the call has been redirected to new TwiML, use the current active participant's Call SID instead of a stale SID.\n\n#### Additional resources\n\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* The value passed for conference whisper or the `<Conference>` `coach` attribute is not a valid Call SID.\n* The referenced call SID does not exist.\n* The referenced call is no longer connected to the in-progress conference.\n* The participant's call has already ended, the associated conference has ended, or the call was modified to use new TwiML, so it is no longer available as an active conference participant.",
    "solutions": "* Verify that the value used for conference whisper or `coach` is the Call SID of an active participant in the same in-progress conference.\n* Confirm that the SID is a valid Call SID with the `CA` prefix and the expected 34-character SID format.\n* Check the active conference participant list before using `coach` to ensure the target call is still connected to the conference.\n* If the target participant has left the conference or the call has been redirected to new TwiML, use the current active participant's Call SID instead of a stale SID.",
    "description": "This error occurs when the Call SID supplied for conference whisper or the `<Conference>` `coach` attribute is invalid. Twilio requires `coach` to reference a call that is currently connected to an in-progress conference. If the specified call SID does not exist or is no longer connected to that conference, Twilio throws 13240 and the call fails to the `action` URL.",
    "date_created": "2017-02-14T23:38:57Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13241,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->SIP: Invalid method value",
    "secondary_message": "The method attribute of Number must be GET or POST",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nYou receive this warning when the `method` attribute on `<Dial><Sip>` is set to a value other than `GET` or `POST`. On `<Sip>`, the `method` attribute controls which HTTP method Twilio uses when requesting the TwiML URL specified by the `url` attribute. If you omit `method`, Twilio uses `POST` by default.\n\n### Possible causes\n- Your `<Sip>` noun includes `method` with a value other than `GET` or `POST`.\n- Your application sets a `url` on `<Sip>` and passes an unsupported HTTP method for the request to that URL.\n- Your TwiML is generated dynamically, and the code that builds `<Dial><Sip>` is sending an invalid `method` value instead of using a supported value or the default `POST`.\n\n### Possible solutions\n- Update the `<Sip>` noun to use `method=\"GET\"` or `method=\"POST\"`.\n- If you do not need to override the HTTP method, remove the `method` attribute and let Twilio use the default `POST`.\n- Review the code or template that generates your TwiML and confirm the `url` and `method` values on `<Sip>` are valid before you return the response.\n\n#### Additional resources\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [Making SIP Calls](/docs/voice/api/sip-making-calls)\n",
    "causes": "* Your `<Sip>` noun includes `method` with a value other than `GET` or `POST`.\n* Your application sets a `url` on `<Sip>` and passes an unsupported HTTP method for the request to that URL.\n* Your TwiML is generated dynamically, and the code that builds `<Dial><Sip>` is sending an invalid `method` value instead of using a supported value or the default `POST`.",
    "solutions": "* Update the `<Sip>` noun to use `method=\"GET\"` or `method=\"POST\"`.\n* If you do not need to override the HTTP method, remove the `method` attribute and let Twilio use the default `POST`.\n* Review the code or template that generates your TwiML and confirm the `url` and `method` values on `<Sip>` are valid before you return the response.",
    "description": "You receive this warning when the `method` attribute on `<Dial><Sip>` is set to a value other than `GET` or `POST`. On `<Sip>`, the `method` attribute controls which HTTP method Twilio uses when requesting the TwiML URL specified by the `url` attribute. If you omit `method`, Twilio uses `POST` by default.",
    "date_created": "2016-03-31T17:13:38Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13242,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->SIP: Invalid sendDigits value",
    "secondary_message": "sendDigits attribute may only contain the following characters \"0123456789\\*#w\"",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis warning appears when the `sendDigits` attribute used with `<Dial><Sip>` contains characters outside `0` through `9`, `*`, `#`, or `w`. Use `sendDigits` to send DTMF digits after the SIP call connects.\n\n### Possible causes\n- The `sendDigits` value includes a character that is not supported for `<Dial><Sip>`. Only `0` through `9`, `*`, `#`, and `w` are valid.\n- The value uses `W` or `A` through `D`, which are accepted in some outbound call flows but are not valid for `<Dial><Sip>`.\n- Your application passes `sendDigits` through a URL or query string and does not preserve characters such as `#` correctly before generating the TwiML.\n\n### Possible solutions\n- Update the `sendDigits` value so it contains only `0` through `9`, `*`, `#`, and `w`.\n- If you need pauses, use lowercase `w`. Do not use uppercase `W` in `<Dial><Sip>`.\n- Review the code or template that generates your `<Dial><Sip>` TwiML and remove any unsupported characters before returning the response.\n- If your application builds the value from a URL parameter, URL-encode `#` and verify the final TwiML contains the exact digits you expect.\n\n#### Additional resources\n- [TwiML `<Sip>` noun](/docs/voice/twiml/sip)\n- [TwiML `<Dial>` verb](/docs/voice/twiml/dial)\n- [Making SIP calls](/docs/voice/api/sip-making-calls)\n",
    "causes": "* The `sendDigits` value includes a character that is not supported for `<Dial><Sip>`. Only `0` through `9`, `*`, `#`, and `w` are valid.\n* The value uses `W` or `A` through `D`, which are accepted in some outbound call flows but are not valid for `<Dial><Sip>`.\n* Your application passes `sendDigits` through a URL or query string and does not preserve characters such as `#` correctly before generating the TwiML.",
    "solutions": "* Update the `sendDigits` value so it contains only `0` through `9`, `*`, `#`, and `w`.\n* If you need pauses, use lowercase `w`. Do not use uppercase `W` in `<Dial><Sip>`.\n* Review the code or template that generates your `<Dial><Sip>` TwiML and remove any unsupported characters before returning the response.\n* If your application builds the value from a URL parameter, URL-encode `#` and verify the final TwiML contains the exact digits you expect.",
    "description": "This warning appears when the `sendDigits` attribute used with `<Dial><Sip>` contains characters outside `0` through `9`, `*`, `#`, or `w`. Use `sendDigits` to send DTMF digits after the SIP call connects.",
    "date_created": "2016-03-31T17:13:38Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13243,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->SIP: Invalid SIP URI",
    "secondary_message": "The provided SIP URI is not formatted properly.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis warning occurs when the value in the `<Sip>` noun is not formatted as a valid SIP URI. Provide a valid SIP URI that is fewer than 255 characters.\n\n### Possible causes\n- The `<Sip>` noun does not contain a valid SIP URI such as `sip:jack@example.com`.\n- The SIP URI is longer than 255 characters.\n- SIP URI parameters or custom headers were appended with invalid syntax, which makes the full SIP URI invalid.\n\n### Possible solutions\n- Update the `<Sip>` value to a valid SIP URI such as `sip:jack@example.com`.\n- Shorten the SIP URI so the full value stays under 255 characters.\n- If you need to set transport, add it as a SIP URI parameter such as `sip:jack@example.com;transport=tcp` or `sip:jack@example.com;transport=tls`.\n- If you need to add custom headers, append them after `?` and encode reserved characters as needed.\n\n#### Additional resources\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n- [Making SIP Calls](/docs/voice/api/sip-making-calls)\n- [Use SIP with Twilio Voice](/docs/voice/api/sip-interface)\n",
    "causes": "* The `<Sip>` noun does not contain a valid SIP URI such as `sip:jack@example.com`.\n* The SIP URI is longer than 255 characters.\n* SIP URI parameters or custom headers were appended with invalid syntax, which makes the full SIP URI invalid.",
    "solutions": "* Update the `<Sip>` value to a valid SIP URI such as `sip:jack@example.com`.\n* Shorten the SIP URI so the full value stays under 255 characters.\n* If you need to set transport, add it as a SIP URI parameter such as `sip:jack@example.com;transport=tcp` or `sip:jack@example.com;transport=tls`.\n* If you need to add custom headers, append them after `?` and encode reserved characters as needed.",
    "description": "This warning occurs when the value in the `<Sip>` noun is not formatted as a valid SIP URI. Provide a valid SIP URI that is fewer than 255 characters.",
    "date_created": "2016-03-31T17:13:39Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13244,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: No SIP Authorization",
    "secondary_message": "Your account is not authorized to make SIP calls",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis warning is returned when you try to place a SIP call with `<Dial><Sip>` or the Calls API from an account that is not authorized to use SIP calling.\n\n### Possible causes\n- You attempted to dial a SIP URI with `<Dial><Sip>` from an account that does not have SIP calling access.\n- You attempted to create an outbound SIP call with the Calls API by setting the `To` parameter to a SIP URI on an account that is not enabled for SIP.\n\n### Possible solutions\n- Place the SIP call from a Twilio account that has SIP calling enabled.\n- Review your SIP call flow and retry with the supported Programmable Voice SIP configuration after SIP access is available.\n- If the destination SIP endpoint requires authentication, pass valid credentials by using the `<Sip>` `username` and `password` attributes or the Calls API `SipAuthUsername` and `SipAuthPassword` parameters.\n\n#### Additional resources\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n- [Making SIP Calls](/docs/voice/api/sip-making-calls)\n- [Use SIP with Twilio Voice](/docs/voice/api/sip-interface)\n",
    "causes": "* You attempted to dial a SIP URI with `<Dial><Sip>` from an account that does not have SIP calling access.\n* You attempted to create an outbound SIP call with the Calls API by setting the `To` parameter to a SIP URI on an account that is not enabled for SIP.",
    "solutions": "* Place the SIP call from a Twilio account that has SIP calling enabled.\n* Review your SIP call flow and retry with the supported Programmable Voice SIP configuration after SIP access is available.\n* If the destination SIP endpoint requires authentication, pass valid credentials by using the `<Sip>` `username` and `password` attributes or the Calls API `SipAuthUsername` and `SipAuthPassword` parameters.",
    "description": "This warning is returned when you try to place a SIP call with `<Dial><Sip>` or the Calls API from an account that is not authorized to use SIP calling.",
    "date_created": "2016-03-31T17:13:39Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13245,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Not allowed in this API version",
    "secondary_message": "Your version of the API does not support this feature.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis warning appears when Twilio receives `<Dial>` in a TwiML session that is running on an API version that does not support that verb. A new TwiML session can be started by a TwiML Application `apiVersion`, and incoming call handling can also use the `apiVersion` configured on the called Twilio phone number.\n\n### Possible causes\n\n- A TwiML Application is set to `apiVersion` `2008-08-01`, so Twilio starts the session with an older version and the returned TwiML includes `<Dial>`.\n- The Twilio phone number handling an incoming call is configured with an older `apiVersion`, and your webhook returns TwiML that expects `2010-04-01` behavior.\n- The webhook or TwiML Bin serving the call returns `<Dial>` even though the current session version only supports older TwiML verbs.\n\n### Possible solutions\n\n- Update the TwiML Application `apiVersion` to `2010-04-01`.\n- If the warning occurs on an incoming call to a Twilio phone number, update that number's `apiVersion` to `2010-04-01`.\n- Review the TwiML returned by your Voice URL and remove `<Dial>` until the session is running on a supported API version, or return only verbs supported by the selected version.\n- Verify that the call is reaching the intended Voice URL or TwiML Application so the session starts with the configuration you expect.\n\n#### Additional resources\n- [TwiML™ Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [REST API: Applications](/docs/usage/api/applications)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n",
    "causes": "* A TwiML Application is set to `apiVersion` `2008-08-01`, so Twilio starts the session with an older version and the returned TwiML includes `<Dial>`.\n* The Twilio phone number handling an incoming call is configured with an older `apiVersion`, and your webhook returns TwiML that expects `2010-04-01` behavior.\n* The webhook or TwiML Bin serving the call returns `<Dial>` even though the current session version only supports older TwiML verbs.",
    "solutions": "* Update the TwiML Application `apiVersion` to `2010-04-01`.\n* If the warning occurs on an incoming call to a Twilio phone number, update that number's `apiVersion` to `2010-04-01`.\n* Review the TwiML returned by your Voice URL and remove `<Dial>` until the session is running on a supported API version, or return only verbs supported by the selected version.\n* Verify that the call is reaching the intended Voice URL or TwiML Application so the session starts with the configuration you expect.",
    "description": "This warning appears when Twilio receives `<Dial>` in a TwiML session that is running on an API version that does not support that verb. A new TwiML session can be started by a TwiML Application `apiVersion`, and incoming call handling can also use the `apiVersion` configured on the called Twilio phone number.",
    "date_created": "2016-03-31T17:14:07Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13246,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: SIP dialing not enabled for this account",
    "secondary_message": "Your account is not enabled for SIP dialing.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nYou receive this warning when you try to send a call to a SIP endpoint from an account that is not enabled for SIP dialing. SIP dialing is used when you route a call with `<Dial><Sip>` or when you create a call with a SIP URI in the `To` parameter of the Calls API.\n\n### Possible causes\n- Your TwiML uses `<Dial><Sip>` to connect a call to a SIP endpoint, but the account that executed the TwiML is not enabled for SIP dialing.\n- Your Calls API request uses a SIP URI such as `sip:user@example.com` in the `To` parameter, but the account that sent the request is not enabled for SIP dialing.\n- The account that originates the SIP session does not have SIP dialing enabled. Twilio returns this warning at the account level before it can place the SIP call.\n\n### Possible solutions\n- Enable SIP dialing on the account that originates the call before you use `<Dial><Sip>` or a SIP URI in `To`. If you need help with account access or feature enablement, contact Support from the affected account.\n- Use the correct SIP dialing entry point for your workflow. Route an active call with `<Dial><Sip>`, or create a new outbound SIP call by sending a SIP URI in the `To` parameter of the Calls API.\n- After SIP dialing is enabled, allow Twilio SIP signaling IP addresses and media ports in your communications infrastructure so Twilio can send SIP traffic to your endpoint.\n\n#### Additional resources\n- [Outbound - Receiving SIP from Twilio](/docs/voice/api/receiving-sip)\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n- [Making SIP Calls](/docs/voice/api/sip-making-calls)\n",
    "causes": "* Your TwiML uses `<Dial><Sip>` to connect a call to a SIP endpoint, but the account that executed the TwiML is not enabled for SIP dialing.\n* Your Calls API request uses a SIP URI such as `sip:user@example.com` in the `To` parameter, but the account that sent the request is not enabled for SIP dialing.\n* The account that originates the SIP session does not have SIP dialing enabled. Twilio returns this warning at the account level before it can place the SIP call.",
    "solutions": "* Enable SIP dialing on the account that originates the call before you use `<Dial><Sip>` or a SIP URI in `To`. If you need help with account access or feature enablement, contact Support from the affected account.\n* Use the correct SIP dialing entry point for your workflow. Route an active call with `<Dial><Sip>`, or create a new outbound SIP call by sending a SIP URI in the `To` parameter of the Calls API.\n* After SIP dialing is enabled, allow Twilio SIP signaling IP addresses and media ports in your communications infrastructure so Twilio can send SIP traffic to your endpoint.",
    "description": "You receive this warning when you try to send a call to a SIP endpoint from an account that is not enabled for SIP dialing. SIP dialing is used when you route a call with `<Dial><Sip>` or when you create a call with a SIP URI in the `To` parameter of the Calls API.",
    "date_created": "2016-03-31T17:14:07Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13247,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dial: Invalid From number (caller ID)",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call or message, but the `From` parameter you supplied was not a valid phone number or alphanumeric sender ID.\n\nTwilio accepts phone numbers in [E.164 format](/docs/glossary/what-e164) (i.e. \"+1 format\"), 10-digit US and Canadian numbers with any combination of non-digit separators, or Alphanumeric Sender IDs (SMS only) with up to 11 alphanumeric characters \\[a-zA-Z0-9]. Refer to [this page](https://support.twilio.com/hc/en-us/articles/223133867-Using-Alphanumeric-Sender-ID-with-Messaging-Services) for acceptable characters.\n\nThe number must not be on a do-not-originate (DNO) list, and Alpha Sender IDs may not be generic.\n\n### Possible causes\n\n- You have supplied a phone number that was not in [E.164 format](/docs/glossary/what-e164)\n- Your `From` phone number is on a do-not-originate (DNO) list\n\n### Possible solutions\n\n- Ensure your number is formatted in [E.164 format](/docs/glossary/what-e164)\n- Ensure that your `From` number is assigned and not on a do-not-originate (DNO) list.\n",
    "causes": "* You have supplied a phone number that was not in [E.164 format](/docs/glossary/what-e164)\n* Your `From` phone number is on a do-not-originate (DNO) list",
    "solutions": "* Ensure your number is formatted in [E.164 format](/docs/glossary/what-e164)\n* Ensure that your `From` number is assigned and not on a do-not-originate (DNO) list.",
    "description": "You attempted to initiate an outbound phone call or message, but the `From` parameter you supplied was not a valid phone number or alphanumeric sender ID. Twilio accepts phone numbers in [E.164 format](/docs/glossary/what-e164) (i.e. \"+1 format\"), 10-digit US and Canadian numbers with any combination of non-digit separators, or Alphanumeric Sender IDs (SMS only) with up to 11 alphanumeric characters \\[a-zA-Z0-9]. Refer to [this page](https://support.twilio.com/hc/en-us/articles/223133867-Using-Alphanumeric-Sender-ID-with-Messaging-Services) for acceptable characters. The number must not be on a do-not-originate (DNO) list, and Alpha Sender IDs may not be generic.",
    "date_created": "2016-03-31T17:14:07Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13248,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid callerID, too long",
    "secondary_message": "Your callerID contains too many characters.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio raises this warning when the `callerId` attribute on `<Dial>` contains more characters than the caller ID value Twilio accepts for the destination you are dialing. Use a valid phone number for `<Number>`, a valid client identifier for `<Client>`, or an allowed caller ID string for `<Sip>`. For SIP dialing, `callerId` can contain alphanumeric characters and the optional characters `+`, `-`, `_`, and `.`, with no whitespace.\n\n### Possible causes\n\n- You set `callerId` to a phone number that exceeds the maximum length for E.164 numbers. E.164 numbers can contain up to 15 digits.\n- You are dialing a `<Client>` and the client identifier used as `callerId` is longer than 256 characters.\n- The `callerId` value does not match the type of destination you are dialing. `<Dial>` expects a phone number for `<Number>`, a client identifier for `<Client>`, or an allowed SIP caller ID string for `<Sip>`. Using a longer display string or other nonstandard value can trigger this warning.\n\n### Possible solutions\n\n- If you are dialing a phone number with `<Number>`, set `callerId` to a valid E.164 phone number and keep it within 15 digits. Use only a Twilio number on your account, the inbound `To` or `From` number when allowed, or a phone number you verified with Twilio.\n- If you are dialing a `<Client>`, shorten the client identifier to 256 characters or fewer. Remove spaces, control characters, delimiters, and unwise characters. If you use a mobile Voice SDK identity, use only alphanumeric characters and underscore.\n- If you are dialing a `<Sip>` endpoint, replace the `callerId` value with a simple caller ID string that contains only alphanumeric characters and the optional characters `+`, `-`, `_`, and `.`, with no whitespace.\n- Validate and trim the `callerId` value before you return TwiML or create the call. This helps prevent extra characters from being passed into `<Dial>`.\n\n#### Additional resources\n\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [TwiML Voice: `<Client>`](/docs/voice/twiml/client)\n- [OutgoingCallerIds resource](/docs/voice/api/outgoing-caller-ids)\n",
    "causes": "* You set `callerId` to a phone number that exceeds the maximum length for E.164 numbers. E.164 numbers can contain up to 15 digits.\n* You are dialing a `<Client>` and the client identifier used as `callerId` is longer than 256 characters.\n* The `callerId` value does not match the type of destination you are dialing. `<Dial>` expects a phone number for `<Number>`, a client identifier for `<Client>`, or an allowed SIP caller ID string for `<Sip>`. Using a longer display string or other nonstandard value can trigger this warning.",
    "solutions": "* If you are dialing a phone number with `<Number>`, set `callerId` to a valid E.164 phone number and keep it within 15 digits. Use only a Twilio number on your account, the inbound `To` or `From` number when allowed, or a phone number you verified with Twilio.\n* If you are dialing a `<Client>`, shorten the client identifier to 256 characters or fewer. Remove spaces, control characters, delimiters, and unwise characters. If you use a mobile Voice SDK identity, use only alphanumeric characters and underscore.\n* If you are dialing a `<Sip>` endpoint, replace the `callerId` value with a simple caller ID string that contains only alphanumeric characters and the optional characters `+`, `-`, `_`, and `.`, with no whitespace.\n* Validate and trim the `callerId` value before you return TwiML or create the call. This helps prevent extra characters from being passed into `<Dial>`.",
    "description": "Twilio raises this warning when the `callerId` attribute on `<Dial>` contains more characters than the caller ID value Twilio accepts for the destination you are dialing. Use a valid phone number for `<Number>`, a valid client identifier for `<Client>`, or an allowed caller ID string for `<Sip>`. For SIP dialing, `callerId` can contain alphanumeric characters and the optional characters `+`, `-`, `_`, and `.`, with no whitespace.",
    "date_created": "2016-03-31T17:14:07Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 13249,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid username or password attribute",
    "secondary_message": "Your username or password are invalid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this warning when the `username` or `password` attribute on the `<Dial>` noun is invalid. This usually happens when you use `<Sip>` with missing, malformed, or unsupported authentication credentials.\n\n### Possible causes\n\n- The `<Sip>` noun inside `<Dial>` includes an empty `username` or `password` attribute\n- The `username` or `password` attribute contains an invalid value\n- You provided authentication attributes in a format that Twilio cannot use for SIP authentication\n- The generated TwiML includes a typo in the `username` or `password` attribute name or value\n\n### Possible solutions\n\n- Review the `<Dial>` and `<Sip>` TwiML you return and confirm the `username` and `password` attributes are present only when needed\n- Make sure both credentials are valid for the SIP endpoint you are dialing\n- Verify the credentials do not contain unintended empty strings, template errors, or malformed characters\n- Validate your TwiML against the `<Dial>` noun and `<Sip>` noun documentation and correct any invalid attributes before returning the response\n- If you generate TwiML dynamically, log the final XML and inspect the values passed to `username` and `password`\n\n#### Additional resources\n\n- [TwiML Voice `<Dial>` noun](/docs/voice/twiml/dial)\n- [TwiML Voice `<Sip>` noun](/docs/voice/twiml/sip)\n- [TwiML for Voice](/docs/voice/twiml)\n",
    "causes": "* The `<Sip>` noun inside `<Dial>` includes an empty `username` or `password` attribute\n* The `username` or `password` attribute contains an invalid value\n* You provided authentication attributes in a format that Twilio cannot use for SIP authentication\n* The generated TwiML includes a typo in the `username` or `password` attribute name or value",
    "solutions": "* Review the `<Dial>` and `<Sip>` TwiML you return and confirm the `username` and `password` attributes are present only when needed\n* Make sure both credentials are valid for the SIP endpoint you are dialing\n* Verify the credentials do not contain unintended empty strings, template errors, or malformed characters\n* Validate your TwiML against the `<Dial>` noun and `<Sip>` noun documentation and correct any invalid attributes before returning the response\n* If you generate TwiML dynamically, log the final XML and inspect the values passed to `username` and `password`",
    "description": "Twilio returns this warning when the `username` or `password` attribute on the `<Dial>` noun is invalid. This usually happens when you use `<Sip>` with missing, malformed, or unsupported authentication credentials.",
    "date_created": "2016-03-31T17:14:08Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 13250,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Too many URIs passed",
    "secondary_message": "You specified too many URI elements.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this warning because the `Dial` verb received more URI targets than it supports. Reduce the number of URI elements you pass to `Dial` and retry the request.\n\n### Possible causes\n\n- Your TwiML includes too many SIP or client URI nouns inside `Dial`\n- Your application dynamically generates `Dial` targets and adds more URI entries than expected\n- Your request combines multiple URI-based destinations when a smaller set of targets is required\n\n### Possible solutions\n\n- Review the TwiML or API request that creates the `Dial` verb and remove extra URI entries\n- Limit the number of SIP addresses or client identities your application adds to `Dial`\n- Validate your generated call-routing logic before returning TwiML so only the intended URI targets are included\n- If you need more complex call distribution, redesign the call flow to route to a smaller number of destinations per `Dial`\n\n#### Additional resources\n\n- [TwiML Voice: `Dial`](/docs/voice/twiml/dial)\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n- [TwiML Voice: `<Client>`](/docs/voice/twiml/client)\n",
    "causes": "* Your TwiML includes too many SIP or client URI nouns inside `Dial`\n* Your application dynamically generates `Dial` targets and adds more URI entries than expected\n* Your request combines multiple URI-based destinations when a smaller set of targets is required",
    "solutions": "* Review the TwiML or API request that creates the `Dial` verb and remove extra URI entries\n* Limit the number of SIP addresses or client identities your application adds to `Dial`\n* Validate your generated call-routing logic before returning TwiML so only the intended URI targets are included\n* If you need more complex call distribution, redesign the call flow to route to a smaller number of destinations per `Dial`",
    "description": "Twilio returned this warning because the `Dial` verb received more URI targets than it supports. Reduce the number of URI elements you pass to `Dial` and retry the request.",
    "date_created": "2016-03-31T17:14:08Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 13251,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Too many headers passed",
    "secondary_message": "You sent too many header elements.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis warning occurs when your `<Dial><Sip>` request or SIP `To` URI includes more header elements than Twilio accepts. Send SIP headers by appending them to the SIP URI. Keep the SIP URI under 255 characters and the headers portion under 1024 characters.\n\n### Possible causes\n\n- Your `<Sip>` noun or SIP `To` parameter includes too many query-style header pairs after the `?` in the SIP URI.\n- Your application adds duplicate or unnecessary custom headers when it builds the SIP URI. Twilio accepts custom SIP headers when you append them to the URI, so extra generated parameters can push the request past the allowed limit.\n- A header value contains `&` that was not encoded, so Twilio interprets it as additional header elements. For some SDKs, encode `&` as `%26`.\n\n### Possible solutions\n\n- Remove unneeded headers from the SIP URI and send only the headers your SIP endpoint requires.\n- Consolidate related values into fewer headers when possible so your request stays within Twilio's accepted limits. Keep the SIP URI under 255 characters and the headers portion under 1024 characters.\n- Use the `x-` prefix for custom headers. If you need supported non-`x-` headers, use only `User-to-User`, `Remote-Party-ID`, `P-Preferred-Identity`, or `P-Called-Party-ID`.\n- If a header value includes `&`, encode it as `%26` so Twilio does not parse it as another header element.\n\n#### Additional resources\n\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n- [Making SIP Calls](/docs/voice/api/sip-making-calls)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n",
    "causes": "* Your `<Sip>` noun or SIP `To` parameter includes too many query-style header pairs after the `?` in the SIP URI.\n* Your application adds duplicate or unnecessary custom headers when it builds the SIP URI. Twilio accepts custom SIP headers when you append them to the URI, so extra generated parameters can push the request past the allowed limit.\n* A header value contains `&` that was not encoded, so Twilio interprets it as additional header elements. For some SDKs, encode `&` as `%26`.",
    "solutions": "* Remove unneeded headers from the SIP URI and send only the headers your SIP endpoint requires.\n* Consolidate related values into fewer headers when possible so your request stays within Twilio's accepted limits. Keep the SIP URI under 255 characters and the headers portion under 1024 characters.\n* Use the `x-` prefix for custom headers. If you need supported non-`x-` headers, use only `User-to-User`, `Remote-Party-ID`, `P-Preferred-Identity`, or `P-Called-Party-ID`.\n* If a header value includes `&`, encode it as `%26` so Twilio does not parse it as another header element.",
    "description": "This warning occurs when your `<Dial><Sip>` request or SIP `To` URI includes more header elements than Twilio accepts. Send SIP headers by appending them to the SIP URI. Keep the SIP URI under 255 characters and the headers portion under 1024 characters.",
    "date_created": "2016-03-31T17:14:08Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 13252,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Invalid header name",
    "secondary_message": "You named your header something invalid.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio raises this warning when your `<Dial><Sip>` request includes a SIP header name that Twilio cannot use. For custom headers, use the `x-` prefix. Twilio also supports `User-to-User`, `Remote-Party-ID`, `P-Preferred-Identity`, and `P-Called-Party-ID` without the `x-` prefix. Header names must also use characters that are valid for SIP so Twilio can generate a valid SIP message.\n\n### Possible causes\n\n- The header name contains characters that are not valid in a SIP header name.\n- A custom header was added to the SIP URI without the required `x-` prefix.\n- The header name is not one of the supported non-`x-` SIP headers for `<Dial><Sip>`.\n- Escaped characters in the SIP URI changed the header name into an invalid format.\n\n### Possible solutions\n\n- Update the header name so it uses only SIP-safe characters. Header names should generally contain letters, numbers, and hyphens.\n- For custom headers, rename the header with an `x-` prefix such as `x-customer-info`.\n- If you need a standard SIP header, use one of the supported names exactly as documented: `User-to-User`, `Remote-Party-ID`, `P-Preferred-Identity`, or `P-Called-Party-ID`.\n- Review the generated SIP URI and remove or correct any percent-escaped characters that altered the header name.\n\n#### Additional resources\n\n- [TwiML Voice `<Sip>`](/docs/voice/twiml/sip)\n- [Outbound - Receiving SIP from Twilio](/docs/voice/api/receiving-sip)\n- [Inbound - Sending SIP to Twilio](/docs/voice/api/sending-sip)\n",
    "causes": "* The header name contains characters that are not valid in a SIP header name.\n* A custom header was added to the SIP URI without the required `x-` prefix.\n* The header name is not one of the supported non-`x-` SIP headers for `<Dial><Sip>`.\n* Escaped characters in the SIP URI changed the header name into an invalid format.",
    "solutions": "* Update the header name so it uses only SIP-safe characters. Header names should generally contain letters, numbers, and hyphens.\n* For custom headers, rename the header with an `x-` prefix such as `x-customer-info`.\n* If you need a standard SIP header, use one of the supported names exactly as documented: `User-to-User`, `Remote-Party-ID`, `P-Preferred-Identity`, or `P-Called-Party-ID`.\n* Review the generated SIP URI and remove or correct any percent-escaped characters that altered the header name.",
    "description": "Twilio raises this warning when your `<Dial><Sip>` request includes a SIP header name that Twilio cannot use. For custom headers, use the `x-` prefix. Twilio also supports `User-to-User`, `Remote-Party-ID`, `P-Preferred-Identity`, and `P-Called-Party-ID` without the `x-` prefix. Header names must also use characters that are valid for SIP so Twilio can generate a valid SIP message.",
    "date_created": "2016-03-31T17:14:09Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 13253,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial: Header is too long",
    "secondary_message": "You sent a header that is too long.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nTwilio returns this warning when the SIP header data you send with `<Dial><Sip>` or in the `To` SIP URI is longer than the supported limit. Custom SIP headers are passed in the SIP URI, and the headers portion must be under 1024 characters.\n\n### Possible causes\n- A custom SIP header appended to the SIP URI is longer than the supported 1024-character limit.\n- A header sent with `<Sip>` uses a supported custom or standard SIP header name, but its value is too large. Twilio supports custom headers with the `x-` prefix and also supports `User-to-User`, `Remote-Party-ID`, `P-Preferred-Identity`, and `P-Called-Party-ID` in this format.\n- The SIP URI includes header data in the `To` parameter, and the combined header content exceeds the allowed length.\n\n### Possible solutions\n- Shorten the header data you append to the SIP URI so the headers portion stays under 1024 characters.\n- Remove any unnecessary custom SIP headers and send only the headers your SIP endpoint requires. For custom headers, use the `x-` prefix unless you are sending one of the supported standard SIP headers.\n- If you create the call through the REST API, review the `To` parameter and confirm it contains a valid SIP URI. Keep the SIP URI body under 255 characters and keep the header data within the supported header limit.\n\n#### Additional resources\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n- [Making SIP Calls](/docs/voice/api/sip-making-calls)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n",
    "causes": "* A custom SIP header appended to the SIP URI is longer than the supported 1024-character limit.\n* A header sent with `<Sip>` uses a supported custom or standard SIP header name, but its value is too large. Twilio supports custom headers with the `x-` prefix and also supports `User-to-User`, `Remote-Party-ID`, `P-Preferred-Identity`, and `P-Called-Party-ID` in this format.\n* The SIP URI includes header data in the `To` parameter, and the combined header content exceeds the allowed length.",
    "solutions": "* Shorten the header data you append to the SIP URI so the headers portion stays under 1024 characters.\n* Remove any unnecessary custom SIP headers and send only the headers your SIP endpoint requires. For custom headers, use the `x-` prefix unless you are sending one of the supported standard SIP headers.\n* If you create the call through the REST API, review the `To` parameter and confirm it contains a valid SIP URI. Keep the SIP URI body under 255 characters and keep the header data within the supported header limit.",
    "description": "Twilio returns this warning when the SIP header data you send with `<Dial><Sip>` or in the `To` SIP URI is longer than the supported limit. Custom SIP headers are passed in the SIP URI, and the headers portion must be under 1024 characters.",
    "date_created": "2016-03-31T17:14:09Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13254,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial->Sip: SIP URI DNS does not resolve or resolves to an non-public IP address",
    "secondary_message": "Please check your DNS record to ensure it is properly configured. Alternatively, you can use a specific public IP address in your URI rather than specifying a domain.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nTwilio returns this warning when you use `<Dial><Sip>` with a SIP URI whose host does not resolve in public DNS or resolves to a private or otherwise non-public IP address. Use a valid SIP URI that points to a publicly reachable SIP endpoint.\n\n### Possible causes\n- The domain in the SIP URI is missing, misspelled, or not published in public DNS.\n- The DNS record for the SIP URI resolves to a private or internal IP address.\n- The SIP endpoint is only reachable on an internal network and is not available through a public address.\n- The SIP URI is invalid or the host portion of the URI is incorrect.\n\n### Possible solutions\n- Verify that the SIP URI is valid and that the host portion is correct.\n- Check your DNS record and make sure the SIP URI resolves in public DNS.\n- Update the DNS record so it resolves to a publicly routable IP address.\n- Use a specific public IP address in the SIP URI if you do not want to use a domain.\n- If your endpoint does not have a fixed public address, use SIP Registration so Twilio can route calls to the registered endpoint.\n\n#### Additional resources\n- [TwiML `<Sip>`](/docs/voice/twiml/sip)\n- [SIP Registration](/docs/voice/api/sip-registration)\n- [Use SIP with Twilio Voice](/docs/voice/api/sip-interface)\n",
    "causes": "* The domain in the SIP URI is missing, misspelled, or not published in public DNS.\n* The DNS record for the SIP URI resolves to a private or internal IP address.\n* The SIP endpoint is only reachable on an internal network and is not available through a public address.\n* The SIP URI is invalid or the host portion of the URI is incorrect.",
    "solutions": "* Verify that the SIP URI is valid and that the host portion is correct.\n* Check your DNS record and make sure the SIP URI resolves in public DNS.\n* Update the DNS record so it resolves to a publicly routable IP address.\n* Use a specific public IP address in the SIP URI if you do not want to use a domain.\n* If your endpoint does not have a fixed public address, use SIP Registration so Twilio can route calls to the registered endpoint.",
    "description": "Twilio returns this warning when you use `<Dial><Sip>` with a SIP URI whose host does not resolve in public DNS or resolves to a private or otherwise non-public IP address. Use a valid SIP URI that points to a publicly reachable SIP endpoint.",
    "date_created": "2016-03-31T17:14:31Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13255,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dialing .sip.twilio.com addresses is not currently allowed",
    "secondary_message": "At this time internal routing of SIP calls within Twilio is not supported i.e. dialing .sip.twilio.com addresses from a Twilio number.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis warning appears when your application tries to dial a `.sip.twilio.com` destination in a call flow that does not support internal SIP routing. Use `<Dial><Sip>` to send a call to your own SIP infrastructure. If you are calling a registered SIP endpoint on a Twilio SIP Domain, dial the endpoint's full Address of Record, such as `username@yourdomain.sip.twilio.com`.\n\n### Possible causes\n- You attempted to dial a Twilio SIP Domain directly from a Twilio phone number or an active call.\n- You used a bare SIP Domain such as `yourdomain.sip.twilio.com` instead of a full registered endpoint address such as `username@yourdomain.sip.twilio.com`.\n- You attempted to route a SIP call between Twilio SIP Domains instead of to an external SIP endpoint or a registered SIP endpoint.\n\n### Possible solutions\n- If you need to send the call to your SIP infrastructure, update your TwiML or REST API request to dial your own SIP URI with `<Dial><Sip>`.\n- If you need to reach a registered SIP endpoint on a Twilio SIP Domain, use the full Address of Record in the destination, such as `username@yourdomain.sip.twilio.com`.\n- Verify that the username in the SIP URI matches a SIP endpoint that is currently registered on your SIP Domain.\n- Replace unsupported `.sip.twilio.com` destinations that do not identify a registered SIP endpoint.\n\n#### Additional resources\n- [Use SIP with Twilio Voice](/docs/voice/api/sip-interface)\n- [SIP Registration](/docs/voice/api/sip-registration)\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n",
    "causes": "* You attempted to dial a Twilio SIP Domain directly from a Twilio phone number or an active call.\n* You used a bare SIP Domain such as `yourdomain.sip.twilio.com` instead of a full registered endpoint address such as `username@yourdomain.sip.twilio.com`.\n* You attempted to route a SIP call between Twilio SIP Domains instead of to an external SIP endpoint or a registered SIP endpoint.",
    "solutions": "* If you need to send the call to your SIP infrastructure, update your TwiML or REST API request to dial your own SIP URI with `<Dial><Sip>`.\n* If you need to reach a registered SIP endpoint on a Twilio SIP Domain, use the full Address of Record in the destination, such as `username@yourdomain.sip.twilio.com`.\n* Verify that the username in the SIP URI matches a SIP endpoint that is currently registered on your SIP Domain.\n* Replace unsupported `.sip.twilio.com` destinations that do not identify a registered SIP endpoint.",
    "description": "This warning appears when your application tries to dial a `.sip.twilio.com` destination in a call flow that does not support internal SIP routing. Use `<Dial><Sip>` to send a call to your own SIP infrastructure. If you are calling a registered SIP endpoint on a Twilio SIP Domain, dial the endpoint's full Address of Record, such as `username@yourdomain.sip.twilio.com`.",
    "date_created": "2016-03-31T17:14:32Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13256,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid recordingStatusCallback URL",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA recording was initiated using an invalid URL for the recordingStatusCallback parameter. The recording will be processed, but status notifications will not be sent.\n\n### Possible causes\n\nThe recording status callback URL you provided is not valid.\n\n### Possible solutions\n\nSet recordingStatusCallback to a valid URL or leave blank to disable callbacks.\n",
    "causes": "The recording status callback URL you provided is not valid.",
    "solutions": "Set recordingStatusCallback to a valid URL or leave blank to disable callbacks.",
    "description": "A recording was initiated using an invalid URL for the recordingStatusCallback parameter. The recording will be processed, but status notifications will not be sent.",
    "date_created": "2019-09-30T15:35:54Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13257,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid transcribeCallback URL",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `transcribeCallback` attribute on the TwiML `<Record>` verb is not a valid URL. Twilio documents `transcribeCallback` as a relative or absolute URL that it uses to send an asynchronous `POST` request when a transcription is complete.\n\n### Possible causes\n\n- The `transcribeCallback` value provided on `<Record>` is not a valid relative or absolute URL.\n- The `transcribeCallback` value does not conform to the URL format Twilio expects for transcription callbacks.\n- A transcription callback URL was supplied for `<Record>`, but the callback destination was entered incorrectly.\n\n### Possible solutions\n\n- Update `transcribeCallback` to a valid relative or absolute URL.\n- Verify the `transcribeCallback` value in your `<Record>` TwiML before initiating the recording.\n- If you use `transcribeCallback`, also set `transcribe=\"true\"` on `<Record>`, because Twilio requires `transcribeCallback` to be used with `transcribe`.\n- If you do not need an asynchronous transcription webhook, remove `transcribeCallback` and retrieve the completed transcription later from the Transcriptions resource instead.\n\n#### Additional resources\n\n- [TwiML Voice: Record](/docs/voice/twiml/record)\n- [Transcriptions resource](/docs/voice/api/recording-transcription)\n",
    "causes": "* The `transcribeCallback` value provided on `<Record>` is not a valid relative or absolute URL.\n* The `transcribeCallback` value does not conform to the URL format Twilio expects for transcription callbacks.\n* A transcription callback URL was supplied for `<Record>`, but the callback destination was entered incorrectly.",
    "solutions": "* Update `transcribeCallback` to a valid relative or absolute URL.\n* Verify the `transcribeCallback` value in your `<Record>` TwiML before initiating the recording.\n* If you use `transcribeCallback`, also set `transcribe=\"true\"` on `<Record>`, because Twilio requires `transcribeCallback` to be used with `transcribe`.\n* If you do not need an asynchronous transcription webhook, remove `transcribeCallback` and retrieve the completed transcription later from the Transcriptions resource instead.",
    "description": "Twilio returns this error when the `transcribeCallback` attribute on the TwiML `<Record>` verb is not a valid URL. Twilio documents `transcribeCallback` as a relative or absolute URL that it uses to send an asynchronous `POST` request when a transcription is complete.",
    "date_created": "2020-03-10T23:51:48Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13258,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dial->Sim not supported in this realm",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio receives a `<Sim>` noun inside a `<Dial>` verb in a realm that does not support that behavior. Twilio's current `<Dial>` documentation lists the supported nouns for `<Dial>`, and Twilio's regional availability guidance explains that features unavailable in a target Region will not work in that Region.\n\n### Possible causes\n\n- Your TwiML response includes `<Sim>` nested inside `<Dial>`.\n- The call is being executed in a Twilio realm or Region where `<Dial><Sim>` is not supported.\n- The application was moved to, tested in, or routed through a different Region without verifying Voice feature availability for that Region.\n\n### Possible solutions\n\n- Update the call flow to use a currently documented `<Dial>` noun that matches your use case, such as `<Number>`, `<Client>`, `<Conference>`, `<Sip>`, `<Application>`, `<WhatsApp>`, or `<Queue>`.\n- Verify which Twilio realm or Region is handling the call and confirm that the required Voice feature is supported there before returning the TwiML.\n- If you need to keep using `<Dial><Sim>`, move that workflow to a realm that supports it; otherwise redesign the flow around supported Programmable Voice nouns in the target Region.\n\n#### Additional resources\n\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [Regional product availability](/docs/global-infrastructure/regional-product-and-feature-availability)\n- [Understanding Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions)\n",
    "causes": "* Your TwiML response includes `<Sim>` nested inside `<Dial>`.\n* The call is being executed in a Twilio realm or Region where `<Dial><Sim>` is not supported.\n* The application was moved to, tested in, or routed through a different Region without verifying Voice feature availability for that Region.",
    "solutions": "* Update the call flow to use a currently documented `<Dial>` noun that matches your use case, such as `<Number>`, `<Client>`, `<Conference>`, `<Sip>`, `<Application>`, `<WhatsApp>`, or `<Queue>`.\n* Verify which Twilio realm or Region is handling the call and confirm that the required Voice feature is supported there before returning the TwiML.\n* If you need to keep using `<Dial><Sim>`, move that workflow to a realm that supports it; otherwise redesign the flow around supported Programmable Voice nouns in the target Region.",
    "description": "This error occurs when Twilio receives a `<Sim>` noun inside a `<Dial>` verb in a realm that does not support that behavior. Twilio's current `<Dial>` documentation lists the supported nouns for `<Dial>`, and Twilio's regional availability guidance explains that features unavailable in a target Region will not work in that Region.",
    "date_created": "2020-08-24T16:35:34Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 13259,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid CallerDisplayName",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when the value you supply for the `callerDisplayName` attribute is invalid. After you trim leading and trailing spaces, the value must contain 2–255 printable characters and no control characters.\n\n### Possible causes\n\n- The value is shorter than 2 characters, longer than 255 characters, or contains only spaces.\n- The value includes a control character (for example, a line break or a tab).\n\n### Possible solutions\n\n- Provide a value that contains 2–255 printable characters and no control characters.\n- Remove control characters, such as line breaks and tabs, from the value.\n\n#### Additional resources\n\n- [TwiML Voice `<Dial>` noun](/docs/voice/twiml/dial)\n- [TwiML Voice `<Sip>` noun](/docs/voice/twiml/sip)\n- [TwiML for Voice](/docs/voice/twiml)\n",
    "causes": "* The value is shorter than 2 characters, longer than 255 characters, or contains only spaces.\n* The value includes a control character (for example, a line break or a tab).",
    "solutions": "* Provide a value that contains 2–255 printable characters and no control characters.\n* Remove control characters, such as line breaks and tabs, from the value.",
    "description": "Twilio returns this warning when the value you supply for the `callerDisplayName` attribute is invalid. After you trim leading and trailing spaces, the value must contain 2–255 printable characters and no control characters.",
    "date_created": "2026-10-23T10:23:37-05:00",
    "last_updated": "2026-10-23T10:23:37-05:00"
  },
  {
    "code": 13299,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "2010 Conference API feature requested using 2008 API",
    "secondary_message": "A feature added to the 2010 Conference API was requested via the 2008 Twilio API. Please upgrade to the latest version of the conference API.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when you request a conference feature that requires the `2010-04-01` Voice API, but the call or API request is still using the older `2008-08-01` API version. Update your conference workflow to use the current Voice API and make sure any call entry point is not starting the session with the older API version.\n\n### Possible causes\n\n- Your application is making a conference-related request through the deprecated `2008-08-01` Voice API instead of the `2010-04-01` Voice API.\n- A Twilio phone number handling the call is configured with `apiVersion` set to `2008-08-01`.\n- A TwiML Application handling the call is configured with `apiVersion` set to `2008-08-01`.\n- Your call flow tries to use a conference capability that is available in the 2010 Conference API while the session is still running on the older API version.\n\n### Possible solutions\n\n- Update your Voice API requests to use the `2010-04-01` base path for conference-related operations.\n- Update the phone number `apiVersion` for incoming voice calls to `2010-04-01`.\n- Update the TwiML Application `apiVersion` to `2010-04-01` if your call flow starts through an Application resource.\n- Review your conference workflow and remove or replace any conference feature that depends on the 2010 Conference API until the full call path has been upgraded.\n\n#### Additional resources\n- [Programmable Voice API Overview](/docs/voice/api)\n- [REST API: Applications](/docs/usage/api/applications)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n",
    "causes": "* Your application is making a conference-related request through the deprecated `2008-08-01` Voice API instead of the `2010-04-01` Voice API.\n* A Twilio phone number handling the call is configured with `apiVersion` set to `2008-08-01`.\n* A TwiML Application handling the call is configured with `apiVersion` set to `2008-08-01`.\n* Your call flow tries to use a conference capability that is available in the 2010 Conference API while the session is still running on the older API version.",
    "solutions": "* Update your Voice API requests to use the `2010-04-01` base path for conference-related operations.\n* Update the phone number `apiVersion` for incoming voice calls to `2010-04-01`.\n* Update the TwiML Application `apiVersion` to `2010-04-01` if your call flow starts through an Application resource.\n* Review your conference workflow and remove or replace any conference feature that depends on the 2010 Conference API until the full call path has been upgraded.",
    "description": "This error occurs when you request a conference feature that requires the `2010-04-01` Voice API, but the call or API request is still using the older `2008-08-01` API version. Update your conference workflow to use the current Voice API and make sure any call entry point is not starting the session with the older API version.",
    "date_created": "2016-03-31T17:13:39Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13310,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid finishOnKey value",
    "secondary_message": "The value of the finishOnKey attribute must be one of the following characters \"0123456789#\\*\". See the [Gather Verb](/docs/api/twiml/gather#finishOnKey) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe value of the finishOnKey attribute must be one of the following characters \"0123456789#\\*\". See the [Gather Verb](/docs/voice/twiml/gather#finishOnKey) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The value of the finishOnKey attribute must be one of the following characters \"0123456789#\\*\". See the [Gather Verb](/docs/voice/twiml/gather#finishOnKey) API Reference for more information.",
    "date_created": "2016-03-31T17:13:40Z",
    "last_updated": "2020-08-04T10:00:28.184Z"
  },
  {
    "code": 13311,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid finishOnKey value",
    "secondary_message": "The value of the finishOnKey attribute must be a single character. See the [Gather Verb](/docs/api/twiml/gather#finishOnKey) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe value of the finishOnKey attribute must be one of the following characters \"0123456789#\\*\". See the [Gather Verb](/docs/voice/twiml/gather#finishOnKey) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The value of the finishOnKey attribute must be one of the following characters \"0123456789#\\*\". See the [Gather Verb](/docs/voice/twiml/gather#finishOnKey) API Reference for more information.",
    "date_created": "2016-03-31T17:13:40Z",
    "last_updated": "2020-08-04T10:00:28.163Z"
  },
  {
    "code": 13312,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid method value",
    "secondary_message": "The method attribute of Number must be GET or POST. See the [Gather Verb](/docs/api/twiml/gather#method) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe method attribute of Number must be `GET` or `POST`. See the [Gather Verb](/docs/voice/twiml/gather#method) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The method attribute of Number must be `GET` or `POST`. See the [Gather Verb](/docs/voice/twiml/gather#method) API Reference for more information.",
    "date_created": "2016-03-31T17:13:40Z",
    "last_updated": "2020-08-04T10:00:28.143Z"
  },
  {
    "code": 13313,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid timeout value",
    "secondary_message": "timeout must be a positive integer, in seconds. See the [Gather Verb](/docs/api/twiml/gather#timeout) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\ntimeout must be a positive integer, in seconds. See the [Gather Verb](/docs/voice/twiml/gather#timeout) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "timeout must be a positive integer, in seconds. See the [Gather Verb](/docs/voice/twiml/gather#timeout) API Reference for more information.",
    "date_created": "2016-03-31T17:13:40Z",
    "last_updated": "2020-08-04T10:00:28.123Z"
  },
  {
    "code": 13314,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid numDigits value",
    "secondary_message": "The numDigits attribute must be a positive integer. See the [Gather Verb](/docs/api/twiml/gather#numDigits) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe numDigits attribute must be a positive integer. See the [Gather Verb](/docs/voice/twiml/gather#numDigits) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The numDigits attribute must be a positive integer. See the [Gather Verb](/docs/voice/twiml/gather#numDigits) API Reference for more information.",
    "date_created": "2016-03-31T17:13:41Z",
    "last_updated": "2020-08-04T10:00:28.103Z"
  },
  {
    "code": 13320,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid nested verb",
    "secondary_message": "The only valid nested elements of the Gather Verb are Say and Play. See the [Gather Verb](/docs/api/twiml/gather) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe only valid nested elements of the Gather Verb are Say and Play. See the [Gather Verb](/docs/voice/twiml/gather) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The only valid nested elements of the Gather Verb are Say and Play. See the [Gather Verb](/docs/voice/twiml/gather) API Reference for more information.",
    "date_created": "2016-03-31T17:13:41Z",
    "last_updated": "2020-08-04T10:00:28.084Z"
  },
  {
    "code": 13321,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Gather -> Say: Invalid voice value",
    "secondary_message": "The value of the voice attribute must be \"man\" or \"woman\". See the [Say Verb](/docs/api/twiml/say#voice) API Reference for more information.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe value of the voice attribute must be valid one.\\\nSee the [Say Verb](/docs/voice/twiml/say#voice) API Reference for more information.\n\n### Possible causes\n\n- You have entered an invalid attribute for voice parameter\n\n### Possible solutions\n\n- Enter a valid voice as parameter\n",
    "causes": "* You have entered an invalid attribute for voice parameter",
    "solutions": "* Enter a valid voice as parameter",
    "description": "The value of the voice attribute must be valid one.\\\nSee the [Say Verb](/docs/voice/twiml/say#voice) API Reference for more information.",
    "date_created": "2016-03-31T17:13:41Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13322,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather->Say: Invalid loop value",
    "secondary_message": "The value of the loop attribute must be an integer greater or equal to zero. See the [Say Verb](/docs/api/twiml/say#loop) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe value of the loop attribute must be an integer greater or equal to zero. See the [Say Verb](/docs/voice/twiml/say#loop) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The value of the loop attribute must be an integer greater or equal to zero. See the [Say Verb](/docs/voice/twiml/say#loop) API Reference for more information.",
    "date_created": "2016-03-31T17:13:41Z",
    "last_updated": "2020-08-04T10:00:28.046Z"
  },
  {
    "code": 13325,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Gather->Play: Invalid Content-Type",
    "secondary_message": "Play requires an audio Content-Type",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nPlay requires an audio `Content-Type`\n\n### Possible causes\n\n- Play references a URL that does not return audio or is returning an invalid `Content-Type`.\n\n### Possible solutions\n\n- Make certain the URL returns an audio file\n- See the [Play Verb](/docs/voice/twiml/play) API Reference for more information on valid `Content-Type`s.\n",
    "causes": "* Play references a URL that does not return audio or is returning an invalid `Content-Type`.",
    "solutions": "* Make certain the URL returns an audio file\n* See the [Play Verb](/docs/voice/twiml/play) API Reference for more information on valid `Content-Type`s.",
    "description": "Play requires an audio `Content-Type`",
    "date_created": "2016-03-31T17:13:42Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13326,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Gather: Invalid input value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning occurs when `<Gather>` receives an unsupported `input` value. `<Gather>` accepts `dtmf`, `speech`, or `dtmf speech`, and uses `dtmf` by default when you do not set `input`.\n\n### Possible causes\n\n- The `<Gather>` `input` attribute is set to a value other than `dtmf`, `speech`, or `dtmf speech`.\n- The `input` value is formatted incorrectly or does not match the supported combined value exactly.\n\n### Possible solutions\n\n- Update `<Gather>` so the `input` attribute uses one of the supported values: `dtmf`, `speech`, or `dtmf speech`.\n- Remove the `input` attribute if you want `<Gather>` to use its default `dtmf` behavior.\n- If you need both keypad and speech input, use the documented combined value exactly.\n\n#### Additional resources\n\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The `<Gather>` `input` attribute is set to a value other than `dtmf`, `speech`, or `dtmf speech`.\n* The `input` value is formatted incorrectly or does not match the supported combined value exactly.",
    "solutions": "* Update `<Gather>` so the `input` attribute uses one of the supported values: `dtmf`, `speech`, or `dtmf speech`.\n* Remove the `input` attribute if you want `<Gather>` to use its default `dtmf` behavior.\n* If you need both keypad and speech input, use the documented combined value exactly.",
    "description": "This warning occurs when `<Gather>` receives an unsupported `input` value. `<Gather>` accepts `dtmf`, `speech`, or `dtmf speech`, and uses `dtmf` by default when you do not set `input`.",
    "date_created": "2017-05-01T22:44:32Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13327,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid speechTimeout value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when `<Gather>` receives a `speechTimeout` value that is not a positive integer or `auto`. Twilio measures `speechTimeout` in seconds.\n\n### Possible causes\n\n- The rendered `<Gather>` TwiML sets `speechTimeout` to a value outside the accepted `positive integer` or `auto` values.\n- The `speechTimeout` value is malformed, missing, or otherwise not parseable as a valid timeout value for `<Gather>`. This follows from the accepted-value constraint for the attribute.\n- The `<Gather>` configuration includes `speechModel` but uses `auto` for `speechTimeout`, which is not allowed for that combination.\n\n### Possible solutions\n\n- Set `speechTimeout` to a positive integer number of seconds or to `auto`.\n- Check the TwiML your application returns and confirm the rendered `<Gather>` includes a valid `speechTimeout` value.\n- If you use `speechModel`, set `speechTimeout` to a positive integer and do not use `auto`.\n\n#### Additional resources\n\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Error and Warning Dictionary](/docs/api/errors)\n- [Troubleshooting](/docs/comms/troubleshooting)\n",
    "causes": "* The rendered `<Gather>` TwiML sets `speechTimeout` to a value outside the accepted `positive integer` or `auto` values.\n* The `speechTimeout` value is malformed, missing, or otherwise not parseable as a valid timeout value for `<Gather>`. This follows from the accepted-value constraint for the attribute.\n* The `<Gather>` configuration includes `speechModel` but uses `auto` for `speechTimeout`, which is not allowed for that combination.",
    "solutions": "* Set `speechTimeout` to a positive integer number of seconds or to `auto`.\n* Check the TwiML your application returns and confirm the rendered `<Gather>` includes a valid `speechTimeout` value.\n* If you use `speechModel`, set `speechTimeout` to a positive integer and do not use `auto`.",
    "description": "This warning appears when `<Gather>` receives a `speechTimeout` value that is not a positive integer or `auto`. Twilio measures `speechTimeout` in seconds.",
    "date_created": "2017-06-13T21:24:51Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13328,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid maxSpeechTime value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio raises this warning when a `<Gather>` request includes an invalid `maxSpeechTime` value. Use `speechTimeout` to control how long Twilio waits after a pause in speech before stopping recognition. `speechTimeout` accepts a positive integer or `auto`.\n\n### Possible causes\n\n- Your `<Gather>` configuration includes `maxSpeechTime` instead of the documented `speechTimeout` attribute.\n- Your speech timing value is not valid for `<Gather>`, such as a value that is not a positive integer or `auto`.\n- You set `speechModel` and used `speechTimeout=\"auto\"`, which Twilio does not support with a model selected.\n\n### Possible solutions\n\n- Replace `maxSpeechTime` with `speechTimeout` in your `<Gather>` TwiML.\n- Set `speechTimeout` to a positive integer, or use `auto` only when you are not selecting a speech model.\n- If you use `speechModel`, keep `speechTimeout` as a positive integer and verify the final TwiML that your application sends to Twilio.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Your `<Gather>` configuration includes `maxSpeechTime` instead of the documented `speechTimeout` attribute.\n* Your speech timing value is not valid for `<Gather>`, such as a value that is not a positive integer or `auto`.\n* You set `speechModel` and used `speechTimeout=\"auto\"`, which Twilio does not support with a model selected.",
    "solutions": "* Replace `maxSpeechTime` with `speechTimeout` in your `<Gather>` TwiML.\n* Set `speechTimeout` to a positive integer, or use `auto` only when you are not selecting a speech model.\n* If you use `speechModel`, keep `speechTimeout` as a positive integer and verify the final TwiML that your application sends to Twilio.",
    "description": "Twilio raises this warning when a `<Gather>` request includes an invalid `maxSpeechTime` value. Use `speechTimeout` to control how long Twilio waits after a pause in speech before stopping recognition. `speechTimeout` accepts a positive integer or `auto`.",
    "date_created": "2017-08-21T21:41:13Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13329,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid partialResultCallbackMethod value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when `<Gather>` receives a `partialResultCallbackMethod` value that is not `GET` or `POST`. The `partialResultCallbackMethod` attribute controls which HTTP verb Twilio uses to request the `partialResultCallback` URL, and its default value is `POST`.\n\n### Possible causes\n\n- The `partialResultCallbackMethod` attribute was set to a value other than `GET` or `POST`.\n- The request used a misspelled, unsupported, or otherwise invalid HTTP method value for `partialResultCallbackMethod`.\n\n### Possible solutions\n\n- Set `partialResultCallbackMethod` to `GET` or `POST`.\n- If you do not need a custom method, omit `partialResultCallbackMethod` so Twilio uses the default `POST` value.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice `<Gather>`](/docs/voice/twiml/gather)\n",
    "causes": "* The `partialResultCallbackMethod` attribute was set to a value other than `GET` or `POST`.\n* The request used a misspelled, unsupported, or otherwise invalid HTTP method value for `partialResultCallbackMethod`.",
    "solutions": "* Set `partialResultCallbackMethod` to `GET` or `POST`.\n* If you do not need a custom method, omit `partialResultCallbackMethod` so Twilio uses the default `POST` value.",
    "description": "This warning appears when `<Gather>` receives a `partialResultCallbackMethod` value that is not `GET` or `POST`. The `partialResultCallbackMethod` attribute controls which HTTP verb Twilio uses to request the `partialResultCallback` URL, and its default value is `POST`.",
    "date_created": "2017-05-01T22:46:05Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13330,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid hints value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when the `hints` value on `<Gather>` does not match the accepted format, size limits, or provider-specific token syntax. `hints` must be a comma-separated list of up to 500 entries, each entry can be 100 characters or fewer, and each word in a phrase must be separated by a space. Use only the tokens and keywords supported by the selected STT provider.\n\n### Possible causes\n\n- The `hints` value is not formatted as a comma-separated list of up to 500 entries.\n- One or more hint entries exceed 100 characters, or a phrase is not written as words separated by spaces.\n- The hint uses a token or keyword that the selected STT provider does not support.\n\n### Possible solutions\n\n- Reformat `hints` as a comma-separated list with no more than 500 entries.\n- Keep each entry at 100 characters or fewer, and separate every word in a phrase with a space.\n- Use only the token or keyword syntax supported by your selected STT provider, and check the provider tab in the `<Gather>` docs before you deploy.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n",
    "causes": "* The `hints` value is not formatted as a comma-separated list of up to 500 entries.\n* One or more hint entries exceed 100 characters, or a phrase is not written as words separated by spaces.\n* The hint uses a token or keyword that the selected STT provider does not support.",
    "solutions": "* Reformat `hints` as a comma-separated list with no more than 500 entries.\n* Keep each entry at 100 characters or fewer, and separate every word in a phrase with a space.\n* Use only the token or keyword syntax supported by your selected STT provider, and check the provider tab in the `<Gather>` docs before you deploy.",
    "description": "This warning appears when the `hints` value on `<Gather>` does not match the accepted format, size limits, or provider-specific token syntax. `hints` must be a comma-separated list of up to 500 entries, each entry can be 100 characters or fewer, and each word in a phrase must be separated by a space. Use only the tokens and keywords supported by the selected STT provider.",
    "date_created": "2017-05-01T22:46:50Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13331,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid language value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nUse this warning to fix a `<Gather>` `language` value that is invalid for the selected `speechModel`, or a combination Twilio can't map to a supported provider language. Twilio passes the `language` value through to the provider, and when the selected language and model aren't supported, Twilio generates an error notification and the gather fails.\n\n### Possible causes\n\n- You used a malformed locale value such as `en` instead of a supported tag like `en-US`.\n- The `language` value isn't supported for the selected `speechModel`.\n- The combination of language, provider, and model isn't supported, so Twilio can't route the request to a compatible speech-to-text language.\n\n### Possible solutions\n\n- Set `language` to a value supported by the provider and model you selected.\n- Verify that `language` and `speechModel` are compatible before you deploy the TwiML.\n- Retest the `<Gather>` flow after you update the configuration, and review the error notification if the warning persists.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Gather element has an invalid \"language\" attribute value](/docs/api/errors/13512)\n",
    "causes": "* You used a malformed locale value such as `en` instead of a supported tag like `en-US`.\n* The `language` value isn't supported for the selected `speechModel`.\n* The combination of language, provider, and model isn't supported, so Twilio can't route the request to a compatible speech-to-text language.",
    "solutions": "* Set `language` to a value supported by the provider and model you selected.\n* Verify that `language` and `speechModel` are compatible before you deploy the TwiML.\n* Retest the `<Gather>` flow after you update the configuration, and review the error notification if the warning persists.",
    "description": "Use this warning to fix a `<Gather>` `language` value that is invalid for the selected `speechModel`, or a combination Twilio can't map to a supported provider language. Twilio passes the `language` value through to the provider, and when the selected language and model aren't supported, Twilio generates an error notification and the gather fails.",
    "date_created": "2017-05-01T22:47:43Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13332,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Gather: Invalid bargeIn value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when a Voice `Gather` request includes an invalid `bargeIn` value.\n\n### Possible causes\n\n- The `bargeIn` value in the `Gather` configuration is not valid for the request.\n- If you configure `Gather` in Studio, incompatible advanced speech settings can cause Gather errors.\n\n### Possible solutions\n\n- Review the `Gather` request and correct the `bargeIn` value before retrying.\n- If you use Studio, check the Gather Input on Call widget's advanced speech settings and remove incompatible combinations.\n- Recheck the `Gather` configuration against the Voice `<Gather>` docs before redeploying. The docs cover supported `Gather` speech and speech-to-text options.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Gather Input On Call widget](/docs/studio/widget-library/gather-input-call)\n",
    "causes": "* The `bargeIn` value in the `Gather` configuration is not valid for the request.\n* If you configure `Gather` in Studio, incompatible advanced speech settings can cause Gather errors.",
    "solutions": "* Review the `Gather` request and correct the `bargeIn` value before retrying.\n* If you use Studio, check the Gather Input on Call widget's advanced speech settings and remove incompatible combinations.\n* Recheck the `Gather` configuration against the Voice `<Gather>` docs before redeploying. The docs cover supported `Gather` speech and speech-to-text options.",
    "description": "This warning appears when a Voice `Gather` request includes an invalid `bargeIn` value.",
    "date_created": "2017-05-01T22:48:24Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13333,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Gather: Invalid profanityFilter value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio sends this warning when `<Gather>` receives an invalid `profanityFilter` value. Set `profanityFilter` to `true` or `false`; the default is `true`.\n\n### Possible causes\n\n- `profanityFilter` is set to a value other than `true` or `false`.\n- `profanityFilter` is used with a `<Gather>` `speechModel` that doesn't support it, such as `numbers_and_commands`, generic models set to Latin American Spanish, Vietnamese, or Swiss German (`de-CH`).\n\n### Possible solutions\n\n- Set `profanityFilter` to `true` or `false` in your `<Gather>` TwiML.\n- If your `speechModel` doesn't support profanity filtering, remove `profanityFilter` or choose a supported `speechModel`.\n- Review the `<Gather>` request and TwiML to confirm the value Twilio received.\n\n#### Additional resources\n\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* `profanityFilter` is set to a value other than `true` or `false`.\n* `profanityFilter` is used with a `<Gather>` `speechModel` that doesn't support it, such as `numbers_and_commands`, generic models set to Latin American Spanish, Vietnamese, or Swiss German (`de-CH`).",
    "solutions": "* Set `profanityFilter` to `true` or `false` in your `<Gather>` TwiML.\n* If your `speechModel` doesn't support profanity filtering, remove `profanityFilter` or choose a supported `speechModel`.\n* Review the `<Gather>` request and TwiML to confirm the value Twilio received.",
    "description": "Twilio sends this warning when `<Gather>` receives an invalid `profanityFilter` value. Set `profanityFilter` to `true` or `false`; the default is `true`.",
    "date_created": "2019-07-17T20:19:01Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13334,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Gather: Invalid model value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning occurs when `<Gather>` receives a `speechModel` value that Twilio does not support, or when the selected language and model combination is not supported. When that happens, Twilio generates an error notification and the gather fails.\n\n### Possible causes\n\n- The `speechModel` value is not one of the supported `Gather` model values.\n- The selected language is not supported for the chosen model.\n- A specific STT model was selected with a language and model combination Twilio does not support.\n\n### Possible solutions\n\n- Set `speechModel` to a supported value documented for `<Gather>`.\n- If you use a specific STT model, verify that the language and model combination is supported before you retry.\n- Review the resulting error notification to confirm which model value Twilio rejected.\n\n#### Additional resources\n\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Error and Warning Dictionary](/docs/api/errors)\n",
    "causes": "* The `speechModel` value is not one of the supported `Gather` model values.\n* The selected language is not supported for the chosen model.\n* A specific STT model was selected with a language and model combination Twilio does not support.",
    "solutions": "* Set `speechModel` to a supported value documented for `<Gather>`.\n* If you use a specific STT model, verify that the language and model combination is supported before you retry.\n* Review the resulting error notification to confirm which model value Twilio rejected.",
    "description": "This warning occurs when `<Gather>` receives a `speechModel` value that Twilio does not support, or when the selected language and model combination is not supported. When that happens, Twilio generates an error notification and the gather fails.",
    "date_created": "2019-07-17T20:20:38Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13335,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Gather: speechTimeout auto cannot be used with model default",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nUse a positive integer for `speechTimeout` whenever you set `speechModel` on `<Gather>`. Twilio does not support `speechTimeout=\"auto\"` in this configuration, and this warning is raised when that combination is sent.\n\n### Possible causes\n\n- You set `speechTimeout=\"auto\"` on `<Gather>`.\n- You also set `speechModel`, and Twilio requires `speechTimeout` to be a positive integer when a speech model is configured.\n\n### Possible solutions\n\n- Change `speechTimeout` to a positive integer value.\n- Review the `<Gather>` speech configuration before you deploy it so the `speechModel` and `speechTimeout` values are compatible.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Gather Input On Call widget](/docs/studio/widget-library/gather-input-call)\n",
    "causes": "* You set `speechTimeout=\"auto\"` on `<Gather>`.\n* You also set `speechModel`, and Twilio requires `speechTimeout` to be a positive integer when a speech model is configured.",
    "solutions": "* Change `speechTimeout` to a positive integer value.\n* Review the `<Gather>` speech configuration before you deploy it so the `speechModel` and `speechTimeout` values are compatible.",
    "description": "Use a positive integer for `speechTimeout` whenever you set `speechModel` on `<Gather>`. Twilio does not support `speechTimeout=\"auto\"` in this configuration, and this warning is raised when that combination is sent.",
    "date_created": "2020-03-10T23:33:06Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13336,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Gather: Invalid debug value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio sends this warning when `<Gather>` receives an invalid `debug` value. Set `debug` to `true` or `false`.\n\n### Possible causes\n\n- `debug` is set to a value other than `true` or `false`.\n\n### Possible solutions\n\n- Set `debug` to `true` or `false` in your `<Gather>` TwiML, or remove the attribute.\n- Review the `<Gather>` request and TwiML to confirm the value Twilio received.\n\n#### Additional resources\n\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* `debug` is set to a value other than `true` or `false`.",
    "solutions": "* Set `debug` to `true` or `false` in your `<Gather>` TwiML, or remove the attribute.\n* Review the `<Gather>` request and TwiML to confirm the value Twilio received.",
    "description": "Twilio sends this warning when `<Gather>` receives an invalid `debug` value. Set `debug` to `true` or `false`.",
    "date_created": "2026-10-27T10:52:37-07:00",
    "last_updated": "2026-10-27T10:52:37-07:00"
  },
  {
    "code": 13337,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Gather: callback must be over HTTPS when using gather with PCI compliance",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when a `<Gather>` `action` callback used in a PCI workflow is not served over `https://`. Twilio requires a secure webhook endpoint for this flow, and Twilio won't connect to an HTTPS URL with a self-signed certificate.\n\n### Possible causes\n\n- The `<Gather>` `action` URL uses `http://` instead of `https://`.\n- The callback endpoint uses an HTTPS certificate that Twilio cannot trust, such as a self-signed certificate.\n\n### Possible solutions\n\n- Update the `<Gather>` `action` URL to use `https://` and make sure the URL is valid.\n- Use a trusted TLS certificate on the callback endpoint. Do not use a self-signed certificate.\n- If you are collecting PCI-sensitive data, enable PCI Mode for the account in Voice settings before using PCI workflows.\n\n#### Additional resources\n\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n- [Payment Card Industry Programmable Voice workflows](/docs/voice/pci-workflows)\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n",
    "causes": "* The `<Gather>` `action` URL uses `http://` instead of `https://`.\n* The callback endpoint uses an HTTPS certificate that Twilio cannot trust, such as a self-signed certificate.",
    "solutions": "* Update the `<Gather>` `action` URL to use `https://` and make sure the URL is valid.\n* Use a trusted TLS certificate on the callback endpoint. Do not use a self-signed certificate.\n* If you are collecting PCI-sensitive data, enable PCI Mode for the account in Voice settings before using PCI workflows.",
    "description": "This error occurs when a `<Gather>` `action` callback used in a PCI workflow is not served over `https://`. Twilio requires a secure webhook endpoint for this flow, and Twilio won't connect to an HTTPS URL with a self-signed certificate.",
    "date_created": "2020-03-10T23:53:12Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13338,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Gather: Invalid actionOnEmptyResult value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when `<Gather>` receives an invalid or empty `actionOnEmptyResult` value. Set `actionOnEmptyResult` to `true` or `false`; the default is `false`.\n\n### Possible causes\n\n- `actionOnEmptyResult` is missing from the `<Gather>` attributes.\n- `actionOnEmptyResult` is set to a value other than `true` or `false`.\n\n### Possible solutions\n\n- Set `actionOnEmptyResult` to `true` or `false` in your `<Gather>` verb.\n- Use `true` when you want `<Gather>` to send a webhook even if the caller provides no input.\n- Leave `actionOnEmptyResult` at its default `false` value when you want the call flow to continue to the next TwiML instruction after an empty gather.\n\n#### Additional resources\n\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather)\n",
    "causes": "* `actionOnEmptyResult` is missing from the `<Gather>` attributes.\n* `actionOnEmptyResult` is set to a value other than `true` or `false`.",
    "solutions": "* Set `actionOnEmptyResult` to `true` or `false` in your `<Gather>` verb.\n* Use `true` when you want `<Gather>` to send a webhook even if the caller provides no input.\n* Leave `actionOnEmptyResult` at its default `false` value when you want the call flow to continue to the next TwiML instruction after an empty gather.",
    "description": "This error occurs when `<Gather>` receives an invalid or empty `actionOnEmptyResult` value. Set `actionOnEmptyResult` to `true` or `false`; the default is `false`.",
    "date_created": "2020-03-11T00:00:34Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13339,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Gather: Invalid enhanced value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio sends this warning when `<Gather>` receives an invalid `enhanced` value. Set `enhanced` to `true` or `false`; the default is `false`. The `enhanced` attribute is deprecated and applies only to the Google STT V1 `phone_call` model.\n\n### Possible causes\n\n- `enhanced` is set to a value other than `true` or `false`.\n\n### Possible solutions\n\n- Set `enhanced` to `true` or `false` in your `<Gather>` TwiML, or remove the attribute.\n- Review the `<Gather>` request and TwiML to confirm the value Twilio received.\n\n#### Additional resources\n\n- [TwiML Voice: `<Gather>`](/docs/voice/twiml/gather#enhanced-deprecated)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* `enhanced` is set to a value other than `true` or `false`.",
    "solutions": "* Set `enhanced` to `true` or `false` in your `<Gather>` TwiML, or remove the attribute.\n* Review the `<Gather>` request and TwiML to confirm the value Twilio received.",
    "description": "Twilio sends this warning when `<Gather>` receives an invalid `enhanced` value. Set `enhanced` to `true` or `false`; the default is `false`. The `enhanced` attribute is deprecated and applies only to the Google STT V1 `phone_call` model.",
    "date_created": "2022-03-25T15:21:24Z",
    "last_updated": "2026-10-27T10:52:37-07:00"
  },
  {
    "code": 13340,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Gather: Degraded Speech ",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nWe are sorry for the inconvenience. You may be experiencing degraded `<Gather>` speech i.e. gather with input=\"speech dtmf\" or input=\"speech\".\n\n### Possible causes\n\nInternal Causes\n\n### Possible solutions\n\nPlease check Twilio's status page to see if engineers are currently working on resolving the issue.\n",
    "causes": "Internal Causes",
    "solutions": "Please check Twilio's status page to see if engineers are currently working on resolving the issue.",
    "description": "We are sorry for the inconvenience. You may be experiencing degraded `<Gather>` speech i.e. gather with input=\"speech dtmf\" or input=\"speech\".",
    "date_created": "2022-03-25T15:37:16Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13342,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Gather: Invalid config for Google STT V2 provider",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Gather: Invalid configuration for Google STT V2 provider\n\n### Possible causes\n\nInvalid configuration for Google STT V2 provider\n\n### Possible solutions\n\nEnter valid configuration by referring Google STT V2 provider\n",
    "causes": "Invalid configuration for Google STT V2 provider",
    "solutions": "Enter valid configuration by referring Google STT V2 provider",
    "description": "",
    "date_created": "2025-01-09T16:08:10Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13343,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Gather: Invalid config for speech provider",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Gather: Invalid configuration for speech provider\n\n### Possible causes\n\nInvalid configuration for speech provider\n\n### Possible solutions\n\nEnter valid configuration by referring to specified provider\n",
    "causes": "Invalid configuration for speech provider",
    "solutions": "Enter valid configuration by referring to specified provider",
    "description": "",
    "date_created": "2025-03-14T21:01:15Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13410,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Play: Invalid loop value",
    "secondary_message": "The value of the loop attribute must be an integer greater or equal to zero. See the [Play Verb](/docs/api/twiml/play#loop) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe value of the loop attribute must be an integer greater or equal to zero. See the [Play Verb](/docs/voice/twiml/play#loop) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The value of the loop attribute must be an integer greater or equal to zero. See the [Play Verb](/docs/voice/twiml/play#loop) API Reference for more information.",
    "date_created": "2016-03-31T17:13:42Z",
    "last_updated": "2020-08-04T10:00:28.008Z"
  },
  {
    "code": 13420,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Play: Invalid Content-Type",
    "secondary_message": "Play requires an audio Content-Type",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nPlay requires an audio `Content-Type`\n\n### Possible causes\n\n- Play references a URL that does not return audio or is returning an invalid `Content-Type`.\n\n### Possible solutions\n\n- Make certain the URL returns an audio file\n- See the [Play Verb](/docs/voice/twiml/play) API Reference for more information on valid `Content-Type`s.\n",
    "causes": "* Play references a URL that does not return audio or is returning an invalid `Content-Type`.",
    "solutions": "* Make certain the URL returns an audio file\n* See the [Play Verb](/docs/voice/twiml/play) API Reference for more information on valid `Content-Type`s.",
    "description": "Play requires an audio `Content-Type`",
    "date_created": "2016-03-31T17:13:42Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13430,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Play: Invalid DTMF String",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe `digit` attribute may contain numbers, the `#` and `*` characters, the letters `A`, `B`, `C`, `D`, as well as lowercase `w` to \"wait\" for half a second or uppercase `W` to \"wait\" for a full second.\n\n### Possible causes\n\nThe attribute `digit` includes an invalid character.\n\n### Possible solutions\n\nEnsure the `digit` attribute only contains the characters: `0123456789ABCD*#wW`.\n",
    "causes": "The attribute `digit` includes an invalid character.",
    "solutions": "Ensure the `digit` attribute only contains the characters: `0123456789ABCD*#wW`.",
    "description": "The `digit` attribute may contain numbers, the `#` and `*` characters, the letters `A`, `B`, `C`, `D`, as well as lowercase `w` to \"wait\" for half a second or uppercase `W` to \"wait\" for a full second.",
    "date_created": "2020-03-10T23:46:29Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13510,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Say: Invalid loop value",
    "secondary_message": "The value of the loop attribute must be an integer greater or equal to zero. See the [Play Verb](/docs/api/twiml/say#loop) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe value of the loop attribute must be an integer greater or equal to zero. See the [Play Verb](/docs/voice/twiml/say#loop) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The value of the loop attribute must be an integer greater or equal to zero. See the [Play Verb](/docs/voice/twiml/say#loop) API Reference for more information.",
    "date_created": "2016-03-31T17:13:42Z",
    "last_updated": "2020-08-04T10:00:27.971Z"
  },
  {
    "code": 13511,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Say: Invalid voice value",
    "secondary_message": "The value of the voice attribute must be \"man\" or \"woman\". See the [Say Verb](/docs/api/twiml/say#voice) API Reference for more information.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe value of the voice attribute must be valid one.\\\nSee the [Say Verb](/docs/voice/twiml/say#voice) API Reference for more information.\n\n### Possible causes\n\n- You have entered an invalid attribute for voice parameter\n\n### Possible solutions\n\n- Enter a valid voice as parameter\n",
    "causes": "* You have entered an invalid attribute for voice parameter",
    "solutions": "* Enter a valid voice as parameter",
    "description": "The value of the voice attribute must be valid one.\\\nSee the [Say Verb](/docs/voice/twiml/say#voice) API Reference for more information.",
    "date_created": "2016-03-31T17:13:43Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13512,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Gather element has an invalid \"language\" attribute value",
    "secondary_message": "A Gather element cannot have a \"lang\" attribute. Use \"language\" instead.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA Gather element has an invalid value for its \"language\" attribute. See [the accepted language values list](/docs/voice/twiml/gather#languagetags) and update your Gather TwiML.\n\n### Possible causes\n\nYour Gather TwiML has an invalid language attribute value. (Example: `en` is an invalid value, but `en-US` is a valid value.)\n\n### Possible solutions\n\nFind your preferred language in [this list of accepted values](/docs/voice/twiml/gather#languagetags) and update your Gather TwiML accordingly.\n",
    "causes": "Your Gather TwiML has an invalid language attribute value. (Example: `en` is an invalid value, but `en-US` is a valid value.)",
    "solutions": "Find your preferred language in [this list of accepted values](/docs/voice/twiml/gather#languagetags) and update your Gather TwiML accordingly.",
    "description": "A Gather element has an invalid value for its \"language\" attribute. See [the accepted language values list](/docs/voice/twiml/gather#languagetags) and update your Gather TwiML.",
    "date_created": "2016-03-31T17:13:43Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13513,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Say: Invalid rate value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when the `rate` value inside `<prosody>` is invalid. Twilio uses a default rate value of 150 when this happens. Twilio supports SSML inside `<Say>`, but SSML support can vary by provider and voice.\n\n### Possible causes\n\n- The `<prosody>` `rate` value is malformed or not supported by the selected voice. Twilio supports only a subset of SSML tags, and unsupported SSML can cause `<Say>` to fail.\n- You are using a Basic voice. Basic voices do not support SSML, so `<prosody>` is not available.\n\n### Possible solutions\n\n- Change the `<prosody>` `rate` value to a supported value, such as `x-slow` or a percentage like `85%`.\n- Verify that the selected voice supports SSML and test the TwiML with that exact provider and voice combination before you deploy it.\n- If you are using a Basic voice, remove SSML from `<Say>` or switch to a voice that supports SSML.\n\n#### Additional resources\n\n- [TwiML Voice: `<Say>`](/docs/voice/twiml/say)\n- [Text-to-Speech (TTS)](/docs/voice/twiml/say/text-speech)\n",
    "causes": "* The `<prosody>` `rate` value is malformed or not supported by the selected voice. Twilio supports only a subset of SSML tags, and unsupported SSML can cause `<Say>` to fail.\n* You are using a Basic voice. Basic voices do not support SSML, so `<prosody>` is not available.",
    "solutions": "* Change the `<prosody>` `rate` value to a supported value, such as `x-slow` or a percentage like `85%`.\n* Verify that the selected voice supports SSML and test the TwiML with that exact provider and voice combination before you deploy it.\n* If you are using a Basic voice, remove SSML from `<Say>` or switch to a voice that supports SSML.",
    "description": "This warning appears when the `rate` value inside `<prosody>` is invalid. Twilio uses a default rate value of 150 when this happens. Twilio supports SSML inside `<Say>`, but SSML support can vary by provider and voice.",
    "date_created": "2020-03-10T23:49:26Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13520,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Say: Invalid text",
    "secondary_message": "The text of the Say verb was empty or un-parsable. See the [Say Verb](/docs/api/twiml/say) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe text of the Say verb was empty or un-parsable. See the [Say Verb](/docs/voice/twiml/say) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The text of the Say verb was empty or un-parsable. See the [Say Verb](/docs/voice/twiml/say) API Reference for more information.",
    "date_created": "2016-03-31T17:13:43Z",
    "last_updated": "2020-08-04T10:00:27.913Z"
  },
  {
    "code": 13521,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "`<Say>` element character limits exceeded",
    "secondary_message": "The maximum text length inside a `<Say>` verb is 4096 characters for basic TTS and 3000 characters for Polly voices.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe maximum text length inside a `<Say>` verb is limited and varies depending on the option used. Basic, Polly and Google TTS have different limits and character count.\\\nSee the [Say Verb](/docs/voice/twiml/say#voice) API Reference for more information.\n\n### Possible causes\n\nThe maximum text length inside the `<Say>` verb has been exceeded.\n\n### Possible solutions\n\nMake sure that the character limit is under the limit for the TTS type being used:\n\n- Basic TTS Voices are limited to 4096 UTF-8 single byte characters\n- Polly TTS Voices are limited to 3000 UTF-8 single byte characters; note that SSML tags do not contribute to the character count\n- Google TTS Voices are limited to 5000 UTF-8 single byte characters; note that SSML tags, newlines and spaces contribute to the character count\n- The URL-encoded string cannot exceed 4500 characters\n",
    "causes": "The maximum text length inside the `<Say>` verb has been exceeded.",
    "solutions": "Make sure that the character limit is under the limit for the TTS type being used: - Basic TTS Voices are limited to 4096 UTF-8 single byte characters\n- Polly TTS Voices are limited to 3000 UTF-8 single byte characters; note that SSML tags do not contribute to the character count\n- Google TTS Voices are limited to 5000 UTF-8 single byte characters; note that SSML tags, newlines and spaces contribute to the character count\n- The URL-encoded string cannot exceed 4500 characters",
    "description": "The maximum text length inside a `<Say>` verb is limited and varies depending on the option used. Basic, Polly and Google TTS have different limits and character count.\\\nSee the [Say Verb](/docs/voice/twiml/say#voice) API Reference for more information.",
    "date_created": "2016-03-31T17:13:43Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13610,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: Invalid method value",
    "secondary_message": "The method attribute of Record must be GET or POST. See the [Record Verb](/docs/api/twiml/record#method) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe method attribute of Record must be `GET` or `POST`. See the [Record Verb](/docs/voice/twiml/record#method) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The method attribute of Record must be `GET` or `POST`. See the [Record Verb](/docs/voice/twiml/record#method) API Reference for more information.",
    "date_created": "2016-03-31T17:13:44Z",
    "last_updated": "2020-08-04T10:00:27.878Z"
  },
  {
    "code": 13611,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: Invalid timeout value",
    "secondary_message": "timeout must be a positive integer, in seconds. See the [Record Verb](/docs/api/twiml/record#timeout) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\ntimeout must be a positive integer, in seconds. See the [Record Verb](/docs/voice/twiml/record#timeout) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "timeout must be a positive integer, in seconds. See the [Record Verb](/docs/voice/twiml/record#timeout) API Reference for more information.",
    "date_created": "2016-03-31T17:13:44Z",
    "last_updated": "2020-08-04T10:00:27.857Z"
  },
  {
    "code": 13612,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: Invalid maxLength value",
    "secondary_message": "The maxLength attribute must be a positive integer in seconds. See the [Record Verb](/docs/api/twiml/record#maxLength) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe maxLength attribute must be a positive integer in seconds. See the [Record Verb](/docs/voice/twiml/record#maxLength) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The maxLength attribute must be a positive integer in seconds. See the [Record Verb](/docs/voice/twiml/record#maxLength) API Reference for more information.",
    "date_created": "2016-03-31T17:13:44Z",
    "last_updated": "2020-08-04T10:00:27.839Z"
  },
  {
    "code": 13613,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: Invalid finishOnKey value",
    "secondary_message": "The value of the finishOnKey attribute must be one of the following characters \"0123456789#\\*\". See the [Record Verb](/docs/api/twiml/record#maxLength) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe value of the finishOnKey attribute must be one of the following characters \"0123456789#\\*\". See the [Record Verb](/docs/voice/twiml/record#maxLength) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The value of the finishOnKey attribute must be one of the following characters \"0123456789#\\*\". See the [Record Verb](/docs/voice/twiml/record#maxLength) API Reference for more information.",
    "date_created": "2016-03-31T17:13:45Z",
    "last_updated": "2020-08-04T10:00:27.82Z"
  },
  {
    "code": 13614,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: Invalid transcribe value",
    "secondary_message": "The transcribe attribute of Record must be FAST or ACCURATE. See the [Record Verb](/docs/api/twiml/record#transcribe) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe transcribe attribute of Record must be TRUE or FALSE. See the [Record Verb](/docs/voice/twiml/record#transcribe) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The transcribe attribute of Record must be TRUE or FALSE. See the [Record Verb](/docs/voice/twiml/record#transcribe) API Reference for more information.",
    "date_created": "2016-03-31T17:13:45Z",
    "last_updated": "2020-08-04T10:00:27.802Z"
  },
  {
    "code": 13615,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: maxLength too high for transcription",
    "secondary_message": "If maxLength must be less than or equal to 120 seconds (2 minutes) if transcribe or transcribeCallback attributes are specified, otherwise transcription is disabled. See the [Record Verb](/docs/api/twiml/record#transcribe) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe transcribeCallback URL provided in the `<Record>` verb is not valid.\n\n### Possible solutions\n\nMake sure you submit a fully qualified URL including:\n\n- protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters\n\nTwilio must be able to reach this URL over the public Internet.\n",
    "causes": null,
    "solutions": "Make sure you submit a fully qualified URL including: - protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "description": "The transcribeCallback URL provided in the `<Record>` verb is not valid.",
    "date_created": "2016-03-31T17:13:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 13616,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: playBeep must be true or false",
    "secondary_message": "The playBeep attribute must have a value of \"true\" or \"false\"",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nTwilio returns this warning when your `<Record>` TwiML sets `playBeep` to a value other than `true` or `false`. The `playBeep` attribute controls whether Twilio plays a sound before recording starts, and its default value is `true`.\n\n### Possible causes\n\n- The `<Record>` verb includes `playBeep` with a value other than `true` or `false`.\n- The `playBeep` attribute was provided with a value outside the allowed values for `<Record>`.\n\n### Possible solutions\n\n- Set `playBeep=\"true\"` if you want Twilio to play a beep before the recording starts.\n- Set `playBeep=\"false\"` if you do not want Twilio to play a beep before the recording starts.\n- Update your `<Record>` TwiML so the `playBeep` attribute uses only `true` or `false`.\n\n#### Additional resources\n- [TwiML Voice: `<Record>`](/docs/voice/twiml/record)\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n- [Programmable Voice API overview](/docs/voice/api)\n",
    "causes": "* The `<Record>` verb includes `playBeep` with a value other than `true` or `false`.\n* The `playBeep` attribute was provided with a value outside the allowed values for `<Record>`.",
    "solutions": "* Set `playBeep=\"true\"` if you want Twilio to play a beep before the recording starts.\n* Set `playBeep=\"false\"` if you do not want Twilio to play a beep before the recording starts.\n* Update your `<Record>` TwiML so the `playBeep` attribute uses only `true` or `false`.",
    "description": "Twilio returns this warning when your `<Record>` TwiML sets `playBeep` to a value other than `true` or `false`. The `playBeep` attribute controls whether Twilio plays a sound before recording starts, and its default value is `true`.",
    "date_created": "2016-03-31T17:14:09Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 13617,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: Recording length is out of range for transcription",
    "secondary_message": "Twilio could not process the transcription because the duration of the recording is either too short or too long. The recording itself will not be affected.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not process the transcription because the duration of the recording is either too short or too long. The recording itself will not be affected.\n\n### Possible solutions\n\n- Transcription is currently limited to recordings with a duration greater than 2 seconds and less than 120 seconds. Consider using the maxLength parameter for `<Record>` to limit the duration of the recording. See [transcription TwiML reference](/docs/voice/twiml/record#attributes-transcribe) for more information.\n",
    "causes": null,
    "solutions": "* Transcription is currently limited to recordings with a duration greater than 2 seconds and less than 120 seconds. Consider using the maxLength parameter for `<Record>` to limit the duration of the recording. See [transcription TwiML reference](/docs/voice/twiml/record#attributes-transcribe) for more information.",
    "description": "Twilio could not process the transcription because the duration of the recording is either too short or too long. The recording itself will not be affected.",
    "date_created": "2016-03-31T17:13:46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 13618,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: Recording not available for transcription",
    "secondary_message": "The recording was not available when Twilio fetched the recording for transcription",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The recording was deleted before before Twilio was able to fetch the recording for transcription.\n\n### Possible solutions\n\n- Make a request to delete the recording once you receive the transcribe callback instead of the record callback. This ensures that the recording is available for Twilio to transcribe and still allows you to delete recordings from Twilio.\n",
    "causes": "* The recording was deleted before before Twilio was able to fetch the recording for transcription.",
    "solutions": "* Make a request to delete the recording once you receive the transcribe callback instead of the record callback. This ensures that the recording is available for Twilio to transcribe and still allows you to delete recordings from Twilio.",
    "description": "",
    "date_created": "2016-03-31T17:13:46Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13619,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Record: Transcription feature not available for this type of recording.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nUse transcription only with Voice recording flows that support it. This warning appears when you request transcription for a recording type that does not support transcription. Twilio generates transcription from call recordings created with TwiML `<Record>` and `transcribe=\"true\"`.\n\n### Possible causes\n\n- You requested transcription for a recording type that does not support transcription.\n- The recording was not created with the TwiML `<Record>` flow that supports transcription.\n\n### Possible solutions\n\n- Check the TwiML or API docs for the recording type you are using and confirm that transcription is supported before you set transcription attributes.\n- Use TwiML `<Record>` with `transcribe=\"true\"` for recordings that support transcription.\n\n#### Additional resources\n\n- [TwiML Voice: `<Record>`](/docs/voice/twiml/record)\n- [Transcriptions resource](/docs/voice/api/recording-transcription)\n",
    "causes": "* You requested transcription for a recording type that does not support transcription.\n* The recording was not created with the TwiML `<Record>` flow that supports transcription.",
    "solutions": "* Check the TwiML or API docs for the recording type you are using and confirm that transcription is supported before you set transcription attributes.\n* Use TwiML `<Record>` with `transcribe=\"true\"` for recordings that support transcription.",
    "description": "Use transcription only with Voice recording flows that support it. This warning appears when you request transcription for a recording type that does not support transcription. Twilio generates transcription from call recordings created with TwiML `<Record>` and `transcribe=\"true\"`.",
    "date_created": "2016-05-20T03:22:25Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13620,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Record: Transcription not available for this recording",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nRecord: Transcription feature not available for this recording.\n\n### Possible causes\n\nTranscription feature not supported for recordings when your account has one or more of the following features enabled: Recording Encryption, PCI recordings.\n\n### Possible solutions\n\nContact support to disable the corresponding feature(s) on your account.\n",
    "causes": "Transcription feature not supported for recordings when your account has one or more of the following features enabled: Recording Encryption, PCI recordings.",
    "solutions": "Contact support to disable the corresponding feature(s) on your account.",
    "description": "Record: Transcription feature not available for this recording.",
    "date_created": "2016-10-11T17:58:00Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13621,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid 'recordingStatusCallbackEvent'",
    "secondary_message": "One or more of the recordingStatusCallbackEvents provided were invalid.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when one or more values in `recordingStatusCallbackEvent` are invalid. Valid values are `in-progress`, `completed`, and `absent`. If you set `recordingStatusCallback` without `recordingStatusCallbackEvent`, Twilio sends `completed` by default.\n\n### Possible causes\n\n- `recordingStatusCallbackEvent` includes a value other than `in-progress`, `completed`, or `absent`.\n- Multiple callback events are separated with commas or another delimiter instead of spaces.\n\n### Possible solutions\n\n- Update `recordingStatusCallbackEvent` to use only supported values, separated by spaces, such as `in-progress completed`.\n- Remove `recordingStatusCallbackEvent` if you only need the default `completed` callback.\n\n#### Additional resources\n\n- [TwiML Voice: `<Recording>`](/docs/voice/twiml/recording)\n- [TwiML Voice: `<Record>`](/docs/voice/twiml/record)\n",
    "causes": "* `recordingStatusCallbackEvent` includes a value other than `in-progress`, `completed`, or `absent`.\n* Multiple callback events are separated with commas or another delimiter instead of spaces.",
    "solutions": "* Update `recordingStatusCallbackEvent` to use only supported values, separated by spaces, such as `in-progress completed`.\n* Remove `recordingStatusCallbackEvent` if you only need the default `completed` callback.",
    "description": "Twilio returns this error when one or more values in `recordingStatusCallbackEvent` are invalid. Valid values are `in-progress`, `completed`, and `absent`. If you set `recordingStatusCallback` without `recordingStatusCallbackEvent`, Twilio sends `completed` by default.",
    "date_created": "2017-07-26T21:02:28Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13622,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Record: invalid recordingTrack value",
    "secondary_message": "The recordingTrack can be \"inbound\", \"outbound\", or \"both\"",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Record: invalid recordingTrack value\n\nThe recordingTrack can be \"inbound\", \"outbound\", or \"both\"\n\n### Possible causes\n\nInvalid combinations of recordingTrack with requested channels\n\n### Possible solutions\n\nCheck valid combinations of recordingTrack with requested channels\n",
    "causes": "Invalid combinations of recordingTrack with requested channels",
    "solutions": "Check valid combinations of recordingTrack with requested channels",
    "description": "",
    "date_created": "2023-11-29T18:13:54Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13699,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Record: Invalid trim value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when a Voice recording configuration includes a `trim` value that Twilio does not accept. Use `trim-silence` or `do-not-trim` for both TwiML `<Recording>` and the Recordings resource.\n\n### Possible causes\n\n- The `trim` parameter contains a typo or another unsupported value.\n- The request is using a `trim` value that does not match the Voice recording surface you are calling.\n\n### Possible solutions\n\n- Set `trim` to `trim-silence` if you want Twilio to remove leading and trailing silence, or `do-not-trim` if you want to keep the full recording.\n- Confirm whether you are starting the recording with TwiML `<Recording>` or with the Recordings resource, then use the documented `trim` values for that surface. TwiML `<Recording>` defaults to `trim-silence`; the Recordings resource defaults to `do-not-trim`.\n- Resend the request after correcting the `trim` value.\n\n#### Additional resources\n\n- [TwiML Voice: `<Recording>`](/docs/voice/twiml/recording)\n- [Recordings resource](/docs/voice/api/recording)\n",
    "causes": "* The `trim` parameter contains a typo or another unsupported value.\n* The request is using a `trim` value that does not match the Voice recording surface you are calling.",
    "solutions": "* Set `trim` to `trim-silence` if you want Twilio to remove leading and trailing silence, or `do-not-trim` if you want to keep the full recording.\n* Confirm whether you are starting the recording with TwiML `<Recording>` or with the Recordings resource, then use the documented `trim` values for that surface. TwiML `<Recording>` defaults to `trim-silence`; the Recordings resource defaults to `do-not-trim`.\n* Resend the request after correcting the `trim` value.",
    "description": "This warning appears when a Voice recording configuration includes a `trim` value that Twilio does not accept. Use `trim-silence` or `do-not-trim` for both TwiML `<Recording>` and the Recordings resource.",
    "date_created": "2020-03-10T23:44:05Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13710,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Redirect: Invalid method value",
    "secondary_message": "The method attribute of Number must be GET or POST. See the [Redirect Verb](/docs/api/twiml/redirect#method) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe method attribute of Number must be `GET` or `POST`. See the [Redirect Verb](/docs/voice/twiml/redirect#method) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The method attribute of Number must be `GET` or `POST`. See the [Redirect Verb](/docs/voice/twiml/redirect#method) API Reference for more information.",
    "date_created": "2016-03-31T17:13:47Z",
    "last_updated": "2020-08-04T10:00:27.717Z"
  },
  {
    "code": 13750,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twiml verb not supported by this API version.",
    "secondary_message": "Your version of the API does not support this feature. Please use version 2010-04-01 or later.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio starts a new TwiML session with an `apiVersion` that does not support the TwiML your Voice Application returns. The Application resource uses `apiVersion` to start the new TwiML session, and this error directs you to use `2010-04-01` or later.\n\n### Possible causes\n\n- The TwiML Application is configured with `apiVersion` `2008-08-01`, so Twilio starts the call with an older TwiML session version.\n- The TwiML returned by your webhook uses a verb that requires `2010-04-01` or later.\n\n### Possible solutions\n\n- Update the Application resource `apiVersion` to `2010-04-01`.\n- If you must keep the current API version, return only TwiML verbs supported by that version.\n- Confirm the call is reaching the intended Voice URL and that the response is valid TwiML for the selected API version.\n\n#### Additional resources\n\n- [REST API: Applications](/docs/usage/api/applications)\n- [TwiML™ for Programmable Voice](/docs/voice/twiml)\n",
    "causes": "* The TwiML Application is configured with `apiVersion` `2008-08-01`, so Twilio starts the call with an older TwiML session version.\n* The TwiML returned by your webhook uses a verb that requires `2010-04-01` or later.",
    "solutions": "* Update the Application resource `apiVersion` to `2010-04-01`.\n* If you must keep the current API version, return only TwiML verbs supported by that version.\n* Confirm the call is reaching the intended Voice URL and that the response is valid TwiML for the selected API version.",
    "description": "This error occurs when Twilio starts a new TwiML session with an `apiVersion` that does not support the TwiML your Voice Application returns. The Application resource uses `apiVersion` to start the new TwiML session, and this error directs you to use `2010-04-01` or later.",
    "date_created": "2018-10-23T23:30:26Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13801,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Refer not allowed on non-SIP call legs",
    "secondary_message": "The Refer verb can only be invoked on a SIP call leg.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe Refer verb is only allowed on SIP call legs, e.g. you can refer an incoming SIP call that originate from SIP infrastructure or an outbound call to a SIP destination. Calls to or from other destinations, such as a phone number or Twilio Client cannot be referred.\n\n### Possible causes\n\n- Your application attempted to invoke the Refer verb on a PSTN or Twilio Client call leg.\n\n### Possible solutions\n\n- For more information on understanding what does and does not constitute a SIP call leg, please see [Understanding SIP Call Legs](/docs/voice/twiml/refer#understanding-call-legs).\n- While invoking Refer on a SIP leg is unique in that it removes Twilio from the call path, the effect of transferring a call to another party can be accomplished on all leg types by simply using the Dial verb to call the other party.\n",
    "causes": "* Your application attempted to invoke the Refer verb on a PSTN or Twilio Client call leg.",
    "solutions": "* For more information on understanding what does and does not constitute a SIP call leg, please see [Understanding SIP Call Legs](/docs/voice/twiml/refer#understanding-call-legs).\n* While invoking Refer on a SIP leg is unique in that it removes Twilio from the call path, the effect of transferring a call to another party can be accomplished on all leg types by simply using the Dial verb to call the other party.",
    "description": "The Refer verb is only allowed on SIP call legs, e.g. you can refer an incoming SIP call that originate from SIP infrastructure or an outbound call to a SIP destination. Calls to or from other destinations, such as a phone number or Twilio Client cannot be referred.",
    "date_created": "2019-08-29T17:37:50Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13802,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dial: No referUrl attribute specified",
    "secondary_message": "Twilio received a REFER on an established `<Dial>` session, but there was no referUrl attribute specified.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nIn order to send a SIP REFER message to an established `<Dial>` call, the `referUrl` attribute must be specified in the TwiML. In this case, a REFER was received on a `<Dial>` call without a `referUrl` attribute present.\n\n### Possible causes\n\n- Your `<Dial>` verb did not include a `referUrl` attribute or the attribute was misspelled\n\n### Possible solutions\n\n- Add a valid `referUrl` attribute to your `<Dial>` verb\n- For more information on sending REFER to Twilio, see [Refer to Twilio](/docs/voice/api/refer-to-twilio)\n",
    "causes": "* Your `<Dial>` verb did not include a `referUrl` attribute or the attribute was misspelled",
    "solutions": "* Add a valid `referUrl` attribute to your `<Dial>` verb\n* For more information on sending REFER to Twilio, see [Refer to Twilio](/docs/voice/api/refer-to-twilio)",
    "description": "In order to send a SIP REFER message to an established `<Dial>` call, the `referUrl` attribute must be specified in the TwiML. In this case, a REFER was received on a `<Dial>` call without a `referUrl` attribute present.",
    "date_created": "2020-07-31T22:06:27Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13803,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SMS verb not supported in this realm",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when you use the `<Message>` TwiML verb in a Twilio Region that does not support it. `<Message>` is currently supported only in the default `US1` region. It is not available in `IE1` or `AU1`.\n\n### Possible causes\n\n- You used `<Message>` in `IE1` or `AU1`, where that TwiML verb is not currently supported.\n- Your application depends on a feature that is not available in the selected Twilio Region. Twilio Regions operate in isolation, so unsupported products and features do not work in the target Region.\n\n### Possible solutions\n\n- Run the `<Message>` step in the default `US1` region, where Twilio currently supports it.\n- If your application must use `IE1` or `AU1`, remove or redesign the `<Message>` step so the flow uses only features supported in that Region.\n- Confirm your Region selection before deployment and verify that every product and TwiML verb used in the flow is supported in that Region.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Message: `<Message>`](/docs/messaging/twiml/message)\n- [Regional product availability](/docs/global-infrastructure/regional-product-and-feature-availability)\n",
    "causes": "* You used `<Message>` in `IE1` or `AU1`, where that TwiML verb is not currently supported.\n* Your application depends on a feature that is not available in the selected Twilio Region. Twilio Regions operate in isolation, so unsupported products and features do not work in the target Region.",
    "solutions": "* Run the `<Message>` step in the default `US1` region, where Twilio currently supports it.\n* If your application must use `IE1` or `AU1`, remove or redesign the `<Message>` step so the flow uses only features supported in that Region.\n* Confirm your Region selection before deployment and verify that every product and TwiML verb used in the flow is supported in that Region.",
    "description": "This error occurs when you use the `<Message>` TwiML verb in a Twilio Region that does not support it. `<Message>` is currently supported only in the default `US1` region. It is not available in `IE1` or `AU1`.",
    "date_created": "2020-08-24T16:37:32Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13804,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "AddOns are not supported in this realm",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nUse this error as a signal that a Programmable Voice request is trying to use Add-ons in a realm or Region where they are unavailable. Twilio Regions operate in isolation, so products and features that are not available in the target Region will not work there. Add-on Listings must be installed and configured before they can be invoked.\n\n### Possible causes\n\n- The call is running in a Twilio Region where Add-ons are not supported. Twilio Regions operate in isolation, so features that are unavailable in the target Region will not work there.\n- The Add-on Listing has not been installed and configured on the account before it is used. Add-on Listings must be installed, configured, and enabled for the appropriate usage point.\n\n### Possible solutions\n\n- Move the Voice workflow to a realm or Region where Add-ons are supported. Twilio's regional availability guidance says unsupported products and features will not work in the target Region.\n- Install the Add-on Listing in Twilio Marketplace, complete its configuration, and make sure it is enabled for the Voice usage point you are using.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [How to Use Marketplace Listings](/docs/marketplace/listings/usage)\n- [Regional product availability](/docs/global-infrastructure/regional-product-and-feature-availability)\n",
    "causes": "* The call is running in a Twilio Region where Add-ons are not supported. Twilio Regions operate in isolation, so features that are unavailable in the target Region will not work there.\n* The Add-on Listing has not been installed and configured on the account before it is used. Add-on Listings must be installed, configured, and enabled for the appropriate usage point.",
    "solutions": "* Move the Voice workflow to a realm or Region where Add-ons are supported. Twilio's regional availability guidance says unsupported products and features will not work in the target Region.\n* Install the Add-on Listing in Twilio Marketplace, complete its configuration, and make sure it is enabled for the Voice usage point you are using.",
    "description": "Use this error as a signal that a Programmable Voice request is trying to use Add-ons in a realm or Region where they are unavailable. Twilio Regions operate in isolation, so products and features that are not available in the target Region will not work there. Add-on Listings must be installed and configured before they can be invoked.",
    "date_created": "2020-08-31T17:06:59Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13805,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Trial account call duration exceeded 10 minute limit",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when a Voice call on a trial account reaches the 10-minute maximum. Trial calls are limited to 10 minutes for both inbound and outbound calls, and Twilio automatically disconnects calls that hit that limit and flags them with Warning 13805.\n\n### Possible causes\n\n- The call is running on a trial account, which applies the 10-minute call-duration limit.\n\n### Possible solutions\n\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove the trial-only call-duration limit. The trial lasts 30 days or until you exhaust your free product units (for example, 100 SMS), whichever comes first. If you run out of product units before 30 days, you'll need to upgrade to continue.\n\n#### Additional resources\n\n- [Twilio trial account](/docs/usage/trials)\n",
    "causes": "* The call is running on a trial account, which applies the 10-minute call-duration limit.",
    "solutions": "* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove the trial-only call-duration limit. The trial lasts 30 days or until you exhaust your free product units (for example, 100 SMS), whichever comes first. If you run out of product units before 30 days, you'll need to upgrade to continue.",
    "description": "This warning appears when a Voice call on a trial account reaches the 10-minute maximum. Trial calls are limited to 10 minutes for both inbound and outbound calls, and Twilio automatically disconnects calls that hit that limit and flags them with Warning 13805.",
    "date_created": "2021-03-09T18:16:22Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 13806,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Client Notification URL",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error means the configured `clientNotificationUrl` is not a valid URL for Voice client call notifications. Twilio uses `clientNotificationUrl` to notify your application when a call routes to a Voice SDK client user, and the URL must contain a valid hostname, cannot include underscores, and only accepts `POST`.\n\n### Possible causes\n\n- The configured `clientNotificationUrl` is malformed or otherwise not a valid URL.\n- The URL hostname is invalid or includes underscores.\n- The URL is not configured to use `POST`.\n\n### Possible solutions\n\n- Replace `clientNotificationUrl` with a valid URL that uses a valid hostname and does not include underscores.\n- Configure the notification endpoint to accept `POST` requests.\n- Verify your webhook handler responds appropriately to client call notifications. Twilio sends the request body as JSON, and the endpoint should return `200 OK` when a matching client binding is found or `404 Not Found` when it is not.\n\n#### Additional resources\n\n- [TwiML Voice: `<Client>`](/docs/voice/twiml/client)\n- [Client Call Notification Webhook](/docs/voice/sdks/client-call-notification-webhook)\n",
    "causes": "* The configured `clientNotificationUrl` is malformed or otherwise not a valid URL.\n* The URL hostname is invalid or includes underscores.\n* The URL is not configured to use `POST`.",
    "solutions": "* Replace `clientNotificationUrl` with a valid URL that uses a valid hostname and does not include underscores.\n* Configure the notification endpoint to accept `POST` requests.\n* Verify your webhook handler responds appropriately to client call notifications. Twilio sends the request body as JSON, and the endpoint should return `200 OK` when a matching client binding is found or `404 Not Found` when it is not.",
    "description": "This error means the configured `clientNotificationUrl` is not a valid URL for Voice client call notifications. Twilio uses `clientNotificationUrl` to notify your application when a call routes to a Voice SDK client user, and the URL must contain a valid hostname, cannot include underscores, and only accepts `POST`.",
    "date_created": "2025-09-03T18:49:03.054Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 13807,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Client Notification URL Error Response",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `clientNotificationUrl` used for a Voice SDK client call notification responds with an error instead of a successful webhook response. Twilio uses this URL to deliver a `POST` request for the Client Call Notification Webhook when you route a call to a Voice SDK client.\n\n### Possible causes\n\n- Your webhook returned a `5xx` response because the application handling the Client Notification URL request failed.\n- Your webhook returned `400`, `401`, or `403` because the endpoint rejected the request due to request validation, authentication, authorization, or another server-side configuration issue. Twilio sends this webhook as an HTTP `POST` with a JSON body.\n- Your `clientNotificationUrl` points to the wrong endpoint. This commonly results in a `404 Not Found` response.\n- Your application returned `404 Not Found` because it could not find a client binding that matched the target identity and Twilio Account SID.\n- Your `clientNotificationUrl` is not configured with a valid hostname or includes an underscore in the hostname. For `<Client>` TwiML, this parameter only accepts `POST`.\n\n### Possible solutions\n\n- Verify that `clientNotificationUrl` is set to the correct publicly reachable webhook endpoint in your Calls API request or `<Client>` TwiML.\n- Update your webhook handler to accept an HTTP `POST` request with a JSON body and return `200 OK` after you successfully dispatch the notification to the target client.\n- If no matching client binding exists, create or refresh the binding before routing calls to that identity. If the user is no longer registered, stop routing calls to that user until a valid binding is available.\n- Review any authentication, authorization, or request-validation logic on the endpoint so the webhook request can be processed successfully instead of returning `400`, `401`, or `403`.\n- If you handle your own mobile push delivery, pass the notification payload your application receives to `Voice.handleMessage()` on Android or `TwilioVoiceSDK.handleNotification()` on iOS after your application delivers it to the client.\n\n#### Additional resources\n\n- [Client Call Notification Webhook](/docs/voice/sdks/client-call-notification-webhook)\n- [TwiML Voice `<Client>`](/docs/voice/twiml/client)\n- [Call resource](/docs/voice/api/call-resource)\n",
    "causes": "* Your webhook returned a `5xx` response because the application handling the Client Notification URL request failed.\n* Your webhook returned `400`, `401`, or `403` because the endpoint rejected the request due to request validation, authentication, authorization, or another server-side configuration issue. Twilio sends this webhook as an HTTP `POST` with a JSON body.\n* Your `clientNotificationUrl` points to the wrong endpoint. This commonly results in a `404 Not Found` response.\n* Your application returned `404 Not Found` because it could not find a client binding that matched the target identity and Twilio Account SID.\n* Your `clientNotificationUrl` is not configured with a valid hostname or includes an underscore in the hostname. For `<Client>` TwiML, this parameter only accepts `POST`.",
    "solutions": "* Verify that `clientNotificationUrl` is set to the correct publicly reachable webhook endpoint in your Calls API request or `<Client>` TwiML.\n* Update your webhook handler to accept an HTTP `POST` request with a JSON body and return `200 OK` after you successfully dispatch the notification to the target client.\n* If no matching client binding exists, create or refresh the binding before routing calls to that identity. If the user is no longer registered, stop routing calls to that user until a valid binding is available.\n* Review any authentication, authorization, or request-validation logic on the endpoint so the webhook request can be processed successfully instead of returning `400`, `401`, or `403`.\n* If you handle your own mobile push delivery, pass the notification payload your application receives to `Voice.handleMessage()` on Android or `TwilioVoiceSDK.handleNotification()` on iOS after your application delivers it to the client.",
    "description": "Twilio returns this error when the `clientNotificationUrl` used for a Voice SDK client call notification responds with an error instead of a successful webhook response. Twilio uses this URL to deliver a `POST` request for the Client Call Notification Webhook when you route a call to a Voice SDK client.",
    "date_created": "2025-09-03T18:53:47.653Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 13810,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Reject: Invalid cause",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA call is rejected for any reason other than Busy or Hangup\n\n### Possible causes\n\nCould be timeout, cancelled, or no-answer.\n\n### Possible solutions\n\nCheck application call timeout duration.\n",
    "causes": "Could be timeout, cancelled, or no-answer.",
    "solutions": "Check application call timeout duration.",
    "description": "A call is rejected for any reason other than Busy or Hangup",
    "date_created": "2020-03-10T23:42:12Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 13910,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Pause: Invalid length value",
    "secondary_message": "The length attribute must be a positive integer, in seconds. See the [Pause Verb](/docs/api/twiml/pause#length) API Reference for more information.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe length attribute must be a positive integer, in seconds. See the [Pause Verb](/docs/voice/twiml/pause#length) API Reference for more information.\n",
    "causes": null,
    "solutions": null,
    "description": "The length attribute must be a positive integer, in seconds. See the [Pause Verb](/docs/voice/twiml/pause#length) API Reference for more information.",
    "date_created": "2016-03-31T17:13:47Z",
    "last_updated": "2020-08-04T10:00:27.699Z"
  },
  {
    "code": 13999,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Pause: Invalid timeout value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio sends this warning when `<Pause>` receives a `timeout` value that is not an integer. To set how long `<Pause>` waits, use the `length` attribute with a positive integer, in seconds.\n\n### Possible causes\n\n- `timeout` is set to a value that is not an integer.\n\n### Possible solutions\n\n- Use a whole number of seconds for `timeout`, or remove the attribute.\n- Use `length` to set the pause duration in seconds.\n\n#### Additional resources\n\n- [TwiML Voice: `<Pause>`](/docs/voice/twiml/pause)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* `timeout` is set to a value that is not an integer.",
    "solutions": "* Use a whole number of seconds for `timeout`, or remove the attribute.\n* Use `length` to set the pause duration in seconds.",
    "description": "Twilio sends this warning when `<Pause>` receives a `timeout` value that is not an integer. To set how long `<Pause>` waits, use the `length` attribute with a positive integer, in seconds.",
    "date_created": "2026-10-27T10:52:37-07:00",
    "last_updated": "2026-10-27T10:52:37-07:00"
  },
  {
    "code": 14101,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid \"To\" attribute",
    "secondary_message": "The To attribute does not appear to be a phone number that you can SMS",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe To attribute does not appear to be a phone number that you can SMS\n\n### Possible causes\n\n- Invalid formatted number\n- SMSing an un-validated number while using a Trial Account\n\n### Possible solutions\n\n- Check the number and make sure it is a valid 10 digit domestic phone number\n- Confirm you have validated this number, if you are still using a Trial account, or upgrade your account\n- Contact Twilio [customer support](/help/contact) to inquire further.\n",
    "causes": "* Invalid formatted number\n* SMSing an un-validated number while using a Trial Account",
    "solutions": "* Check the number and make sure it is a valid 10 digit domestic phone number\n* Confirm you have validated this number, if you are still using a Trial account, or upgrade your account\n* Contact Twilio [customer support](/help/contact) to inquire further.",
    "description": "The To attribute does not appear to be a phone number that you can SMS",
    "date_created": "2016-03-31T17:13:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 14102,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid \"From\" attribute",
    "secondary_message": "The From phone number does not appear to be a phone number that you can SMS from",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe From phone number does not appear to be a phone number that you can message from\n\n### Possible causes\n\n- Using a 'From' number that is not assigned to your account\n- Using a 'From' number that is not SMS/MMS enabled\n\n### Possible solutions\n\n- Check to make sure the number is correct\n- Check to make sure the number is an SMS/MMS enabled Twilio Incoming number assigned to your account\n",
    "causes": "* Using a 'From' number that is not assigned to your account\n* Using a 'From' number that is not SMS/MMS enabled",
    "solutions": "* Check to make sure the number is correct\n* Check to make sure the number is an SMS/MMS enabled Twilio Incoming number assigned to your account",
    "description": "The From phone number does not appear to be a phone number that you can message from",
    "date_created": "2016-03-31T17:13:48Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 14103,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid Body",
    "secondary_message": "The SMS body does not contain valid text",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Message body does not contain valid text or a media URL\n\n### Possible causes\n\n- Empty SMS body with no media URL specified\n- SMS Body exceeding 1600 characters\n\n### Possible solutions\n\n- Make sure you're not sending a blank message\n- Make sure the text of the message you are sending is 1600 characters or less.\n",
    "causes": "* Empty SMS body with no media URL specified\n* SMS Body exceeding 1600 characters",
    "solutions": "* Make sure you're not sending a blank message\n* Make sure the text of the message you are sending is 1600 characters or less.",
    "description": "The Message body does not contain valid text or a media URL",
    "date_created": "2016-03-31T17:13:48Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 14104,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid Method attribute",
    "secondary_message": "method attribute may only be \"GET\" or \"POST\"",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nYou see this warning when the `<Message>` verb uses a `method` attribute value other than `GET` or `POST`. Use the `method` attribute to tell Twilio whether to request the `action` URL with HTTP `GET` or `POST`. If you omit `method`, Twilio uses `POST`.\n\n### Possible causes\n\n- Your TwiML sets the `<Message>` verb's `method` attribute to a value other than `GET` or `POST`.\n- Your application generates a `<Message>` verb with an unsupported HTTP method for the `action` URL request. Twilio only supports `GET` and `POST` for this attribute.\n\n### Possible solutions\n\n- Update the `<Message>` verb so the `method` attribute is set to `GET` or `POST` only.\n- Remove the `method` attribute if you want Twilio to use the default `POST` request.\n- Review the `action` URL on your `<Message>` verb and make sure the endpoint is prepared to receive the HTTP method you selected.\n\n#### Additional resources\n- [TwiML Message](/docs/messaging/twiml/message)\n- [TwiML for Programmable Messaging](/docs/messaging/twiml)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Your TwiML sets the `<Message>` verb's `method` attribute to a value other than `GET` or `POST`.\n* Your application generates a `<Message>` verb with an unsupported HTTP method for the `action` URL request. Twilio only supports `GET` and `POST` for this attribute.",
    "solutions": "* Update the `<Message>` verb so the `method` attribute is set to `GET` or `POST` only.\n* Remove the `method` attribute if you want Twilio to use the default `POST` request.\n* Review the `action` URL on your `<Message>` verb and make sure the endpoint is prepared to receive the HTTP method you selected.",
    "description": "You see this warning when the `<Message>` verb uses a `method` attribute value other than `GET` or `POST`. Use the `method` attribute to tell Twilio whether to request the `action` URL with HTTP `GET` or `POST`. If you omit `method`, Twilio uses `POST`.",
    "date_created": "2016-03-31T17:13:48Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 14105,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid statusCallback attribute",
    "secondary_message": "The Sms Verb's statusCallback attribute must be a valid URL",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nTwilio returns this warning when the `<Message>` verb includes a `statusCallback` attribute that is not a valid URL. The `statusCallback` attribute accepts a relative or absolute URL. If you use an absolute URL, it must contain a valid hostname and the hostname cannot include underscores.\n\n### Possible causes\n\n- The `<Message>` verb includes a `statusCallback` value that is empty, malformed, or not formatted as a relative or absolute URL.\n- The `statusCallback` value uses an absolute URL with an invalid hostname. This includes hostnames that contain underscores.\n- The callback URL contains a typo, incorrect domain, or invalid path. ([help.twilio.com](https://help.twilio.com/articles/43659166532123))\n\n### Possible solutions\n\n- Update the `statusCallback` attribute so it contains a valid relative URL or a fully qualified absolute URL.\n- If you use an absolute URL, make sure the hostname is valid and remove any underscores from the domain name.\n- If you need a custom status webhook for `<Message>`, set both `statusCallback` and `action` to the same URL. This helps you avoid undefined behavior across message types while Twilio normalizes attribute handling.\n- Test the callback URL with a temporary public webhook endpoint to confirm Twilio can send requests successfully, then switch back to your production endpoint after the test passes. ([help.twilio.com](https://help.twilio.com/articles/43659166532123))\n\n#### Additional resources\n\n- [TwiML Message: `<Message>`](/docs/messaging/twiml/message)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n- [How to Test and Troubleshoot Twilio Messaging StatusCallback Failures](https://help.twilio.com/articles/43659166532123)\n",
    "causes": "* The `<Message>` verb includes a `statusCallback` value that is empty, malformed, or not formatted as a relative or absolute URL.\n* The `statusCallback` value uses an absolute URL with an invalid hostname. This includes hostnames that contain underscores.\n* The callback URL contains a typo, incorrect domain, or invalid path. ([help.twilio.com](https://help.twilio.com/articles/43659166532123))",
    "solutions": "* Update the `statusCallback` attribute so it contains a valid relative URL or a fully qualified absolute URL.\n* If you use an absolute URL, make sure the hostname is valid and remove any underscores from the domain name.\n* If you need a custom status webhook for `<Message>`, set both `statusCallback` and `action` to the same URL. This helps you avoid undefined behavior across message types while Twilio normalizes attribute handling.\n* Test the callback URL with a temporary public webhook endpoint to confirm Twilio can send requests successfully, then switch back to your production endpoint after the test passes. ([help.twilio.com](https://help.twilio.com/articles/43659166532123))",
    "description": "Twilio returns this warning when the `<Message>` verb includes a `statusCallback` attribute that is not a valid URL. The `statusCallback` attribute accepts a relative or absolute URL. If you use an absolute URL, it must contain a valid hostname and the hostname cannot include underscores.",
    "date_created": "2016-03-31T17:13:48Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 14106,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Document retrieval limit reached",
    "secondary_message": "Your SMS Reply session has requested too many documents. The limit is 50",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Message Reply session has requested too many documents. The limit is 50\n\n### Possible causes\n\n- infinite loop caused by self referencing Message verb action URL\n- infinite loop caused by self referencing Redirect verb URL\n\n### Possible solutions\n\n- make certain any action or Redirect URLs do not loop back to the same TwiML document.\n",
    "causes": "* infinite loop caused by self referencing Message verb action URL\n* infinite loop caused by self referencing Redirect verb URL",
    "solutions": "* make certain any action or Redirect URLs do not loop back to the same TwiML document.",
    "description": "Your Message Reply session has requested too many documents. The limit is 50",
    "date_created": "2016-03-31T17:13:49Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 14107,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SMS send rate limit exceeded",
    "secondary_message": "Too many messages have been sent between two numbers within a short time period, possibly indicating a runaway job or infinite loop. There is a limit of 30 outbound replies between two phone numbers in a short period.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when your application sends more than 30 outbound replies between the same two phone numbers within 30 seconds. This safeguard helps stop auto-reply loops and runaway messaging jobs. After the limit is exceeded, messages in that conversation are marked `failed` for 30 seconds.\n\n### Possible causes\n\n- Your application sends repeated replies between the same two phone numbers in a short time window.\n- A `<Message>` `action` URL points to a TwiML document that sends another reply to the same conversation.\n- A `<Redirect>` URL loops back to the same TwiML document and keeps generating replies.\n- A webhook handler, background job, or REST API client is caught in a loop and keeps sending messages to the same recipient.\n- An end user triggers automated replies rapidly enough to exceed 30 outbound replies in 30 seconds.\n\n### Possible solutions\n\n- Review your messaging workflow and confirm each inbound webhook triggers only the reply you intend to send.\n- Check every `<Message>` `action` URL and `<Redirect>` target. Make sure they don't return TwiML that sends another reply to the same conversation unless that behavior is intentional.\n- If you send messages with the REST API, add safeguards such as retry limits, loop detection, and duplicate request protection before sending another message to the same recipient.\n- Test your webhook and TwiML flows end to end so you can confirm control doesn't return to the same reply path repeatedly.\n- If you need this safeguard disabled for your account, contact Support only after you have protections in place to prevent costly auto-reply loops.\n\n#### Additional resources\n\n- [TwiML for Programmable Messaging](/docs/messaging/twiml)\n- [TwiML Message](/docs/messaging/twiml/message)\n- [Understanding Twilio Rate Limits and Message Queues](https://help.twilio.com/articles/115002943027)\n",
    "causes": "* Your application sends repeated replies between the same two phone numbers in a short time window.\n* A `<Message>` `action` URL points to a TwiML document that sends another reply to the same conversation.\n* A `<Redirect>` URL loops back to the same TwiML document and keeps generating replies.\n* A webhook handler, background job, or REST API client is caught in a loop and keeps sending messages to the same recipient.\n* An end user triggers automated replies rapidly enough to exceed 30 outbound replies in 30 seconds.",
    "solutions": "* Review your messaging workflow and confirm each inbound webhook triggers only the reply you intend to send.\n* Check every `<Message>` `action` URL and `<Redirect>` target. Make sure they don't return TwiML that sends another reply to the same conversation unless that behavior is intentional.\n* If you send messages with the REST API, add safeguards such as retry limits, loop detection, and duplicate request protection before sending another message to the same recipient.\n* Test your webhook and TwiML flows end to end so you can confirm control doesn't return to the same reply path repeatedly.\n* If you need this safeguard disabled for your account, contact Support only after you have protections in place to prevent costly auto-reply loops.",
    "description": "This error occurs when your application sends more than 30 outbound replies between the same two phone numbers within 30 seconds. This safeguard helps stop auto-reply loops and runaway messaging jobs. After the limit is exceeded, messages in that conversation are marked `failed` for 30 seconds.",
    "date_created": "2016-03-31T17:13:49Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 14108,
    "log_level": "WARNING",
    "log_type": null,
    "message": "From phone number not SMS capable",
    "secondary_message": "The From phone number does not appear to be a phone number that you can SMS from",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe From phone number does not appear to be a phone number that you can Message from\n\n### Possible causes\n\n- Sending from a number that is not SMS or MMS capable\n\n### Possible solutions\n\n- Check to make sure the number is correct\n- Check to make sure the number is an SMS or MMS capable Twilio Incoming number assigned to your account\n",
    "causes": "* Sending from a number that is not SMS or MMS capable",
    "solutions": "* Check to make sure the number is correct\n* Check to make sure the number is an SMS or MMS capable Twilio Incoming number assigned to your account",
    "description": "The From phone number does not appear to be a phone number that you can Message from",
    "date_created": "2016-03-31T17:13:49Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 14109,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "TwiML Reply message limit exceeded",
    "secondary_message": "Too many messages have been sent in reply to an incoming message. The current limit is 10",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning occurs when your application returns more than 10 TwiML reply messages for a single incoming message. Twilio supports multiple `<Message>` verbs in a Messaging TwiML response, but the limit for replies to one inbound message is 10.\n\n### Possible causes\n\n- Your application logic created a runaway loop or another repeated execution path that generated more than 10 reply messages for the same incoming message.\n- Your webhook intentionally returned more than 10 `<Message>` replies for one inbound message.\n\n### Possible solutions\n\n- Limit your TwiML response so each incoming message produces 10 or fewer `<Message>` replies.\n- If you need to send more than 10 outbound messages for one inbound message, create the additional messages with the Messages resource instead of returning them as TwiML replies.\n- Review your webhook and application flow for loops or repeated execution so the same inbound message does not trigger the reply logic multiple times.\n\n#### Additional resources\n\n- [Receive and Reply to Incoming Messages](/docs/messaging/tutorials/how-to-receive-and-reply)\n- [TwiML for Programmable Messaging](/docs/messaging/twiml)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* Your application logic created a runaway loop or another repeated execution path that generated more than 10 reply messages for the same incoming message.\n* Your webhook intentionally returned more than 10 `<Message>` replies for one inbound message.",
    "solutions": "* Limit your TwiML response so each incoming message produces 10 or fewer `<Message>` replies.\n* If you need to send more than 10 outbound messages for one inbound message, create the additional messages with the Messages resource instead of returning them as TwiML replies.\n* Review your webhook and application flow for loops or repeated execution so the same inbound message does not trigger the reply logic multiple times.",
    "description": "This warning occurs when your application returns more than 10 TwiML reply messages for a single incoming message. Twilio supports multiple `<Message>` verbs in a Messaging TwiML response, but the limit for replies to one inbound message is 10.",
    "date_created": "2016-03-31T17:13:50Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 14110,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid Verb for SMS Reply",
    "secondary_message": "An Invalid Verb has been passed back in an SMS reply. Valid Verbs are Sms and Redirect",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis warning appears when your webhook returns a TwiML verb that Programmable Messaging does not support for a message reply. In a Messaging TwiML `<Response>`, use Messaging verbs only. Use `<Message>` to send a reply or `<Redirect>` to transfer control to another Messaging TwiML document. TwiML verb names are case sensitive.\n\n### Possible causes\n\n- Your webhook returned a Voice or Fax TwiML verb instead of a Messaging verb. SMS message responses must include Programmable Messaging TwiML verbs only. ([help.twilio.com](https://help.twilio.com/articles/360017437774))\n- Your response used an unsupported or misspelled verb name. TwiML verb names are case sensitive, so values such as `<message>` are invalid.\n- Your TwiML mixed verbs from different communication types in the same `<Response>`. Twilio does not support mixing Voice and Messaging verbs in one response. ([help.twilio.com](https://help.twilio.com/articles/360017437774))\n- Your response used invalid TwiML structure, such as placing verbs outside `<Response>` or nesting verbs inside `<Message>` or `<Redirect>`.\n\n### Possible solutions\n\n- Return a valid Messaging TwiML `<Response>` and use supported Messaging verbs only.\n- Replace unsupported verbs with `<Message>` when you want to send a reply to the incoming sender.\n- Use `<Redirect>` when you want Twilio to request another Messaging TwiML document.\n- Check tag names, capitalization, and nesting. Use `<Message>` and `<Redirect>` exactly as documented, place them inside `<Response>`, and do not nest verbs inside `<Message>` or `<Redirect>`.\n- If you need to receive the incoming message without sending a reply, return an empty `<Response/>` instead of another TwiML verb.\n\n#### Additional resources\n\n- [TwiML for Programmable Messaging](/docs/messaging/twiml)\n- [TwiML Message: `<Message>`](/docs/messaging/twiml/message)\n- [TwiML SMS: `<Redirect>`](/docs/messaging/twiml/redirect)\n",
    "causes": "* Your webhook returned a Voice or Fax TwiML verb instead of a Messaging verb. SMS message responses must include Programmable Messaging TwiML verbs only. ([help.twilio.com](https://help.twilio.com/articles/360017437774))\n* Your response used an unsupported or misspelled verb name. TwiML verb names are case sensitive, so values such as `<message>` are invalid.\n* Your TwiML mixed verbs from different communication types in the same `<Response>`. Twilio does not support mixing Voice and Messaging verbs in one response. ([help.twilio.com](https://help.twilio.com/articles/360017437774))\n* Your response used invalid TwiML structure, such as placing verbs outside `<Response>` or nesting verbs inside `<Message>` or `<Redirect>`.",
    "solutions": "* Return a valid Messaging TwiML `<Response>` and use supported Messaging verbs only.\n* Replace unsupported verbs with `<Message>` when you want to send a reply to the incoming sender.\n* Use `<Redirect>` when you want Twilio to request another Messaging TwiML document.\n* Check tag names, capitalization, and nesting. Use `<Message>` and `<Redirect>` exactly as documented, place them inside `<Response>`, and do not nest verbs inside `<Message>` or `<Redirect>`.\n* If you need to receive the incoming message without sending a reply, return an empty `<Response/>` instead of another TwiML verb.",
    "description": "This warning appears when your webhook returns a TwiML verb that Programmable Messaging does not support for a message reply. In a Messaging TwiML `<Response>`, use Messaging verbs only. Use `<Message>` to send a reply or `<Redirect>` to transfer control to another Messaging TwiML document. TwiML verb names are case sensitive.",
    "date_created": "2016-03-31T17:13:50Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 14111,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid To phone number for Trial mode",
    "secondary_message": "To field must be a validated caller ID while in Trial mode",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nYou can only send messages or place calls from a trial account to verified recipient numbers. If the `To` number is not verified on your trial account, Twilio returns this warning.\n\n### Possible causes\n- The `To` number has not been added as a verified recipient on your trial account.\n- You are sending to a different phone number than the one you used to sign up, which is the only number verified automatically.\n- Your trial account has already reached the limit for verified recipients.\n- The recipient number was not added to your account because the same tester number is already associated with too many accounts.\n\n### Possible solutions\n- Verify the `To` phone number on your trial account, then send the message or place the call again.\n- If you are testing with your own device, use the phone number you used to create the account or confirm that the destination number appears in your verified recipients list.\n- Remove an unused verified recipient if you have reached your trial limit, then verify the new number.\n- Upgrade your account if you need to contact recipients that are not verified on your trial account.\n\n#### Additional resources\n- [Twilio trial account](/docs/usage/trials)\n- [Verified recipients](/docs/usage/trials#verified-recipients)\n- [How to Add and Remove a Verified Phone Number or Caller ID with Twilio](https://help.twilio.com/articles/223180048-How-to-Add-and-Remove-a-Verified-Phone-Number-or-Caller-ID-with-Twilio)\n",
    "causes": "* The `To` number has not been added as a verified recipient on your trial account.\n* You are sending to a different phone number than the one you used to sign up, which is the only number verified automatically.\n* Your trial account has already reached the limit for verified recipients.\n* The recipient number was not added to your account because the same tester number is already associated with too many accounts.",
    "solutions": "* Verify the `To` phone number on your trial account, then send the message or place the call again.\n* If you are testing with your own device, use the phone number you used to create the account or confirm that the destination number appears in your verified recipients list.\n* Remove an unused verified recipient if you have reached your trial limit, then verify the new number.\n* Upgrade your account if you need to contact recipients that are not verified on your trial account.",
    "description": "You can only send messages or place calls from a trial account to verified recipient numbers. If the `To` number is not verified on your trial account, Twilio returns this warning.",
    "date_created": "2016-03-31T17:13:50Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 14201,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Invalid method value",
    "secondary_message": "The method is invalid. You must specify one of 'GET' or 'POST'.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when Twilio receives an `<Enqueue>` verb with a `method` attribute that is not `GET` or `POST`. The `method` attribute controls the HTTP method Twilio uses for the `action` URL, and `POST` is the default.\n\n### Possible causes\n\n- The `<Enqueue>` verb sets `method` to a value other than `GET` or `POST`.\n- Your application may be generating `<Enqueue>` TwiML dynamically and inserting an unsupported value into `method`, because Twilio validates the `method` attribute against the allowed values `GET` and `POST`.\n- You intended to control how Twilio requests the `waitUrl`, but `<Enqueue>` uses `waitUrlMethod` for `waitUrl` requests and `method` for the `action` URL.\n\n### Possible solutions\n\n- Set the `<Enqueue>` `method` attribute to `GET` or `POST`.\n- Remove the `method` attribute if you do not need to override it. Twilio uses `POST` by default for the `action` URL.\n- If you need to control the request method for the hold music or queue instructions endpoint, set `waitUrlMethod` instead of `method`.\n\n#### Additional resources\n\n- [TwiML `<Enqueue>`](/docs/voice/twiml/enqueue)\n- [Queue Calls](/docs/voice/queue-calls)\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n",
    "causes": "* The `<Enqueue>` verb sets `method` to a value other than `GET` or `POST`.\n* Your application may be generating `<Enqueue>` TwiML dynamically and inserting an unsupported value into `method`, because Twilio validates the `method` attribute against the allowed values `GET` and `POST`.\n* You intended to control how Twilio requests the `waitUrl`, but `<Enqueue>` uses `waitUrlMethod` for `waitUrl` requests and `method` for the `action` URL.",
    "solutions": "* Set the `<Enqueue>` `method` attribute to `GET` or `POST`.\n* Remove the `method` attribute if you do not need to override it. Twilio uses `POST` by default for the `action` URL.\n* If you need to control the request method for the hold music or queue instructions endpoint, set `waitUrlMethod` instead of `method`.",
    "description": "This error occurs when Twilio receives an `<Enqueue>` verb with a `method` attribute that is not `GET` or `POST`. The `method` attribute controls the HTTP method Twilio uses for the `action` URL, and `POST` is the default.",
    "date_created": "2016-03-31T17:14:09Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 14202,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Invalid waitUrl",
    "secondary_message": "The waitUrl for the Enqueue verb is invalid. #### Possible Solutions Make sure you submit a fully qualified URL including: \\* protocol (http:// or https://) \\* hostname \\* file path \\* properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe waitUrl for the Enqueue verb is invalid.\n\n### Possible solutions\n\nMake sure you submit a fully qualified URL including:\n\n- protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters\n\nTwilio must be able to reach this URL over the public Internet.\n",
    "causes": null,
    "solutions": "Make sure you submit a fully qualified URL including: - protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "description": "The waitUrl for the Enqueue verb is invalid.",
    "date_created": "2016-03-31T17:14:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 14203,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Invalid Enqueue action url",
    "secondary_message": "The action URL for the Enqueue verb is invalid. #### Possible Solutions Make sure you submit a fully qualified URL including: \\* protocol (http:// or https://) \\* hostname \\* file path \\* properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe action URL for the Enqueue verb is invalid.\n\n### Possible solutions\n\nMake sure you submit a fully qualified URL including:\n\n- protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters\n\nTwilio must be able to reach this URL over the public Internet.\n",
    "causes": null,
    "solutions": "Make sure you submit a fully qualified URL including: - protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "description": "The action URL for the Enqueue verb is invalid.",
    "date_created": "2016-03-31T17:14:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 14204,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Queue name too short",
    "secondary_message": "The queue name must be at least one character long.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe queue name must be at least one character long.\n",
    "causes": null,
    "solutions": null,
    "description": "The queue name must be at least one character long.",
    "date_created": "2016-03-31T17:14:10Z",
    "last_updated": "2020-08-04T10:00:26.293Z"
  },
  {
    "code": 14205,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Queue name too long",
    "secondary_message": "The queue name must be less than 64 characters in length.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe queue name must be less than 64 characters in length.\n",
    "causes": null,
    "solutions": null,
    "description": "The queue name must be less than 64 characters in length.",
    "date_created": "2016-03-31T17:14:11Z",
    "last_updated": "2020-08-04T10:00:26.273Z"
  },
  {
    "code": 14206,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Invalid waitUrlMethod value",
    "secondary_message": "The waitUrlMethod value is invalid. You must specify one of 'GET' or 'POST'.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe waitUrlMethod value is invalid. You must specify one of `GET` or `POST`.\n",
    "causes": null,
    "solutions": null,
    "description": "The waitUrlMethod value is invalid. You must specify one of `GET` or `POST`.",
    "date_created": "2016-03-31T17:14:11Z",
    "last_updated": "2020-08-04T10:00:26.249Z"
  },
  {
    "code": 14207,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": " Enqueue: The targeted queue reached max queue size",
    "secondary_message": "The default max queue size is 1000 and can be set to a maximum of 5000.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe targeted queue has reached its maxSize limit. Once the queue reaches the limit, new requests to queue calls using `<Enqueue>` will be rejected.\n\n### Possible causes\n\nA full queue can indicate higher `<Enqueue>` volume, longer queue times, or an incorrectly configured queue's maxSize.\n\n### Possible solutions\n\nA queue's maxSize can be adjusted to a maximum of 5000. Use the [Queue API](/docs/voice/api/queue-resource) to identify the current maxSize and adjust accordingly.\n\nIf a waitUrl is provided for `<Enqueue>`, the parameters MaxQueueSize and CurrentQueueSize are included in the Webhook request to the waitUrl. Your application can use this information to determine queue capacity and adjust max queue size via the [API](/docs/voice/api/queue-resource).\n\nIf the queue is already configured for the maximum allowed queue size (5000), one possible workaround is to create multiple queues and distribute the `<Enqueue>` requests between them.\n",
    "causes": "A full queue can indicate higher `<Enqueue>` volume, longer queue times, or an incorrectly configured queue's maxSize.",
    "solutions": "A queue's maxSize can be adjusted to a maximum of 5000. Use the [Queue API](/docs/voice/api/queue-resource) to identify the current maxSize and adjust accordingly. If a waitUrl is provided for `<Enqueue>`, the parameters MaxQueueSize and CurrentQueueSize are included in the Webhook request to the waitUrl. Your application can use this information to determine queue capacity and adjust max queue size via the [API](/docs/voice/api/queue-resource). If the queue is already configured for the maximum allowed queue size (5000), one possible workaround is to create multiple queues and distribute the `<Enqueue>` requests between them.",
    "description": "The targeted queue has reached its maxSize limit. Once the queue reaches the limit, new requests to queue calls using `<Enqueue>` will be rejected.",
    "date_created": "2020-07-24T20:57:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 14210,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Queue: Invalid whisper method",
    "secondary_message": "The whisper method is invalid. You must specify one of 'GET' or 'POST'.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe whisper method is invalid. You must specify one of `GET` or `POST`.\n",
    "causes": null,
    "solutions": null,
    "description": "The whisper method is invalid. You must specify one of `GET` or `POST`.",
    "date_created": "2016-03-31T17:14:11Z",
    "last_updated": "2020-08-04T10:00:26.225Z"
  },
  {
    "code": 14211,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Queue: Invalid whisper url",
    "secondary_message": "The whisper url is invalid. #### Possible Solutions Make sure you submit a fully qualified URL including: \\* protocol (http:// or https://) \\* hostname \\* file path \\* properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when the `url` attribute on `<Dial><Queue>` is not a valid relative or absolute URL for the TwiML document that runs on the queued caller's leg before the calls connect.\n\n### Possible causes\n\n- The `<Queue>` `url` value is malformed.\n- An absolute `url` is missing the protocol, hostname, file path, or properly URL-encoded query parameters.\n- Twilio cannot retrieve the document from the `url` because the endpoint is not reachable or not reliably available to Twilio.\n\n### Possible solutions\n\n- Set the `<Dial><Queue>` `url` attribute to a valid relative or absolute URL.\n- If you use an absolute `url`, include `http://` or `https://`, a hostname, a file path, and properly URL-encoded query parameters.\n- Make sure Twilio can reach the endpoint over the public Internet and retrieve it reliably before the queued call is bridged.\n- Return a valid TwiML document for the queued caller. Use only `Play`, `Say`, `Pause`, and `Redirect` in the document requested by the `url`.\n\n#### Additional resources\n\n- [TwiML Voice: `<Queue>`](/docs/voice/twiml/queue)\n- [Queue Calls](/docs/voice/queue-calls)\n- [Availability and Reliability](/docs/usage/security/availability-reliability)\n",
    "causes": "* The `<Queue>` `url` value is malformed.\n* An absolute `url` is missing the protocol, hostname, file path, or properly URL-encoded query parameters.\n* Twilio cannot retrieve the document from the `url` because the endpoint is not reachable or not reliably available to Twilio.",
    "solutions": "* Set the `<Dial><Queue>` `url` attribute to a valid relative or absolute URL.\n* If you use an absolute `url`, include `http://` or `https://`, a hostname, a file path, and properly URL-encoded query parameters.\n* Make sure Twilio can reach the endpoint over the public Internet and retrieve it reliably before the queued call is bridged.\n* Return a valid TwiML document for the queued caller. Use only `Play`, `Say`, `Pause`, and `Redirect` in the document requested by the `url`.",
    "description": "Twilio returns this error when the `url` attribute on `<Dial><Queue>` is not a valid relative or absolute URL for the TwiML document that runs on the queued caller's leg before the calls connect.",
    "date_created": "2016-03-31T17:14:11Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14212,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Queue: queue name too short",
    "secondary_message": "The name of the queue must be at least 1 character long.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe name of the queue must be at least 1 character long.\n",
    "causes": null,
    "solutions": null,
    "description": "The name of the queue must be at least 1 character long.",
    "date_created": "2016-03-31T17:14:12Z",
    "last_updated": "2020-08-04T10:00:26.172Z"
  },
  {
    "code": 14213,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Queue: queue name too long",
    "secondary_message": "The name of the queue must be shorter than 64 characters.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe name of the queue must be shorter than 64 characters.\n",
    "causes": null,
    "solutions": null,
    "description": "The name of the queue must be shorter than 64 characters.",
    "date_created": "2016-03-31T17:14:12Z",
    "last_updated": "2020-08-04T10:00:26.148Z"
  },
  {
    "code": 14215,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Queue: Invalid ReservationSid. Unable to dequeue",
    "secondary_message": "Provided ReservationSid is invalid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when `<Dial><Queue>` receives a `reservationSid` that Twilio cannot use to bridge a worker to the queued caller. Use `reservationSid` only for calls that were enqueued with a TaskRouter `WorkflowSid`. When the dequeue succeeds, Twilio bridges the worker to the queued caller and marks the pending Reservation as accepted.\n\n### Possible causes\n\n- The `reservationSid` value does not match a valid Reservation resource for the Task or Worker you are trying to dequeue. Twilio Reservation SIDs use the `WR` prefix.\n- The Reservation was already accepted through the TaskRouter REST API or through an assignment instruction, so `<Dial><Queue>` cannot accept it again.\n- The Reservation is no longer pending because it timed out, was canceled, was rejected, or was rescinded. Twilio can only bridge a pending Reservation with `<Queue reservationSid=\"...\">`.\n- The original call was not enqueued with a TaskRouter `WorkflowSid`, which is required before you use `reservationSid` on `<Queue>`.\n\n### Possible solutions\n\n- Read the `ReservationSid` from the TaskRouter assignment callback or retrieve the Reservation resource for the Task, then pass that exact `ReservationSid` value in `<Queue reservationSid=\"...\">`.\n- Let either `<Dial><Queue>` or your TaskRouter API flow accept the Reservation. Do not accept the same Reservation in both places.\n- If the Reservation has timed out, return the Worker to an available Activity state and create another Task. If your application needs more time before bridging the call, increase the Workflow `TaskReservationTimeout`.\n- Verify that you first queued the caller with a TaskRouter `WorkflowSid`, then bridge the worker with `<Dial><Queue reservationSid=\"...\">` only while the Reservation is still pending.\n\n#### Additional resources\n\n- [Queueing calls with TaskRouter](/docs/taskrouter/twiml-queue-calls)\n- [TwiML Voice: `<Queue>`](/docs/voice/twiml/queue)\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n",
    "causes": "* The `reservationSid` value does not match a valid Reservation resource for the Task or Worker you are trying to dequeue. Twilio Reservation SIDs use the `WR` prefix.\n* The Reservation was already accepted through the TaskRouter REST API or through an assignment instruction, so `<Dial><Queue>` cannot accept it again.\n* The Reservation is no longer pending because it timed out, was canceled, was rejected, or was rescinded. Twilio can only bridge a pending Reservation with `<Queue reservationSid=\"...\">`.\n* The original call was not enqueued with a TaskRouter `WorkflowSid`, which is required before you use `reservationSid` on `<Queue>`.",
    "solutions": "* Read the `ReservationSid` from the TaskRouter assignment callback or retrieve the Reservation resource for the Task, then pass that exact `ReservationSid` value in `<Queue reservationSid=\"...\">`.\n* Let either `<Dial><Queue>` or your TaskRouter API flow accept the Reservation. Do not accept the same Reservation in both places.\n* If the Reservation has timed out, return the Worker to an available Activity state and create another Task. If your application needs more time before bridging the call, increase the Workflow `TaskReservationTimeout`.\n* Verify that you first queued the caller with a TaskRouter `WorkflowSid`, then bridge the worker with `<Dial><Queue reservationSid=\"...\">` only while the Reservation is still pending.",
    "description": "This error occurs when `<Dial><Queue>` receives a `reservationSid` that Twilio cannot use to bridge a worker to the queued caller. Use `reservationSid` only for calls that were enqueued with a TaskRouter `WorkflowSid`. When the dequeue succeeds, Twilio bridges the worker to the queued caller and marks the pending Reservation as accepted.",
    "date_created": "2016-03-31T17:14:12Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14217,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Queue: Could not find or accept provided reservationSid",
    "secondary_message": "Provided ReservationSid could not be found or has been canceled / rescinded.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nProvided ReservationSid could not be found or has been canceled / rescinded.\n",
    "causes": null,
    "solutions": null,
    "description": "Provided ReservationSid could not be found or has been canceled / rescinded.",
    "date_created": "2017-11-06T21:16:58Z",
    "last_updated": "2020-08-04T10:00:16.347Z"
  },
  {
    "code": 14218,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dial->Queue: Could not update worker to provided activity",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYou see this error when `<Dial><Queue>` cannot find or accept the `reservationSid` provided for a TaskRouter call bridge. When you bridge a call with `reservationSid`, Twilio marks the pending Reservation as accepted; if the Reservation is invalid or has already been accepted, the dequeue attempt fails.\n\n### Possible causes\n\n- The `reservationSid` is not valid for the pending Reservation that `<Dial><Queue>` is trying to bridge.\n- The Reservation was already accepted through the TaskRouter REST API or an assignment instruction before the bridge happened.\n- The linked Task state was modified before TwiML could manage the reservation lifecycle.\n\n### Possible solutions\n\n- Pass a valid pending Reservation SID in `reservationSid` when you bridge the call with `<Dial><Queue>`.\n- Accept the Reservation only through the `<Dial><Queue>` flow, and avoid accepting it earlier in your application or in TaskRouter.\n- If you execute additional logic before bridging the call, keep the Reservation pending until the bridge occurs and set a long enough Reservation Timeout for the workflow.\n\n#### Additional resources\n\n- [TwiML Voice: `<Queue>`](/docs/voice/twiml/queue)\n- [Queueing Twilio calls with TaskRouter](/docs/taskrouter/twiml-queue-calls)\n- [Error and Warning Dictionary](/docs/api/errors)\n",
    "causes": "* The `reservationSid` is not valid for the pending Reservation that `<Dial><Queue>` is trying to bridge.\n* The Reservation was already accepted through the TaskRouter REST API or an assignment instruction before the bridge happened.\n* The linked Task state was modified before TwiML could manage the reservation lifecycle.",
    "solutions": "* Pass a valid pending Reservation SID in `reservationSid` when you bridge the call with `<Dial><Queue>`.\n* Accept the Reservation only through the `<Dial><Queue>` flow, and avoid accepting it earlier in your application or in TaskRouter.\n* If you execute additional logic before bridging the call, keep the Reservation pending until the bridge occurs and set a long enough Reservation Timeout for the workflow.",
    "description": "You see this error when `<Dial><Queue>` cannot find or accept the `reservationSid` provided for a TaskRouter call bridge. When you bridge a call with `reservationSid`, Twilio marks the pending Reservation as accepted; if the Reservation is invalid or has already been accepted, the dequeue attempt fails.",
    "date_created": "2020-03-10T23:58:24Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 14219,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TaskRouter Dial Queue not supported in this realm",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTaskRouter Dial Queue not supported in this realm\n\n### Possible causes\n\nTaskRouter Dial Queue not supported in this realm\n\n### Possible solutions\n\nUse TaskRouter Dial Queue in supported realm\n",
    "causes": "TaskRouter Dial Queue not supported in this realm",
    "solutions": "Use TaskRouter Dial Queue in supported realm",
    "description": "TaskRouter Dial Queue not supported in this realm",
    "date_created": "2020-08-13T16:28:41Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 14220,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Provided Workflow was not a valid sid",
    "secondary_message": "Provided workflow sid was not valid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when `<Enqueue>` receives a `workflowSid` value that is not a valid TaskRouter Workflow SID. When you use `workflowSid`, Twilio creates a TaskRouter Task for the call and routes it with the specified Workflow. Workflow resources use SIDs that start with `WW`.\n\n### Possible causes\n\n- The `workflowSid` value does not match the format for a TaskRouter Workflow SID. Workflow SIDs start with `WW` and are 34 characters long.\n- The value passed in `workflowSid` is not the SID of a Workflow resource. This usually means a placeholder value, a friendly name, or a different SID type was passed instead of a Workflow SID.\n- You intended to enqueue the call into a standard Voice queue, but used `workflowSid` instead of a queue name inside `<Enqueue>`.\n\n### Possible solutions\n\n- Update `<Enqueue>` to pass a valid Workflow SID in `workflowSid`. Use the `WW...` SID for the Workflow that should route the call.\n- Verify that the Workflow exists before generating TwiML. Retrieve the Workflow from TaskRouter or copy the SID from the Workflow resource so the value you send is a valid Workflow SID.\n- If you want to place the call into a standard Voice queue instead of TaskRouter routing, remove `workflowSid` and put the queue name between the opening and closing `<Enqueue>` tags.\n\n#### Additional resources\n\n- [TwiML `<Enqueue>`](/docs/voice/twiml/enqueue)\n- [Queueing Twilio calls with TaskRouter](/docs/taskrouter/twiml-queue-calls)\n- [Workflow Resource](/docs/taskrouter/api/workflow)\n",
    "causes": "* The `workflowSid` value does not match the format for a TaskRouter Workflow SID. Workflow SIDs start with `WW` and are 34 characters long.\n* The value passed in `workflowSid` is not the SID of a Workflow resource. This usually means a placeholder value, a friendly name, or a different SID type was passed instead of a Workflow SID.\n* You intended to enqueue the call into a standard Voice queue, but used `workflowSid` instead of a queue name inside `<Enqueue>`.",
    "solutions": "* Update `<Enqueue>` to pass a valid Workflow SID in `workflowSid`. Use the `WW...` SID for the Workflow that should route the call.\n* Verify that the Workflow exists before generating TwiML. Retrieve the Workflow from TaskRouter or copy the SID from the Workflow resource so the value you send is a valid Workflow SID.\n* If you want to place the call into a standard Voice queue instead of TaskRouter routing, remove `workflowSid` and put the queue name between the opening and closing `<Enqueue>` tags.",
    "description": "This error occurs when `<Enqueue>` receives a `workflowSid` value that is not a valid TaskRouter Workflow SID. When you use `workflowSid`, Twilio creates a TaskRouter Task for the call and routes it with the specified Workflow. Workflow resources use SIDs that start with `WW`.",
    "date_created": "2016-03-31T17:14:13Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14221,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Provided Attributes JSON was not valid",
    "secondary_message": "Provided Attributes is not valid JSON.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou receive this error when `<Enqueue>` includes a `<Task>` noun whose body is not a valid JSON object. When you use `workflowSid` with `<Enqueue>`, Twilio creates a new TaskRouter Task for the call, and the `<Task>` noun sets the attributes for that Task.\n\n### Possible causes\n\n- The `<Task>` noun body contains JSON that Twilio cannot parse as a valid object.\n- Your application generated malformed task attributes before returning the TwiML response for `<Enqueue>`. Twilio expects those attributes to be formatted as JSON.\n- Custom task attributes were added to a TaskRouter enqueue flow, but the value sent in `<Task>` was not valid JSON.\n\n### Possible solutions\n\n- Update the `<Task>` noun body so it contains a valid JSON object before Twilio executes the `<Enqueue>` verb.\n- If you generate TwiML in code, build the attributes as an object and serialize them with `JSON.stringify` instead of hand-writing the JSON string.\n- If you do not need custom task attributes, omit `<Task>`. Twilio will still create the Task with the call's standard parameters as attributes when you enqueue with `workflowSid`.\n\n#### Additional resources\n\n- [TwiML `<Enqueue>`](/docs/voice/twiml/enqueue)\n- [Queueing calls with TaskRouter](/docs/taskrouter/twiml-queue-calls)\n- [Task Resource](/docs/taskrouter/api/task)\n",
    "causes": "* The `<Task>` noun body contains JSON that Twilio cannot parse as a valid object.\n* Your application generated malformed task attributes before returning the TwiML response for `<Enqueue>`. Twilio expects those attributes to be formatted as JSON.\n* Custom task attributes were added to a TaskRouter enqueue flow, but the value sent in `<Task>` was not valid JSON.",
    "solutions": "* Update the `<Task>` noun body so it contains a valid JSON object before Twilio executes the `<Enqueue>` verb.\n* If you generate TwiML in code, build the attributes as an object and serialize them with `JSON.stringify` instead of hand-writing the JSON string.\n* If you do not need custom task attributes, omit `<Task>`. Twilio will still create the Task with the call's standard parameters as attributes when you enqueue with `workflowSid`.",
    "description": "You receive this error when `<Enqueue>` includes a `<Task>` noun whose body is not a valid JSON object. When you use `workflowSid` with `<Enqueue>`, Twilio creates a new TaskRouter Task for the call, and the `<Task>` noun sets the attributes for that Task.",
    "date_created": "2016-03-31T17:14:13Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14222,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Could not create Task",
    "secondary_message": "The Task attributes could not be matched a Workflow.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nCould not match the task to a target given the defined attributes.\n",
    "causes": null,
    "solutions": null,
    "description": "Could not match the task to a target given the defined attributes.",
    "date_created": "2017-12-15T21:31:29Z",
    "last_updated": "2020-08-04T10:00:15.479Z"
  },
  {
    "code": 14223,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Enqueue: Unable to cleanup task",
    "secondary_message": "Unable to cancel the task created by Enqueue upon a TwimL error or task hangup.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUnable to cancel the task created by Enqueue upon a TwimL error or task hangup.\n",
    "causes": null,
    "solutions": null,
    "description": "Unable to cancel the task created by Enqueue upon a TwimL error or task hangup.",
    "date_created": "2016-03-31T17:14:13Z",
    "last_updated": "2020-08-04T10:00:26.057Z"
  },
  {
    "code": 14226,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TaskRouter Enqueue not supported in this realm",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you use `<Enqueue>` with the `workflowSid` attribute to create a TaskRouter Task for a call in a realm or Region where that integration is not available. Twilio Regions operate in isolation, so products and features that are unavailable in the target Region do not work there.\n\n### Possible causes\n\n- Your TwiML response includes `<Enqueue>` with `workflowSid`, which invokes TaskRouter routing for the call.\n- The call is being handled in a Twilio realm or Region where TaskRouter enqueue is not supported.\n- Your application, SDK, or resource configuration is targeting a different Region than the one where the workflow was designed to run. Regional resources and feature availability can differ by Region.\n\n### Possible solutions\n\n- Run this call flow in a realm or Region that supports the required Voice and TaskRouter features. Verify regional availability before you deploy.\n- If you must stay in the current Region, remove `workflowSid` and use standard Voice queueing with `<Enqueue>` or another supported routing pattern instead of TaskRouter enqueue.\n- Review the Region and endpoint configuration used by your application and regional resources so the call is executed in the intended Region.\n\n#### Additional resources\n- [TwiML Voice: `<Enqueue>`](/docs/voice/twiml/enqueue)\n- [Queueing Twilio calls with TaskRouter](/docs/taskrouter/twiml-queue-calls)\n- [Regional product availability](/docs/global-infrastructure/regional-product-and-feature-availability)\n",
    "causes": "* Your TwiML response includes `<Enqueue>` with `workflowSid`, which invokes TaskRouter routing for the call.\n* The call is being handled in a Twilio realm or Region where TaskRouter enqueue is not supported.\n* Your application, SDK, or resource configuration is targeting a different Region than the one where the workflow was designed to run. Regional resources and feature availability can differ by Region.",
    "solutions": "* Run this call flow in a realm or Region that supports the required Voice and TaskRouter features. Verify regional availability before you deploy.\n* If you must stay in the current Region, remove `workflowSid` and use standard Voice queueing with `<Enqueue>` or another supported routing pattern instead of TaskRouter enqueue.\n* Review the Region and endpoint configuration used by your application and regional resources so the call is executed in the intended Region.",
    "description": "This error occurs when you use `<Enqueue>` with the `workflowSid` attribute to create a TaskRouter Task for a call in a realm or Region where that integration is not available. Twilio Regions operate in isolation, so products and features that are unavailable in the target Region do not work there.",
    "date_created": "2020-08-13T16:27:25Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 14230,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Invalid WorkflowSid",
    "secondary_message": "Provided workflow sid was not valid.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when a TaskRouter-based voice flow tries to use a `workflowSid`, but the value is not a valid TaskRouter Workflow SID. A Workflow SID identifies the Workflow that routes Tasks in a Workspace, and valid Workflow SIDs use the `WW` prefix.\n\n### Possible causes\n\n- The `workflowSid` value is malformed or incomplete.\n- The value does not reference a Workflow SID with the expected `WW` prefix.\n- The Workflow SID does not exist in the TaskRouter Workspace handling the call.\n- The Workflow was deleted or changed, but your application is still sending the old SID.\n- Your application is passing a different resource SID, such as a Workspace SID or TaskQueue SID, instead of a Workflow SID.\n- A configuration or environment variable points to the wrong account, Workspace, or deployment environment.\n\n### Possible solutions\n\n- Verify that the `workflowSid` value is the exact SID of an existing TaskRouter Workflow.\n- Confirm that the Workflow belongs to the Workspace your application is using for this call flow.\n- Review your application configuration, environment variables, and templates for typos or outdated SID values.\n- Make sure you are passing a Workflow SID that starts with `WW`.\n- If the Workflow no longer exists, create or select the correct Workflow and update your application to use that SID.\n- Test by fetching the Workflow from the TaskRouter API for the expected Workspace before using it in your routing flow.\n\n#### Additional resources\n\n- [Workflow Resource](/docs/taskrouter/api/workflow)\n- [Queueing Twilio calls with TaskRouter](/docs/taskrouter/twiml-queue-calls)\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n",
    "causes": "* The `workflowSid` value is malformed or incomplete.\n* The value does not reference a Workflow SID with the expected `WW` prefix.\n* The Workflow SID does not exist in the TaskRouter Workspace handling the call.\n* The Workflow was deleted or changed, but your application is still sending the old SID.\n* Your application is passing a different resource SID, such as a Workspace SID or TaskQueue SID, instead of a Workflow SID.\n* A configuration or environment variable points to the wrong account, Workspace, or deployment environment.",
    "solutions": "* Verify that the `workflowSid` value is the exact SID of an existing TaskRouter Workflow.\n* Confirm that the Workflow belongs to the Workspace your application is using for this call flow.\n* Review your application configuration, environment variables, and templates for typos or outdated SID values.\n* Make sure you are passing a Workflow SID that starts with `WW`.\n* If the Workflow no longer exists, create or select the correct Workflow and update your application to use that SID.\n* Test by fetching the Workflow from the TaskRouter API for the expected Workspace before using it in your routing flow.",
    "description": "This error occurs when a TaskRouter-based voice flow tries to use a `workflowSid`, but the value is not a valid TaskRouter Workflow SID. A Workflow SID identifies the Workflow that routes Tasks in a Workspace, and valid Workflow SIDs use the `WW` prefix.",
    "date_created": "2016-04-27T19:44:58Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14231,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Provided Attributes was not valid JSON ",
    "secondary_message": "Provided attributes is not valid JSON",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `Attributes` value provided for a TaskRouter-integrated `<Dial><Conference>` flow is not valid JSON. TaskRouter task attributes must be expressed as JSON, and TaskRouter uses task attributes when routing work and handling `conference` instructions for voice tasks.\n\n### Possible causes\n\n- The `Attributes` value is not valid JSON.\n- The task attribute payload is malformed instead of being sent as a JSON string. TaskRouter task attributes must be expressed in JSON.\n- The JSON was escaped or double-serialized before Twilio received it.\n\n### Possible solutions\n\n- Update the `Attributes` payload so it is valid JSON before you send the request or return the TwiML.\n- If you create or update the related Task directly, send `attributes` as a JSON string. For example, `{ \"task_type\": \"call\", \"twilio_call_sid\": \"CAxxx\" }`.\n- If you use TaskRouter `conference` instruction for a voice task, include the minimum task attributes `{\"call_sid\":\"<callsid>\",\"to\":\"<E.164 to number>\"}` and keep the full payload valid JSON.\n- If your application serializes the payload before sending it, make sure the JSON is not escaped.\n\n#### Additional resources\n\n- [Task Resource](/docs/taskrouter/api/task)\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n- [TwiML `<Dial>`](/docs/voice/twiml/dial)\n",
    "causes": "* The `Attributes` value is not valid JSON.\n* The task attribute payload is malformed instead of being sent as a JSON string. TaskRouter task attributes must be expressed in JSON.\n* The JSON was escaped or double-serialized before Twilio received it.",
    "solutions": "* Update the `Attributes` payload so it is valid JSON before you send the request or return the TwiML.\n* If you create or update the related Task directly, send `attributes` as a JSON string. For example, `{ \"task_type\": \"call\", \"twilio_call_sid\": \"CAxxx\" }`.\n* If you use TaskRouter `conference` instruction for a voice task, include the minimum task attributes `{\"call_sid\":\"<callsid>\",\"to\":\"<E.164 to number>\"}` and keep the full payload valid JSON.\n* If your application serializes the payload before sending it, make sure the JSON is not escaped.",
    "description": "This error occurs when the `Attributes` value provided for a TaskRouter-integrated `<Dial><Conference>` flow is not valid JSON. TaskRouter task attributes must be expressed as JSON, and TaskRouter uses task attributes when routing work and handling `conference` instructions for voice tasks.",
    "date_created": "2016-04-27T19:45:43Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14232,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Invalid Priority",
    "secondary_message": "Provided priority is not a valid integer",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when you provide a `priority` value for a TaskRouter conference flow and that value is not a valid integer. When you attach `priority` and `timeout` to a Task, both values must be valid integers. TaskRouter uses priority to determine task assignment order, so Twilio rejects values that cannot be parsed as an integer.\n\n### Possible causes\n\n- The `priority` value contains letters, spaces, punctuation, or other non-numeric characters.\n- The `priority` value is a decimal, boolean, empty string, or `null` instead of a whole number.\n- Your application generates TwiML or a TaskRouter request dynamically and inserts an invalid `priority` value into the final payload.\n- A variable or template substitution step converts an expected integer into a non-integer string before the Task is created.\n\n### Possible solutions\n\n- Set `priority` to a whole-number integer such as `5`.\n- Validate and normalize any dynamic input before sending it as `priority`.\n- Inspect the final TwiML or TaskRouter request payload and confirm `priority` contains only a valid integer value.\n- If you do not need custom task prioritization, remove the invalid value and use the default Task priority.\n\n#### Additional resources\n\n- [Queueing Twilio calls with TaskRouter](/docs/taskrouter/twiml-queue-calls)\n- [Task Resource](/docs/taskrouter/api/task)\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n",
    "causes": "* The `priority` value contains letters, spaces, punctuation, or other non-numeric characters.\n* The `priority` value is a decimal, boolean, empty string, or `null` instead of a whole number.\n* Your application generates TwiML or a TaskRouter request dynamically and inserts an invalid `priority` value into the final payload.\n* A variable or template substitution step converts an expected integer into a non-integer string before the Task is created.",
    "solutions": "* Set `priority` to a whole-number integer such as `5`.\n* Validate and normalize any dynamic input before sending it as `priority`.\n* Inspect the final TwiML or TaskRouter request payload and confirm `priority` contains only a valid integer value.\n* If you do not need custom task prioritization, remove the invalid value and use the default Task priority.",
    "description": "This error occurs when you provide a `priority` value for a TaskRouter conference flow and that value is not a valid integer. When you attach `priority` and `timeout` to a Task, both values must be valid integers. TaskRouter uses priority to determine task assignment order, so Twilio rejects values that cannot be parsed as an integer.",
    "date_created": "2016-04-27T19:46:04Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14233,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Invalid Timeout",
    "secondary_message": "Provided timeout is not a valid integer",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a Conference instruction for a TaskRouter reservation and the Timeout value is not a valid integer. For a Conference instruction, Timeout controls how long Twilio rings the phone associated with the Worker's `contact_uri` before assuming there is no answer. The default is 60 seconds and the maximum is 999 seconds.\n\n### Possible causes\n\n- Your application sent Timeout as a non-integer value, such as text, a decimal, or an empty value, instead of an integer number of seconds.\n- Your application sent a Timeout value greater than 999 seconds for the Conference instruction.\n- If you use the TaskRouter JavaScript SDK, your `reservation.conference()` call passed a `timeout` value that does not represent integer seconds.\n\n### Possible solutions\n\n- Send Timeout as an integer number of seconds, for example 30.\n- Keep Timeout at 999 seconds or less. If you do not need a custom value, omit Timeout and use the default of 60 seconds.\n- Validate and sanitize the Timeout value in your application before you send the Conference instruction or call `reservation.conference()`. Reject blank, non-numeric, and decimal values before making the request. This follows from the requirement that Timeout be an integer.\n\n#### Additional resources\n\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n- [TaskRouter JavaScript SDK: reservation.conference](/docs/taskrouter/js-sdk-v1/workspace/worker#reservation-conference)\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n",
    "causes": "* Your application sent Timeout as a non-integer value, such as text, a decimal, or an empty value, instead of an integer number of seconds.\n* Your application sent a Timeout value greater than 999 seconds for the Conference instruction.\n* If you use the TaskRouter JavaScript SDK, your `reservation.conference()` call passed a `timeout` value that does not represent integer seconds.",
    "solutions": "* Send Timeout as an integer number of seconds, for example 30.\n* Keep Timeout at 999 seconds or less. If you do not need a custom value, omit Timeout and use the default of 60 seconds.\n* Validate and sanitize the Timeout value in your application before you send the Conference instruction or call `reservation.conference()`. Reject blank, non-numeric, and decimal values before making the request. This follows from the requirement that Timeout be an integer.",
    "description": "This error occurs when you send a Conference instruction for a TaskRouter reservation and the Timeout value is not a valid integer. For a Conference instruction, Timeout controls how long Twilio rings the phone associated with the Worker's `contact_uri` before assuming there is no answer. The default is 60 seconds and the maximum is 999 seconds.",
    "date_created": "2016-04-27T19:46:24Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14234,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Unable to create task",
    "secondary_message": "Unable to create the task created by Conference",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nUnable to create the Task specified under Conference upon a TwiML error.\n",
    "causes": null,
    "solutions": null,
    "description": "Unable to create the Task specified under Conference upon a TwiML error.",
    "date_created": "2016-04-27T19:46:44Z",
    "last_updated": "2020-08-04T10:00:21.792Z"
  },
  {
    "code": 14235,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Unable to cleanup task",
    "secondary_message": "Unable to cancel the task created by Conference upon a TwiML error or task hangup.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nUnable to cancel the Task created by Conference upon a TwiML error or task hangup.\n",
    "causes": null,
    "solutions": null,
    "description": "Unable to cancel the Task created by Conference upon a TwiML error or task hangup.",
    "date_created": "2016-04-27T19:47:14Z",
    "last_updated": "2020-08-04T10:00:21.775Z"
  },
  {
    "code": 14236,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Invalid ReservationSid",
    "secondary_message": "Provided ReservationSid on Conference is invalid",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThe provided ReservationSid on the Conference TwiML was invalid.\n",
    "causes": null,
    "solutions": null,
    "description": "The provided ReservationSid on the Conference TwiML was invalid.",
    "date_created": "2016-04-27T19:47:38Z",
    "last_updated": "2020-08-04T10:00:21.759Z"
  },
  {
    "code": 14237,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Invalid PostWorkActivitySid",
    "secondary_message": "Provided PostWorkActivitySid on Conference is invalid",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThe provided PostWorkActivitySid on the Conference TwiML was an invalid ActivitySid.\n",
    "causes": null,
    "solutions": null,
    "description": "The provided PostWorkActivitySid on the Conference TwiML was an invalid ActivitySid.",
    "date_created": "2016-04-27T19:48:00Z",
    "last_updated": "2020-08-04T10:00:21.742Z"
  },
  {
    "code": 14238,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Unable to accept Reservation",
    "secondary_message": "Unable to accept the Reservation",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nUnable to accept or find the provided Reservation.\n",
    "causes": null,
    "solutions": null,
    "description": "Unable to accept or find the provided Reservation.",
    "date_created": "2016-04-27T19:48:23Z",
    "last_updated": "2020-08-04T10:00:21.72Z"
  },
  {
    "code": 14239,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dial->Conference: Unable to update Worker",
    "secondary_message": "Unable to update Worker to provided PostWorkActivitySid",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nUnable to update the Worker to the provided ActivitySid.\n",
    "causes": null,
    "solutions": null,
    "description": "Unable to update the Worker to the provided ActivitySid.",
    "date_created": "2016-04-27T19:48:45Z",
    "last_updated": "2020-08-04T10:00:21.699Z"
  },
  {
    "code": 14240,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Max concurrent Workers exceeded",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nYou receive this error when your TaskRouter Workspace has reached the limit for concurrent active Workers. TaskRouter uses a Worker's Activity to determine whether the Worker is eligible to receive Tasks. Activities whose `available` value is `true` make the Worker eligible for task assignment.\n\n### Possible causes\n\n- Your Workspace already has the maximum number of active Workers.\n- Too many Workers are currently in an Activity whose `available` value is `true`.\n- You created a Worker with an `ActivitySid` that points to an available Activity.\n- You updated Workers into an available Activity and did not move them back to an unavailable Activity when they were no longer ready to receive Tasks.\n- In a multitasking Workspace, Worker state does not automatically change when a Task is assigned or accepted, so Workers can remain active until your application updates them.\n\n### Possible solutions\n\n- Move Workers who should not receive new Tasks to an unavailable Activity such as `Offline` or `Unavailable`.\n- Review your Workers and identify which ones are still active by listing Workers with filters such as `Available=true`, `ActivitySid`, or `ActivityName`.\n- When you create a Worker, set `ActivitySid` to an unavailable Activity if the Worker should not become active immediately.\n- If you do not pass `ActivitySid` when creating a Worker, use the Workspace `default_activity_sid`. By default, new Workers start in `Offline` unless you changed that setting.\n- In a multitasking Workspace, explicitly update Worker Activities when your agents should stop receiving new Tasks.\n- If you move a Worker to an unavailable Activity and the Worker still has pending reservations, use `rejectPendingReservations` when you update the Worker.\n\n#### Additional resources\n\n- [Worker Resource](/docs/taskrouter/api/worker)\n- [Activity Resource](/docs/taskrouter/api/activity)\n- [How TaskRouter Works](/docs/taskrouter/how-taskrouter-works)\n",
    "causes": "* Your Workspace already has the maximum number of active Workers.\n* Too many Workers are currently in an Activity whose `available` value is `true`.\n* You created a Worker with an `ActivitySid` that points to an available Activity.\n* You updated Workers into an available Activity and did not move them back to an unavailable Activity when they were no longer ready to receive Tasks.\n* In a multitasking Workspace, Worker state does not automatically change when a Task is assigned or accepted, so Workers can remain active until your application updates them.",
    "solutions": "* Move Workers who should not receive new Tasks to an unavailable Activity such as `Offline` or `Unavailable`.\n* Review your Workers and identify which ones are still active by listing Workers with filters such as `Available=true`, `ActivitySid`, or `ActivityName`.\n* When you create a Worker, set `ActivitySid` to an unavailable Activity if the Worker should not become active immediately.\n* If you do not pass `ActivitySid` when creating a Worker, use the Workspace `default_activity_sid`. By default, new Workers start in `Offline` unless you changed that setting.\n* In a multitasking Workspace, explicitly update Worker Activities when your agents should stop receiving new Tasks.\n* If you move a Worker to an unavailable Activity and the Worker still has pending reservations, use `rejectPendingReservations` when you update the Worker.",
    "description": "You receive this error when your TaskRouter Workspace has reached the limit for concurrent active Workers. TaskRouter uses a Worker's Activity to determine whether the Worker is eligible to receive Tasks. Activities whose `available` value is `true` make the Worker eligible for task assignment.",
    "date_created": "2020-04-29T17:04:39Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 14241,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "start_date passed to TaskRouter statistics is older than 30 days.",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nStarting Nov. 30, 2021 we will no longer return data older than 30 days, and instead return a 400-response for requests with `<start_date>` older than 30 days.\n\n### Possible causes\n\n`<start_date>` is older than 30 days.\n\n### Possible solutions\n\nPass a `<start_date>` that is within 30 days.\n",
    "causes": "`<start_date>` is older than 30 days.",
    "solutions": "Pass a `<start_date>` that is within 30 days.",
    "description": "Starting Nov. 30, 2021 we will no longer return data older than 30 days, and instead return a 400-response for requests with `<start_date>` older than 30 days.",
    "date_created": "2021-08-26T16:59:09Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 14300,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Start: Invalid nested noun value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when `<Start>` or `<Stop>` contains a nested noun that does not match the verb's supported TwiML structure. For Voice call recording and real-time transcription, use `<Start><Recording>` or `<Start><Transcription>`, and stop them with matching `<Stop>` instructions when you need to reference them by `name`.\n\n### Possible causes\n\n- You nested a noun under `<Start>` or `<Stop>` that the verb does not support. For Voice, `<Start>` is used with `<Recording>` or `<Transcription>`, and `<Stop>` is used with the matching noun.\n- You used `<Stop>` to end a recording or transcription that was never started with a `name`, so Twilio cannot match the stop request to the active session.\n- The TwiML is malformed or the noun is not nested directly inside the verb you intended to use. TwiML is an XML instruction set, and nouns must be nested inside the correct verb.\n\n### Possible solutions\n\n- Replace the invalid nested noun with a supported Voice noun. Use `<Start><Recording>` to begin call recording, or `<Start><Transcription>` to start real-time transcription.\n- If you need to stop a recording later, give the recording a unique `name` and stop it with `<Stop><Recording name=\"...\"/>`.\n- If you need to stop a real-time transcription later, provide a `name` and stop it with `<Stop><Transcription name=\"...\"/>`, or stop it through the Transcriptions subresource API.\n- Validate the returned TwiML before you send it to Twilio so every noun is nested under the correct verb.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice: Recording](/docs/voice/twiml/recording)\n- [TwiML Voice: Transcription](/docs/voice/twiml/transcription)\n",
    "causes": "* You nested a noun under `<Start>` or `<Stop>` that the verb does not support. For Voice, `<Start>` is used with `<Recording>` or `<Transcription>`, and `<Stop>` is used with the matching noun.\n* You used `<Stop>` to end a recording or transcription that was never started with a `name`, so Twilio cannot match the stop request to the active session.\n* The TwiML is malformed or the noun is not nested directly inside the verb you intended to use. TwiML is an XML instruction set, and nouns must be nested inside the correct verb.",
    "solutions": "* Replace the invalid nested noun with a supported Voice noun. Use `<Start><Recording>` to begin call recording, or `<Start><Transcription>` to start real-time transcription.\n* If you need to stop a recording later, give the recording a unique `name` and stop it with `<Stop><Recording name=\"...\"/>`.\n* If you need to stop a real-time transcription later, provide a `name` and stop it with `<Stop><Transcription name=\"...\"/>`, or stop it through the Transcriptions subresource API.\n* Validate the returned TwiML before you send it to Twilio so every noun is nested under the correct verb.",
    "description": "Twilio returns this error when `<Start>` or `<Stop>` contains a nested noun that does not match the verb's supported TwiML structure. For Voice call recording and real-time transcription, use `<Start><Recording>` or `<Start><Transcription>`, and stop them with matching `<Stop>` instructions when you need to reference them by `name`.",
    "date_created": "2020-03-11T00:02:52Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 15000,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Call Progress: Internal Twilio Error",
    "secondary_message": "An internal error has occurred that prevented Twilio from processing your Call Progress Event.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn internal error has occurred that prevented Twilio from processing your Call Progress Event.\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and what you were trying to do when it occurred!\n",
    "causes": null,
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and what you were trying to do when it occurred!",
    "description": "An internal error has occurred that prevented Twilio from processing your Call Progress Event.",
    "date_created": "2016-03-31T17:14:13Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 15002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Call Progress: Queue Timeout",
    "secondary_message": "A callback request timed out in the callback queue.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA callback request timed out in the callback queue.\n\n### Possible causes\n\n- Your application is not responding to Call Progress Events in a timely manner leading to queued callbacks expiring before they are sent.\n- There was a network disruption between Twilio and your web server.\n\n### Possible solutions\n\n- Please ensure your application is responding to callbacks in a timely manner.\n",
    "causes": "* Your application is not responding to Call Progress Events in a timely manner leading to queued callbacks expiring before they are sent.\n* There was a network disruption between Twilio and your web server.",
    "solutions": "* Please ensure your application is responding to callbacks in a timely manner.",
    "description": "A callback request timed out in the callback queue.",
    "date_created": "2016-03-31T17:14:14Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 15003,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Call Progress: Warning Response to Callback URL",
    "secondary_message": "Got an HTTP warning in response to the callback URL.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nGot an HTTP warning in response to the callback URL.\n\n### Possible causes\n\n- Your application returned a 4xx or 5xx HTTP response to Twilio.\n\n### Possible solutions\n\nEnsure your application responds to callbacks with:\n\n- `200 OK`\n- `Content-Type`: text/xml\n- Valid TwiML\n\nOr respond with 204 No Content and an empty response body.\n",
    "causes": "* Your application returned a 4xx or 5xx HTTP response to Twilio.",
    "solutions": "Ensure your application responds to callbacks with: - `200 OK`\n- `Content-Type`: text/xml\n- Valid TwiML Or respond with 204 No Content and an empty response body.",
    "description": "Got an HTTP warning in response to the callback URL.",
    "date_created": "2016-03-31T17:14:14Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 15004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Action Callback URL must be absolute when updating in-progress calls",
    "secondary_message": "Use absolute URLs when updating in-progress calls with TwiML",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nWhen you update an in-progress call with the `twiml` parameter, use an absolute URL for any `action` callback. This requirement applies to `<Gather>`, `<Record>`, and `<Pay>` when you create or update a call with inline TwiML.\n\n### Possible causes\n\n- You updated a live call with inline `twiml` and used a relative `action` URL such as `/process_gather.php`. `<Gather>` and `<Record>` can use relative URLs in other contexts, but when you start or update a call with the `twiml` parameter, the `action` URL must be absolute.\n- The TwiML sent in the `twiml` parameter includes `<Gather>`, `<Record>`, or `<Pay>` with an `action` that depends on the current document URL instead of a fully qualified callback URL. Twilio uses the `twiml` parameter directly instead of fetching TwiML from a `url`.\n- Your `<Pay>` verb uses an `action` URL that is not absolute or does not use `https`. `<Pay>` only accepts `https` for the `action` URL.\n\n### Possible solutions\n\n- Replace each relative `action` value with a fully qualified URL that includes the scheme and hostname, such as `https://example.com/voice/process-gather`.\n- Review the TwiML you send in the `twiml` parameter and update every `<Gather>`, `<Record>`, and `<Pay>` `action` to an absolute URL before you resend the call update.\n- If you use `<Pay>`, set the `action` to an absolute `https` URL.\n\n#### Additional resources\n\n- [Update a Call](/docs/voice/api/call-resource#update-a-call)\n- [TwiML `<Gather>`](/docs/voice/twiml/gather)\n- [TwiML `<Record>`](/docs/voice/twiml/record)\n",
    "causes": "* You updated a live call with inline `twiml` and used a relative `action` URL such as `/process_gather.php`. `<Gather>` and `<Record>` can use relative URLs in other contexts, but when you start or update a call with the `twiml` parameter, the `action` URL must be absolute.\n* The TwiML sent in the `twiml` parameter includes `<Gather>`, `<Record>`, or `<Pay>` with an `action` that depends on the current document URL instead of a fully qualified callback URL. Twilio uses the `twiml` parameter directly instead of fetching TwiML from a `url`.\n* Your `<Pay>` verb uses an `action` URL that is not absolute or does not use `https`. `<Pay>` only accepts `https` for the `action` URL.",
    "solutions": "* Replace each relative `action` value with a fully qualified URL that includes the scheme and hostname, such as `https://example.com/voice/process-gather`.\n* Review the TwiML you send in the `twiml` parameter and update every `<Gather>`, `<Record>`, and `<Pay>` `action` to an absolute URL before you resend the call update.\n* If you use `<Pay>`, set the `action` to an absolute `https` URL.",
    "description": "When you update an in-progress call with the `twiml` parameter, use an absolute URL for any `action` callback. This requirement applies to `<Gather>`, `<Record>`, and `<Pay>` when you create or update a call with inline TwiML.",
    "date_created": "2021-01-13T19:35:32Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 15009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Internal Server Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe requested resource failed to complete the request.\n\n### Possible causes\n\nThe requested resource failed to complete the request.\n\n### Possible solutions\n\nThe request should be retried using exponential backoff strategy until it succeeds.\n",
    "causes": "The requested resource failed to complete the request.",
    "solutions": "The request should be retried using exponential backoff strategy until it succeeds.",
    "description": "The requested resource failed to complete the request.",
    "date_created": "2020-09-29T19:34:40Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 16000,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Whisper Not Available on Twilio Conference",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to use `whisper` or coaching on a standard Voice Conference. Whispering is available only on Agent Conference, and Twilio Conference supports participant coaching in that mode.\n\n### Possible causes\n\n- You attempted to set up `whisper` on a conference that was created without Agent Conference enabled.\n- Your account is configured for standard Conference instead of Agent Conference, so the conference leg does not support agent whispering.\n\n### Possible solutions\n\n- Enable Agent Conference in the Twilio Console conference settings, then create the conference again with Agent Conference enabled.\n- Use the Agent Conference coaching flow when you need a supervisor to speak privately to one participant without others hearing the audio.\n\n#### Additional resources\n\n- [Voice Conference](/docs/voice/conference)\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n",
    "causes": "* You attempted to set up `whisper` on a conference that was created without Agent Conference enabled.\n* Your account is configured for standard Conference instead of Agent Conference, so the conference leg does not support agent whispering.",
    "solutions": "* Enable Agent Conference in the Twilio Console conference settings, then create the conference again with Agent Conference enabled.\n* Use the Agent Conference coaching flow when you need a supervisor to speak privately to one participant without others hearing the audio.",
    "description": "This error occurs when you try to use `whisper` or coaching on a standard Voice Conference. Whispering is available only on Agent Conference, and Twilio Conference supports participant coaching in that mode.",
    "date_created": "2017-02-24T00:20:34Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conference is not bridged",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe conference you tried to access is not currently active. Twilio creates a conference when the first participant connects, but the conference does not start until it is bridged. If you configure a moderator, the conference does not start until the moderator joins.\n\n### Possible causes\n\n- The conference has only one participant, so it has not bridged yet.\n- The conference is moderated, and the moderator has not joined yet.\n- The conference has already ended because all participants left, or the moderator left or was disconnected.\n\n### Possible solutions\n\n- Retry after the conference is active and bridged. Twilio starts the conference when the second participant joins, or when the moderator joins in a moderated conference.\n- If you use `startConferenceOnEnter=\"false\"`, make sure a participant with `startConferenceOnEnter=\"true\"` joins, or have the moderator join to begin the conference.\n- Use the Conference resource or `statusCallback` events to track conference state.\n- If the conference has completed, create a new conference and add participants there.\n\n#### Additional resources\n\n- [Voice Conference](/docs/voice/conference)\n- [Conferences resource](/docs/voice/api/conference-resource)\n",
    "causes": "* The conference has only one participant, so it has not bridged yet.\n* The conference is moderated, and the moderator has not joined yet.\n* The conference has already ended because all participants left, or the moderator left or was disconnected.",
    "solutions": "* Retry after the conference is active and bridged. Twilio starts the conference when the second participant joins, or when the moderator joins in a moderated conference.\n* If you use `startConferenceOnEnter=\"false\"`, make sure a participant with `startConferenceOnEnter=\"true\"` joins, or have the moderator join to begin the conference.\n* Use the Conference resource or `statusCallback` events to track conference state.\n* If the conference has completed, create a new conference and add participants there.",
    "description": "The conference you tried to access is not currently active. Twilio creates a conference when the first participant connects, but the conference does not start until it is bridged. If you configure a moderator, the conference does not start until the moderator joins.",
    "date_created": "2019-03-01T21:01:20Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to validate conference attributes",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio cannot validate one or more `<Conference>` attributes on a Voice conference. Check the attribute values, URL formats, and limits against the supported `<Conference>` options.\n\n### Possible causes\n\n- `statusCallbackEvent` includes a value outside `start`, `end`, `join`, `leave`, `mute`, `hold`, `modify`, `speaker`, or `announcement`.\n- `recordingStatusCallbackEvent` includes a value outside `in-progress`, `completed`, or `absent`.\n- One or more URL attributes, such as `waitUrl`, `statusCallback`, `recordingStatusCallback`, or `eventCallbackUrl`, is missing or is not a relative or absolute URL.\n- A method attribute uses a value other than `GET` or `POST`.\n- `maxParticipants` is greater than 250, `participantLabel` is longer than 128 characters or is not unique, or `coach` is not a Call SID for a call already connected to the conference.\n\n### Possible solutions\n\n- Update each `<Conference>` attribute to use only supported values and formats. Use boolean values where required, use the documented event names, and keep `maxParticipants` at 250 or below.\n- Provide valid relative or absolute URLs for `waitUrl`, `statusCallback`, `recordingStatusCallback`, and `eventCallbackUrl`, and use `GET` or `POST` for `waitMethod`, `statusCallbackMethod`, and `recordingStatusCallbackMethod`.\n- Keep `participantLabel` unique and within 128 characters. If you use `coach`, set it to a Call SID that is already active in the conference.\n- Prefer `recordingStatusCallback` over `eventCallbackUrl`, because `eventCallbackUrl` is deprecated and Twilio does not send `eventCallbackUrl` requests when `recordingStatusCallback` is provided.\n\n#### Additional resources\n\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [Voice Conference](/docs/voice/conference)\n",
    "causes": "* `statusCallbackEvent` includes a value outside `start`, `end`, `join`, `leave`, `mute`, `hold`, `modify`, `speaker`, or `announcement`.\n* `recordingStatusCallbackEvent` includes a value outside `in-progress`, `completed`, or `absent`.\n* One or more URL attributes, such as `waitUrl`, `statusCallback`, `recordingStatusCallback`, or `eventCallbackUrl`, is missing or is not a relative or absolute URL.\n* A method attribute uses a value other than `GET` or `POST`.\n* `maxParticipants` is greater than 250, `participantLabel` is longer than 128 characters or is not unique, or `coach` is not a Call SID for a call already connected to the conference.",
    "solutions": "* Update each `<Conference>` attribute to use only supported values and formats. Use boolean values where required, use the documented event names, and keep `maxParticipants` at 250 or below.\n* Provide valid relative or absolute URLs for `waitUrl`, `statusCallback`, `recordingStatusCallback`, and `eventCallbackUrl`, and use `GET` or `POST` for `waitMethod`, `statusCallbackMethod`, and `recordingStatusCallbackMethod`.\n* Keep `participantLabel` unique and within 128 characters. If you use `coach`, set it to a Call SID that is already active in the conference.\n* Prefer `recordingStatusCallback` over `eventCallbackUrl`, because `eventCallbackUrl` is deprecated and Twilio does not send `eventCallbackUrl` requests when `recordingStatusCallback` is provided.",
    "description": "This error occurs when Twilio cannot validate one or more `<Conference>` attributes on a Voice conference. Check the attribute values, URL formats, and limits against the supported `<Conference>` options.",
    "date_created": "2019-03-01T21:02:11Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Could not recognize conference sid or friendly name",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio could not recognize the provided conference sid or friendly name. Please see https://www.twilio.com/docs/voice/twiml/conference for more documentation.\n",
    "causes": null,
    "solutions": null,
    "description": "Twilio could not recognize the provided conference sid or friendly name. Please see https://www.twilio.com/docs/voice/twiml/conference for more documentation.",
    "date_created": "2019-03-01T21:07:56Z",
    "last_updated": "2020-08-04T10:00:10.12Z"
  },
  {
    "code": 16010,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conference Event: Internal Twilio Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio encountered an internal error while processing a conference event for a `Conference`. When you set `statusCallbackEvent`, Twilio sends conference state-change webhooks to the `statusCallback` URL, and you can review fired events in the conference logs in the Console.\n\n### Possible causes\n\n- Twilio hit a transient internal service error while generating or delivering the conference event.\n- Twilio attempted to send the event to the `statusCallback` URL for a conference that was configured to emit conference events, but the webhook request failed before it could be delivered.\n\n### Possible solutions\n\n- Retry the request later. Twilio internal errors can be transient.\n- Check the conference logs in the Console to confirm which event fired and when it failed.\n- Check the error logs for the exact error, potential causes, suggested solutions, and the HTTP request and response associated with the webhook request.\n- Open the `statusCallback` URL in your browser and verify the endpoint responds without errors.\n- Make sure the callback URL does not return an HTTP `301` or `302` redirect. Twilio follows redirects, but it will not include the original parameters on the follow-up request.\n\n#### Additional resources\n\n- [TwiML `<Conference>`](/docs/voice/twiml/conference)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Twilio hit a transient internal service error while generating or delivering the conference event.\n* Twilio attempted to send the event to the `statusCallback` URL for a conference that was configured to emit conference events, but the webhook request failed before it could be delivered.",
    "solutions": "* Retry the request later. Twilio internal errors can be transient.\n* Check the conference logs in the Console to confirm which event fired and when it failed.\n* Check the error logs for the exact error, potential causes, suggested solutions, and the HTTP request and response associated with the webhook request.\n* Open the `statusCallback` URL in your browser and verify the endpoint responds without errors.\n* Make sure the callback URL does not return an HTTP `301` or `302` redirect. Twilio follows redirects, but it will not include the original parameters on the follow-up request.",
    "description": "Twilio encountered an internal error while processing a conference event for a `Conference`. When you set `statusCallbackEvent`, Twilio sends conference state-change webhooks to the `statusCallback` URL, and you can review fired events in the conference logs in the Console.",
    "date_created": "2019-03-01T21:11:00Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16011,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Conference Event: Error Response to Callback URL",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns This error when it receives an error response while sending a conference event to the callback URL configured on the conference. Conference events are sent to the `statusCallback` URL, and the events that trigger those requests are controlled by `statusCallbackEvent`. Twilio expects status callback webhooks to return a simple `200 OK` response.\n\n### Possible causes\n\n- The `statusCallback` URL configured for the conference is incorrect, or the first participant set a different URL than the one you intended, because later participants cannot override it.\n- Your webhook endpoint returned a non-`200 OK` response, such as a `4xx` or `5xx`, when Twilio sent the conference event callback.\n- Your webhook handler does not accept the request method Twilio is using. For conference status callbacks, `statusCallbackMethod` defaults to `POST`.\n\n### Possible solutions\n\n- Verify the `statusCallback` URL for the conference and make sure the first participant to join supplies the correct value, since later `statusCallback` values are ignored.\n- Update your webhook handler so it successfully receives the conference event request and returns `200 OK`.\n- Confirm the endpoint accepts the configured request method, and use `POST` unless you explicitly configured a different `statusCallbackMethod`.\n\n#### Additional resources\n\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [Voice Conference](/docs/voice/conference)\n- [Webhooks FAQ](/docs/usage/webhooks/webhooks-faq)\n",
    "causes": "* The `statusCallback` URL configured for the conference is incorrect, or the first participant set a different URL than the one you intended, because later participants cannot override it.\n* Your webhook endpoint returned a non-`200 OK` response, such as a `4xx` or `5xx`, when Twilio sent the conference event callback.\n* Your webhook handler does not accept the request method Twilio is using. For conference status callbacks, `statusCallbackMethod` defaults to `POST`.",
    "solutions": "* Verify the `statusCallback` URL for the conference and make sure the first participant to join supplies the correct value, since later `statusCallback` values are ignored.\n* Update your webhook handler so it successfully receives the conference event request and returns `200 OK`.\n* Confirm the endpoint accepts the configured request method, and use `POST` unless you explicitly configured a different `statusCallbackMethod`.",
    "description": "Twilio returns This error when it receives an error response while sending a conference event to the callback URL configured on the conference. Conference events are sent to the `statusCallback` URL, and the events that trigger those requests are controlled by `statusCallbackEvent`. Twilio expects status callback webhooks to return a simple `200 OK` response.",
    "date_created": "2019-03-01T21:13:16Z",
    "last_updated": "2026-07-08T11:16:12-07:00"
  },
  {
    "code": 16020,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conference is full",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA participant has attempted to join a conference that has reached its maximum participant capacity.\n\nPlease refer to https://www.twilio.com/docs/voice/twiml/conference for documentation on conference participant capacity.\n",
    "causes": null,
    "solutions": null,
    "description": "A participant has attempted to join a conference that has reached its maximum participant capacity. Please refer to https://www.twilio.com/docs/voice/twiml/conference for documentation on conference participant capacity.",
    "date_created": "2019-03-01T21:15:13Z",
    "last_updated": "2020-08-04T10:00:10.054Z"
  },
  {
    "code": 16021,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to join conference due to account concurrency limit exceeded",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA conference participant could not be created because your account was at or above its concurrent participant limit. This error is different from 16020, which is returned when a conference reaches maximum participant capacity.\n\n### Possible causes\n\n- Your account reached the account-wide concurrent participant limit for Voice Conference. The default limit is 5,000 concurrent participants across all conferences in an account.\n- Your application attempted to create conference participants before earlier participants had disconnected. Creating conference participants via the API counts toward concurrency.\n\n### Possible solutions\n\n- Retry the request after active participants disconnect and your account is back under the limit.\n- Reduce the number of simultaneous conference participant creations in your application.\n- If you regularly need more concurrent conference participants, contact your Twilio account team to request a higher limit.\n\n#### Additional resources\n\n- [Voice Conference](/docs/voice/conference)\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n",
    "causes": "* Your account reached the account-wide concurrent participant limit for Voice Conference. The default limit is 5,000 concurrent participants across all conferences in an account.\n* Your application attempted to create conference participants before earlier participants had disconnected. Creating conference participants via the API counts toward concurrency.",
    "solutions": "* Retry the request after active participants disconnect and your account is back under the limit.\n* Reduce the number of simultaneous conference participant creations in your application.\n* If you regularly need more concurrent conference participants, contact your Twilio account team to request a higher limit.",
    "description": "A conference participant could not be created because your account was at or above its concurrent participant limit. This error is different from 16020, which is returned when a conference reaches maximum participant capacity.",
    "date_created": "2019-03-01T21:19:28Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16022,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conference does not exist or is completed",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when a request targets a conference that does not exist or is no longer active. Conference participant operations work only with active conferences, and a request fails when the specified `ConferenceSid` is not active.\n\n### Possible causes\n\n- You submitted a `ConferenceSid` that does not belong to an active conference. Requests against a non-active conference fail.\n- The conference ended before the request completed. A conference ends when the last participant leaves or when a participant with `endConferenceOnExit=\"true\"` leaves.\n- You tried to retrieve or update participants after the conference reached `completed` status. Participant resources are available only for active conferences.\n\n### Possible solutions\n\n- Confirm that the conference is still active before you add, retrieve, update, or remove participants. If you use `FriendlyName`, create the conference by adding the first participant with that name.\n- Make participant requests before the conference ends. Do not reuse a completed conference for additional participant operations.\n- Use `statusCallback` and `statusCallbackEvent` to watch for conference lifecycle events, including `end`, and stop participant actions once the conference is over.\n\n#### Additional resources\n\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n",
    "causes": "* You submitted a `ConferenceSid` that does not belong to an active conference. Requests against a non-active conference fail.\n* The conference ended before the request completed. A conference ends when the last participant leaves or when a participant with `endConferenceOnExit=\"true\"` leaves.\n* You tried to retrieve or update participants after the conference reached `completed` status. Participant resources are available only for active conferences.",
    "solutions": "* Confirm that the conference is still active before you add, retrieve, update, or remove participants. If you use `FriendlyName`, create the conference by adding the first participant with that name.\n* Make participant requests before the conference ends. Do not reuse a completed conference for additional participant operations.\n* Use `statusCallback` and `statusCallbackEvent` to watch for conference lifecycle events, including `end`, and stop participant actions once the conference is over.",
    "description": "This error occurs when a request targets a conference that does not exist or is no longer active. Conference participant operations work only with active conferences, and a request fails when the specified `ConferenceSid` is not active.",
    "date_created": "2019-03-01T21:22:31Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conference: Participant label invalid (max 128 chars, not CallSid, no '/')",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `participantLabel` used to add a caller to a conference is invalid. For 16023, the label cannot be longer than 128 characters, cannot look like a Call SID, and cannot contain `/`, including `%2F`. You can use `participantLabel` later to reference a participant through conference participant operations.\n\n### Possible causes\n\n- The `participantLabel` value is longer than 128 characters.\n- The `participantLabel` matches the Call SID pattern, which starts with `CA` and is followed by 32 lowercase hexadecimal characters.\n- The `participantLabel` contains `/`.\n- The `participantLabel` contains `%2F`, which decodes to `/`.\n\n### Possible solutions\n\n- Keep `participantLabel` at 128 characters or fewer.\n- Use an application-defined label that does not look like a Call SID.\n- Remove `/` and encoded slash values such as `%2F` before you send the label in TwiML or in a request that creates a conference participant.\n- Store a stable label that your application controls, such as an internal user identifier or descriptive name, if you plan to fetch or update the participant later.\n\n#### Additional resources\n\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [Voice Conference](/docs/voice/conference)\n- [How to Share Information Between Your Applications](/docs/voice/how-share-information-between-your-applications)\n",
    "causes": "* The `participantLabel` value is longer than 128 characters.\n* The `participantLabel` matches the Call SID pattern, which starts with `CA` and is followed by 32 lowercase hexadecimal characters.\n* The `participantLabel` contains `/`.\n* The `participantLabel` contains `%2F`, which decodes to `/`.",
    "solutions": "* Keep `participantLabel` at 128 characters or fewer.\n* Use an application-defined label that does not look like a Call SID.\n* Remove `/` and encoded slash values such as `%2F` before you send the label in TwiML or in a request that creates a conference participant.\n* Store a stable label that your application controls, such as an internal user identifier or descriptive name, if you plan to fetch or update the participant later.",
    "description": "This error occurs when the `participantLabel` used to add a caller to a conference is invalid. For 16023, the label cannot be longer than 128 characters, cannot look like a Call SID, and cannot contain `/`, including `%2F`. You can use `participantLabel` later to reference a participant through conference participant operations.",
    "date_created": "2020-04-23T21:37:19Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 16024,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant label invalid: max 128 chars, not a CallSid, no '/'",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYou receive this error when you send a `POST` request to create a Conference participant with an invalid `Label`. The value must be 128 characters or fewer, it cannot resemble a Call SID, and it cannot contain `/`, including `%2F`.\n\n### Possible causes\n\n- Your request sets `Label` to a value longer than 128 characters.\n- Your request uses a Call SID, or a value that resembles a Call SID, as the participant label.\n- Your request includes `/` in the `Label` value.\n- Your application URL-encodes `/` as `%2F` and sends it as part of the label. This is still invalid.\n\n### Possible solutions\n\n- Validate `Label` before you create the participant. Keep the value at 128 characters or fewer.\n- Use a custom participant label instead of a Call SID. You can use that label later to fetch, update, or delete the participant.\n- Remove `/` from your label generation logic. Do not rely on `%2F` as a workaround because Twilio rejects that value too.\n- If you use labels in participant URLs later, percent-encode other non-URL-safe characters in the request path. For example, encode spaces as `%20`.\n\n#### Additional resources\n\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n- [Voice Conference](/docs/voice/conference)\n- [Create Conference Calls](/docs/voice/tutorials/how-to-create-conference-calls)\n",
    "causes": "* Your request sets `Label` to a value longer than 128 characters.\n* Your request uses a Call SID, or a value that resembles a Call SID, as the participant label.\n* Your request includes `/` in the `Label` value.\n* Your application URL-encodes `/` as `%2F` and sends it as part of the label. This is still invalid.",
    "solutions": "* Validate `Label` before you create the participant. Keep the value at 128 characters or fewer.\n* Use a custom participant label instead of a Call SID. You can use that label later to fetch, update, or delete the participant.\n* Remove `/` from your label generation logic. Do not rely on `%2F` as a workaround because Twilio rejects that value too.\n* If you use labels in participant URLs later, percent-encode other non-URL-safe characters in the request path. For example, encode spaces as `%20`.",
    "description": "You receive this error when you send a `POST` request to create a Conference participant with an invalid `Label`. The value must be 128 characters or fewer, it cannot resemble a Call SID, and it cannot contain `/`, including `%2F`.",
    "date_created": "2020-04-23T21:38:44Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 16025,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dial->Conference: Participant label is in use by another participant",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when `<Dial><Conference>` sets `participantLabel` to a value that is already used by another active participant in the same conference. `participantLabel` must be unique across all participants in a conference. If Twilio detects a duplicate label, Twilio does not add the call to the conference and continues to the next TwiML verb.\n\n### Possible causes\n\n- Your application assigned the same `participantLabel` to more than one inbound caller joining the same conference through `<Dial><Conference>`.\n- Your application generated or reused a label that is already assigned to another active participant in that conference.\n- The label is already in use by an active participant that was added to the conference through the Conference Participant API. `participantLabel` values must be unique across all participants in the conference, regardless of how each participant was added.\n\n### Possible solutions\n\n- Generate a `participantLabel` that uniquely identifies each participant in the conference.\n- If you add participants through both `<Conference>` TwiML and the Conference Participant API, use one label naming strategy across both paths so the same value is not reused for another active participant.\n- Review the active participants in the conference before you reuse a label. You can fetch, list, update, and delete active conference participants by label through the Participants subresource.\n- Add fallback TwiML after `<Dial><Conference>` if you want the call to continue somewhere specific when Twilio rejects the duplicate label.\n\n#### Additional resources\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n- [Conference Participant API](/docs/voice/api/conference-participant-resource)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Your application assigned the same `participantLabel` to more than one inbound caller joining the same conference through `<Dial><Conference>`.\n* Your application generated or reused a label that is already assigned to another active participant in that conference.\n* The label is already in use by an active participant that was added to the conference through the Conference Participant API. `participantLabel` values must be unique across all participants in the conference, regardless of how each participant was added.",
    "solutions": "* Generate a `participantLabel` that uniquely identifies each participant in the conference.\n* If you add participants through both `<Conference>` TwiML and the Conference Participant API, use one label naming strategy across both paths so the same value is not reused for another active participant.\n* Review the active participants in the conference before you reuse a label. You can fetch, list, update, and delete active conference participants by label through the Participants subresource.\n* Add fallback TwiML after `<Dial><Conference>` if you want the call to continue somewhere specific when Twilio rejects the duplicate label.",
    "description": "This error occurs when `<Dial><Conference>` sets `participantLabel` to a value that is already used by another active participant in the same conference. `participantLabel` must be unique across all participants in a conference. If Twilio detects a duplicate label, Twilio does not add the call to the conference and continues to the next TwiML verb.",
    "date_created": "2020-04-23T21:40:32Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 16026,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant label is in use by another participant",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe participant label specified in an API call to create a voice conference participant is already in use by another active participant in the same conference.\n\n### Possible causes\n\n1. The specified label was already used in another API call to add a participant to the conference.\n2. The specified label was already used in twiml (Dial Conference) to add an inbound participant to the conference\n\n### Possible solutions\n\nUse a label value which uniquely identifies this participant within the conference.\n",
    "causes": "1. The specified label was already used in another API call to add a participant to the conference.\n2. The specified label was already used in twiml (Dial Conference) to add an inbound participant to the conference",
    "solutions": "Use a label value which uniquely identifies this participant within the conference.",
    "description": "The participant label specified in an API call to create a voice conference participant is already in use by another active participant in the same conference.",
    "date_created": "2020-04-23T21:41:52Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 16027,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant to be whispered is on hold",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you try to add a coaching participant to a conference participant who is currently on hold. A participant on hold is not available to be whispered to until that participant rejoins the active conference.\n\n### Possible causes\n\n- The participant identified in `callSidToCoach` is on hold.\n- The participant identified by the TwiML `coach` target is on hold.\n- Your application tried to enable coaching before the participant rejoined the active conference.\n\n### Possible solutions\n\n- Take the target participant off hold by updating the participant and setting `hold` to `false` before you add the coach.\n- Confirm the `CallSid` you use for coaching belongs to a participant who is still connected to the same active conference.\n- Verify that your application is targeting the correct conference and the correct participant before you enable coaching.\n- If you use `<Conference>` with the `coach` attribute, make sure the participant you want to whisper to is an active participant and not on hold.\n\n#### Additional resources\n- [Conference Participant resource](/docs/voice/api/conference-participant-resource)\n- [TwiML `<Conference>`](/docs/voice/twiml/conference)\n- [Voice Conference overview](/docs/voice/conference)\n",
    "causes": "* The participant identified in `callSidToCoach` is on hold.\n* The participant identified by the TwiML `coach` target is on hold.\n* Your application tried to enable coaching before the participant rejoined the active conference.",
    "solutions": "* Take the target participant off hold by updating the participant and setting `hold` to `false` before you add the coach.\n* Confirm the `CallSid` you use for coaching belongs to a participant who is still connected to the same active conference.\n* Verify that your application is targeting the correct conference and the correct participant before you enable coaching.\n* If you use `<Conference>` with the `coach` attribute, make sure the participant you want to whisper to is an active participant and not on hold.",
    "description": "This error occurs when you try to add a coaching participant to a conference participant who is currently on hold. A participant on hold is not available to be whispered to until that participant rejoins the active conference.",
    "date_created": "2020-12-03T23:56:30Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 16028,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant to be whispered is not present in the conference",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you try to add a coaching participant to a conference, but the participant you want the coach to whisper to is not currently connected to that active conference. Twilio only allows `coach` and `call_sid_to_coach` when the target Call SID is already present in the in-progress conference.\n\n### Possible causes\n\n- The Call SID passed in `coach` or `call_sid_to_coach` does not belong to a participant who is currently connected to the in-progress conference.\n- The participant has not joined the conference yet, or the participant already left and the call status is no longer active. Participant status can move through `queued`, `connecting`, `ringing`, `connected`, `complete`, or `failed`.\n- The request is targeting the wrong conference, or the conference is no longer active. The Participants subresource only works with active conferences and active participants.\n\n### Possible solutions\n\n- Confirm that the participant you want to coach is already connected to the same active conference before you set `coach` or `call_sid_to_coach`.\n- Retrieve the participant from the conference, or list the conference participants, and verify that the target Call SID is present in that conference and has an active `status`.\n- Verify that you are using the correct conference identifier and the correct participant Call SID for the leg that is actually in the conference. Each call connection has its own Call SID. ([help.twilio.com](https://help.twilio.com/articles/223180488-What-is-a-Call-SID-))\n- If the participant disconnected, add or reconnect that participant first and then retry adding the coach. Use `statusCallback` events on the conference if you need to track when participants join or leave before starting coaching.\n\n#### Additional resources\n- [TwiML `<Conference>`](/docs/voice/twiml/conference)\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n- [Voice Conference overview](/docs/voice/conference)\n",
    "causes": "* The Call SID passed in `coach` or `call_sid_to_coach` does not belong to a participant who is currently connected to the in-progress conference.\n* The participant has not joined the conference yet, or the participant already left and the call status is no longer active. Participant status can move through `queued`, `connecting`, `ringing`, `connected`, `complete`, or `failed`.\n* The request is targeting the wrong conference, or the conference is no longer active. The Participants subresource only works with active conferences and active participants.",
    "solutions": "* Confirm that the participant you want to coach is already connected to the same active conference before you set `coach` or `call_sid_to_coach`.\n* Retrieve the participant from the conference, or list the conference participants, and verify that the target Call SID is present in that conference and has an active `status`.\n* Verify that you are using the correct conference identifier and the correct participant Call SID for the leg that is actually in the conference. Each call connection has its own Call SID. ([help.twilio.com](https://help.twilio.com/articles/223180488-What-is-a-Call-SID-))\n* If the participant disconnected, add or reconnect that participant first and then retry adding the coach. Use `statusCallback` events on the conference if you need to track when participants join or leave before starting coaching.",
    "description": "This error occurs when you try to add a coaching participant to a conference, but the participant you want the coach to whisper to is not currently connected to that active conference. Twilio only allows `coach` and `call_sid_to_coach` when the target Call SID is already present in the in-progress conference.",
    "date_created": "2020-12-03T23:57:39Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 16030,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Participant failed to be added to the conference",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio encountered an unexpected internal error while attempting to add a participant to an active conference.\n\n### Possible causes\n\n- Twilio hit an internal error while processing the request to add the participant to the conference.\n\n### Possible solutions\n\n- Retry the request later. Twilio identifies this as an internal error and recommends trying again.\n- If you create participants with `ConferenceSid`, make sure the conference is active before you send the request; if the specified conference is not active, the request fails.\n\n#### Additional resources\n\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n- [TwiML `<Conference>`](/docs/voice/twiml/conference)\n",
    "causes": "* Twilio hit an internal error while processing the request to add the participant to the conference.",
    "solutions": "* Retry the request later. Twilio identifies this as an internal error and recommends trying again.\n* If you create participants with `ConferenceSid`, make sure the conference is active before you send the request; if the specified conference is not active, the request fails.",
    "description": "Twilio encountered an unexpected internal error while attempting to add a participant to an active conference.",
    "date_created": "2025-02-25T21:54:23Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16099,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unexpected conference status",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error means the conference is not in the status required for the operation you're trying to perform. A conference can be `init`, `in-progress`, or `completed`, and participant actions only apply to active, in-progress conferences. Use `statusCallback` to track conference and participant state changes instead of polling.\n\n### Possible causes\n\n- You tried to manage a participant after the conference had already ended. The Participant subresource only manages active participants of in-progress conferences, and ended conferences do not return associated participants.\n- You tried to act on the conference before it reached `in-progress`. A conference is created when the first participant connects, but it does not start until the second participant joins or a moderator joins, if one is configured.\n- You identified the conference by `friendly_name` and matched the wrong instance. Multiple conferences can share the same `friendly_name`, and only one of those conferences can be in-progress at a time.\n\n### Possible solutions\n\n- Wait until the conference is `in-progress` before adding, muting, removing, or inspecting participants. Use `statusCallback` to react to conference and participant changes.\n- Use the specific `ConferenceSid` for the conference instance you want to manage. Do not rely on `friendly_name` when more than one conference can exist with the same name.\n- If the conference has already ended, capture participant details from `statusCallback` or use the Voice Insights API for post-call participant data.\n\n#### Additional resources\n\n- [Conferences resource](/docs/voice/api/conference-resource)\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n",
    "causes": "* You tried to manage a participant after the conference had already ended. The Participant subresource only manages active participants of in-progress conferences, and ended conferences do not return associated participants.\n* You tried to act on the conference before it reached `in-progress`. A conference is created when the first participant connects, but it does not start until the second participant joins or a moderator joins, if one is configured.\n* You identified the conference by `friendly_name` and matched the wrong instance. Multiple conferences can share the same `friendly_name`, and only one of those conferences can be in-progress at a time.",
    "solutions": "* Wait until the conference is `in-progress` before adding, muting, removing, or inspecting participants. Use `statusCallback` to react to conference and participant changes.\n* Use the specific `ConferenceSid` for the conference instance you want to manage. Do not rely on `friendly_name` when more than one conference can exist with the same name.\n* If the conference has already ended, capture participant details from `statusCallback` or use the Voice Insights API for post-call participant data.",
    "description": "This error means the conference is not in the status required for the operation you're trying to perform. A conference can be `init`, `in-progress`, or `completed`, and participant actions only apply to active, in-progress conferences. Use `statusCallback` to track conference and participant state changes instead of polling.",
    "date_created": "2019-03-01T21:24:07Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16101,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Voice Recording : Unavailable because duration is too short",
    "secondary_message": "Recording is unavailable because the duration was shorter than the minimum required duration.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when a voice recording is shorter than the minimum duration required for the recording workflow. With `<Record>`, the final duration can be shorter than the time spent recording when Twilio trims leading or trailing silence or when no RTP audio data is received during recording.\n\n### Possible causes\n\n- The caller ended the recording before enough audio was captured, such as by hanging up, pressing a `finishOnKey` digit, or reaching `maxLength`.\n- `trim-silence` removed leading or trailing silence, which made the final recording shorter.\n- Twilio did not receive RTP audio data during the recording, so the effective duration was shorter than expected.\n\n### Possible solutions\n\n- Keep the caller on the line long enough to capture audio that meets your minimum duration requirements.\n- Review `timeout`, `finishOnKey`, and `maxLength` so the recording does not end before you capture enough audio.\n- Set `trim` to `do-not-trim` if you need to preserve leading and trailing silence in the final recording.\n\n#### Additional resources\n\n- [TwiML Voice: `<Record>`](/docs/voice/twiml/record)\n- [Recordings resource](/docs/voice/api/recording)\n",
    "causes": "* The caller ended the recording before enough audio was captured, such as by hanging up, pressing a `finishOnKey` digit, or reaching `maxLength`.\n* `trim-silence` removed leading or trailing silence, which made the final recording shorter.\n* Twilio did not receive RTP audio data during the recording, so the effective duration was shorter than expected.",
    "solutions": "* Keep the caller on the line long enough to capture audio that meets your minimum duration requirements.\n* Review `timeout`, `finishOnKey`, and `maxLength` so the recording does not end before you capture enough audio.\n* Set `trim` to `do-not-trim` if you need to preserve leading and trailing silence in the final recording.",
    "description": "Twilio returns this warning when a voice recording is shorter than the minimum duration required for the recording workflow. With `<Record>`, the final duration can be shorter than the time spent recording when Twilio trims leading or trailing silence or when no RTP audio data is received during recording.",
    "date_created": "2018-11-28T16:47:44Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16102,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Voice Recording: Unavailable because recording is silent",
    "secondary_message": "Recording was detected as silent and not stored. As a result, it is unavailable for access.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio does not store a recording when the audio is silent and your account is set to automatically delete silent recordings. In that case, the recording is marked as `absent` and is unavailable for access.\n\n### Possible causes\n\n- The recording contained only silence.\n- Silent recordings are configured to be automatically deleted on your account.\n\n### Possible solutions\n\n- Contact Twilio Support to change the silent-recording deletion setting if you need to retain silent recordings.\n- If you do not need to keep silent recordings, no action is required.\n\n#### Additional resources\n\n- [TwiML Voice: `<Recording>`](/docs/voice/twiml/recording)\n- [Recordings resource](/docs/voice/api/recording)\n",
    "causes": "* The recording contained only silence.\n* Silent recordings are configured to be automatically deleted on your account.",
    "solutions": "* Contact Twilio Support to change the silent-recording deletion setting if you need to retain silent recordings.\n* If you do not need to keep silent recordings, no action is required.",
    "description": "Twilio does not store a recording when the audio is silent and your account is set to automatically delete silent recordings. In that case, the recording is marked as `absent` and is unavailable for access.",
    "date_created": "2018-11-28T16:42:38Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16104,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Voice Recording: Unavailable due to encryption failure",
    "secondary_message": "Recording was not stored due to a public key encryption failure. (only applicable if call recording encryption feature enabled)",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error means Twilio could not store a recording because public key encryption failed. It applies only when Voice Recording Encryption is enabled. When this happens, Twilio deletes the recording file, sets the Recording resource `Status` to `failed`, returns `ErrorCode` `16104`, and leaves `EncryptionDetails` `null`.\n\n### Possible causes\n\n- No public keys are available on the account.\n- An intermittent Twilio system issue interrupted encryption.\n\n### Possible solutions\n\n- Create a Twilio Public Key resource, then enable Voice Recording Encryption in `Programmable Voice > Settings` and select the key you want Twilio to use.\n- Review the notification in the Debugger so you can confirm whether the failure was caused by public-key inaccessibility or an internal system issue.\n- After you fix the public-key configuration or the service issue clears, record again. The failed recording file is deleted and is not available for access.\n\n#### Additional resources\n\n- [Voice Recording Encryption](/docs/voice/tutorials/voice-recording-encryption)\n- [Recordings resource](/docs/voice/api/recording)\n",
    "causes": "* No public keys are available on the account.\n* An intermittent Twilio system issue interrupted encryption.",
    "solutions": "* Create a Twilio Public Key resource, then enable Voice Recording Encryption in `Programmable Voice > Settings` and select the key you want Twilio to use.\n* Review the notification in the Debugger so you can confirm whether the failure was caused by public-key inaccessibility or an internal system issue.\n* After you fix the public-key configuration or the service issue clears, record again. The failed recording file is deleted and is not available for access.",
    "description": "This error means Twilio could not store a recording because public key encryption failed. It applies only when Voice Recording Encryption is enabled. When this happens, Twilio deletes the recording file, sets the Recording resource `Status` to `failed`, returns `ErrorCode` `16104`, and leaves `EncryptionDetails` `null`.",
    "date_created": "2017-08-25T22:23:16Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16105,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Voice Recording: Unavailable due to no valid public keys",
    "secondary_message": "Recording was not stored due to no valid public keys on the account (only applicable if call recording encryption feature enabled)",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nVoice Recording Encryption is enabled, but Twilio can't store this recording because the account has no valid public keys. This only applies when call recording encryption is enabled.\n\n### Possible causes\n\n- Voice Recording Encryption is enabled, but the account does not have a valid Twilio Public Key resource.\n- The account has not been configured with a public key for Voice Recording Encryption.\n\n### Possible solutions\n\n- Create a valid Twilio Public Key resource, then select it in Programmable Voice > Settings before you record calls.\n- If you do not need encrypted recordings, disable Voice Recording Encryption.\n\n#### Additional resources\n\n- [Voice Recording Encryption](/docs/voice/tutorials/voice-recording-encryption)\n- [Credentials PublicKey Resource](/docs/iam/credentialpublickey-resource)\n- [Recordings resource](/docs/voice/api/recording)\n",
    "causes": "* Voice Recording Encryption is enabled, but the account does not have a valid Twilio Public Key resource.\n* The account has not been configured with a public key for Voice Recording Encryption.",
    "solutions": "* Create a valid Twilio Public Key resource, then select it in Programmable Voice > Settings before you record calls.\n* If you do not need encrypted recordings, disable Voice Recording Encryption.",
    "description": "Voice Recording Encryption is enabled, but Twilio can't store this recording because the account has no valid public keys. This only applies when call recording encryption is enabled.",
    "date_created": "2017-08-25T22:27:42Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Voice Recording: Unavailable due to internal encryption error",
    "secondary_message": "Recording was not stored due to a transient internal encryption error (only applicable if call recording encryption feature enabled)",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nRecording was not stored because Twilio encountered a transient internal encryption error while processing the recording. This applies only when call recording encryption is enabled.\n\n### Possible causes\n\n- Voice Recording Encryption was enabled, and Twilio encountered a transient internal encryption error while encrypting the recording.\n- The recording failed during the internal encryption step before Twilio could store it.\n\n### Possible solutions\n\n- Retry the call or recording request after a short delay.\n- If the error continues, contact Twilio Support.\n\n#### Additional resources\n\n- [Voice Recording Encryption](/docs/voice/tutorials/voice-recording-encryption)\n- [Recordings resource](/docs/voice/api/recording)\n",
    "causes": "* Voice Recording Encryption was enabled, and Twilio encountered a transient internal encryption error while encrypting the recording.\n* The recording failed during the internal encryption step before Twilio could store it.",
    "solutions": "* Retry the call or recording request after a short delay.\n* If the error continues, contact Twilio Support.",
    "description": "Recording was not stored because Twilio encountered a transient internal encryption error while processing the recording. This applies only when call recording encryption is enabled.",
    "date_created": "2017-08-25T22:29:47Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16107,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Voice Recording: Encrypted with alternate public key",
    "secondary_message": "Recording was encrypted with alternate public key because the one configured on the account is invalid or deleted. (only applicable if call recording encryption feature enabled)",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nWhen Voice Recording Encryption is enabled, Twilio encrypts the recording with an alternate public key if the configured key cannot be retrieved or is no longer usable. Twilio reports the key that was actually used in `EncryptionDetails.public_key_sid` and sends a notification to the account, which you can review in the Console Debugger. This applies only when call recording encryption is enabled.\n\n### Possible causes\n\n- The public key configured for Voice Recording Encryption is invalid.\n- The configured public key was deleted from the account.\n- Twilio could not determine or retrieve the configured key and fell back to the most recently added retrievable public key.\n\n### Possible solutions\n\n- Create a valid Twilio Public Key resource and paste the full contents of `public_key.pem`, including the `BEGIN PUBLIC KEY` and `END PUBLIC KEY` lines.\n- Update `Programmable Voice > Settings` to select the correct public key for Voice Recording Encryption.\n- Check `EncryptionDetails.public_key_sid` and the Console Debugger notification to confirm which public key Twilio used.\n- Replace any deleted or invalid key before you create additional recordings.\n\n#### Additional resources\n\n- [Voice Recording Encryption](/docs/voice/tutorials/voice-recording-encryption)\n- [Recordings resource](/docs/voice/api/recording)\n- [Credentials PublicKey resource](/docs/iam/credentialpublickey-resource)\n",
    "causes": "* The public key configured for Voice Recording Encryption is invalid.\n* The configured public key was deleted from the account.\n* Twilio could not determine or retrieve the configured key and fell back to the most recently added retrievable public key.",
    "solutions": "* Create a valid Twilio Public Key resource and paste the full contents of `public_key.pem`, including the `BEGIN PUBLIC KEY` and `END PUBLIC KEY` lines.\n* Update `Programmable Voice > Settings` to select the correct public key for Voice Recording Encryption.\n* Check `EncryptionDetails.public_key_sid` and the Console Debugger notification to confirm which public key Twilio used.\n* Replace any deleted or invalid key before you create additional recordings.",
    "description": "When Voice Recording Encryption is enabled, Twilio encrypts the recording with an alternate public key if the configured key cannot be retrieved or is no longer usable. Twilio reports the key that was actually used in `EncryptionDetails.public_key_sid` and sends a notification to the account, which you can review in the Console Debugger. This applies only when call recording encryption is enabled.",
    "date_created": "2017-08-25T22:30:45Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16108,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Voice Recording: Request failed due to concurrent recordings",
    "secondary_message": "The request failed because there is more than one active recording for the provided CallSID",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to update a recording on a call or conference that has more than one active recording. Use `Twilio.CURRENT` only when there is a single active recording; otherwise, reference the recording with its Recording SID.\n\n### Possible causes\n\n- You used `Twilio.CURRENT` on a call or conference with multiple active recordings.\n- The request targeted a recording without specifying a Recording SID for a call or conference that had concurrent recordings.\n\n### Possible solutions\n\n- Use the Recording SID to identify the specific recording you want to pause, resume, or stop.\n- Use `Twilio.CURRENT` only when the call or conference has one active recording.\n\n#### Additional resources\n\n- [Recordings resource](/docs/voice/api/recording)\n- [TwiML Voice: `<Recording>`](/docs/voice/twiml/recording)\n",
    "causes": "* You used `Twilio.CURRENT` on a call or conference with multiple active recordings.\n* The request targeted a recording without specifying a Recording SID for a call or conference that had concurrent recordings.",
    "solutions": "* Use the Recording SID to identify the specific recording you want to pause, resume, or stop.\n* Use `Twilio.CURRENT` only when the call or conference has one active recording.",
    "description": "This error occurs when you try to update a recording on a call or conference that has more than one active recording. Use `Twilio.CURRENT` only when there is a single active recording; otherwise, reference the recording with its Recording SID.",
    "date_created": "2018-03-28T22:05:11Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16109,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Voice Recording: Cannot fetch .mp3 encrypted recording",
    "secondary_message": "Recording cannot be retrieved in .mp3 format when call recording encryption feature is enabled on the account. Please request with .wav format.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nUse the Recordings resource to fetch voice recording media as `.wav` or `.mp3`. When Voice Recording Encryption is enabled, request the recording as `.wav` instead of `.mp3`. To decrypt an encrypted recording, retrieve `EncryptionDetails` from the Recording resource and use the matching private key.\n\n### Possible causes\n\n- Voice Recording Encryption is enabled on the account, and the request appends `.mp3` to the recording URI.\n- The recording is encrypted, and the request is trying to fetch the media in a format that is not supported for encrypted recordings.\n\n### Possible solutions\n\n- Request the recording media as `.wav` by omitting the extension or using `.wav` on the Recording URI.\n- Retrieve the recording metadata, read `EncryptionDetails`, and decrypt the recording with the private key that matches the configured public key.\n\n#### Additional resources\n\n- [Recordings resource](/docs/voice/api/recording)\n- [Voice Recording Encryption](/docs/voice/tutorials/voice-recording-encryption)\n",
    "causes": "* Voice Recording Encryption is enabled on the account, and the request appends `.mp3` to the recording URI.\n* The recording is encrypted, and the request is trying to fetch the media in a format that is not supported for encrypted recordings.",
    "solutions": "* Request the recording media as `.wav` by omitting the extension or using `.wav` on the Recording URI.\n* Retrieve the recording metadata, read `EncryptionDetails`, and decrypt the recording with the private key that matches the configured public key.",
    "description": "Use the Recordings resource to fetch voice recording media as `.wav` or `.mp3`. When Voice Recording Encryption is enabled, request the recording as `.wav` instead of `.mp3`. To decrypt an encrypted recording, retrieve `EncryptionDetails` from the Recording resource and use the matching private key.",
    "date_created": "2019-02-07T20:04:51Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 16110,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Internal failure when bulk deleting recordings from your account",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nDespite our best efforts, we have failed to delete some or all of the selected recordings. The operation has been cancelled.\n\n### Possible causes\n\nThere was an internal failure when processing your request. This action will not be retried.\n\n### Possible solutions\n\n- Please retry the delete operation with the same parameters.\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and which filter was used to select the recordings.\n",
    "causes": "There was an internal failure when processing your request. This action will not be retried.",
    "solutions": "* Please retry the delete operation with the same parameters.\n* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and which filter was used to select the recordings.",
    "description": "Despite our best efforts, we have failed to delete some or all of the selected recordings. The operation has been cancelled.",
    "date_created": "2019-09-16T09:03:27Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 16111,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Recording: Upload file to external AWS S3 bucket failed (Invalid Configuration)",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio can't upload a Voice recording to the external AWS S3 bucket configured in Voice Settings because the external storage configuration is invalid. Twilio deletes the recording media after the failed upload, and if the Recording resource still exists, marks it as `failed`. When recording media is stored externally or is no longer available in Twilio, requests for the media file return `Not Found`.\n\n### Possible causes\n\n- The S3 bucket URL configured in Voice Settings is invalid.\n- The AWS credentials configured for external storage are invalid.\n- The AWS Credential referenced by Voice Settings is missing from your account's Credential Storage.\n- External Storage was not configured in each home region where you run Voice workloads. Twilio Regions are isolated, so region-specific resources and settings must exist in the Region where processing happens.\n\n### Possible solutions\n\n- In Voice Settings, verify that the external S3 bucket URL and optional folder path point to the bucket location you want Twilio to use.\n- Confirm that the selected AWS Credential contains a valid AWS access key ID and secret access key for an IAM user with write access to the target bucket.\n- Make sure the AWS Credential still exists in your account and reselect the correct credential in Voice Settings if needed. AWS Credentials are stored as account resources with a `CR` SID.\n- If you use multiple home regions, configure External Storage separately in each region you use for Voice traffic.\n- If you do not need external S3 storage, disable external storage so new recordings are stored by Twilio instead.\n\n#### Additional resources\n\n- [Recordings resource](/docs/voice/api/recording)\n- [Credentials AWS Resource](/docs/iam/credentialaws-resource)\n- [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions)\n",
    "causes": "* The S3 bucket URL configured in Voice Settings is invalid.\n* The AWS credentials configured for external storage are invalid.\n* The AWS Credential referenced by Voice Settings is missing from your account's Credential Storage.\n* External Storage was not configured in each home region where you run Voice workloads. Twilio Regions are isolated, so region-specific resources and settings must exist in the Region where processing happens.",
    "solutions": "* In Voice Settings, verify that the external S3 bucket URL and optional folder path point to the bucket location you want Twilio to use.\n* Confirm that the selected AWS Credential contains a valid AWS access key ID and secret access key for an IAM user with write access to the target bucket.\n* Make sure the AWS Credential still exists in your account and reselect the correct credential in Voice Settings if needed. AWS Credentials are stored as account resources with a `CR` SID.\n* If you use multiple home regions, configure External Storage separately in each region you use for Voice traffic.\n* If you do not need external S3 storage, disable external storage so new recordings are stored by Twilio instead.",
    "description": "This error occurs when Twilio can't upload a Voice recording to the external AWS S3 bucket configured in Voice Settings because the external storage configuration is invalid. Twilio deletes the recording media after the failed upload, and if the Recording resource still exists, marks it as `failed`. When recording media is stored externally or is no longer available in Twilio, requests for the media file return `Not Found`.",
    "date_created": "2021-11-17T18:52:58Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 16112,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Recording: Upload file to external AWS S3 bucket failed (Access Denied)",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio failed to upload the recording file to the external AWS S3 bucket specified in Voice Settings due to access denied. The recording file has been deleted, and the resource has been marked as \"failed\".\n\n### Possible causes\n\n- AWS credentials does not have enough permissions to upload to the bucket\n- The external S3 bucket has SSE-S3 enabled, only SSE-KMS is supported\n\n### Possible solutions\n\n- Ensure AWS S3 bucket credentials are valid and have enough permission to access\n- If SSE-S3 is enabled, please consider switching to SSE-KMS\n- Disable external storage\n",
    "causes": "* AWS credentials does not have enough permissions to upload to the bucket\n* The external S3 bucket has SSE-S3 enabled, only SSE-KMS is supported",
    "solutions": "* Ensure AWS S3 bucket credentials are valid and have enough permission to access\n* If SSE-S3 is enabled, please consider switching to SSE-KMS\n* Disable external storage",
    "description": "Twilio failed to upload the recording file to the external AWS S3 bucket specified in Voice Settings due to access denied. The recording file has been deleted, and the resource has been marked as \"failed\".",
    "date_created": "2021-11-17T18:53:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 16113,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Voice Recording: Cannot download a dual-channel presentation of a mono recording",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when you request a dual-channel media file for a recording that was stored as `mono`. Twilio can return a dual-channel download only when the original recording has two channels available.\n\n### Possible causes\n\n- The recording was created with `recordingChannels=mono` on an API call, or with `channels=\"mono\"` when you started the recording with `<Start><Recording>`.\n- The recording was created with `<Record>`, which stores the audio as a mono recording.\n- The download request included `RequestedChannels=2` for a recording that has only one channel available.\n\n### Possible solutions\n\n- Retry the download without specifying a channel count. If you need to set it explicitly, retry with `RequestedChannels=1`.\n- Review the recording's channel configuration before downloading media. Use the `RecordingChannels` value from `RecordingStatusCallback` to determine whether to request one channel or two.\n- If you need separate tracks for future recordings, create the recording in dual-channel format by setting `recordingChannels=dual` on the Call resource or `channels=\"dual\"` on `<Start><Recording>`.\n\n#### Additional resources\n\n- [Recordings resource](/docs/voice/api/recording)\n- [TwiML Voice: `<Recording>`](/docs/voice/twiml/recording)\n- [TwiML Voice: `<Record>`](/docs/voice/twiml/record)\n",
    "causes": "* The recording was created with `recordingChannels=mono` on an API call, or with `channels=\"mono\"` when you started the recording with `<Start><Recording>`.\n* The recording was created with `<Record>`, which stores the audio as a mono recording.\n* The download request included `RequestedChannels=2` for a recording that has only one channel available.",
    "solutions": "* Retry the download without specifying a channel count. If you need to set it explicitly, retry with `RequestedChannels=1`.\n* Review the recording's channel configuration before downloading media. Use the `RecordingChannels` value from `RecordingStatusCallback` to determine whether to request one channel or two.\n* If you need separate tracks for future recordings, create the recording in dual-channel format by setting `recordingChannels=dual` on the Call resource or `channels=\"dual\"` on `<Start><Recording>`.",
    "description": "This warning appears when you request a dual-channel media file for a recording that was stored as `mono`. Twilio can return a dual-channel download only when the original recording has two channels available.",
    "date_created": "2022-02-16T20:58:58Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 16114,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Recording: Resource not in a state to accept recording action request",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio timed out on the recording action because the resource was undergoing modification and was not in an actionable state.\n\n### Possible causes\n\nCustomer initiated a SIP transfer for a recorded call, and the transfer was in-progress when Twilio received the recording action request\n\n### Possible solutions\n\nRetry the recording action request\n",
    "causes": "Customer initiated a SIP transfer for a recorded call, and the transfer was in-progress when Twilio received the recording action request",
    "solutions": "Retry the recording action request",
    "description": "Twilio timed out on the recording action because the resource was undergoing modification and was not in an actionable state.",
    "date_created": "2025-12-05T20:49:36.241Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 17000,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Forbidden to access data",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error code is returned when an account is trying to access a resource created by another account. Note: parent accounts can access subaccount resources, but subaccounts cannot access parent account resources, or other subaccounts under the same parent account.\n\n### Possible causes\n\nThis error code is also returned when an account is attempting to access a resource where Voice Insights Advanced Features has not been enabled on that account.\n\n### Possible solutions\n\nOnce enabled future calls will be retrievable via API.\n",
    "causes": "This error code is also returned when an account is attempting to access a resource where Voice Insights Advanced Features has not been enabled on that account.",
    "solutions": "Once enabled future calls will be retrievable via API.",
    "description": "This error code is returned when an account is trying to access a resource created by another account. Note: parent accounts can access subaccount resources, but subaccounts cannot access parent account resources, or other subaccounts under the same parent account.",
    "date_created": "2020-09-29T19:23:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 17001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Completed summary for this call wasn't found",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error code is returned by the /Summary API when a completed summary is requested and it doesn't exist.\n\n### Possible causes\n\nThe call SID for the call is valid, but the call summarization process was not complete at the time of the request. Summarization takes 30 minutes to complete.\n\n### Possible solutions\n\nTo see results immediately, use the ProcessingState=partial query parameter, which will return a 200, but the response will contain only a partial or incomplete information until the summarization is completed.\n",
    "causes": "The call SID for the call is valid, but the call summarization process was not complete at the time of the request. Summarization takes 30 minutes to complete.",
    "solutions": "To see results immediately, use the ProcessingState=partial query parameter, which will return a 200, but the response will contain only a partial or incomplete information until the summarization is completed.",
    "description": "This error code is returned by the /Summary API when a completed summary is requested and it doesn't exist.",
    "date_created": "2020-09-29T19:25:57Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 17002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "This call ended more than 30 days ago",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe requested resource's call\\_sid is valid, but the call ended more than 30 days before the request was made.\n\n### Possible causes\n\nVoice Insights only stores 30 days worth of call data.\n\n### Possible solutions\n\nDo not request Voice Insights resources for calls that ended more than 30 days ago.\n",
    "causes": "Voice Insights only stores 30 days worth of call data.",
    "solutions": "Do not request Voice Insights resources for calls that ended more than 30 days ago.",
    "description": "The requested resource's call\\_sid is valid, but the call ended more than 30 days before the request was made.",
    "date_created": "2020-09-29T19:30:58Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 17007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Insights Advanced Features not enabled",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe requested resource's call\\_sid is valid, but it ended before the Voice Insights product was last enabled for the requester's account.\n\n### Possible causes\n\nVoice Insights Advanced Features not enabled on the account when the call was made.\n\n### Possible solutions\n\nEnable Voice Insights Advanced Features for API access to future calls.\n",
    "causes": "Voice Insights Advanced Features not enabled on the account when the call was made.",
    "solutions": "Enable Voice Insights Advanced Features for API access to future calls.",
    "description": "The requested resource's call\\_sid is valid, but it ended before the Voice Insights product was last enabled for the requester's account.",
    "date_created": "2020-09-29T19:32:28Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 17008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Internal Server Error - Query Timeout",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nQuery Timeout\n\n### Possible causes\n\nThe requested resource exceeded the time limit for the data to be fetched from the underlying data store.\n\n### Possible solutions\n\nThe request should be retried using exponential backoff strategy until it succeeds.\n",
    "causes": "The requested resource exceeded the time limit for the data to be fetched from the underlying data store.",
    "solutions": "The request should be retried using exponential backoff strategy until it succeeds.",
    "description": "Query Timeout",
    "date_created": "2020-09-29T19:33:39Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 17009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Internal Server Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe requested resource failed to complete the request.\n\n### Possible causes\n\nThe requested resource failed to complete the request.\n\n### Possible solutions\n\nThe request should be retried using exponential backoff strategy until it succeeds.\n",
    "causes": "The requested resource failed to complete the request.",
    "solutions": "The request should be retried using exponential backoff strategy until it succeeds.",
    "description": "The requested resource failed to complete the request.",
    "date_created": "2020-09-29T19:35:59Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 17400,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid query parameter",
    "secondary_message": "Invalid query parameter",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInvalid query parameter has been passed in the request.\n\n### Possible causes\n\nInvalid format for country code, SIP URI, Client address, or phone number. Wildcard searches.\n\n### Possible solutions\n\nUtilize only two-character country code; e.g. US Do not attempt wildcard searches; e.g. from=+1206\\* Use E.164 address format for telephone numbers; e.g. +14258675309 Use SIP URI format; e.g. sip:user@domain.com Use Client address format; e.g. client:username\n",
    "causes": "Invalid format for country code, SIP URI, Client address, or phone number. Wildcard searches.",
    "solutions": "Utilize only two-character country code; e.g. US Do not attempt wildcard searches; e.g. from=+1206\\* Use E.164 address format for telephone numbers; e.g. +14258675309 Use SIP URI format; e.g. sip:user@domain.com Use Client address format; e.g. client:username",
    "description": "Invalid query parameter has been passed in the request.",
    "date_created": "2021-08-19T13:17:28Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 17500,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Missing sourceId or mediaUrl",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not create a new transcription because the request omitted both the `sourceId` and `mediaUrl` parameters.\n\nWhen you request a transcription, you must supply one of the following:\n\n- `sourceId`: A valid Recording SID (prefix `RE`).\n- `mediaUrl`: A publicly accessible URL that points to the audio file.\n\n### Possible causes\n\nThe request body doesn't include `sourceId` or `mediaUrl`.\n\n### Possible solutions\n\n- Add a `sourceId` that contains a valid Recording SID (prefix `RE`).\n- Add a `mediaUrl` that references the audio file you want to transcribe.\n\n#### Additional resources\n\n- [Transcription API](/docs/voice/api/batch-transcription-resource#create-a-transcription)\n",
    "causes": "The request body doesn't include `sourceId` or `mediaUrl`.",
    "solutions": "* Add a `sourceId` that contains a valid Recording SID (prefix `RE`).\n* Add a `mediaUrl` that references the audio file you want to transcribe.",
    "description": "Twilio could not create a new transcription because the request omitted both the `sourceId` and `mediaUrl` parameters. When you request a transcription, you must supply one of the following: - `sourceId`: A valid Recording SID (prefix `RE`).\n- `mediaUrl`: A publicly accessible URL that points to the audio file.",
    "date_created": "2026-07-30T10:34:51-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17501,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid transcriptionConfigurationId",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio can't create a new transcription because `transcriptionConfigurationId` is malformed or missing.\n\n### Possible causes\n\nThe `transcriptionConfigurationId` doesn't match the required TTID format.\n\n### Possible solutions\n\nProvide a valid ID that begins with `voice_transcriptionconfiguration_` and is followed by 26 alphanumeric characters.\n\n#### Additional resources\n\n- [Transcription Configuration API](/docs/configurations/transcription-configuration-resource)\n",
    "causes": "The `transcriptionConfigurationId` doesn't match the required TTID format.",
    "solutions": "Provide a valid ID that begins with `voice_transcriptionconfiguration_` and is followed by 26 alphanumeric characters.",
    "description": "Twilio can't create a new transcription because `transcriptionConfigurationId` is malformed or missing.",
    "date_created": "2026-07-30T10:34:51-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17502,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid sourceId — not a valid Recording SID",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio can't create a new transcription because the supplied `sourceId` isn't a valid Recording SID.\n\n### Possible causes\n\n- The value doesn't begin with the `RE` prefix.\n- The value isn't 34 characters long (the prefix plus 32 hexadecimal characters).\n- The value contains characters outside the hexadecimal range (`0–9`, `a–f`).\n\n### Possible solutions\n\n- Supply a valid Recording SID that starts with `RE` followed by 32 hexadecimal characters.\n- Verify that you copied the SID correctly from the recording resource in Console or the REST API response.\n\n#### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n- [Create a transcription with a Recording SID](/docs/voice/api/batch-transcription-resource#create-a-transcription-with-a-recording-sid)\n",
    "causes": "* The value doesn't begin with the `RE` prefix.\n* The value isn't 34 characters long (the prefix plus 32 hexadecimal characters).\n* The value contains characters outside the hexadecimal range (`0–9`, `a–f`).",
    "solutions": "* Supply a valid Recording SID that starts with `RE` followed by 32 hexadecimal characters.\n* Verify that you copied the SID correctly from the recording resource in Console or the REST API response.",
    "description": "Twilio can't create a new transcription because the supplied `sourceId` isn't a valid Recording SID.",
    "date_created": "2026-07-30T10:34:51-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17503,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid mediaUrl (unsupported scheme or malformed)",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio couldn't create a new transcription because the value of `mediaUrl` is either malformed or uses an unsupported scheme.\n\n### Possible causes\n\n- The URL uses an unsupported scheme such as `ftp://`, `file://`, or `data://`.\n- The URL is a relative path instead of an absolute URL.\n- The URL is malformed and can't be parsed.\n\n### Possible solutions\n\n- Use a fully qualified URL that begins with `https://` or `s3://`.\n- Make sure the URL is properly encoded and doesn't contain illegal characters.\n\n#### Additional resources\n\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n- [Create a transcription with a mediaUrl](/docs/voice/api/batch-transcription-resource#create-a-transcription-with-a-media-url)\n",
    "causes": "* The URL uses an unsupported scheme such as `ftp://`, `file://`, or `data://`.\n* The URL is a relative path instead of an absolute URL.\n* The URL is malformed and can't be parsed.",
    "solutions": "* Use a fully qualified URL that begins with `https://` or `s3://`.\n* Make sure the URL is properly encoded and doesn't contain illegal characters.",
    "description": "Twilio couldn't create a new transcription because the value of `mediaUrl` is either malformed or uses an unsupported scheme.",
    "date_created": "2026-07-30T10:34:51-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17510,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid participant count",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not create the transcription because the participant count is invalid.\n\n- If the request specifies `sourceId`, you can provide either 0 or 2 participants.\n- If the request specifies `mediaUrl` together with a Conversation configuration, you must provide exactly 2 participants.\n\n### Possible causes\n\n- Supplying only 1 participant\n- Supplying more than 2 participants\n\n### Possible solutions\n\n- For `mediaUrl` requests that use a Conversation configuration, provide exactly 2 participants—one per audio channel.\n- For `sourceId` requests, either omit the `participants` array or provide exactly 2 participants.\n\n#### Additional resources\n\n- [Specify participant information](/docs/voice/api/batch-transcription-resource#specify-participant-information)\n",
    "causes": "* Supplying only 1 participant\n* Supplying more than 2 participants",
    "solutions": "* For `mediaUrl` requests that use a Conversation configuration, provide exactly 2 participants—one per audio channel.\n* For `sourceId` requests, either omit the `participants` array or provide exactly 2 participants.",
    "description": "Twilio could not create the transcription because the participant count is invalid. - If the request specifies `sourceId`, you can provide either 0 or 2 participants.\n- If the request specifies `mediaUrl` together with a Conversation configuration, you must provide exactly 2 participants.",
    "date_created": "2026-07-31T10:59:35-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17511,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid audioChannelIndex. Must be 1 or 2",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not create a new transcription because a participant's `audioChannelIndex` value is outside the valid range.\n\n### Possible causes\n\nThe `audioChannelIndex` is 0, negative, or greater than 2.\n\n### Possible solutions\n\nSet `audioChannelIndex` to 1 or 2 for each participant.\n\n#### Additional resources\n\n- [Specify participant information](/docs/voice/api/batch-transcription-resource#specify-participant-information)\n",
    "causes": "The `audioChannelIndex` is 0, negative, or greater than 2.",
    "solutions": "Set `audioChannelIndex` to 1 or 2 for each participant.",
    "description": "Twilio could not create a new transcription because a participant's `audioChannelIndex` value is outside the valid range.",
    "date_created": "2026-07-31T10:59:35-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17512,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Non-integer audioChannelIndex",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio can't create the transcription because the participant's `audioChannelIndex` isn't an integer. Twilio does not coerce floating-point values to integers.\n\n### Possible causes\n\n`audioChannelIndex` is a floating-point number (for example, `1.5`) instead of an integer.\n\n### Possible solutions\n\nSet `audioChannelIndex` to an integer, such as `1` or `2`.\n\n#### Additional resources\n\n- [Specify participant information](/docs/voice/api/batch-transcription-resource#specify-participant-information)\n",
    "causes": "`audioChannelIndex` is a floating-point number (for example, `1.5`) instead of an integer.",
    "solutions": "Set `audioChannelIndex` to an integer, such as `1` or `2`.",
    "description": "Twilio can't create the transcription because the participant's `audioChannelIndex` isn't an integer. Twilio does not coerce floating-point values to integers.",
    "date_created": "2026-07-31T10:59:35-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17513,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Duplicate audio channel",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio cannot create a new transcription when both participants share the same `audioChannelIndex` value.\n\n### Possible causes\n\n- Both participants are assigned to channel 1.\n- Both participants are assigned to channel 2.\n\n### Possible solutions\n\n- Assign one participant to channel 1 and the other participant to channel 2.\n- Make sure each participant uses a unique `audioChannelIndex`.\n\n#### Additional resources\n\n- [Specify participant information](/docs/voice/api/batch-transcription-resource#specify-participant-information)\n",
    "causes": "* Both participants are assigned to channel 1.\n* Both participants are assigned to channel 2.",
    "solutions": "* Assign one participant to channel 1 and the other participant to channel 2.\n* Make sure each participant uses a unique `audioChannelIndex`.",
    "description": "Twilio cannot create a new transcription when both participants share the same `audioChannelIndex` value.",
    "date_created": "2026-07-31T10:59:35-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17514,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid participant type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not create a new transcription because the participant `type` value is not recognized.\n\n### Possible causes\n\nThe provided `type` value is not one of the allowed options.\n\n### Possible solutions\n\nSet `type` to one of the following values: `CUSTOMER`, `HUMAN_AGENT`, or `AI_AGENT`.\n\n#### Additional resources\n\n- [Specify participant information](/docs/voice/api/batch-transcription-resource#specify-participant-information)\n",
    "causes": "The provided `type` value is not one of the allowed options.",
    "solutions": "Set `type` to one of the following values: `CUSTOMER`, `HUMAN_AGENT`, or `AI_AGENT`.",
    "description": "Twilio could not create a new transcription because the participant `type` value is not recognized.",
    "date_created": "2026-07-31T10:59:35-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17515,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Inconsistent participant types",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio can't create a new transcription when the request includes a `type` property for some participants but not for others. The `type` property must be either:\n\n- Provided for every participant, or\n- Omitted for all participants (so the transcription service applies the configuration defaults).\n\n### Possible causes\n\nAt least one participant object includes a `type` property, while another participant object omits it or sets it to `null`.\n\n### Possible solutions\n\n- Add a valid `type` value to every participant object in the request.\n- Alternatively, remove the `type` property from all participant objects to allow the service to apply the default type.\n\n#### Additional resources\n\n- [Specify participant information](/docs/voice/api/batch-transcription-resource#specify-participant-information)\n",
    "causes": "At least one participant object includes a `type` property, while another participant object omits it or sets it to `null`.",
    "solutions": "* Add a valid `type` value to every participant object in the request.\n* Alternatively, remove the `type` property from all participant objects to allow the service to apply the default type.",
    "description": "Twilio can't create a new transcription when the request includes a `type` property for some participants but not for others. The `type` property must be either: - Provided for every participant, or\n- Omitted for all participants (so the transcription service applies the configuration defaults).",
    "date_created": "2026-07-31T10:59:35-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17516,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Participants must include at least one CUSTOMER",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio cannot create a new transcription because no participant is assigned the type `CUSTOMER`. Conversation processing requires at least one `CUSTOMER` participant.\n\n### Possible causes\n\n- No participant is designated as `CUSTOMER`.\n- All participants are designated as `HUMAN_AGENT` or `AI_AGENT`.\n\n### Possible solutions\n\nDesignate at least one participant as `CUSTOMER`.\n\n#### Additional resources\n\n- [Specify participant information](/docs/voice/api/batch-transcription-resource#specify-participant-information)\n",
    "causes": "* No participant is designated as `CUSTOMER`.\n* All participants are designated as `HUMAN_AGENT` or `AI_AGENT`.",
    "solutions": "Designate at least one participant as `CUSTOMER`.",
    "description": "Twilio cannot create a new transcription because no participant is assigned the type `CUSTOMER`. Conversation processing requires at least one `CUSTOMER` participant.",
    "date_created": "2026-07-31T10:59:35-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17517,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Missing participant address",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio cannot create a new transcription because each participant must include an `address` when you specify a `mediaUrl` in the Conversation configuration.\n\n### Possible causes\n\nThe `address` field is `null` or blank.\n\n### Possible solutions\n\nSupply an `address` for every participant. The value must be either an E.164-formatted phone number or another valid participant identifier.\n\n#### Additional resources\n\n- [Specify participant information](/docs/voice/api/batch-transcription-resource#specify-participant-information)\n",
    "causes": "The `address` field is `null` or blank.",
    "solutions": "Supply an `address` for every participant. The value must be either an E.164-formatted phone number or another valid participant identifier.",
    "description": "Twilio cannot create a new transcription because each participant must include an `address` when you specify a `mediaUrl` in the Conversation configuration.",
    "date_created": "2026-07-31T10:59:35-05:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 17530,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Transcription configuration not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to create a new transcription because the specified `transcriptionConfigurationId` doesn't exist or doesn't belong to this account.\n\n### Possible causes\n\n- The transcription configuration was deleted.\n- The `transcriptionConfigurationId` is incorrect.\n- The configuration belongs to a different account.\n\n### Possible solutions\n\nVerify the configuration exists and that it belongs to your account using the Transcription Configuration API.\n",
    "causes": "* The transcription configuration was deleted.\n* The `transcriptionConfigurationId` is incorrect.\n* The configuration belongs to a different account.",
    "solutions": "Verify the configuration exists and that it belongs to your account using the Transcription Configuration API.",
    "description": "Twilio failed to create a new transcription because the specified `transcriptionConfigurationId` doesn't exist or doesn't belong to this account.",
    "date_created": "2026-07-21T16:09:26-05:00",
    "last_updated": "2026-07-24T11:44:52-05:00"
  },
  {
    "code": 17531,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Cannot transcribe — account has PCI/HIPAA restrictions",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to create a new transcription because the account has PCI or HIPAA compliance flags enabled.\n\n### Possible causes\n\n- The account has PCI or HIPAA compliance flags enabled.\n\n### Possible solutions\n\n- Use `mediaUrl` with a pre-processed recording that meets compliance requirements, or contact support.\n",
    "causes": "* The account has PCI or HIPAA compliance flags enabled.",
    "solutions": "* Use `mediaUrl` with a pre-processed recording that meets compliance requirements, or contact support.",
    "description": "Twilio failed to create a new transcription because the account has PCI or HIPAA compliance flags enabled.",
    "date_created": "2026-07-24T11:44:52-05:00",
    "last_updated": "2026-07-24T11:44:52-05:00"
  },
  {
    "code": 17532,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Account restricted — V2 transcription customer",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to create a new transcription because this account is configured for Voice Intelligence V2 and cannot use the V3 API.\n\n### Possible causes\n\n- The account has the `voice.transcriptions.v2.customer` feature flag.\n\n### Possible solutions\n\n- Use the Voice Intelligence V2 API, or [contact support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support) to migrate to V3.\n",
    "causes": "* The account has the `voice.transcriptions.v2.customer` feature flag.",
    "solutions": "* Use the Voice Intelligence V2 API, or [contact support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support) to migrate to V3.",
    "description": "Twilio failed to create a new transcription because this account is configured for Voice Intelligence V2 and cannot use the V3 API.",
    "date_created": "2026-07-24T11:44:52-05:00",
    "last_updated": "2026-07-24T11:44:52-05:00"
  },
  {
    "code": 17533,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Recording not eligible for transcription",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to create a new transcription because the referenced recording cannot be transcribed.\n\n### Possible causes\n\n- The recording is not in `completed` status.\n- The recording uses encryption.\n- The recording uses external storage.\n\n### Possible solutions\n\n- Ensure the recording has completed processing. \n- Use `mediaUrl` for encrypted or externally-stored recordings.\n",
    "causes": "* The recording is not in `completed` status.\n* The recording uses encryption.\n* The recording uses external storage.",
    "solutions": "* Ensure the recording has completed processing.\n* Use `mediaUrl` for encrypted or externally-stored recordings.",
    "description": "Twilio failed to create a new transcription because the referenced recording cannot be transcribed.",
    "date_created": "2026-07-24T11:44:52-05:00",
    "last_updated": "2026-07-24T11:44:52-05:00"
  },
  {
    "code": 17534,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Idempotency key payload mismatch",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA request with the same `Idempotency-Key` was previously submitted with a different payload. The original response is returned only when the payload matches exactly.\n\n### Possible causes\n\n- Reusing an idempotency key with a different request body.\n\n### Possible solutions\n\n- Use a new UUID for a different request, or submit the identical payload to retrieve the original response.\n",
    "causes": "* Reusing an idempotency key with a different request body.",
    "solutions": "* Use a new UUID for a different request, or submit the identical payload to retrieve the original response.",
    "description": "A request with the same `Idempotency-Key` was previously submitted with a different payload. The original response is returned only when the payload matches exactly.",
    "date_created": "2026-07-24T11:44:52-05:00",
    "last_updated": "2026-07-24T11:44:52-05:00"
  },
  {
    "code": 17535,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Pagination Limit Exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request to list transcriptions failed because the requested `sourceId` has more historical transcriptions than the service can paginate. The pagination limit is a fixed system constraint, not the result of invalid request parameters.\n\n### Possible causes\n\n- The `sourceId` stores more transcriptions than a single paginated request can process.\n\n### Possible solutions\n\n- Adjusting the date range or other query filters doesn't help. The limit applies to the total number of stored transcriptions for the `sourceId`, not to the size of the filtered result. Re-trying the request produces the same error.\n- Whenever possible, use a more granular `sourceId`, or retrieve individual transcriptions directly by their SIDs.\n- If you must list transcriptions for a high-volume `sourceId`, [contact Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).\n",
    "causes": "* The `sourceId` stores more transcriptions than a single paginated request can process.",
    "solutions": "* Adjusting the date range or other query filters doesn't help. The limit applies to the total number of stored transcriptions for the `sourceId`, not to the size of the filtered result. Re-trying the request produces the same error.\n* Whenever possible, use a more granular `sourceId`, or retrieve individual transcriptions directly by their SIDs.\n* If you must list transcriptions for a high-volume `sourceId`, [contact Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).",
    "description": "The request to list transcriptions failed because the requested `sourceId` has more historical transcriptions than the service can paginate. The pagination limit is a fixed system constraint, not the result of invalid request parameters.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-08T16:16:14-05:00"
  },
  {
    "code": 17550,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid media URL",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio can't transcribe the audio because it can't resolve the media URL. The transcription is marked as `failed`.\n\n### Possible causes\n\n- DNS resolution fails for the host in the media URL.\n- The URL points to a host that doesn't exist.\n- The host or storage bucket isn't on Twilio's allowed list.\n\n### Possible solutions\n\n- Verify that the media URL is correct and publicly accessible, or provide a valid pre-signed URL.\n\n### Additional resources\n\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* DNS resolution fails for the host in the media URL.\n* The URL points to a host that doesn't exist.\n* The host or storage bucket isn't on Twilio's allowed list.",
    "solutions": "* Verify that the media URL is correct and publicly accessible, or provide a valid pre-signed URL.",
    "description": "Twilio can't transcribe the audio because it can't resolve the media URL. The transcription is marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17551,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to download audio file",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not transcribe the audio because it could not download the media file after multiple attempts. The transcription is marked as `failed`.\n\n### Possible causes\n\n- The request to the media host timed out.\n- The connection was reset during the download.\n- The media host returned a server error.\n\n### Possible solutions\n\n- Verify that the media file is publicly accessible at the specified URL.\n- Confirm that the hosting server is online and responsive.\n- Make sure the URL uses HTTPS and does not require authentication or IP allow-listing.\n\n### Additional resources\n\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* The request to the media host timed out.\n* The connection was reset during the download.\n* The media host returned a server error.",
    "solutions": "* Verify that the media file is publicly accessible at the specified URL.\n* Confirm that the hosting server is online and responsive.\n* Make sure the URL uses HTTPS and does not require authentication or IP allow-listing.",
    "description": "Twilio could not transcribe the audio because it could not download the media file after multiple attempts. The transcription is marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17552,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to download media file: not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not transcribe the audio because the media URL returned an HTTP 404 status code. The transcription is marked as `failed`.\n\n### Possible causes\n\n- The file was deleted before Twilio tried to download it.\n- The media URL is incorrect.\n- A pre-signed URL expired before the download started.\n\n### Possible solutions\n\n- Confirm that the media file exists at the specified URL and is reachable by Twilio.\n- If you use a pre-signed URL, regenerate it with a longer validity period and resubmit the transcription request.\n\n### Additional resources\n\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* The file was deleted before Twilio tried to download it.\n* The media URL is incorrect.\n* A pre-signed URL expired before the download started.",
    "solutions": "* Confirm that the media file exists at the specified URL and is reachable by Twilio.\n* If you use a pre-signed URL, regenerate it with a longer validity period and resubmit the transcription request.",
    "description": "Twilio could not transcribe the audio because the media URL returned an HTTP 404 status code. The transcription is marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17553,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to download media file: unauthorized",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not transcribe the audio file because the media URL responded with HTTP status 401 (Unauthorized) or 403 (Forbidden). The transcription is marked as `failed`.\n\n### Possible causes\n\n- The resource is protected and requires credentials.\n- A pre-signed URL expired.\n- Access credentials were missing from the URL.\n\n### Possible solutions\n\n- Confirm that the media URL is publicly accessible or includes valid, non-expired credentials.\n- If you are using a pre-signed URL, regenerate it with an appropriate expiration time.\n\n### Additional resources\n\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* The resource is protected and requires credentials.\n* A pre-signed URL expired.\n* Access credentials were missing from the URL.",
    "solutions": "* Confirm that the media URL is publicly accessible or includes valid, non-expired credentials.\n* If you are using a pre-signed URL, regenerate it with an appropriate expiration time.",
    "description": "Twilio could not transcribe the audio file because the media URL responded with HTTP status 401 (Unauthorized) or 403 (Forbidden). The transcription is marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17554,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Media content is empty",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not transcribe the audio because the media duration is shorter than the required minimum of 2 seconds. The transcription is marked as `failed`.\n\n### Possible causes\n\n- The audio file contains no audio content.\n- The recording is shorter than 2 seconds.\n\n### Possible solutions\n\n- Confirm that the media file contains at least 2 seconds of audible content before submitting it for transcription.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n",
    "causes": "* The audio file contains no audio content.\n* The recording is shorter than 2 seconds.",
    "solutions": "* Confirm that the media file contains at least 2 seconds of audible content before submitting it for transcription.",
    "description": "Twilio could not transcribe the audio because the media duration is shorter than the required minimum of 2 seconds. The transcription is marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17555,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media duration exceeds maximum (8 hours)",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not transcribe the recording because its duration is longer than eight hours, which is the maximum length supported by batch transcription. The transcription is marked as `failed`.\n\n### Possible causes\n\n- The audio file is longer than eight hours.\n\n### Possible solutions\n\n- Split the source media into segments shorter than eight hours (for example, 7:59:59 or less) and transcribe each segment separately.\n- Verify the duration of your media file before you start a transcription job to avoid this error.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* The audio file is longer than eight hours.",
    "solutions": "* Split the source media into segments shorter than eight hours (for example, 7:59:59 or less) and transcribe each segment separately.\n* Verify the duration of your media file before you start a transcription job to avoid this error.",
    "description": "Twilio could not transcribe the recording because its duration is longer than eight hours, which is the maximum length supported by batch transcription. The transcription is marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17556,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media format is not supported",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not transcribe the recording because the media format is not supported. The transcription is marked as `failed`.\n\n### Possible causes\n\n- The media file is not in a supported format.\n\n### Solutions\n\n- Convert the recording to a supported format—WAV, MP3, or FLAC—and resubmit the transcription request.\n\n### Additional resources\n\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* The media file is not in a supported format.",
    "solutions": null,
    "description": "Twilio could not transcribe the recording because the media format is not supported. The transcription is marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17557,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media sample rate below minimum (8 kHz)",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio because the media sample rate is below the minimum required 8 kHz. The transcription has been marked as `failed`.\n\n### Possible causes\n\n- The audio was recorded at a sample rate below 8 kHz.\n\n### Possible solutions\n\n- Record or re-encode the audio at a sample rate of 8 kHz or higher (telephone quality or better).\n\n### Additional resources\n\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* The audio was recorded at a sample rate below 8 kHz.",
    "solutions": "* Record or re-encode the audio at a sample rate of 8 kHz or higher (telephone quality or better).",
    "description": "Twilio failed to transcribe audio because the media sample rate is below the minimum required 8 kHz. The transcription has been marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17558,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Corrupted media",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio because the media file is corrupted and cannot be decoded. The transcription has been marked as `failed`.\n\n### Possible causes\n\n- The file was corrupted during transfer.\n- The upload was incomplete.\n- The file has an encoding error.\n\n### Possible solutions\n\n- Verify that the media file is not corrupted, or provide a different source recording.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* The file was corrupted during transfer.\n* The upload was incomplete.\n* The file has an encoding error.",
    "solutions": "* Verify that the media file is not corrupted, or provide a different source recording.",
    "description": "Twilio failed to transcribe audio because the media file is corrupted and cannot be decoded. The transcription has been marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17559,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Too many channels. Maximum is 2",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe the audio because the file contains more than two channels. The transcription is marked as `failed`.\n\n### Possible causes\n\n- The recording has more than two channels, for example, a conference recording with several participants.\n\n### Possible solutions\n\n- Downmix the audio to stereo (two channels) or submit a dual-channel recording.\n\n### Additional resources\n\n- [Audio channel formats](/docs/voice/api/batch-transcription-resource#audio-channel-formats)\n",
    "causes": "* The recording has more than two channels, for example, a conference recording with several participants.",
    "solutions": "* Downmix the audio to stereo (two channels) or submit a dual-channel recording.",
    "description": "Twilio failed to transcribe the audio because the file contains more than two channels. The transcription is marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17560,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media size exceeds maximum (3 GiB)",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio because the file exceeds the maximum allowed size of 3 GiB. The transcription has been marked as `failed`.\n\n### Possible causes\n\n- The recording is extremely long.\n- The recording is stored in an uncompressed format (for example, WAV), which increases file size.\n\n### Possible solutions\n\n- Compress the audio by using a format such as MP3 or FLAC.\n- Split the audio into several shorter files, each smaller than 3 GiB.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n- [Transcribe an external recording](/docs/voice/api/batch-transcription-resource#transcribe-an-external-recording)\n",
    "causes": "* The recording is extremely long.\n* The recording is stored in an uncompressed format (for example, WAV), which increases file size.",
    "solutions": "* Compress the audio by using a format such as MP3 or FLAC.\n* Split the audio into several shorter files, each smaller than 3 GiB.",
    "description": "Twilio failed to transcribe audio because the file exceeds the maximum allowed size of 3 GiB. The transcription has been marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17561,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to transcribe",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio because of an internal issue. The transcription has been marked as `failed`.\n\n### Possible cause\n\nAn internal processing error occurred after all retries were exhausted.\n\n### Possible solution\n\nRetry the transcription request. If the issue persists, [contact Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).\n",
    "causes": null,
    "solutions": null,
    "description": "Twilio failed to transcribe audio because of an internal issue. The transcription has been marked as `failed`.",
    "date_created": "2026-09-08T16:16:14-05:00",
    "last_updated": "2026-09-17T13:23:40-05:00"
  },
  {
    "code": 17564,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Webhook payload exceeds maximum size",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio completed the transcription, but skipped the status callback because the serialized webhook payload exceeded the 1 MB limit.\n\nThe transcription record itself is unaffected and still reports as `completed`. Unless you have set a `conversationConfigurationId`, only the status callback delivers the transcript content. If you haven't, you can't recover the content, because fetching a transcription returns its metadata and not the transcript.\n\n### Possible causes\n\n- The transcription ran long and contains many sentences.\n- The word-level details in the result exceed 1 MB when serialized.\n\n### Possible solutions\n\n- Set a `conversationConfigurationId` on your Transcription Configuration. This results in Twilio storing the transcript. When the callback isn't delivered, you can retrieve it. You can create a configuration with the [Conversations API](/docs/api/conversations/v2/configuration/create-configuration), in the Twilio Console, or through [Conversation Orchestrator](/docs/conversations/orchestrator).\n- Set this in advance for critical workloads. It can't be applied retroactively to a transcription whose callback has already been skipped.\n\n### Additional resources\n\n- [Receive transcription results with a webhook](/docs/voice/api/batch-transcription-resource#receive-transcription-results-with-a-webhook)\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n",
    "causes": "* The transcription ran long and contains many sentences.\n* The word-level details in the result exceed 1 MB when serialized.",
    "solutions": "* Set a `conversationConfigurationId` on your Transcription Configuration. This results in Twilio storing the transcript. When the callback isn't delivered, you can retrieve it. You can create a configuration with the [Conversations API](/docs/api/conversations/v2/configuration/create-configuration), in the Twilio Console, or through [Conversation Orchestrator](/docs/conversations/orchestrator).\n* Set this in advance for critical workloads. It can't be applied retroactively to a transcription whose callback has already been skipped.",
    "description": "Twilio completed the transcription, but skipped the status callback because the serialized webhook payload exceeded the 1 MB limit. The transcription record itself is unaffected and still reports as `completed`. Unless you have set a `conversationConfigurationId`, only the status callback delivers the transcript content. If you haven't, you can't recover the content, because fetching a transcription returns its metadata and not the transcript.",
    "date_created": "2026-10-01T19:01:43-05:00",
    "last_updated": "2026-10-01T19:01:43-05:00"
  },
  {
    "code": 17580,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Status callback response error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio attempted to deliver a transcription status event to the configured callback URL and received an HTTP error response. The transcription itself is unaffected; only the notification failed.\n\n### Possible causes\n\n- The configured callback URL is incorrect or no longer serves the endpoint.\n- Your application returned an error while handling the webhook.\n- Your application was unavailable when Twilio delivered the event.\n- Twilio couldn't establish a connection to the callback URL (for example, a firewall blocked it or the server was down).\n\nTwilio retries a `5xx` response and a `408`, `425` or `429` response up to three times before reporting this error. Other `4xx` responses are not retried.\n\n### Possible solutions\n\n- Confirm that `transcriptionStatusCallback` points at the correct URL.\n- Ensure your endpoint responds with an HTTP 2xx status code.\n- Check your application logs for errors raised while handling the request.\n- Allow Twilio's IP addresses through your firewall.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n",
    "causes": "* The configured callback URL is incorrect or no longer serves the endpoint.\n* Your application returned an error while handling the webhook.\n* Your application was unavailable when Twilio delivered the event.\n* Twilio couldn't establish a connection to the callback URL (for example, a firewall blocked it or the server was down). Twilio retries a `5xx` response and a `408`, `425` or `429` response up to three times before reporting this error. Other `4xx` responses are not retried.",
    "solutions": "* Confirm that `transcriptionStatusCallback` points at the correct URL.\n* Ensure your endpoint responds with an HTTP 2xx status code.\n* Check your application logs for errors raised while handling the request.\n* Allow Twilio's IP addresses through your firewall.",
    "description": "Twilio attempted to deliver a transcription status event to the configured callback URL and received an HTTP error response. The transcription itself is unaffected; only the notification failed.",
    "date_created": "2026-10-01T19:01:43-05:00",
    "last_updated": "2026-10-01T19:01:43-05:00"
  },
  {
    "code": 17581,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Status callback timed out",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio attempted to deliver a transcription status event, but your application did not respond before the timeout elapsed. The transcription itself is unaffected; only the notification failed.\n\n### Possible causes\n\n- Your application took too long to respond.\n- Network latency delayed the response.\n- The webhook handler performed slow work before replying.\n\n### Possible solutions\n\n- Respond to the webhook within the timeout window, then process the payload asynchronously.\n- Acknowledge the request before performing any long-running work.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n",
    "causes": "* Your application took too long to respond.\n* Network latency delayed the response.\n* The webhook handler performed slow work before replying.",
    "solutions": "* Respond to the webhook within the timeout window, then process the payload asynchronously.\n* Acknowledge the request before performing any long-running work.",
    "description": "Twilio attempted to deliver a transcription status event, but your application did not respond before the timeout elapsed. The transcription itself is unaffected; only the notification failed.",
    "date_created": "2026-10-01T19:01:43-05:00",
    "last_updated": "2026-10-01T19:01:43-05:00"
  },
  {
    "code": 17582,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Status callback unreachable",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio couldn't connect to the configured callback URL after all retry attempts, so it couldn't deliver the transcription status event. The transcription itself is unaffected; only the status notification failed.\n\n### Possible causes\n\n- DNS resolution failed for the callback host.\n- A firewall blocked the connection from Twilio.\n- The server behind the callback URL was down.\n\n### Possible solutions\n\n- Verify that the callback URL resolves and is reachable from the public internet.\n- Allow Twilio's IP addresses through your firewall.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n",
    "causes": "* DNS resolution failed for the callback host.\n* A firewall blocked the connection from Twilio.\n* The server behind the callback URL was down.",
    "solutions": "* Verify that the callback URL resolves and is reachable from the public internet.\n* Allow Twilio's IP addresses through your firewall.",
    "description": "Twilio couldn't connect to the configured callback URL after all retry attempts, so it couldn't deliver the transcription status event. The transcription itself is unaffected; only the status notification failed.",
    "date_created": "2026-10-01T19:01:43-05:00",
    "last_updated": "2026-10-01T19:01:43-05:00"
  },
  {
    "code": 17583,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Status callback response too large",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio delivered the transcription status event to the configured callback URL, but the application's HTTP response body exceeded the maximum permitted size. The transcription itself is not affected.\n\n### Possible causes\n\n- The webhook handler returned an HTML page (for example, a full error page) instead of a lightweight acknowledgment.\n- The handler returned verbose JSON document or a stack trace in the response body.\n\n### Possible solutions\n\n- Respond with HTTP `204 (No Content)` or another minimal `2xx` status code. Twilio does not read or store the body of status-callback responses.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n",
    "causes": "* The webhook handler returned an HTML page (for example, a full error page) instead of a lightweight acknowledgment.\n* The handler returned verbose JSON document or a stack trace in the response body.",
    "solutions": "* Respond with HTTP `204 (No Content)` or another minimal `2xx` status code. Twilio does not read or store the body of status-callback responses.",
    "description": "Twilio delivered the transcription status event to the configured callback URL, but the application's HTTP response body exceeded the maximum permitted size. The transcription itself is not affected.",
    "date_created": "2026-10-01T19:01:43-05:00",
    "last_updated": "2026-10-01T19:01:43-05:00"
  },
  {
    "code": 17584,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Status callback redirect limit exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio attempted to deliver a transcription status event, but the callback URL exceeded the maximum number of HTTP redirects. The transcription was created successfully, but Twilio couldn't deliver the status notification.\n\n### Possible causes\n\n- The callback URL redirects in a loop.\n- An HTTP-to-HTTPS redirect chain adds more hops than are permitted.\n- A load balancer redirects to a URL that redirects back.\n\n### Possible solutions\n\n- Configure the final destination URL directly in the transcription configuration and remove the intermediate redirects.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n",
    "causes": "* The callback URL redirects in a loop.\n* An HTTP-to-HTTPS redirect chain adds more hops than are permitted.\n* A load balancer redirects to a URL that redirects back.",
    "solutions": "* Configure the final destination URL directly in the transcription configuration and remove the intermediate redirects.",
    "description": "Twilio attempted to deliver a transcription status event, but the callback URL exceeded the maximum number of HTTP redirects. The transcription was created successfully, but Twilio couldn't deliver the status notification.",
    "date_created": "2026-10-01T19:01:43-05:00",
    "last_updated": "2026-10-01T19:01:43-05:00"
  },
  {
    "code": 17585,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid status callback URL",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe configured status callback URL isn't a valid, well-formed HTTP or HTTPS URL, so Twilio did not attempt to deliver the transcription status event. The transcription itself is unaffected.\n\n### Possible causes\n\n- The URL has a malformed scheme.\n- The URL is missing a host.\n- The URL uses a protocol other than HTTP or HTTPS.\n\n### Possible solutions\n\n- Correct the callback URL in the transcription configuration so that it is a fully-qualified HTTP or HTTPS URL.\n\n### Additional resources\n\n- [Transcribe a Twilio Recording](/docs/voice/api/batch-transcription-resource#transcribe-a-twilio-recording)\n",
    "causes": "* The URL has a malformed scheme.\n* The URL is missing a host.\n* The URL uses a protocol other than HTTP or HTTPS.",
    "solutions": "* Correct the callback URL in the transcription configuration so that it is a fully-qualified HTTP or HTTPS URL.",
    "description": "The configured status callback URL isn't a valid, well-formed HTTP or HTTPS URL, so Twilio did not attempt to deliver the transcription status event. The transcription itself is unaffected.",
    "date_created": "2026-10-01T19:01:43-05:00",
    "last_updated": "2026-10-01T19:01:43-05:00"
  },
  {
    "code": 18001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid document submission",
    "secondary_message": "The uploaded document does not match the Regulatory Requirements criteria. Please upload a Supporting Document that matches the necessary Regulatory Requirements.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe document you have uploaded does not match our Regulatory Requirements criteria.\n\n### Possible causes\n\nThe document you have uploaded does not match our acceptable documentation for the Regulatory Requirements.\n\n### Possible solutions\n\nPlease re-submit after uploading a Supporting Document according to our Guidelines. https://www.twilio.com/en-us/guidelines/regulatory\n",
    "causes": "The document you have uploaded does not match our acceptable documentation for the Regulatory Requirements.",
    "solutions": "Please re-submit after uploading a Supporting Document according to our Guidelines. https://www.twilio.com/en-us/guidelines/regulatory",
    "description": "The document you have uploaded does not match our Regulatory Requirements criteria.",
    "date_created": "2024-07-17T09:33:04Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Illegible or blurry document submission",
    "secondary_message": "The document you have uploaded is not legible. Please re-submit a clear copy of the supporting document.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe document you have uploaded is not legible or blurry.\n\n### Possible causes\n\nBlur or bad quality image uploaded.\n\n### Possible solutions\n\nPlease re-submit after uploading a clear copy of the supporting document\n",
    "causes": "Blur or bad quality image uploaded.",
    "solutions": "Please re-submit after uploading a clear copy of the supporting document",
    "description": "The document you have uploaded is not legible or blurry.",
    "date_created": "2024-07-04T09:44:09Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Expired or invalid document submission",
    "secondary_message": "The submitted Supporting Document is expired or is invalid. Please resubmit a valid supporting document.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe supporting document you submitted is either expired or invalid.\n\n### Possible causes\n\nThe Supporting Document you uploaded has expired or it does not show an expiration date.\n\n### Possible solutions\n\nPlease resubmit with a valid supporting document.\n",
    "causes": "The Supporting Document you uploaded has expired or it does not show an expiration date.",
    "solutions": "Please resubmit with a valid supporting document.",
    "description": "The supporting document you submitted is either expired or invalid.",
    "date_created": "2024-07-04T09:45:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Redactions in document.",
    "secondary_message": "The submitted Supporting Document had redactions or covered information. Re-upload the Supporting Document without any redactions or covered portions.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe supporting document you submitted had redactions or covered information that is required for the regulatory requirement.\n\n### Possible causes\n\nUploading a document with obscured or redacted information.\n\n### Possible solutions\n\nRe-upload the Supporting Document without any redactions or covered portions. For any ID document, make sure to provide a color copy of the ID document without any reductions. Make sure that all the edges of the ID document and MRZ data for passports are visible.\n",
    "causes": "Uploading a document with obscured or redacted information.",
    "solutions": "Re-upload the Supporting Document without any redactions or covered portions. For any ID document, make sure to provide a color copy of the ID document without any reductions. Make sure that all the edges of the ID document and MRZ data for passports are visible.",
    "description": "The supporting document you submitted had redactions or covered information that is required for the regulatory requirement.",
    "date_created": "2024-07-04T09:47:49Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing information",
    "secondary_message": "There is missing information. Please fill out the required form fields.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nOne or more of the required criteria is missing.\n\n### Possible causes\n\nYou may have missed sharing the required information.\n\n### Possible solutions\n\nPlease fill out the required form fields and resubmit the bundle.\n",
    "causes": "You may have missed sharing the required information.",
    "solutions": "Please fill out the required form fields and resubmit the bundle.",
    "description": "One or more of the required criteria is missing.",
    "date_created": "2024-07-04T09:48:49Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Information does not match the supporting document",
    "secondary_message": "The information does not match the regulatory requirement.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe information you shared does not match the supporting document.\n\n### Possible causes\n\nThe information you shared does not match the supporting document.\n\n### Possible solutions\n\nYou may have attached the wrong document or shared inaccurate information.\n",
    "causes": "The information you shared does not match the supporting document.",
    "solutions": "You may have attached the wrong document or shared inaccurate information.",
    "description": "The information you shared does not match the supporting document.",
    "date_created": "2024-07-17T09:38:21Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Incomplete document submission.",
    "secondary_message": "The Proof of Identity document needs to show the front and back of the ID. Please upload a copy of both sides in a single document.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Proof of Identity needs to show the front and back of the ID. Your uploaded proof of Identity does not have both sides.\n\n### Possible causes\n\nYour uploaded proof of Identity does not have both sides.\n\n### Possible solutions\n\nPlease upload a copy of both sides and make sure to upload them in one document.\n",
    "causes": "Your uploaded proof of Identity does not have both sides.",
    "solutions": "Please upload a copy of both sides and make sure to upload them in one document.",
    "description": "The Proof of Identity needs to show the front and back of the ID. Your uploaded proof of Identity does not have both sides.",
    "date_created": "2024-07-04T09:59:49Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Name mismatch (Proof of Identity)",
    "secondary_message": "The name on the Proof of Identity document does not match what's submitted in the first name / last name fields. Please ensure the document and field information match.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe individual's name on the Proof of Identity document does not match the information entered in the Bundle.\n\n### Possible causes\n\nThe name on the Proof of Identity document does not match what's submitted in the first name / last name fields.\n\n### Possible solutions\n\nPlease ensure the names match exactly and that all the individual's last names are provided. Please amend firstly the name in the Business & legal representative information / Individual information section of the bundle, and then in the Bundle fields under the uploaded supporting document.\n",
    "causes": "The name on the Proof of Identity document does not match what's submitted in the first name / last name fields.",
    "solutions": "Please ensure the names match exactly and that all the individual's last names are provided. Please amend firstly the name in the Business & legal representative information / Individual information section of the bundle, and then in the Bundle fields under the uploaded supporting document.",
    "description": "The individual's name on the Proof of Identity document does not match the information entered in the Bundle.",
    "date_created": "2024-07-04T10:01:40Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Nationality mismatch (Proof of Identity)",
    "secondary_message": "There is a mismatch between the nationality provided in the form and the Proof of Identity document. Please ensure that the information matches between form fields and Proof of Identity document.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe information about the nationality provided in the Bundle does not match the information on the upload Proof of Identity.\n\n### Possible causes\n\nYou may have uploaded a wrong document.\n\n### Possible solutions\n\nPlease resubmit with the appropriate identity document. Please ensure the document uploaded and the information you provided match.\n",
    "causes": "You may have uploaded a wrong document.",
    "solutions": "Please resubmit with the appropriate identity document. Please ensure the document uploaded and the information you provided match.",
    "description": "The information about the nationality provided in the Bundle does not match the information on the upload Proof of Identity.",
    "date_created": "2024-07-04T10:02:40Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Business registration number mismatch.",
    "secondary_message": "Business registration number does not match with the local company register or the excerpt from the commercial register that you may have submitted. Please resubmit with the accurate Business Registration number.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe business registration number provided does not match the supporting document.\n\n### Possible causes\n\nThe submitted business registration number does not align with the local company register or excerpt from the commercial register.\n\n### Possible solutions\n\nPlease resubmit with the accurate business registration number to ensure it matches the local company register or commercial register.\n",
    "causes": "The submitted business registration number does not align with the local company register or excerpt from the commercial register.",
    "solutions": "Please resubmit with the accurate business registration number to ensure it matches the local company register or commercial register.",
    "description": "The business registration number provided does not match the supporting document.",
    "date_created": "2024-07-17T09:41:23Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18011,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Business name mismatch",
    "secondary_message": "Business name provided does not match with the domestic company register or excerpt from the commercial register that you may have submitted. Please resubmit with the accurate business name.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe business name provided does not match with the supporting document.\n\n### Possible causes\n\nThe business name and registration information do not align with the local company register or excerpt from the commercial register.\n\n### Possible solutions\n\nPlease resubmit with the accurate business name and the corresponding business registration number.\n",
    "causes": "The business name and registration information do not align with the local company register or excerpt from the commercial register.",
    "solutions": "Please resubmit with the accurate business name and the corresponding business registration number.",
    "description": "The business name provided does not match with the supporting document.",
    "date_created": "2024-07-17T09:42:24Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18012,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Require domestic address.",
    "secondary_message": "The phone number type you selected requires a valid domestic address on the document. Please resubmit a document with a valid address and ensure you've selected the desired phone number type.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe phone number type you selected requires a valid domestic address.\n\n### Possible causes\n\n- You may have submitted an international address.\n- Your address is not a valid address.\n\n### Possible solutions\n\nPlease resubmit with a valid address or create a new bundle selecting the appropriate phone number type.\n",
    "causes": "* You may have submitted an international address.\n* Your address is not a valid address.",
    "solutions": "Please resubmit with a valid address or create a new bundle selecting the appropriate phone number type.",
    "description": "The phone number type you selected requires a valid domestic address.",
    "date_created": "2024-07-04T10:04:04Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18013,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Require domestic emergency address.",
    "secondary_message": "This phone number type requires a valid domestic emergency address on the document. Please resubmit a document with a valid domestic address and ensure you've selected the desired phone number type.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis phone number type requires a valid domestic emergency address.\n\n### Possible causes\n\n- You may have submitted an international address. - Your address is not a valid address.\n\n### Possible solutions\n\nPlease resubmit with a valid domestic address or create a new bundle selecting the appropriate phone number type.\n",
    "causes": "* You may have submitted an international address. - Your address is not a valid address.",
    "solutions": "Please resubmit with a valid domestic address or create a new bundle selecting the appropriate phone number type.",
    "description": "This phone number type requires a valid domestic emergency address.",
    "date_created": "2024-07-17T09:44:16Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18014,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid or incomplete address provided.",
    "secondary_message": "The address you have provided is not valid. Please resubmit the bundle with the correct address.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe address you have provided is not valid.\n\n### Possible causes\n\nThe submitted address does not meet our requirements.\n\n### Possible solutions\n\nPlease resubmit the bundle with the correct address.\n",
    "causes": "The submitted address does not meet our requirements.",
    "solutions": "Please resubmit the bundle with the correct address.",
    "description": "The address you have provided is not valid.",
    "date_created": "2024-07-04T10:04:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18015,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid or incomplete emergency address provided.",
    "secondary_message": "The emergency address you have provided is not valid. Please resubmit the bundle with the correct address.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe emergency address you have provided is not valid.\n\n### Possible causes\n\nThe submitted emergency address does not meet our requirements.\n\n### Possible solutions\n\nPlease resubmit the bundle with the correct address.\n",
    "causes": "The submitted emergency address does not meet our requirements.",
    "solutions": "Please resubmit the bundle with the correct address.",
    "description": "The emergency address you have provided is not valid.",
    "date_created": "2024-07-17T09:46:06Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18016,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Address mismatch.",
    "secondary_message": "The address does not match exactly with the Supporting Document. Please amend the Address fields to match the document's address.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe address you have provided does not match with the supporting document.\n\n### Possible causes\n\nThere may be a typo when submitting the address information.\n\n### Possible solutions\n\nPlease amend the data entered in the Address fields to match exactly the address in the documents you have provided.\n",
    "causes": "There may be a typo when submitting the address information.",
    "solutions": "Please amend the data entered in the Address fields to match exactly the address in the documents you have provided.",
    "description": "The address you have provided does not match with the supporting document.",
    "date_created": "2024-07-04T10:06:21Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18017,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Address not found",
    "secondary_message": "The Proof of Identity document does not show a visible address. Please upload a Supporting Document with a visible address.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe supporting document does not provide an address.\n\n### Possible causes\n\nThe identity document that you submitted for address document does not have the address\n\n### Possible solutions\n\nPlease upload a Supporting Document that shows an address.\n",
    "causes": "The identity document that you submitted for address document does not have the address",
    "solutions": "Please upload a Supporting Document that shows an address.",
    "description": "The supporting document does not provide an address.",
    "date_created": "2024-07-17T09:47:23Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18018,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "PO Box not allowed.",
    "secondary_message": "The address you shared is a PO Box address, which is not acceptable. Please share a full physical address.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when you submit a PO Box for a phone number address requirement that must use a physical address. Twilio Address resources represent a physical location, and some phone numbers require a qualifying address for regulatory compliance before you can purchase or use the number.\n\n### Possible causes\n\n- You submitted a PO Box in the address information for a regulated phone number. A PO Box does not satisfy proof of address where a physical local address is required.\n- The phone number requires a qualifying address, and the address on file does not match the required geography for that number. Depending on the number, Twilio may require an address in the number's country, outside the number's country, or within the locality or region covered by the number's prefix.\n- The address mapped to the phone number did not pass validation or did not satisfy the regulatory requirement, so it could not be accepted or selected.\n\n### Possible solutions\n\n- Replace the PO Box with the end user's physical residence or place of business. Use a complete street address instead of a mailing-only address. ([help.twilio.com](https://help.twilio.com/articles/223182868))\n- Review the number's address requirement before you buy or update the number. If the number requires `local`, provide an address in the phone number's country. If the regulation requires locality matching, use an address in the locality or region covered by the number's prefix. If the number requires `foreign`, use an address outside the phone number's country.\n- Create or update the Address resource with the corrected physical address. Then map that address to the phone number in Console under Regulatory Information, or use the `AddressSid` parameter through the Incoming Phone Numbers API.\n- If the address does not appear as a selectable option, create a new validated address in the correct format and locality, then try again. Twilio might not show addresses that did not pass validation or do not satisfy the regulatory requirement.\n\n#### Additional resources\n\n- [Addresses API](/docs/usage/api/address)\n- [Phone Number Regulatory Compliance getting started](/docs/phone-numbers/regulatory/getting-started)\n- [How to map a regulatory address to an existing phone number](https://help.twilio.com/articles/31155205145243)\n",
    "causes": "* You submitted a PO Box in the address information for a regulated phone number. A PO Box does not satisfy proof of address where a physical local address is required.\n* The phone number requires a qualifying address, and the address on file does not match the required geography for that number. Depending on the number, Twilio may require an address in the number's country, outside the number's country, or within the locality or region covered by the number's prefix.\n* The address mapped to the phone number did not pass validation or did not satisfy the regulatory requirement, so it could not be accepted or selected.",
    "solutions": "* Replace the PO Box with the end user's physical residence or place of business. Use a complete street address instead of a mailing-only address. ([help.twilio.com](https://help.twilio.com/articles/223182868))\n* Review the number's address requirement before you buy or update the number. If the number requires `local`, provide an address in the phone number's country. If the regulation requires locality matching, use an address in the locality or region covered by the number's prefix. If the number requires `foreign`, use an address outside the phone number's country.\n* Create or update the Address resource with the corrected physical address. Then map that address to the phone number in Console under Regulatory Information, or use the `AddressSid` parameter through the Incoming Phone Numbers API.\n* If the address does not appear as a selectable option, create a new validated address in the correct format and locality, then try again. Twilio might not show addresses that did not pass validation or do not satisfy the regulatory requirement.",
    "description": "This error occurs when you submit a PO Box for a phone number address requirement that must use a physical address. Twilio Address resources represent a physical location, and some phone numbers require a qualifying address for regulatory compliance before you can purchase or use the number.",
    "date_created": "2024-07-04T10:11:11Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 18019,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Proof of Identity Required for Authorized Representative.",
    "secondary_message": "We require Proof of Identity for the Authorized Representative. Please provide a government-issued ID or passport for the Authorized Representative.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nWe require proof of identity for the Authorized Representative.\n\n### Possible causes\n\nWe could not verify the identity of the Authorized Representative.\n\n### Possible solutions\n\nPlease provide a government-issued ID or passport for the Authorized Representative to fulfill this requirement.\n",
    "causes": "We could not verify the identity of the Authorized Representative.",
    "solutions": "Please provide a government-issued ID or passport for the Authorized Representative to fulfill this requirement.",
    "description": "We require proof of identity for the Authorized Representative.",
    "date_created": "2024-07-04T10:11:56Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18020,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Proof of authorized representative’s association with the business required.",
    "secondary_message": "The Authorized Representative is not shown on the Business Registration. Please upload a Supporting Document that shows the Authorized Representative of the business.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nNeed document to verify authorized representative's association with the business.\n\n### Possible causes\n\nThe authorized representative is not on the business registration.\n\n### Possible solutions\n\nPlease upload a Supporting Document that shows the Authorized Representative as part of the business.\n",
    "causes": "The authorized representative is not on the business registration.",
    "solutions": "Please upload a Supporting Document that shows the Authorized Representative as part of the business.",
    "description": "Need document to verify authorized representative's association with the business.",
    "date_created": "2024-07-04T10:12:44Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Name mismatch (Proof of Address)",
    "secondary_message": "The name on the Proof of Address document does not match what's submitted in the first name / last name fields. Please ensure the document and field information match.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe individual's name on the Proof of Address document does not match the information entered in the Bundle.\n\n### Possible causes\n\nThe name on the Proof of Address document does not match what's submitted in the first name / last name fields. Please ensure the document and field information match.\n\n### Possible solutions\n\nPlease ensure the names match exactly and that all the individual's last names are provided. Please amend firstly the name in the Business & legal representative information / Individual information section of the bundle, and then in the Bundle fields under the uploaded supporting document.\n",
    "causes": "The name on the Proof of Address document does not match what's submitted in the first name / last name fields. Please ensure the document and field information match.",
    "solutions": "Please ensure the names match exactly and that all the individual's last names are provided. Please amend firstly the name in the Business & legal representative information / Individual information section of the bundle, and then in the Bundle fields under the uploaded supporting document.",
    "description": "The individual's name on the Proof of Address document does not match the information entered in the Bundle.",
    "date_created": "2024-07-04T10:15:32Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18022,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outdated Proof of Address document",
    "secondary_message": "The address document you shared is outdated. If you are an individual, please share the document issued in the last three months. If you are a business, please share the document issued within the last year.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when the proof of address in your phone number regulatory compliance submission is older than the allowed validity window. For most submissions, proof of address for individuals should be dated within the last three months, and address documents for businesses should be dated within the last year unless the country-specific requirement states otherwise.\n\n### Possible causes\n\n- You uploaded a proof of address document whose issue date is older than the accepted timeframe for the end user type in your submission.\n- For an individual end user, the proof of address document was issued more than three months before submission.\n- For a business end user, the address document was issued more than one year before submission.\n- The phone number's country or regulation requires a different document validity window than the document you provided.\n\n### Possible solutions\n\n- Upload a current proof of address document. If the end user is an individual, use a document issued within the last three months. If the end user is a business, use a document issued within the last year unless the country requirement says otherwise.\n- Make sure the document clearly shows its issue date and that the name and address match the end user information in the regulatory submission.\n- Review the country-specific regulatory requirements for the phone number you are trying to provision before you resubmit the bundle. Regulations can change, so do not rely on hardcoded assumptions in your application.\n- If you submit documents through the Regulatory Compliance API, create a new Supporting Document with the updated file and add it to a new or existing Regulatory Bundle before submitting it again for review.\n\n#### Additional resources\n\n- [Phone Number Regulatory FAQ](/docs/phone-numbers/regulatory/faq)\n- [Create and submit a Regulatory Bundle in Console](/docs/phone-numbers/regulatory/getting-started/console-create-new-bundle)\n- [Supporting Documents API](/docs/phone-numbers/regulatory/api/supporting-documents)\n",
    "causes": "* You uploaded a proof of address document whose issue date is older than the accepted timeframe for the end user type in your submission.\n* For an individual end user, the proof of address document was issued more than three months before submission.\n* For a business end user, the address document was issued more than one year before submission.\n* The phone number's country or regulation requires a different document validity window than the document you provided.",
    "solutions": "* Upload a current proof of address document. If the end user is an individual, use a document issued within the last three months. If the end user is a business, use a document issued within the last year unless the country requirement says otherwise.\n* Make sure the document clearly shows its issue date and that the name and address match the end user information in the regulatory submission.\n* Review the country-specific regulatory requirements for the phone number you are trying to provision before you resubmit the bundle. Regulations can change, so do not rely on hardcoded assumptions in your application.\n* If you submit documents through the Regulatory Compliance API, create a new Supporting Document with the updated file and add it to a new or existing Regulatory Bundle before submitting it again for review.",
    "description": "This error occurs when the proof of address in your phone number regulatory compliance submission is older than the allowed validity window. For most submissions, proof of address for individuals should be dated within the last three months, and address documents for businesses should be dated within the last year unless the country-specific requirement states otherwise.",
    "date_created": "2024-07-04T10:16:29Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 18023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Document contains an inactive business",
    "secondary_message": "The status of your entity is listed as inactive in your local business registry. Please upload a Business Document showing a currently active business registration.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe status of your entity is listed as inactive in your local business registry. Please upload a Business Document showing a currently active business registration.\n\n### Possible causes\n\nThe status of your entity provided in the Business Document is listed as inactive in your local business registry.\n\n### Possible solutions\n\nPlease upload a Business Document showing a currently active business registration.\n",
    "causes": "The status of your entity provided in the Business Document is listed as inactive in your local business registry.",
    "solutions": "Please upload a Business Document showing a currently active business registration.",
    "description": "The status of your entity is listed as inactive in your local business registry. Please upload a Business Document showing a currently active business registration.",
    "date_created": "2024-10-08T20:09:55Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18024,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to upload an unprocessable document",
    "secondary_message": "A document could not be uploaded either because it is corrupted or could not be parsed or processed. Please resubmit with a valid/uncorrupted file.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nA document could not be uploaded either because it is corrupted or could not be parsed or processed.\n\n### Possible causes\n\nThe file type does not match the file content or the file corrupt/invalid.\n\n### Possible solutions\n\nPlease resubmit with a valid/uncorrupted file.\n",
    "causes": "The file type does not match the file content or the file corrupt/invalid.",
    "solutions": "Please resubmit with a valid/uncorrupted file.",
    "description": "A document could not be uploaded either because it is corrupted or could not be parsed or processed.",
    "date_created": "2025-01-07T22:00:31Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18025,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Document rejected (number type restricted)",
    "secondary_message": "Document was rejected since the account is not allowed to purchase this number type. Please contact support for any questions.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nDocument was rejected since the account is not allowed to purchase this number type. Please contact support for any questions.\n\n### Possible causes\n\nDocument was rejected since the account is not allowed to purchase this number type.\n\n### Possible solutions\n\nPlease contact support for any questions.\n",
    "causes": "Document was rejected since the account is not allowed to purchase this number type.",
    "solutions": "Please contact support for any questions.",
    "description": "Document was rejected since the account is not allowed to purchase this number type. Please contact support for any questions.",
    "date_created": "2025-05-19T18:05:42Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18036,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "One or more of the required information is missing.",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nOne or more of the following required information is missing: Birth Date, Birth Place, Tax Number, Document Number, Issue Date.\n\n### Possible causes\n\nYou may have missed to input the required information.\n\n### Possible solutions\n\nPlease fill out the required fields in the form.\n",
    "causes": "You may have missed to input the required information.",
    "solutions": "Please fill out the required fields in the form.",
    "description": "One or more of the following required information is missing: Birth Date, Birth Place, Tax Number, Document Number, Issue Date.",
    "date_created": "2024-07-04T09:50:05Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18037,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing information in the form",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nOne of more of the information in the forms are missing.\n\n### Possible causes\n\nYou may have missed sharing the required information.\n\n### Possible solutions\n\nPlease fill out the required form fields and resubmit the bundle.\n",
    "causes": "You may have missed sharing the required information.",
    "solutions": "Please fill out the required form fields and resubmit the bundle.",
    "description": "One of more of the information in the forms are missing.",
    "date_created": "2024-07-04T09:51:10Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18038,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Information does not match the supporting document",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe information you shared does not match the supporting document.\n\n### Possible causes\n\nYou may have attached the wrong document or shared inaccurate information.\n\n### Possible solutions\n\nPlease amend the information and resubmit the bundle.\n",
    "causes": "You may have attached the wrong document or shared inaccurate information.",
    "solutions": "Please amend the information and resubmit the bundle.",
    "description": "The information you shared does not match the supporting document.",
    "date_created": "2024-07-04T09:55:54Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18039,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The phone number type you selected requires a valid domestic address.",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe phone number type you selected requires a valid local address. Please resubmit a local address or create a new bundle selecting the appropriate phone number type.\n\n### Possible causes\n\nx\n\n### Possible solutions\n\nx\n",
    "causes": "x",
    "solutions": "x",
    "description": "The phone number type you selected requires a valid local address. Please resubmit a local address or create a new bundle selecting the appropriate phone number type.",
    "date_created": "2024-07-04T09:56:55Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18050,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Issue with the Supporting Document(s)",
    "secondary_message": "There is an issue with one or more of your Supporting Documents. Please review each rejection reason for the Supporting Document(s).",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThere is an issue with your Supporting Document(s).\n\n### Possible causes\n\nOne or more of your Supporting Documents has been reviewed and was found to have issues.\n\n### Possible solutions\n\nPlease review the Supporting Documents for any rejection reason(s), and resubmit with correct Supporting Documents.\n",
    "causes": "One or more of your Supporting Documents has been reviewed and was found to have issues.",
    "solutions": "Please review the Supporting Documents for any rejection reason(s), and resubmit with correct Supporting Documents.",
    "description": "There is an issue with your Supporting Document(s).",
    "date_created": "2024-10-08T20:11:22Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18051,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Issue with the inputs you provided",
    "secondary_message": "There is an issue with the inputs you provided, more details will be sent to the Authorized Representative's email.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThere is an issue with the inputs you provided, please check the email sent to the Authorized Representative for the details.\n\n### Possible causes\n\nOne of the inputs (information or documents) you provided has issues.\n\n### Possible solutions\n\nPlease check the Authorized Representative's email for the details on the issue, please resubmit the bundle after rectifying the issue mentioned in the email.\n",
    "causes": "One of the inputs (information or documents) you provided has issues.",
    "solutions": "Please check the Authorized Representative's email for the details on the issue, please resubmit the bundle after rectifying the issue mentioned in the email.",
    "description": "There is an issue with the inputs you provided, please check the email sent to the Authorized Representative for the details.",
    "date_created": "2024-10-08T20:13:48Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18052,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Under age Individual",
    "secondary_message": "We do not permit underage individuals on our platform. Please resubmit for an individual with acceptable age (over the age of 13 in the US and UK or 16, in the EEA).",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nWe do not permit underage individuals on our platform.\n\n### Possible causes\n\nThe Authorized Representative's age is under 18 years, which is considered underage to use Twilio's products.\n\n### Possible solutions\n\nPlease resubmit for an individual with acceptable age. Please make sure to take necessary steps to remove underaged person's personal information from the Bundle.\n",
    "causes": "The Authorized Representative's age is under 18 years, which is considered underage to use Twilio's products.",
    "solutions": "Please resubmit for an individual with acceptable age. Please make sure to take necessary steps to remove underaged person's personal information from the Bundle.",
    "description": "We do not permit underage individuals on our platform.",
    "date_created": "2024-10-08T20:14:58Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18053,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to verify association between business name and website",
    "secondary_message": "The business name does not match the website SSL certificate, or the website URL, or the association cannot be verified.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe association between business name and website cannot be verified.\n\n### Possible causes\n\nThe business name does not match the website SSL certificate, or the website URL.\n\n### Possible solutions\n\nPlease reach out to us via email numbers-regulatory-review@twilio.com and share the details of how the company and website are connected.\n",
    "causes": "The business name does not match the website SSL certificate, or the website URL.",
    "solutions": "Please reach out to us via email numbers-regulatory-review@twilio.com and share the details of how the company and website are connected.",
    "description": "The association between business name and website cannot be verified.",
    "date_created": "2024-10-08T20:15:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18054,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid phone number",
    "secondary_message": "The phone number you provided is not valid. Please review and provide a valid phone number in E164 format.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe phone number you provided is not valid.\n\n### Possible causes\n\nThe phone number format is incorrect or or contains errors.\n\n### Possible solutions\n\nPlease review and provide a valid phone number in E164 format.\n",
    "causes": "The phone number format is incorrect or or contains errors.",
    "solutions": "Please review and provide a valid phone number in E164 format.",
    "description": "The phone number you provided is not valid.",
    "date_created": "2024-10-08T20:17:22Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18055,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid email",
    "secondary_message": "The email you provided is not valid. Please resubmit the bundle with a valid email address.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `Email` value on a Regulatory Bundle is not a valid email address. Twilio requires this field when you create a Bundle and uses it to send status updates when the Bundle changes status.\n\n### Possible causes\n\n- The `Email` value does not follow standard email address syntax.\n- The address is missing the `@` symbol or a valid domain.\n- The address contains unsupported characters, starts with a period, or includes repeated periods.\n- The local part, domain part, or full address exceeds standard email length limits.\n- The email entered in the Bundle's Notifications section does not match a valid email format.\n\n### Possible solutions\n\n- Update the `Email` value to a valid address such as `name@example.com`.\n- Verify that the address includes one `@` symbol, a complete domain, and only supported characters.\n- Remove leading periods, repeated periods, and extra whitespace from the address.\n- If you create Bundles through the API, validate the `email` field before you submit the request.\n- Resubmit the Bundle after you correct the email address.\n\n#### Additional resources\n\n- [Bundles Resource](/docs/phone-numbers/regulatory/api/bundles)\n- [Getting Started: Regulatory Compliance Public REST APIs](/docs/phone-numbers/regulatory/getting-started/create-new-bundle-public-rest-apis)\n- [Understanding Regulatory Bundle Rejections](https://help.twilio.com/articles/16066152436507-Understanding-Regulatory-Bundle-Rejections)\n",
    "causes": "* The `Email` value does not follow standard email address syntax.\n* The address is missing the `@` symbol or a valid domain.\n* The address contains unsupported characters, starts with a period, or includes repeated periods.\n* The local part, domain part, or full address exceeds standard email length limits.\n* The email entered in the Bundle's Notifications section does not match a valid email format.",
    "solutions": "* Update the `Email` value to a valid address such as `name@example.com`.\n* Verify that the address includes one `@` symbol, a complete domain, and only supported characters.\n* Remove leading periods, repeated periods, and extra whitespace from the address.\n* If you create Bundles through the API, validate the `email` field before you submit the request.\n* Resubmit the Bundle after you correct the email address.",
    "description": "This error occurs when the `Email` value on a Regulatory Bundle is not a valid email address. Twilio requires this field when you create a Bundle and uses it to send status updates when the Bundle changes status.",
    "date_created": "2024-10-08T20:18:06Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 18056,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing Work Email for Authorized Representative",
    "secondary_message": "We require the work email of the Authorized Representative. Please resubmit with a work email of the Authorized Representative.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nProvide the Authorized Representative's work email when you submit regulatory compliance information for a phone number request. Twilio returns this error when that required value is missing.\n\n### Possible causes\n\n- You submitted a Regulatory Bundle without a work email for the Authorized Representative.\n- The Authorized Representative information is incomplete.\n- You created or updated the bundle without filling in all required fields for the regulation tied to your phone number request.\n\n### Possible solutions\n\n- Open the Regulatory Bundle and add the Authorized Representative's work email.\n- Review the required fields for the regulation you are satisfying and make sure the Authorized Representative information is complete before you resubmit.\n- If the bundle was rejected, review the rejection reason in Console, update the missing information, and submit the bundle again.\n\n#### Additional resources\n\n- [Getting Started: Phone Number Regulatory Compliance](/docs/phone-numbers/regulatory/getting-started)\n- [Bundles Resource](/docs/phone-numbers/regulatory/api/bundles)\n- [Understanding Regulatory Bundle Rejections](https://help.twilio.com/articles/16066152436507-Understanding-Regulatory-Bundle-Rejections)\n",
    "causes": "* You submitted a Regulatory Bundle without a work email for the Authorized Representative.\n* The Authorized Representative information is incomplete.\n* You created or updated the bundle without filling in all required fields for the regulation tied to your phone number request.",
    "solutions": "* Open the Regulatory Bundle and add the Authorized Representative's work email.\n* Review the required fields for the regulation you are satisfying and make sure the Authorized Representative information is complete before you resubmit.\n* If the bundle was rejected, review the rejection reason in Console, update the missing information, and submit the bundle again.",
    "description": "Provide the Authorized Representative's work email when you submit regulatory compliance information for a phone number request. Twilio returns this error when that required value is missing.",
    "date_created": "2024-10-08T20:19:07Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 18057,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Validation Issue for Authorized Representative",
    "secondary_message": "The digital validation for the authorized representative has failed. Please resubmit with an identity document for the Authorized Representative.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe digital validation for the authorized representative has failed.\n\n### Possible causes\n\nThere was an issue verifying the identity of the authorized representative.\n\n### Possible solutions\n\nPlease share a different authorized representative or reach out to us via email numbers-regulatory-review@twilio.com and share the details of how the company and website are connected.\n",
    "causes": "There was an issue verifying the identity of the authorized representative.",
    "solutions": "Please share a different authorized representative or reach out to us via email numbers-regulatory-review@twilio.com and share the details of how the company and website are connected.",
    "description": "The digital validation for the authorized representative has failed.",
    "date_created": "2024-10-08T20:20:13Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18058,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing Tax ID",
    "secondary_message": "Authorized Representative's Tax ID is missing. Please amend the Tax ID Number field in the Business & Legal Representative Information section to the Authorized Representative´s personal tax ID.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error indicates that your Phone Numbers regulatory bundle is missing the Authorized Representative's personal Tax ID in the Business & Legal Representative Information section. Twilio cannot approve the bundle until you provide the required value.\n\n### Possible causes\n\n- The `Tax ID Number` field for the Authorized Representative was left blank.\n- The bundle was submitted before all required Business & Legal Representative Information was completed.\n- A company VAT number or business registration number was entered where the Authorized Representative's personal Tax ID is required.\n- The regulation for the selected country and number type requires the Authorized Representative's fiscal code or equivalent Tax ID, but that value was not provided.\n\n### Possible solutions\n\n- Open the Regulatory Bundle in Console and add the Authorized Representative's personal Tax ID to the `Tax ID Number` field in Business & Legal Representative Information.\n- If the regulation also requires a company VAT or business registration number, enter that value in the `VAT` field and keep the Authorized Representative's personal Tax ID in `Tax ID Number`.\n- Review the regulatory requirements for the country and number type in your bundle, then make sure all required representative details are filled in exactly as needed.\n- Resubmit the bundle after you update the missing field.\n- If you use the Regulatory Compliance API, run a bundle evaluation after updating the data so you can confirm the bundle is compliant before review.\n\n#### Additional resources\n\n- [Getting Started: Phone Number Regulatory Compliance](/docs/phone-numbers/regulatory/getting-started)\n- [Evaluations Resource](/docs/phone-numbers/regulatory/api/evaluations)\n- [Understanding Regulatory Bundle Rejections](https://help.twilio.com/articles/16066152436507)\n",
    "causes": "* The `Tax ID Number` field for the Authorized Representative was left blank.\n* The bundle was submitted before all required Business & Legal Representative Information was completed.\n* A company VAT number or business registration number was entered where the Authorized Representative's personal Tax ID is required.\n* The regulation for the selected country and number type requires the Authorized Representative's fiscal code or equivalent Tax ID, but that value was not provided.",
    "solutions": "* Open the Regulatory Bundle in Console and add the Authorized Representative's personal Tax ID to the `Tax ID Number` field in Business & Legal Representative Information.\n* If the regulation also requires a company VAT or business registration number, enter that value in the `VAT` field and keep the Authorized Representative's personal Tax ID in `Tax ID Number`.\n* Review the regulatory requirements for the country and number type in your bundle, then make sure all required representative details are filled in exactly as needed.\n* Resubmit the bundle after you update the missing field.\n* If you use the Regulatory Compliance API, run a bundle evaluation after updating the data so you can confirm the bundle is compliant before review.",
    "description": "This error indicates that your Phone Numbers regulatory bundle is missing the Authorized Representative's personal Tax ID in the Business & Legal Representative Information section. Twilio cannot approve the bundle until you provide the required value.",
    "date_created": "2024-10-08T20:21:11Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 18059,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing/Invalid Photo ID",
    "secondary_message": "An Authorized Representative's government-issued photo ID document missing or invalid. Please resubmit with a valid supporting document.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nAn Authorized Representative's government-issued photo ID document missing or invalid.\n\n### Possible causes\n\n- Missing government-issued photo ID\n- Invalid Photo ID (ex: expired or incorrect name)\n\n### Possible solutions\n\nEnsure the dates are current and the information on the Photo ID matches the Authorized Individual's information and resubmit with a valid government-issued Photo ID.\n",
    "causes": "* Missing government-issued photo ID\n* Invalid Photo ID (ex: expired or incorrect name)",
    "solutions": "Ensure the dates are current and the information on the Photo ID matches the Authorized Individual's information and resubmit with a valid government-issued Photo ID.",
    "description": "An Authorized Representative's government-issued photo ID document missing or invalid.",
    "date_created": "2024-10-08T20:22:20Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18060,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Commercial registration copy not submitted",
    "secondary_message": "Excerpt from the commercial register is missing, which is a required supporting document. Please re-submit after uploading the excerpt from the commercial register",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nExcerpt from the commercial register is missing, which is a required supporting document.\n\n### Possible causes\n\nMissed uploading or upload failure\n\n### Possible solutions\n\nPlease re-submit after uploading the excerpt from the commercial register.\n",
    "causes": "Missed uploading or upload failure",
    "solutions": "Please re-submit after uploading the excerpt from the commercial register.",
    "description": "Excerpt from the commercial register is missing, which is a required supporting document.",
    "date_created": "2024-10-08T20:23:24Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18061,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid excerpt from the commercial register",
    "secondary_message": "We are unable to validate your company registration from the government database, please resubmit with a current and accurate excerpt from the commercial register.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nWe are unable to validate your company registration from the government database, please resubmit with a current and accurate excerpt from the commercial register.\n\n### Possible causes\n\n- There is a mistake in the registration number, either on the document or in the bundle information\n- Your registration may have expired\n- Registration database might have a technical glitch\n\n### Possible solutions\n\nPlease upload a business registration or excerpt from the commercial registry as a Supporting Document and ensure it matches the information provided in the Bundle.\n",
    "causes": "* There is a mistake in the registration number, either on the document or in the bundle information\n* Your registration may have expired\n* Registration database might have a technical glitch",
    "solutions": "Please upload a business registration or excerpt from the commercial registry as a Supporting Document and ensure it matches the information provided in the Bundle.",
    "description": "We are unable to validate your company registration from the government database, please resubmit with a current and accurate excerpt from the commercial register.",
    "date_created": "2024-10-08T20:24:22Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18062,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Business Details contain an inactive business",
    "secondary_message": "The status of your entity is listed as inactive in your local business registry. Please amend the business details to include an active business registration.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe status of your entity is listed as inactive in your local business registry.\n\n### Possible causes\n\nThe status of your entity provided in the business details is listed as inactive in your local business registry.\n\n### Possible solutions\n\nPlease amend the business details to include an active business registration.\n",
    "causes": "The status of your entity provided in the business details is listed as inactive in your local business registry.",
    "solutions": "Please amend the business details to include an active business registration.",
    "description": "The status of your entity is listed as inactive in your local business registry.",
    "date_created": "2024-10-08T20:25:29Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18063,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Phone Number purchase restricted ",
    "secondary_message": "This account is not allowed to purchase this number type. Please contact support for any questions.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis account is not allowed to purchase this number type. Please contact support for any questions.\n\n### Possible causes\n\nThis account is not allowed to purchase this phone number type.\n\n### Possible solutions\n\nPlease contact support to get further assistance.\n",
    "causes": "This account is not allowed to purchase this phone number type.",
    "solutions": "Please contact support to get further assistance.",
    "description": "This account is not allowed to purchase this number type. Please contact support for any questions.",
    "date_created": "2025-05-19T18:07:56Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18064,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Ineligible for business bundle",
    "secondary_message": "The information provided does not meet our business criteria. Please consider resubmitting as an individual.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe information provided does not meet our business criteria.\n\n### Possible causes\n\nBusiness bundles are not available to individuals or sole traders/proprietors.\n\n### Possible solutions\n\nPlease consider resubmitting as an individual or contact support.\n",
    "causes": "Business bundles are not available to individuals or sole traders/proprietors.",
    "solutions": "Please consider resubmitting as an individual or contact support.",
    "description": "The information provided does not meet our business criteria.",
    "date_created": "2025-05-29T21:20:51.314Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18099,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rejected test bundle",
    "secondary_message": "The information was rejected since API request marked it as a test. Resubmit with the IsTest parameter to False or omitted if it should be considered for approval.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe information was rejected since API request marked it as a test.\n\n### Possible causes\n\nThe API request to submit this bundle set the IsTest parameter to true.\n\n### Possible solutions\n\nResubmit the bundle with the IsTest parameter to False or omitted if it should be considered for approval\n",
    "causes": "The API request to submit this bundle set the IsTest parameter to true.",
    "solutions": "Resubmit the bundle with the IsTest parameter to False or omitted if it should be considered for approval",
    "description": "The information was rejected since API request marked it as a test.",
    "date_created": "2025-01-24T17:27:21Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18601,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The association between business name and website cannot be verified",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe association between business name and website cannot be verified\n\n### Possible causes\n\nThe business name does not match the website SSL certificate, or the website URL\n\n### Possible solutions\n\nPlease edit the Business Profile & update the missing information. You can also reach out to our support team at trusthub-verify@twilio.com for any additional clarifications.\n",
    "causes": "The business name does not match the website SSL certificate, or the website URL",
    "solutions": "Please edit the Business Profile & update the missing information. You can also reach out to our support team at trusthub-verify@twilio.com for any additional clarifications.",
    "description": "The association between business name and website cannot be verified",
    "date_created": "2024-02-22T03:23:21Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Business ID you provided could not be verified",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Business ID you provided could not be verified.\n\n### Possible causes\n\nYou may have provided an inaccurate business ID or the Business ID is invalid / expired.\n\n### Possible solutions\n\nPlease feel free to edit the Business Profile & update the missing information. You can also reach out to our support team at trusthub-verify@twilio.com for any additional clarifications.\n\nPlease be sure to use the legal company name and EIN number found in your Tax records.\n",
    "causes": "You may have provided an inaccurate business ID or the Business ID is invalid / expired.",
    "solutions": "Please feel free to edit the Business Profile & update the missing information. You can also reach out to our support team at trusthub-verify@twilio.com for any additional clarifications. Please be sure to use the legal company name and EIN number found in your Tax records.",
    "description": "The Business ID you provided could not be verified.",
    "date_created": "2024-02-22T03:25:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18603,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The address could not be verified",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe address you provided could not be verified.\n\n### Possible causes\n\nThe address is not found in an authoritative address database.\n\n### Possible solutions\n\nPlease feel free to edit the Business Profile & update the missing information. You can also reach out to our support team at trusthub-verify@twilio.com for any additional clarifications.\n",
    "causes": "The address is not found in an authoritative address database.",
    "solutions": "Please feel free to edit the Business Profile & update the missing information. You can also reach out to our support team at trusthub-verify@twilio.com for any additional clarifications.",
    "description": "The address you provided could not be verified.",
    "date_created": "2024-02-22T03:31:40Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18604,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to verify Authorized representative #1",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio could not verify the identity of the first authorized representative in your Business Profile or confirm that this person is affiliated with your business. During review, Twilio uses the authorized representative details in your primary compliance profile and may reach out to the listed representative during the vetting process.\n\n### Possible causes\n\n- The Authorized Representative #1 details are incomplete or incorrect.\n- The listed representative cannot be confirmed as the primary contact person for your organization.\n- The representative information does not support your business and use case during profile review.\n- The legal business name or other business profile details do not match your official registration information.\n- The identity verification information for the representative, such as the government-issued photo ID or selfie verification, is missing or could not be used to confirm identity.\n\n### Possible solutions\n\n- Review Authorized Representative #1 and update the first name, last name, email, phone number, business title, and job position.\n- Make sure the listed representative is a person who can confirm your business and use case if we contact them during vetting.\n- Update your Business Profile so the legal business name and physical address match the information registered with your business authority.\n- Upload a valid government-issued photo ID and complete selfie verification again if prompted.\n- Resubmit the profile after you correct the rejected information.\n- If you need more clarification after updating the profile, contact trusthub-verify@twilio.com.\n\n#### Additional resources\n\n- [Profiles](/docs/trust-hub/profiles)\n- [Primary compliance profiles](/docs/trust-hub/profiles/primary-compliance-profiles)\n- [Customer Profiles](/docs/trust-hub/trusthub-rest-api/customer-profiles)\n",
    "causes": "* The Authorized Representative #1 details are incomplete or incorrect.\n* The listed representative cannot be confirmed as the primary contact person for your organization.\n* The representative information does not support your business and use case during profile review.\n* The legal business name or other business profile details do not match your official registration information.\n* The identity verification information for the representative, such as the government-issued photo ID or selfie verification, is missing or could not be used to confirm identity.",
    "solutions": "* Review Authorized Representative #1 and update the first name, last name, email, phone number, business title, and job position.\n* Make sure the listed representative is a person who can confirm your business and use case if we contact them during vetting.\n* Update your Business Profile so the legal business name and physical address match the information registered with your business authority.\n* Upload a valid government-issued photo ID and complete selfie verification again if prompted.\n* Resubmit the profile after you correct the rejected information.\n* If you need more clarification after updating the profile, contact trusthub-verify@twilio.com.",
    "description": "Twilio could not verify the identity of the first authorized representative in your Business Profile or confirm that this person is affiliated with your business. During review, Twilio uses the authorized representative details in your primary compliance profile and may reach out to the listed representative during the vetting process.",
    "date_created": "2024-02-22T03:32:42Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 18605,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to verify Authorized representative #2. ",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when Twilio cannot verify the identity of Authorized Representative #2 or confirm that this person is affiliated with the business in your profile. Twilio may reach out to authorized representatives during vetting. Twilio rejects a profile when required information is missing, incorrect, or cannot be validated.\n\n### Possible causes\n\n- The details for Authorized Representative #2 are missing, incomplete, or incorrect in the profile submission.\n- Authorized Representative #2 does not appear to be a real person who is authorized to represent the business.\n- The representative's identity could not be verified from the submitted information or supporting documents.\n- The submitted business records do not show that Authorized Representative #2 is associated with the business.\n\n### Possible solutions\n\n- Review the Authorized Representative #2 section and provide the representative's full first name, last name, email, phone number, business title, and job position.\n- Make sure Authorized Representative #2 is a real person who can confirm the business and its use case, and not a generic team or role.\n- Update the profile so the representative's information matches the submitted identity details and business records.\n- Edit the rejected profile in Trust Hub, correct the information shown in the rejection reason, and resubmit the profile for review.\n- If you still cannot complete verification after updating the profile, contact Support for help with the review outcome.\n\n#### Additional resources\n\n- [Secondary compliance profiles](/docs/trust-hub/profiles/secondary-compliance-profiles)\n- [Primary compliance profiles](/docs/trust-hub/profiles/primary-compliance-profiles)\n- [Customer Profiles](/docs/trust-hub/trusthub-rest-api/customer-profiles)\n",
    "causes": "* The details for Authorized Representative #2 are missing, incomplete, or incorrect in the profile submission.\n* Authorized Representative #2 does not appear to be a real person who is authorized to represent the business.\n* The representative's identity could not be verified from the submitted information or supporting documents.\n* The submitted business records do not show that Authorized Representative #2 is associated with the business.",
    "solutions": "* Review the Authorized Representative #2 section and provide the representative's full first name, last name, email, phone number, business title, and job position.\n* Make sure Authorized Representative #2 is a real person who can confirm the business and its use case, and not a generic team or role.\n* Update the profile so the representative's information matches the submitted identity details and business records.\n* Edit the rejected profile in Trust Hub, correct the information shown in the rejection reason, and resubmit the profile for review.\n* If you still cannot complete verification after updating the profile, contact Support for help with the review outcome.",
    "description": "Twilio returns this error when Twilio cannot verify the identity of Authorized Representative #2 or confirm that this person is affiliated with the business in your profile. Twilio may reach out to authorized representatives during vetting. Twilio rejects a profile when required information is missing, incorrect, or cannot be validated.",
    "date_created": "2024-02-22T03:33:42Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 18606,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Email domain doesn't match the website domain",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Email domain doesn't match the website domain\n\n### Possible causes\n\nThe domain of the email address you provided doesn't match the website domain.\n\n### Possible solutions\n\nPlease feel free to edit the Business Profile & update the missing information. You can also reach out to our support team at trusthub-verify@twilio.com for any additional clarifications.\n",
    "causes": "The domain of the email address you provided doesn't match the website domain.",
    "solutions": "Please feel free to edit the Business Profile & update the missing information. You can also reach out to our support team at trusthub-verify@twilio.com for any additional clarifications.",
    "description": "The Email domain doesn't match the website domain",
    "date_created": "2024-02-22T03:34:52Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18607,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Customer Profile or Trust Product is not eligible to be copied",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou can not copy the customer profile or trust product\n\n### Possible causes\n\nThe customer profile is not eligible to be copied\n\n### Possible solutions\n\nPlease move forward without copying the customer profile or trust product\n",
    "causes": "The customer profile is not eligible to be copied",
    "solutions": "Please move forward without copying the customer profile or trust product",
    "description": "You can not copy the customer profile or trust product",
    "date_created": "2024-02-27T02:28:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18608,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Customer Profile or Trust Product is already copied",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou already copied the customer profile or trust product\n\n### Possible causes\n\nYou already copied.\n\n### Possible solutions\n\nSince the customer profile or trust product is already copied, please move forward without any additional action\n",
    "causes": "You already copied.",
    "solutions": "Since the customer profile or trust product is already copied, please move forward without any additional action",
    "description": "You already copied the customer profile or trust product",
    "date_created": "2024-02-27T02:29:42Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18609,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Ineligible Business Registration Authority",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe provided business registration authority is not an EIN (Employer Identification Number) or DUN (Data Universal Numbering System) number.\n\n### Possible causes\n\nThe submitted business registration authority does not meet the eligibility requirements for the US Voice Integrity/CNAM trust product.\n\n### Possible solutions\n\nPlease resubmit your registration using either an EIN or a DUN number.\n",
    "causes": "The submitted business registration authority does not meet the eligibility requirements for the US Voice Integrity/CNAM trust product.",
    "solutions": "Please resubmit your registration using either an EIN or a DUN number.",
    "description": "The provided business registration authority is not an EIN (Employer Identification Number) or DUN (Data Universal Numbering System) number.",
    "date_created": "2024-04-21T22:59:27Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18610,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Customer Profile or Trust Product cannot be copied due to a deleted Address",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nCustomer Profile or Trust Product requested cannot be copied due to a deleted Address.\n\n### Possible causes\n\nThe Address linked to the Customer Profile or Trust Product was deleted.\n\n### Possible solutions\n\nCreate a new Address on your Account or Sub-Account (if you don't already have one) and reach out to [Twilio Support](https://support.twilio.com/hc/en-us) to link it to the Customer Profile or Trust Product that you wish to copy.\n",
    "causes": "The Address linked to the Customer Profile or Trust Product was deleted.",
    "solutions": "Create a new Address on your Account or Sub-Account (if you don't already have one) and reach out to [Twilio Support](https://support.twilio.com/hc/en-us) to link it to the Customer Profile or Trust Product that you wish to copy.",
    "description": "Customer Profile or Trust Product requested cannot be copied due to a deleted Address.",
    "date_created": "2024-08-13T07:25:16Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 18646,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Authorized Representative Mismatch",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour authorized representative is not listed on the Business Extract. Change the representative to one named on the extract OR upload an LOA signed by a listed officer.\n\n### Possible causes\n\n- The representative is a senior employee with real operational authority but their name does not appear in the company registry as a formally appointed director or officer.\n- The business recently appointed a new director not yet reflected in the registry and no LOA from a listed officer was obtained.\n- The bundle lists an officer from a parent or associated company rather than the specific registering entity.\n- The representative's name is present on the extract but entered in the form with a different spelling or name order.\n\n### Possible solutions\n\n- Do either of the following:\n  - Change the representative: Select a different Authorized Representative who is explicitly named as a director or officer on the current Business Registration Extract.\n  - Provide an LOA: Upload a Letter of Authorization signed by an officer who IS currently listed on the extract, formally authorizing the named representative.\n- Verify name spelling character-by-character between the form and the extract — even a single letter difference will cause a mismatch.\n- If the registry is being updated, wait for the update to be formally recorded or use the LOA route in the interim.\n- Contact trusthub-verify@twilio.com if you believe the mismatch is due to a registry propagation delay.\n",
    "causes": "* The representative is a senior employee with real operational authority but their name does not appear in the company registry as a formally appointed director or officer.\n* The business recently appointed a new director not yet reflected in the registry and no LOA from a listed officer was obtained.\n* The bundle lists an officer from a parent or associated company rather than the specific registering entity.\n* The representative's name is present on the extract but entered in the form with a different spelling or name order.",
    "solutions": "* Do either of the following:\n  * Change the representative: Select a different Authorized Representative who is explicitly named as a director or officer on the current Business Registration Extract.\n  * Provide an LOA: Upload a Letter of Authorization signed by an officer who IS currently listed on the extract, formally authorizing the named representative.\n* Verify name spelling character-by-character between the form and the extract — even a single letter difference will cause a mismatch.\n* If the registry is being updated, wait for the update to be formally recorded or use the LOA route in the interim.\n* Contact trusthub-verify@twilio.com if you believe the mismatch is due to a registry propagation delay.",
    "description": "Your authorized representative is not listed on the Business Extract. Change the representative to one named on the extract OR upload an LOA signed by a listed officer.",
    "date_created": "2026-06-30T12:34:09-05:00",
    "last_updated": "2026-06-30T12:34:09-05:00"
  },
  {
    "code": 18647,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "LOA Signer Invalid",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour LOA was rejected because the signer is not listed as an active director or officer on the Business Registration Extract. Have an authorized officer sign it.\n\n### Possible causes\n\n- The person who signed the LOA is a senior employee such as a general manager, legal counsel, or finance director who is not formally listed as a director or officer in the company registry.\n- The LOA was signed by a director who has since resigned and been removed from the registry.\n- The signer is listed on a related entity's registry but not on the specific registering entity's extract.\n- The extract submitted is outdated and does not reflect the current officer list.\n- The name on the LOA signature does not exactly match the name as it appears on the extract.\n\n### Possible solutions\n\n- Identify a person unambiguously listed as an active director or officer on the most current Business Registration Extract and have them re-sign the LOA.\n- Verify the signer's status directly in the relevant national business registry — do not rely on internal titles alone.\n- Obtain a current Business Registration Extract to confirm who is presently listed as an active officer.\n- Ensure the signer's full legal name on the LOA matches exactly how their name appears in the registry entry, including all surnames and initials.\n- If the only individuals with officer status are unavailable, consider filing an updated officer appointment with the registry.\n- Contact trusthub-verify@twilio.com with documentation of the signer's officer status (such as a board resolution or certificate of incumbency) if there is a discrepancy.\n",
    "causes": "* The person who signed the LOA is a senior employee such as a general manager, legal counsel, or finance director who is not formally listed as a director or officer in the company registry.\n* The LOA was signed by a director who has since resigned and been removed from the registry.\n* The signer is listed on a related entity's registry but not on the specific registering entity's extract.\n* The extract submitted is outdated and does not reflect the current officer list.\n* The name on the LOA signature does not exactly match the name as it appears on the extract.",
    "solutions": "* Identify a person unambiguously listed as an active director or officer on the most current Business Registration Extract and have them re-sign the LOA.\n* Verify the signer's status directly in the relevant national business registry — do not rely on internal titles alone.\n* Obtain a current Business Registration Extract to confirm who is presently listed as an active officer.\n* Ensure the signer's full legal name on the LOA matches exactly how their name appears in the registry entry, including all surnames and initials.\n* If the only individuals with officer status are unavailable, consider filing an updated officer appointment with the registry.\n* Contact trusthub-verify@twilio.com with documentation of the signer's officer status (such as a board resolution or certificate of incumbency) if there is a discrepancy.",
    "description": "Your LOA was rejected because the signer is not listed as an active director or officer on the Business Registration Extract. Have an authorized officer sign it.",
    "date_created": "2026-06-30T12:34:09-05:00",
    "last_updated": "2026-06-30T12:34:09-05:00"
  },
  {
    "code": 19003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Contact with the unique_customer_provided_id provided already exists",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when you submit a contact with a `unique_customer_provided_id` that already belongs to an existing contact. Use `unique_customer_provided_id` as a unique identifier for one contact only. If you identify contacts from your own system with this field, keep that value mapped to a single contact record.\n\n### Possible causes\n\n- You created a contact with a `unique_customer_provided_id` that is already assigned to another contact.\n- You updated a contact and changed `unique_customer_provided_id` to a value that already exists on a different contact.\n- Your application sent more than one contact record for the same external customer identifier, so multiple contacts attempted to use the same `unique_customer_provided_id`.\n\n### Possible solutions\n\n- Find the existing contact that already uses the `unique_customer_provided_id`. If the request refers to the same person, update that contact instead of creating another one.\n- If the request is for a different person, send a different `unique_customer_provided_id` that is unique in your source system.\n- If the existing contact is no longer needed, remove or update that contact before you retry the request.\n- Review your contact sync logic so each external customer record maps to only one `unique_customer_provided_id`.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* You created a contact with a `unique_customer_provided_id` that is already assigned to another contact.\n* You updated a contact and changed `unique_customer_provided_id` to a value that already exists on a different contact.\n* Your application sent more than one contact record for the same external customer identifier, so multiple contacts attempted to use the same `unique_customer_provided_id`.",
    "solutions": "* Find the existing contact that already uses the `unique_customer_provided_id`. If the request refers to the same person, update that contact instead of creating another one.\n* If the request is for a different person, send a different `unique_customer_provided_id` that is unique in your source system.\n* If the existing contact is no longer needed, remove or update that contact before you retry the request.\n* Review your contact sync logic so each external customer record maps to only one `unique_customer_provided_id`.",
    "description": "This error occurs when you submit a contact with a `unique_customer_provided_id` that already belongs to an existing contact. Use `unique_customer_provided_id` as a unique identifier for one contact only. If you identify contacts from your own system with this field, keep that value mapped to a single contact record.",
    "date_created": "2020-07-21T18:31:31Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 19004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid or missing Contact input",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a contact request body with invalid or missing input. If you use Bulk Upsert Contacts, Twilio returns validation details for each `correlation_id` through `error_code` and `error_messages` so you can identify the contact record that failed.\n\n### Possible causes\n\n- A required field is missing from the contact payload.\n- The payload includes a duplicate field or an invalid field name.\n- The request body is malformed or includes unsupported fields for the contact endpoint you called.\n- If you are creating a contact, the payload may be missing a supported identifying field such as `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `channel`.\n\n### Possible solutions\n\n- Validate the request body against the Contact API schema before you retry the request. If you use Bulk Upsert Contacts, include the required `items` array.\n- Add any missing required field, remove duplicate or unsupported fields, and correct invalid field names before resubmitting the request.\n- If you use Bulk Upsert Contacts, review the `error_code` and `error_messages` values returned for each `correlation_id` to identify the exact contact record that failed validation.\n- If you send a phone number in `contact_id`, format it in `E.164`.\n- If you are creating a contact record, include at least one supported identifying field such as `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `channel`.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Consent Management API](/docs/messaging/features/consent-api)\n",
    "causes": "* A required field is missing from the contact payload.\n* The payload includes a duplicate field or an invalid field name.\n* The request body is malformed or includes unsupported fields for the contact endpoint you called.\n* If you are creating a contact, the payload may be missing a supported identifying field such as `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `channel`.",
    "solutions": "* Validate the request body against the Contact API schema before you retry the request. If you use Bulk Upsert Contacts, include the required `items` array.\n* Add any missing required field, remove duplicate or unsupported fields, and correct invalid field names before resubmitting the request.\n* If you use Bulk Upsert Contacts, review the `error_code` and `error_messages` values returned for each `correlation_id` to identify the exact contact record that failed validation.\n* If you send a phone number in `contact_id`, format it in `E.164`.\n* If you are creating a contact record, include at least one supported identifying field such as `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `channel`.",
    "description": "This error occurs when you send a contact request body with invalid or missing input. If you use Bulk Upsert Contacts, Twilio returns validation details for each `correlation_id` through `error_code` and `error_messages` so you can identify the contact record that failed.",
    "date_created": "2020-07-21T18:39:38Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 19005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Contact validation error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe data provided in the request body is invalid\n\n### Possible causes\n\nInvalid string length, invalid data type\n\n### Possible solutions\n\nReview the request body and the API documentation for more information\n",
    "causes": "Invalid string length, invalid data type",
    "solutions": "Review the request body and the API documentation for more information",
    "description": "The data provided in the request body is invalid",
    "date_created": "2020-07-21T18:48:13Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid contact search request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this error because the contact search request is invalid. This usually means the request body, search filters, or query format does not match the requirements for the Contact API.\n\n### Possible causes\n\n- The request includes an invalid or unsupported search parameter.\n- A required field is missing from the search request.\n- The search filter uses an incorrect data type or an invalid value.\n- The request body is not formatted as valid JSON.\n- The search expression does not match the supported schema for the Contact API.\n\n### Possible solutions\n\n- Review your request payload and confirm that every search parameter is supported by the Contact API.\n- Make sure all required fields are included and that each value uses the expected format and data type.\n- Validate that the request body is well-formed JSON before sending the request.\n- Remove unsupported filters or parameters from the search request.\n- Check your Contact API implementation against the Unified Profiles documentation and update the request format as needed.\n\n#### Additional resources\n\n- [Unified Profiles documentation](/docs/unified-profiles)\n",
    "causes": "* The request includes an invalid or unsupported search parameter.\n* A required field is missing from the search request.\n* The search filter uses an incorrect data type or an invalid value.\n* The request body is not formatted as valid JSON.\n* The search expression does not match the supported schema for the Contact API.",
    "solutions": "* Review your request payload and confirm that every search parameter is supported by the Contact API.\n* Make sure all required fields are included and that each value uses the expected format and data type.\n* Validate that the request body is well-formed JSON before sending the request.\n* Remove unsupported filters or parameters from the search request.\n* Check your Contact API implementation against the Unified Profiles documentation and update the request format as needed.",
    "description": "Twilio returned this error because the contact search request is invalid. This usually means the request body, search filters, or query format does not match the requirements for the Contact API.",
    "date_created": "2020-07-21T18:48:55Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19011,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Contact update failed: invalid JSON or non-updatable field",
    "secondary_message": null,
    "product": "Branded Comms, Usage",
    "products_used": [
      "messaging",
      "usage"
    ],
    "docs": "\n## Description\n\nThis error occurs when your contact update request contains invalid JSON or includes fields that this endpoint does not allow you to update. Update only `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `custom_fields`.\n\n### Possible causes\n\n- The request body is not valid JSON.\n- The request includes one or more fields other than `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `custom_fields`.\n- The request mixes supported update fields with unsupported fields in the same payload.\n\n### Possible solutions\n\n- Validate the request body and send well-formed JSON.\n- Remove any unsupported fields from the update request.\n- Limit contact updates to `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, and `custom_fields`.\n- Retry the request after you correct the payload.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Debugging your Twilio application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The request body is not valid JSON.\n* The request includes one or more fields other than `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `custom_fields`.\n* The request mixes supported update fields with unsupported fields in the same payload.",
    "solutions": "* Validate the request body and send well-formed JSON.\n* Remove any unsupported fields from the update request.\n* Limit contact updates to `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, and `custom_fields`.\n* Retry the request after you correct the payload.",
    "description": "This error occurs when your contact update request contains invalid JSON or includes fields that this endpoint does not allow you to update. Update only `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `custom_fields`.",
    "date_created": "2020-08-07T22:45:13Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 19012,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "When updating a contact at least one field should be updated",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when your contact update request does not include any supported field changes. Send at least one supported update field such as `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `custom_fields`.\n\n### Possible causes\n\n- The request body is empty, or it does not include any contact fields to update.\n- The payload omits all fields that this endpoint allows you to update, which are `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, and `custom_fields`.\n- The request includes only unsupported fields, so Twilio does not receive any valid contact updates.\n\n### Possible solutions\n\n- Add at least one supported update field before you retry the request. You can update `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `custom_fields`.\n- Remove unsupported fields from the payload and resend only fields that this endpoint accepts for contact updates.\n- Validate the request body before you send it so the payload is well formed and includes at least one supported field to update.\n- Retry the request after you correct the payload.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Troubleshooting Twilio](/docs/usage/troubleshooting)\n",
    "causes": "* The request body is empty, or it does not include any contact fields to update.\n* The payload omits all fields that this endpoint allows you to update, which are `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, and `custom_fields`.\n* The request includes only unsupported fields, so Twilio does not receive any valid contact updates.",
    "solutions": "* Add at least one supported update field before you retry the request. You can update `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `custom_fields`.\n* Remove unsupported fields from the payload and resend only fields that this endpoint accepts for contact updates.\n* Validate the request body before you send it so the payload is well formed and includes at least one supported field to update.\n* Retry the request after you correct the payload.",
    "description": "This error occurs when your contact update request does not include any supported field changes. Send at least one supported update field such as `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `custom_fields`.",
    "date_created": "2020-08-07T22:46:42Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 19013,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Contact requires at least one name, unique_customer_provided_id, or channel",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you submit a contact without any field that Twilio accepts to identify or describe that contact. Include at least one of `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `channel`.\n\n### Possible causes\n\n- The contact payload did not include any of the required fields.\n- The request only included other contact data, so Twilio could not find a supported name field, `unique_customer_provided_id`, or `channel` value in the payload. This is an inference based on the required-field validation for this error and the supported contact field validation used by related contact errors.\n\n### Possible solutions\n\n- Update the contact payload to include at least one supported field before you retry the request. You can use `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `channel`.\n- If you identify contacts from your own system, send `unique_customer_provided_id` so you can create and retrieve the contact consistently.\n- If you identify contacts by channel, include `channel` data in the contact object instead of sending an empty contact record. When you later fetch the contact, use either `unique_customer_provided_id` or `channel`, not both.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Consent Management API](/docs/messaging/features/consent-api)\n",
    "causes": "* The contact payload did not include any of the required fields.\n* The request only included other contact data, so Twilio could not find a supported name field, `unique_customer_provided_id`, or `channel` value in the payload. This is an inference based on the required-field validation for this error and the supported contact field validation used by related contact errors.",
    "solutions": "* Update the contact payload to include at least one supported field before you retry the request. You can use `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `channel`.\n* If you identify contacts from your own system, send `unique_customer_provided_id` so you can create and retrieve the contact consistently.\n* If you identify contacts by channel, include `channel` data in the contact object instead of sending an empty contact record. When you later fetch the contact, use either `unique_customer_provided_id` or `channel`, not both.",
    "description": "This error occurs when you submit a contact without any field that Twilio accepts to identify or describe that contact. Include at least one of `first_name`, `middle_name`, `last_name`, `legal_name`, `preferred_name`, `unique_customer_provided_id`, or `channel`.",
    "date_created": "2020-08-07T22:47:45Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 19014,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Can fetch contact either by unique_customer_provided_id or channel ",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nContact fetch request should contain unique\\_customer\\_provided\\_id or channel, not both\n\n### Possible causes\n\nContact fetch request contains both unique\\_customer\\_provided\\_id and channel\n\n### Possible solutions\n\nContact can be fetched either by unique\\_customer\\_provided\\_id or by channel\n",
    "causes": "Contact fetch request contains both unique\\_customer\\_provided\\_id and channel",
    "solutions": "Contact can be fetched either by unique\\_customer\\_provided\\_id or by channel",
    "description": "Contact fetch request should contain unique\\_customer\\_provided\\_id or channel, not both",
    "date_created": "2020-08-07T22:48:55Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19020,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Contact with the provided channel value already exists",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou tried to create or update a contact with a channel value that is already assigned to another contact. A channel value must be unique for each contact, so Twilio rejects the request when the same identifier is already in use.\n\n### Possible causes\n\n- The request includes a phone number, email address, or other channel value that already belongs to an existing contact.\n- Your application is retrying a create request and is sending the same channel value again.\n- Your contact matching or deduplication logic did not check whether the channel value already exists before creating a new contact.\n- You are trying to add a channel value to a new contact when that value should be updated on the existing contact instead.\n\n### Possible solutions\n\n- Search for an existing contact that already uses the channel value before you create a new contact.\n- If the channel value belongs to the same person, update the existing contact instead of creating another one.\n- If your application retries failed requests, make sure your retry logic does not create duplicate contacts with the same channel value.\n- Validate incoming channel values in your application and enforce uniqueness before you send the request.\n- If the channel value is incorrect, correct it and submit the request again.\n\n#### Additional resources\n\n- [Twilio Segment](/docs/segment)\n",
    "causes": "* The request includes a phone number, email address, or other channel value that already belongs to an existing contact.\n* Your application is retrying a create request and is sending the same channel value again.\n* Your contact matching or deduplication logic did not check whether the channel value already exists before creating a new contact.\n* You are trying to add a channel value to a new contact when that value should be updated on the existing contact instead.",
    "solutions": "* Search for an existing contact that already uses the channel value before you create a new contact.\n* If the channel value belongs to the same person, update the existing contact instead of creating another one.\n* If your application retries failed requests, make sure your retry logic does not create duplicate contacts with the same channel value.\n* Validate incoming channel values in your application and enforce uniqueness before you send the request.\n* If the channel value is incorrect, correct it and submit the request again.",
    "description": "You tried to create or update a contact with a channel value that is already assigned to another contact. A channel value must be unique for each contact, so Twilio rejects the request when the same identifier is already in use.",
    "date_created": "2020-07-21T20:14:25Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Only one channel can be set as primary",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nis\\_primary can be set to true only for one channel\n\n### Possible causes\n\nRequest with is\\_primary set to True for more than one channel\n\n### Possible solutions\n\nEnsure only each channel has only 1 is\\_primary set to true\n",
    "causes": "Request with is\\_primary set to True for more than one channel",
    "solutions": "Ensure only each channel has only 1 is\\_primary set to true",
    "description": "is\\_primary can be set to true only for one channel",
    "date_created": "2020-07-21T20:15:07Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19022,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid channel",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRequest with a channel that is not supported\n\n### Possible causes\n\nChannel other than: email, sms, voice, messenger, whatsapp\n\n### Possible solutions\n\nOnly email, sms, voice, messenger or whatsapp are valid channels\n",
    "causes": "Channel other than: email, sms, voice, messenger, whatsapp",
    "solutions": "Only email, sms, voice, messenger or whatsapp are valid channels",
    "description": "Request with a channel that is not supported",
    "date_created": "2020-07-21T20:15:54Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid channel type",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a request includes an invalid channel type. This usually happens when rich content falls back to a channel that does not support the content type you sent.\n\n### Possible causes\n\n- You are sending rich content and the message falls back to a channel that does not support that content type.\n- Your template does not include a fallback content type that matches the destination channel. Twilio uses fallback content types so a single template can deliver rich content to one channel and plain text or media to another.\n\n### Possible solutions\n\n- Add a `twilio/text` fallback when the message can fall back to SMS. Twilio supports `twilio/text` as a fallback content type for mixed-channel messaging.\n- Add a `twilio/media` fallback when the message can fall back to MMS. Twilio supports `twilio/media` for MMS and other rich messaging channels.\n- When you use Content Templates, include fallback content types for each supported channel before you send the message. Twilio lets you specify fallback content types when rich content is not supported.\n\n#### Additional resources\n\n- [Channel Fallback](/docs/bulk-messaging/channel-fallback)\n- [twilio/text](/docs/content/twilio-text)\n- [twilio/media](/docs/content/twilio-media)\n",
    "causes": "* You are sending rich content and the message falls back to a channel that does not support that content type.\n* Your template does not include a fallback content type that matches the destination channel. Twilio uses fallback content types so a single template can deliver rich content to one channel and plain text or media to another.",
    "solutions": "* Add a `twilio/text` fallback when the message can fall back to SMS. Twilio supports `twilio/text` as a fallback content type for mixed-channel messaging.\n* Add a `twilio/media` fallback when the message can fall back to MMS. Twilio supports `twilio/media` for MMS and other rich messaging channels.\n* When you use Content Templates, include fallback content types for each supported channel before you send the message. Twilio lets you specify fallback content types when rich content is not supported.",
    "description": "Twilio returns this error when a request includes an invalid channel type. This usually happens when rich content falls back to a channel that does not support the content type you sent.",
    "date_created": "2020-07-21T20:16:40Z",
    "last_updated": "2026-04-29T18:23:52+01:00"
  },
  {
    "code": 19024,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid channel input",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request body for a Conversations API operation contains an invalid `channel` value or is missing required channel-related input. Twilio could not process the request because the submitted parameters do not match the expected format or allowed values.\n\n### Possible causes\n\n- The request is missing a required field for the channel you are trying to create or configure\n- The `channel` value is invalid for the Conversations resource you are using\n- A channel-specific field contains an invalid value or format\n- The request includes duplicate parameters or conflicting channel configuration\n- The request body structure does not match the expected Conversations API schema\n\n### Possible solutions\n\n- Review the request body and confirm that all required parameters are present\n- Verify that the `channel` value is supported for the Conversations API resource you are calling\n- Check each channel-related parameter for valid formatting, spelling, and accepted values\n- Remove any duplicate fields or conflicting channel configuration from the request\n- Compare your request against the Conversations API reference and update the payload before retrying\n\n#### Additional resources\n\n- [Conversations documentation](/docs/conversations)\n- [Conversations API documentation](/docs/conversations-classic/api)\n",
    "causes": "* The request is missing a required field for the channel you are trying to create or configure\n* The `channel` value is invalid for the Conversations resource you are using\n* A channel-specific field contains an invalid value or format\n* The request includes duplicate parameters or conflicting channel configuration\n* The request body structure does not match the expected Conversations API schema",
    "solutions": "* Review the request body and confirm that all required parameters are present\n* Verify that the `channel` value is supported for the Conversations API resource you are calling\n* Check each channel-related parameter for valid formatting, spelling, and accepted values\n* Remove any duplicate fields or conflicting channel configuration from the request\n* Compare your request against the Conversations API reference and update the payload before retrying",
    "description": "The request body for a Conversations API operation contains an invalid `channel` value or is missing required channel-related input. Twilio could not process the request because the submitted parameters do not match the expected format or allowed values.",
    "date_created": "2020-07-21T20:17:21Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19025,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channel validation error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when a request includes channel data that fails validation. This usually means the channel value is too long or too short, or the value does not match the expected format for the selected channel type, such as an invalid email address or an invalid phone number.\n\n### Possible causes\n\n- The channel value is longer or shorter than the allowed length.\n- The channel value contains an email address that is not valid.\n- The channel value contains a phone number that is not in a valid format for the selected channel.\n- The request uses a channel-specific address that does not follow the required format. For example, WhatsApp addresses must use `whatsapp:{phone_number}` and phone numbers must use `E.164` where required.\n- The request uses a Messenger address that does not use a valid `messenger:{messenger_page_id}` or `messenger:{messenger_user_id}` format.\n\n### Possible solutions\n\n- Review the channel payload and correct any invalid values before retrying the request.\n- If the channel uses a phone number, format the number in `E.164`.\n- If the channel uses WhatsApp, send the value as `whatsapp:{phone_number}` with the phone number in `E.164`.\n- If the channel uses Facebook Messenger, send the value as `messenger:{messenger_page_id}` or `messenger:{messenger_user_id}`.\n- If the channel uses email, confirm that the email address is complete and correctly formatted.\n- If the value is too long, shorten it to meet the expected format and length for that channel type.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Twilio Messaging Channels](/docs/messaging/channels)\n- [What is E.164?](/docs/glossary/what-e164)\n",
    "causes": "* The channel value is longer or shorter than the allowed length.\n* The channel value contains an email address that is not valid.\n* The channel value contains a phone number that is not in a valid format for the selected channel.\n* The request uses a channel-specific address that does not follow the required format. For example, WhatsApp addresses must use `whatsapp:{phone_number}` and phone numbers must use `E.164` where required.\n* The request uses a Messenger address that does not use a valid `messenger:{messenger_page_id}` or `messenger:{messenger_user_id}` format.",
    "solutions": "* Review the channel payload and correct any invalid values before retrying the request.\n* If the channel uses a phone number, format the number in `E.164`.\n* If the channel uses WhatsApp, send the value as `whatsapp:{phone_number}` with the phone number in `E.164`.\n* If the channel uses Facebook Messenger, send the value as `messenger:{messenger_page_id}` or `messenger:{messenger_user_id}`.\n* If the channel uses email, confirm that the email address is complete and correctly formatted.\n* If the value is too long, shorten it to meet the expected format and length for that channel type.",
    "description": "Twilio returns this error when a request includes channel data that fails validation. This usually means the channel value is too long or too short, or the value does not match the expected format for the selected channel type, such as an invalid email address or an invalid phone number.",
    "date_created": "2020-07-21T20:18:05Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19026,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum number of channels allowed reached",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nMaximum number of channels of the same type allowed reached\n\n### Possible causes\n\nAttempt to create more than 5 channels of the same type\n\n### Possible solutions\n\nOnly 5 channels of the same type are allowed\n",
    "causes": "Attempt to create more than 5 channels of the same type",
    "solutions": "Only 5 channels of the same type are allowed",
    "description": "Maximum number of channels of the same type allowed reached",
    "date_created": "2020-07-21T20:19:01Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19027,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Channel Description",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe channel description provided in the request is invalid\n\n### Possible causes\n\nChannel description is over 100 chars\n\n### Possible solutions\n\nChannel description must be under 100 chars\n",
    "causes": "Channel description is over 100 chars",
    "solutions": "Channel description must be under 100 chars",
    "description": "The channel description provided in the request is invalid",
    "date_created": "2020-07-21T20:20:30Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19028,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channel value can not be updated",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou tried to update the `channel` value for an existing Verify configuration or resource that does not allow that field to change after creation. Create the resource with the correct channel from the start. If you need a different channel later, remove the existing resource and create a new one with the new `channel` value.\n\n### Possible causes\n\n- The update request includes a `channel` value that is different from the value already stored on the resource.\n- Your application reuses an update request payload that includes `channel`, even though the existing resource was already created with a different channel.\n- Your integration attempts to switch a resource from one verification channel to another instead of creating a new resource with the required channel.\n\n### Possible solutions\n\n- Remove `channel` from the update request if you do not need to change it.\n- Keep the existing `channel` value unchanged when you update other fields on the resource.\n- If you need to use a different channel, delete the existing resource and create a new one with the correct `channel` value.\n- Review your application logic to make sure create and update requests are handled separately and that immutable fields are not sent in update operations.\n\n#### Additional resources\n\n- [Twilio Verify documentation](/docs/verify)\n- [Verify API reference](/docs/verify/api)\n",
    "causes": "* The update request includes a `channel` value that is different from the value already stored on the resource.\n* Your application reuses an update request payload that includes `channel`, even though the existing resource was already created with a different channel.\n* Your integration attempts to switch a resource from one verification channel to another instead of creating a new resource with the required channel.",
    "solutions": "* Remove `channel` from the update request if you do not need to change it.\n* Keep the existing `channel` value unchanged when you update other fields on the resource.\n* If you need to use a different channel, delete the existing resource and create a new one with the correct `channel` value.\n* Review your application logic to make sure create and update requests are handled separately and that immutable fields are not sent in update operations.",
    "description": "You tried to update the `channel` value for an existing Verify configuration or resource that does not allow that field to change after creation. Create the resource with the correct channel from the start. If you need a different channel later, remove the existing resource and create a new one with the new `channel` value.",
    "date_created": "2020-07-21T20:21:34Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19029,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "When updating a channel at least one field should be updated",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when your channel update request does not include any channel data to change. When you update a channel, include at least one supported field in the request.\n\n### Possible causes\n\n- The request body did not include any channel updates.\n- The request did not include a supported updatable field. Update only `type`, `description`, or `is_primary`.\n- The request attempted to change the channel value itself, which cannot be updated.\n\n### Possible solutions\n\n- Send at least one supported field in the update request. Use `type`, `description`, or `is_primary`.\n- If you update `type`, use a supported channel value: `email`, `sms`, `voice`, `messenger`, or `whatsapp`.\n- If you update `description`, keep the value under 100 characters.\n- If you set `is_primary` to `true`, make sure only one channel is marked as primary.\n- If you need to change the channel value itself, remove it from the update request. Delete the existing channel and create a new one with the new value.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Consent Management API](/docs/messaging/features/consent-api)\n",
    "causes": "* The request body did not include any channel updates.\n* The request did not include a supported updatable field. Update only `type`, `description`, or `is_primary`.\n* The request attempted to change the channel value itself, which cannot be updated.",
    "solutions": "* Send at least one supported field in the update request. Use `type`, `description`, or `is_primary`.\n* If you update `type`, use a supported channel value: `email`, `sms`, `voice`, `messenger`, or `whatsapp`.\n* If you update `description`, keep the value under 100 characters.\n* If you set `is_primary` to `true`, make sure only one channel is marked as primary.\n* If you need to change the channel value itself, remove it from the update request. Delete the existing channel and create a new one with the new value.",
    "description": "This error occurs when your channel update request does not include any channel data to change. When you update a channel, include at least one supported field in the request.",
    "date_created": "2020-08-07T22:50:51Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 19030,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid location type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your Contact API request includes a location `type` value that Twilio does not accept. Use only the supported location type values when you create or update contact profile data.\n\n### Possible causes\n\n- The location `type` field is set to a value other than `work`, `home`, or `other`.\n- Your application maps location data to a custom label that the Contact API does not support.\n- A create or update request includes a location object with an unsupported `type` value.\n\n### Possible solutions\n\n- Update the request so each location `type` uses one of the supported values: `work`, `home`, or `other`.\n- Add request validation in your application before you send contact data to Twilio.\n- Review any data mapping or transformation step that builds the location object and replace unsupported values with the accepted set.\n- Resubmit the request after correcting the invalid location `type`.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Messaging API Overview](/docs/messaging/api)\n",
    "causes": "* The location `type` field is set to a value other than `work`, `home`, or `other`.\n* Your application maps location data to a custom label that the Contact API does not support.\n* A create or update request includes a location object with an unsupported `type` value.",
    "solutions": "* Update the request so each location `type` uses one of the supported values: `work`, `home`, or `other`.\n* Add request validation in your application before you send contact data to Twilio.\n* Review any data mapping or transformation step that builds the location object and replace unsupported values with the accepted set.\n* Resubmit the request after correcting the invalid location `type`.",
    "description": "This error occurs when your Contact API request includes a location `type` value that Twilio does not accept. Use only the supported location type values when you create or update contact profile data.",
    "date_created": "2020-07-21T20:23:21Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19031,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum number of locations allowed reached ",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when your request tries to create more than five locations for a single contact. Reduce the total number of locations in the contact payload before you retry the request.\n\n### Possible causes\n\n- The request body includes more than five location objects for one contact.\n- The contact already has five saved locations and the request tries to add another one.\n- A bulk upsert request adds locations to an existing contact and pushes the total above the five-location limit.\n\n### Possible solutions\n\n- Send no more than five locations for each contact.\n- Remove an existing location before you add a new one.\n- Review the full contact payload before you retry the request and remove duplicate, outdated, or unnecessary locations.\n- If you update contacts in bulk, validate the final number of locations for each contact so the combined total does not exceed five.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Consent Management API](/docs/messaging/features/consent-api)\n",
    "causes": "* The request body includes more than five location objects for one contact.\n* The contact already has five saved locations and the request tries to add another one.\n* A bulk upsert request adds locations to an existing contact and pushes the total above the five-location limit.",
    "solutions": "* Send no more than five locations for each contact.\n* Remove an existing location before you add a new one.\n* Review the full contact payload before you retry the request and remove duplicate, outdated, or unnecessary locations.\n* If you update contacts in bulk, validate the final number of locations for each contact so the combined total does not exceed five.",
    "description": "This error occurs when your request tries to create more than five locations for a single contact. Reduce the total number of locations in the contact payload before you retry the request.",
    "date_created": "2020-07-21T20:23:58Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 19032,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid location input",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this error because the location data in your request body is invalid. One or more location fields are missing, duplicated, empty, or formatted incorrectly, so Twilio cannot process the request.\n\n### Possible causes\n\n- A required location field is missing from the request body.\n- A location field contains an invalid value.\n- The same location field is included more than once.\n- The request body does not match the expected schema for the Phone Numbers API resource you are trying to update or create.\n- Address or regional fields are provided in a format that Twilio does not accept.\n\n### Possible solutions\n\n- Review the request body and confirm that all required location fields are present.\n- Remove any duplicate parameters from the request.\n- Validate each location value before you send the request.\n- Check the specific Phone Numbers API resource you are using and make sure your request matches the expected parameter names and formats.\n- If you are submitting address-related data, verify that the country, region, locality, and postal code values are supported and correctly formatted.\n\n#### Additional resources\n\n- [Twilio Phone Numbers documentation](/docs/phone-numbers)\n- [Phone Numbers API](/docs/phone-numbers/api)\n",
    "causes": "* A required location field is missing from the request body.\n* A location field contains an invalid value.\n* The same location field is included more than once.\n* The request body does not match the expected schema for the Phone Numbers API resource you are trying to update or create.\n* Address or regional fields are provided in a format that Twilio does not accept.",
    "solutions": "* Review the request body and confirm that all required location fields are present.\n* Remove any duplicate parameters from the request.\n* Validate each location value before you send the request.\n* Check the specific Phone Numbers API resource you are using and make sure your request matches the expected parameter names and formats.\n* If you are submitting address-related data, verify that the country, region, locality, and postal code values are supported and correctly formatted.",
    "description": "Twilio returned this error because the location data in your request body is invalid. One or more location fields are missing, duplicated, empty, or formatted incorrectly, so Twilio cannot process the request.",
    "date_created": "2020-07-21T20:24:37Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19033,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Location validation error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when a location object in your request body contains invalid input values. Twilio returns it when one or more location fields fail validation, including invalid lengths or incorrect data types.\n\n### Possible causes\n\n- A field in the location object has an invalid length.\n- A field in the location object uses the wrong data type.\n- The location `type` value is not one of `work`, `home`, or `other`.\n- The location country code is not a valid `ISO 3166-1 alpha-2` value.\n- The request body includes a missing, invalid, or duplicate location field.\n\n### Possible solutions\n\n- Validate every location field in the request body before you send it. Make sure each value uses the expected data type and stays within the supported length.\n- Set the location `type` to `work`, `home`, or `other`.\n- Use a valid two-letter `ISO 3166-1 alpha-2` country code, such as `US`, for the location country value.\n- Remove duplicate fields and add any required location fields that are missing from the payload.\n- Review the Contact API request format and retry the request after you correct the invalid location fields.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Consent Management API](/docs/messaging/features/consent-api)\n",
    "causes": "* A field in the location object has an invalid length.\n* A field in the location object uses the wrong data type.\n* The location `type` value is not one of `work`, `home`, or `other`.\n* The location country code is not a valid `ISO 3166-1 alpha-2` value.\n* The request body includes a missing, invalid, or duplicate location field.",
    "solutions": "* Validate every location field in the request body before you send it. Make sure each value uses the expected data type and stays within the supported length.\n* Set the location `type` to `work`, `home`, or `other`.\n* Use a valid two-letter `ISO 3166-1 alpha-2` country code, such as `US`, for the location country value.\n* Remove duplicate fields and add any required location fields that are missing from the payload.\n* Review the Contact API request format and retry the request after you correct the invalid location fields.",
    "description": "This error occurs when a location object in your request body contains invalid input values. Twilio returns it when one or more location fields fail validation, including invalid lengths or incorrect data types.",
    "date_created": "2020-07-21T20:25:13Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19034,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid country code",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nCountry code provided in the request is not valid\n\n### Possible causes\n\nCountry code is not in the ISO 3166-1 alpha-2 country code of the address format\n\n### Possible solutions\n\nUpdate the country code to match ISO 3166-1 alpha-2 country code of the address format\n",
    "causes": "Country code is not in the ISO 3166-1 alpha-2 country code of the address format",
    "solutions": "Update the country code to match ISO 3166-1 alpha-2 country code of the address format",
    "description": "Country code provided in the request is not valid",
    "date_created": "2020-07-21T20:26:00Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19035,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid page size, it must be between 1 and 25 if specified",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe page size provided in the request is not valid\n\n### Possible causes\n\nPage size specified greater than 25 or less than 1\n\n### Possible solutions\n\nPage size must be between 1 and 25\n",
    "causes": "Page size specified greater than 25 or less than 1",
    "solutions": "Page size must be between 1 and 25",
    "description": "The page size provided in the request is not valid",
    "date_created": "2020-07-21T20:26:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19036,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid page token",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe page token provided in the request is not valid\n\n### Possible causes\n\nPage token provided is not an integer\n\n### Possible solutions\n\nPage token must be an integer\n",
    "causes": "Page token provided is not an integer",
    "solutions": "Page token must be an integer",
    "description": "The page token provided in the request is not valid",
    "date_created": "2020-07-21T20:27:36Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19037,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "When updating a location at least one field should be updated",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when your location update request does not include any location data for Twilio to change. Send at least one valid location field in the request body before you retry.\n\n### Possible causes\n\n- The update request did not include any location updates.\n- The request body was reduced to an empty update, so Twilio received no changes to apply.\n- The values you intended to update were omitted from the final payload.\n\n### Possible solutions\n\n- Include at least one location field in the update request before you retry.\n- Verify that the final request body contains the location value you want to change and is not empty.\n- If you update `type`, use only `work`, `home`, or `other`.\n- If you update a country code, use a valid ISO 3166-1 alpha-2 value.\n- Review the request body for invalid length or invalid data type issues before you send the update again.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Consent Management API](/docs/messaging/features/consent-api)\n",
    "causes": "* The update request did not include any location updates.\n* The request body was reduced to an empty update, so Twilio received no changes to apply.\n* The values you intended to update were omitted from the final payload.",
    "solutions": "* Include at least one location field in the update request before you retry.\n* Verify that the final request body contains the location value you want to change and is not empty.\n* If you update `type`, use only `work`, `home`, or `other`.\n* If you update a country code, use a valid ISO 3166-1 alpha-2 value.\n* Review the request body for invalid length or invalid data type issues before you send the update again.",
    "description": "This error occurs when your location update request does not include any location data for Twilio to change. Send at least one valid location field in the request body before you retry.",
    "date_created": "2020-08-07T22:52:03Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 19038,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Page token must be bigger than or equal to 0",
    "secondary_message": null,
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThis error occurs when you request Chat resources with a `PageToken` value that is less than `0`. `PageToken` must be a non-negative integer when you paginate through results.\n\n### Possible causes\n\n- The request includes a `PageToken` query parameter with a negative value\n- Your application decrements the page token below `0` while paginating through Chat messages or other list results\n- A client-side validation issue allows an invalid `PageToken` value to be sent to the Chat API\n- A variable used to build the request is uninitialized or incorrectly parsed, which results in a negative number\n\n### Possible solutions\n\n- Update your request so `PageToken` is set to `0` or a positive integer\n- Add input validation before sending the request to prevent negative `PageToken` values\n- Review your pagination logic to make sure previous-page calculations never produce a value below `0`\n- If you are storing pagination state, confirm the value is preserved correctly between requests\n- Test the request with a known valid `PageToken` value to verify the rest of the request is correct\n\n#### Additional resources\n\n- [Twilio Chat documentation](/docs/chat)\n",
    "causes": "* The request includes a `PageToken` query parameter with a negative value\n* Your application decrements the page token below `0` while paginating through Chat messages or other list results\n* A client-side validation issue allows an invalid `PageToken` value to be sent to the Chat API\n* A variable used to build the request is uninitialized or incorrectly parsed, which results in a negative number",
    "solutions": "* Update your request so `PageToken` is set to `0` or a positive integer\n* Add input validation before sending the request to prevent negative `PageToken` values\n* Review your pagination logic to make sure previous-page calculations never produce a value below `0`\n* If you are storing pagination state, confirm the value is preserved correctly between requests\n* Test the request with a known valid `PageToken` value to verify the rest of the request is correct",
    "description": "This error occurs when you request Chat resources with a `PageToken` value that is less than `0`. `PageToken` must be a non-negative integer when you paginate through results.",
    "date_created": "2022-02-15T10:27:54Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19040,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Custom Field provided is not defined",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe custom field provided in the request does not exist\n\n### Possible causes\n\nRequest with a custom\\_field that is not defined\n\n### Possible solutions\n\nUse custom field definition API to define the custom field first\n",
    "causes": "Request with a custom\\_field that is not defined",
    "solutions": "Use custom field definition API to define the custom field first",
    "description": "The custom field provided in the request does not exist",
    "date_created": "2020-07-21T20:32:36Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19041,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid or missing Custom Field input",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request body contains invalid custom field data. This error occurs when a required custom field value is missing, when a custom field value does not match the expected format, or when the same custom field is provided more than once in the request.\n\n### Possible causes\n\n- A required custom field value was omitted from the request body.\n- A custom field value was included in an invalid format or with an unsupported value.\n- The same custom field was submitted multiple times in a single request.\n- The request body structure does not match the expected schema for the resource you are creating or updating.\n\n### Possible solutions\n\n- Review the request body and confirm that each required custom field is included.\n- Validate each custom field value before sending the request.\n- Remove duplicate custom fields from the request body.\n- Check the expected request parameters for the endpoint you are calling and make sure the payload matches the documented schema.\n- Retry the request only after correcting the invalid custom field input.\n\n#### Additional resources\n\n- [Twilio Proxy documentation](/docs/proxy)\n",
    "causes": "* A required custom field value was omitted from the request body.\n* A custom field value was included in an invalid format or with an unsupported value.\n* The same custom field was submitted multiple times in a single request.\n* The request body structure does not match the expected schema for the resource you are creating or updating.",
    "solutions": "* Review the request body and confirm that each required custom field is included.\n* Validate each custom field value before sending the request.\n* Remove duplicate custom fields from the request body.\n* Check the expected request parameters for the endpoint you are calling and make sure the payload matches the documented schema.\n* Retry the request only after correcting the invalid custom field input.",
    "description": "The request body contains invalid custom field data. This error occurs when a required custom field value is missing, when a custom field value does not match the expected format, or when the same custom field is provided more than once in the request.",
    "date_created": "2020-07-21T20:33:19Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19042,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Custom Field validation error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request contains one or more invalid values for a Flex custom field. This error occurs when the custom field payload does not meet the expected validation rules for type, format, or allowed length.\n\n### Possible causes\n\n- A custom field value exceeds the maximum allowed length.\n- A custom field value uses the wrong data type, such as sending text where a number, boolean, or date is expected.\n- A date value is not in the expected format.\n- A required custom field value is missing from the request.\n- The request includes a value that does not match the validation rules configured for that custom field.\n\n### Possible solutions\n\n- Review the request body and confirm that every custom field uses a valid value for its configured type.\n- Verify that string values do not exceed the allowed length for the field.\n- Check that date values use the format your Flex configuration expects.\n- Remove unsupported or malformed values from the request before sending it to Twilio.\n- Compare your request with the Flex API resource you are updating or creating and correct any field-level validation issues.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n",
    "causes": "* A custom field value exceeds the maximum allowed length.\n* A custom field value uses the wrong data type, such as sending text where a number, boolean, or date is expected.\n* A date value is not in the expected format.\n* A required custom field value is missing from the request.\n* The request includes a value that does not match the validation rules configured for that custom field.",
    "solutions": "* Review the request body and confirm that every custom field uses a valid value for its configured type.\n* Verify that string values do not exceed the allowed length for the field.\n* Check that date values use the format your Flex configuration expects.\n* Remove unsupported or malformed values from the request before sending it to Twilio.\n* Compare your request with the Flex API resource you are updating or creating and correct any field-level validation issues.",
    "description": "The request contains one or more invalid values for a Flex custom field. This error occurs when the custom field payload does not meet the expected validation rules for type, format, or allowed length.",
    "date_created": "2020-07-21T20:34:04Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19043,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Field definition name already exists",
    "secondary_message": null,
    "product": "Account, Sendgrid",
    "products_used": [
      "api",
      "sendgrid"
    ],
    "docs": "\n## Description\n\nThis error is returned when a request attempts to create or rename a custom field definition to a `name` that is already present for the account. Field definition names must be unique. Field definition `name` values are enforced as case-insensitively unique in the SendGrid Marketing Campaigns API, which manages custom field definitions.\n\n### Possible causes\n\n- The `name` supplied in `POST /v3/marketing/field_definitions` matches (case-insensitively) an existing custom field definition.\n- An update via `PATCH /v3/marketing/field_definitions/{custom_field_id}` attempts to change `name` to one that already exists.\n\n### Possible solutions\n\n- Choose a unique `name` value; uniqueness is case-insensitive, so avoid names that differ only by letter case.\n- List existing definitions first with `GET /v3/marketing/field_definitions` and verify that the desired `name` is not already present (including case-insensitive matches).\n- If you intended to modify an existing definition, update it using `PATCH /v3/marketing/field_definitions/{custom_field_id}` rather than creating a new one.\n- If you must replace an existing definition, remove it with `DELETE /v3/marketing/field_definitions/{custom_field_id}` before creating a new one (only custom fields can be deleted).\n\n#### Additional resources\n\n- [Create Custom Field Definition](/docs/sendgrid/api-reference/custom-fields/create-custom-field-definition)\n- [Get All Field Definitions](/docs/sendgrid/api-reference/custom-fields/get-all-field-definitions)\n- [Update Custom Field Definition](/docs/sendgrid/api-reference/custom-fields/update-custom-field-definition)\n",
    "causes": "* The `name` supplied in `POST /v3/marketing/field_definitions` matches (case-insensitively) an existing custom field definition.\n* An update via `PATCH /v3/marketing/field_definitions/{custom_field_id}` attempts to change `name` to one that already exists.",
    "solutions": "* Choose a unique `name` value; uniqueness is case-insensitive, so avoid names that differ only by letter case.\n* List existing definitions first with `GET /v3/marketing/field_definitions` and verify that the desired `name` is not already present (including case-insensitive matches).\n* If you intended to modify an existing definition, update it using `PATCH /v3/marketing/field_definitions/{custom_field_id}` rather than creating a new one.\n* If you must replace an existing definition, remove it with `DELETE /v3/marketing/field_definitions/{custom_field_id}` before creating a new one (only custom fields can be deleted).",
    "description": "This error is returned when a request attempts to create or rename a custom field definition to a `name` that is already present for the account. Field definition names must be unique. Field definition `name` values are enforced as case-insensitively unique in the SendGrid Marketing Campaigns API, which manages custom field definitions.",
    "date_created": "2020-07-21T20:35:12Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 19044,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Field definition name exceeded maximum length",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe custom field in the request is more than 100 chars long\n\n### Possible causes\n\nRequest with a custom field name greater than 100 chars\n\n### Possible solutions\n\nUpdate custom field name to be 100 chars or less\n",
    "causes": "Request with a custom field name greater than 100 chars",
    "solutions": "Update custom field name to be 100 chars or less",
    "description": "The custom field in the request is more than 100 chars long",
    "date_created": "2020-07-21T20:35:50Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19045,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid field type. Supported types: text, date, number",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a custom field definition request with an unsupported `field_type` value. Supported custom field types are `Text`, `Number`, and `Date`.\n\n### Possible causes\n\n- The request included a `field_type` value other than `Text`, `Number`, or `Date`.\n- The request body for the Field Definitions endpoint did not use a valid `field_type` value from the supported enum.\n\n### Possible solutions\n\n- Update `field_type` to one of the supported values: `Text`, `Number`, or `Date`.\n- Review the request body for the Field Definitions endpoint and resend the request with a valid `name` and `field_type`.\n- If you create the field in the Twilio SendGrid console, choose one of the available field types when you add the custom field.\n\n#### Additional resources\n\n- [Create Custom Field Definition](/docs/sendgrid/api-reference/custom-fields/create-custom-field-definition)\n- [Update Custom Field Definition](/docs/sendgrid/api-reference/custom-fields/update-custom-field-definition)\n- [Personalize and segment messages with custom fields](/docs/sendgrid/ui/managing-contacts/custom-fields)\n",
    "causes": "* The request included a `field_type` value other than `Text`, `Number`, or `Date`.\n* The request body for the Field Definitions endpoint did not use a valid `field_type` value from the supported enum.",
    "solutions": "* Update `field_type` to one of the supported values: `Text`, `Number`, or `Date`.\n* Review the request body for the Field Definitions endpoint and resend the request with a valid `name` and `field_type`.\n* If you create the field in the Twilio SendGrid console, choose one of the available field types when you add the custom field.",
    "description": "This error occurs when you send a custom field definition request with an unsupported `field_type` value. Supported custom field types are `Text`, `Number`, and `Date`.",
    "date_created": "2020-07-21T20:36:29Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 19046,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Number of custom field definitions exceeded limit",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nMaximum number of custom field definition allowed is 2000\n\n### Possible causes\n\nAttempt to create more custom fields definitions than allowed\n\n### Possible solutions\n\nDelete an existing custom field before adding a new one\n",
    "causes": "Attempt to create more custom fields definitions than allowed",
    "solutions": "Delete an existing custom field before adding a new one",
    "description": "Maximum number of custom field definition allowed is 2000",
    "date_created": "2020-07-21T20:37:22Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19047,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Field definition name cannot be empty",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\nThis error occurs when a request attempts to create or update a custom field definition without providing a non-empty field name.\n\n### Possible causes\n- Attempt to create a custom field definition with an empty value for the field name.\n\n### Possible solutions\n- Update the request to include a valid, non-empty field name before submitting.\n\n#### Additional resources\n- [Error and Warning Dictionary](/docs/api/errors)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Attempt to create a custom field definition with an empty value for the field name.",
    "solutions": "* Update the request to include a valid, non-empty field name before submitting.",
    "description": "This error occurs when a request attempts to create or update a custom field definition without providing a non-empty field name.",
    "date_created": "2020-08-17T18:23:43Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 19048,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Input request body is not properly json formatted",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nInput request body is not properly json formatted\n\n### Possible causes\n\nUnique in the request is missing or request contains invalid form data\n\n### Possible solutions\n\nProvide correct request with unique and form data\n",
    "causes": "Unique in the request is missing or request contains invalid form data",
    "solutions": "Provide correct request with unique and form data",
    "description": "Input request body is not properly json formatted",
    "date_created": "2020-08-17T18:30:02Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19049,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Custom field definition provided is not defined",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe custom field definition provided in the request does not exist\n\n### Possible causes\n\nRequest with a custom field definition that is not defined\n\n### Possible solutions\n\nUse custom field definition API to define the custom field first\n",
    "causes": "Request with a custom field definition that is not defined",
    "solutions": "Use custom field definition API to define the custom field first",
    "description": "The custom field definition provided in the request does not exist",
    "date_created": "2020-08-11T18:00:39Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19050,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Server Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned a 500 Internal Server Error while processing your request. This error indicates that Twilio encountered an unexpected condition and could not complete the operation.\n\n### Possible causes\n\n- A temporary issue affected the Twilio platform while your request was being processed\n- An internal service dependency failed or timed out\n- A transient routing or infrastructure problem prevented Twilio from completing the request\n\n### Possible solutions\n\n- Retry the request after a short delay\n- Check that your request is valid and includes all required parameters for the API resource you are calling\n- If you are sending requests at high volume, use exponential backoff when retrying failed requests\n- Monitor your application for repeated 500 responses and log the full request SID or response details to help with troubleshooting\n- If the error continues, contact Support and include the error code, timestamp, Account SID, and any relevant request details\n\n#### Additional resources\n\n- [Twilio IAM documentation](/docs/iam)\n",
    "causes": "* A temporary issue affected the Twilio platform while your request was being processed\n* An internal service dependency failed or timed out\n* A transient routing or infrastructure problem prevented Twilio from completing the request",
    "solutions": "* Retry the request after a short delay\n* Check that your request is valid and includes all required parameters for the API resource you are calling\n* If you are sending requests at high volume, use exponential backoff when retrying failed requests\n* Monitor your application for repeated 500 responses and log the full request SID or response details to help with troubleshooting\n* If the error continues, contact Support and include the error code, timestamp, Account SID, and any relevant request details",
    "description": "Twilio returned a 500 Internal Server Error while processing your request. This error indicates that Twilio encountered an unexpected condition and could not complete the operation.",
    "date_created": "2020-07-21T20:38:09Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 19052,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid page size for custom field definition",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when you request custom field definitions with an invalid `page_size` value. Use `GET /v3/marketing/field_definitions` with an integer from 1 through 2000.\n\n### Possible causes\n\n- Your request URL includes a `page_size` value that Twilio cannot parse as an integer.\n- Your request URL includes a `page_size` value that is less than 1 or greater than 2000.\n\n### Possible solutions\n\n- Update `page_size` to a parsable integer before you send the request.\n- Keep `page_size` within the supported range of 1 through 2000.\n- Retry the `GET /v3/marketing/field_definitions` request after you correct the query parameter.\n\n#### Additional resources\n\n- [Get All Field Definitions](/docs/sendgrid/api-reference/custom-fields/get-all-field-definitions)\n- [Create Custom Field Definition](/docs/sendgrid/api-reference/custom-fields/create-custom-field-definition)\n- [Personalize and segment messages with custom fields](/docs/sendgrid/ui/managing-contacts/custom-fields)\n",
    "causes": "* Your request URL includes a `page_size` value that Twilio cannot parse as an integer.\n* Your request URL includes a `page_size` value that is less than 1 or greater than 2000.",
    "solutions": "* Update `page_size` to a parsable integer before you send the request.\n* Keep `page_size` within the supported range of 1 through 2000.\n* Retry the `GET /v3/marketing/field_definitions` request after you correct the query parameter.",
    "description": "Twilio returns this error when you request custom field definitions with an invalid `page_size` value. Use `GET /v3/marketing/field_definitions` with an integer from 1 through 2000.",
    "date_created": "2020-08-18T01:04:02Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 19053,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Field definition name cannot be a duplicate of an existing Twilio-defined field",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nRequest with input field names using reserved words\n\n### Possible causes\n\nAttempt to create custom field definition using reserved words\n\n### Possible solutions\n\nUpdate input field name with unreserved words\n",
    "causes": "Attempt to create custom field definition using reserved words",
    "solutions": "Update input field name with unreserved words",
    "description": "Request with input field names using reserved words",
    "date_created": "2020-08-17T18:32:44Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19054,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Expected Unique form key in input request is missing",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nExpected Unique form key in input request is missing\n\n### Possible causes\n\nAttempt to create custom field definition without Unique form key\n\n### Possible solutions\n\nProvide Unique form key in input request\n",
    "causes": "Attempt to create custom field definition without Unique form key",
    "solutions": "Provide Unique form key in input request",
    "description": "Expected Unique form key in input request is missing",
    "date_created": "2020-08-17T18:35:40Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 19055,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channel update failed: invalid JSON or non-updatable field",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when your channel update request contains invalid JSON or includes fields that this endpoint does not allow you to update. When you update a channel, only `type`, `description`, and `is_primary` are supported.\n\n### Possible causes\n\n- Your request body contains invalid JSON syntax.\n- Your request tries to update fields other than `type`, `description`, or `is_primary`.\n\n### Possible solutions\n\n- Send a valid JSON payload in your channel update request.\n- Remove unsupported fields from the request body. Update only `type`, `description`, or `is_primary`.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Consent Management API](/docs/messaging/features/consent-api)\n",
    "causes": "* Your request body contains invalid JSON syntax.\n* Your request tries to update fields other than `type`, `description`, or `is_primary`.",
    "solutions": "* Send a valid JSON payload in your channel update request.\n* Remove unsupported fields from the request body. Update only `type`, `description`, or `is_primary`.",
    "description": "This error occurs when your channel update request contains invalid JSON or includes fields that this endpoint does not allow you to update. When you update a channel, only `type`, `description`, and `is_primary` are supported.",
    "date_created": "2020-08-07T22:53:01Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 19056,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Input request content type is invalid",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error is returned when an API request's `Content-Type` header is not one of the formats Twilio APIs accept for requests, causing Twilio to reject the payload. Twilio's error entry lists this as \"Input request content type is invalid,\" and Twilio documents that API requests must use `application/x-www-form-urlencoded` or `multipart/form-data`.\n\n### Possible causes\n\n- The request was sent with `application/json` instead of `application/x-www-form-urlencoded` or `multipart/form-data` required for Twilio REST API requests. Some endpoints explicitly document `application/x-www-form-urlencoded` as the encoding type.\n- The body encoding does not match the declared `Content-Type` header (for example, JSON data while declaring `application/x-www-form-urlencoded`). Twilio guidance emphasizes that body content must align with the declared content type.\n- An endpoint that expects file uploads was called without providing the appropriate `Content-Type` and payload format (for example, media upload workflows that require setting `Content-Type` to the file's MIME type and sending the file content accordingly).\n\n### Possible solutions\n\n- Set the `Content-Type` header to an accepted type for Twilio API requests—`application/x-www-form-urlencoded` or `multipart/form-data`—and ensure the payload is encoded to match.\n- Check the specific endpoint's API reference for its required encoding and adjust your request accordingly (for example, some Messaging resources state \"Encoding type: application/x-www-form-urlencoded\").\n- For media or file-upload endpoints, set `Content-Type` to the correct MIME type and send the payload in the documented format (e.g., binary body when instructed).\n\n#### Additional resources\n\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [Services resource](/docs/messaging/api/service-resource)\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n",
    "causes": "* The request was sent with `application/json` instead of `application/x-www-form-urlencoded` or `multipart/form-data` required for Twilio REST API requests. Some endpoints explicitly document `application/x-www-form-urlencoded` as the encoding type.\n* The body encoding does not match the declared `Content-Type` header (for example, JSON data while declaring `application/x-www-form-urlencoded`). Twilio guidance emphasizes that body content must align with the declared content type.\n* An endpoint that expects file uploads was called without providing the appropriate `Content-Type` and payload format (for example, media upload workflows that require setting `Content-Type` to the file's MIME type and sending the file content accordingly).",
    "solutions": "* Set the `Content-Type` header to an accepted type for Twilio API requests—`application/x-www-form-urlencoded` or `multipart/form-data`—and ensure the payload is encoded to match.\n* Check the specific endpoint's API reference for its required encoding and adjust your request accordingly (for example, some Messaging resources state \"Encoding type: application/x-www-form-urlencoded\").\n* For media or file-upload endpoints, set `Content-Type` to the correct MIME type and send the payload in the documented format (e.g., binary body when instructed).",
    "description": "This error is returned when an API request's `Content-Type` header is not one of the formats Twilio APIs accept for requests, causing Twilio to reject the payload. Twilio's error entry lists this as \"Input request content type is invalid,\" and Twilio documents that API requests must use `application/x-www-form-urlencoded` or `multipart/form-data`.",
    "date_created": "2020-08-17T18:37:05Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 19057,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Server unavailable or busy",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\nThis error indicates Twilio's API endpoint was temporarily unavailable or too busy to process the request. It commonly corresponds to transient server-side conditions such as HTTP `503 Service unavailable` or an internal `500 Server error`.\n\n### Possible causes\n- A transient outage or degradation causing Twilio to return HTTP `503 Service unavailable` for your API request.\n- An internal Twilio error resulting in an HTTP `500 Server error`.\n\n### Possible solutions\n- Retry the request with exponential backoff. Transient server or connectivity issues often resolve on subsequent attempts.\n- If you expect spikes or sustained high usage, slow down request rates and monitor for ongoing incidents. We recommend adjusting traffic and following status guidance.\n- Capture and log the `Twilio-Request-Id` response header for each attempt. Include it when contacting Support to expedite investigation.\n- Optionally specify a Twilio Edge Location for API requests to keep ingress close to your infrastructure, which can improve resilience and latency.\n\n#### Additional resources\n- [Twilio API responses](/docs/usage/twilios-response)\n- [API best practices](/docs/usage/rest-api-best-practices)\n- [Edge Locations](/docs/global-infrastructure/edge-locations)\n",
    "causes": "* A transient outage or degradation causing Twilio to return HTTP `503 Service unavailable` for your API request.\n* An internal Twilio error resulting in an HTTP `500 Server error`.",
    "solutions": "* Retry the request with exponential backoff. Transient server or connectivity issues often resolve on subsequent attempts.\n* If you expect spikes or sustained high usage, slow down request rates and monitor for ongoing incidents. We recommend adjusting traffic and following status guidance.\n* Capture and log the `Twilio-Request-Id` response header for each attempt. Include it when contacting Support to expedite investigation.\n* Optionally specify a Twilio Edge Location for API requests to keep ingress close to your infrastructure, which can improve resilience and latency.",
    "description": "This error indicates Twilio's API endpoint was temporarily unavailable or too busy to process the request. It commonly corresponds to transient server-side conditions such as HTTP `503 Service unavailable` or an internal `500 Server error`.",
    "date_created": "2020-09-23T19:22:25Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20001,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Unknown parameters",
    "secondary_message": "One or more parameters you sent the REST API were not recognized and were ignored. No harm done, but make sure that you didn't mis-type the parameter you really wanted to send.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne or more parameters you sent the REST API were not recognized and were ignored. No harm done, but make sure that you didn't mis-type the parameter you really wanted to send.\n",
    "causes": null,
    "solutions": null,
    "description": "One or more parameters you sent the REST API were not recognized and were ignored. No harm done, but make sure that you didn't mis-type the parameter you really wanted to send.",
    "date_created": "2016-03-31T17:13:50Z",
    "last_updated": "2020-08-04T10:00:27.463Z"
  },
  {
    "code": 20002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid FriendlyName",
    "secondary_message": "Many Twilio resources take descriptive names to help you remember what they are. However, such \"FriendlyNames\" must be between 1 and 64 characters long.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nMany Twilio resources take descriptive names to help you remember what they are. However, such \"FriendlyNames\" must be between 1 and 64 characters long.\n",
    "causes": null,
    "solutions": null,
    "description": "Many Twilio resources take descriptive names to help you remember what they are. However, such \"FriendlyNames\" must be between 1 and 64 characters long.",
    "date_created": "2016-03-31T17:13:51Z",
    "last_updated": "2020-08-04T10:00:27.445Z"
  },
  {
    "code": 20003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Permission Denied",
    "secondary_message": null,
    "product": "Account, Iam",
    "products_used": [
      "api",
      "iam"
    ],
    "docs": "\n## Description\n\nThis error usually means the credentials on your request are incorrect, expired, deleted, scoped to the wrong account, or not valid for the resource you are trying to access. If you use OAuth, send a valid access token in the `Authorization` header. Twilio server-side SDKs can also simplify authentication.\n\n### Possible causes\n\n- You sent the wrong Account SID and Auth Token combination, you used an Auth Token that was deleted, or the credentials include extra characters or spaces.\n- You used Test Credentials against live account resources or against an endpoint that does not support test credentials.\n- You used subaccount credentials to access the main account or another subaccount, or you used main account API keys against subaccount resources that require subaccount authentication.\n- You used a Standard API key for an endpoint that requires a Main API key, such as `/Accounts` or `/v1/Keys`.\n- The API key was deleted, or the API key was created in a different Twilio Region than the request you sent.\n- The account is suspended or closed.\n- A web proxy or middleware removed the authentication credentials before the request reached Twilio.\n- You used an Auth Token where an API Key SID and API Key Secret are required to sign a Twilio Access Token or another JWT-based workflow.\n- The OAuth access token is incorrect or expired.\n- You haven't accepted the AI/ML Features Addendum.\n- You sent a Flex Webchat request from an origin not listed in the deployment key's allowed origins.\n- A Primary Compliance Profile hasn't been submitted and approved for the account.\n\n### Possible solutions\n\n- Verify that you are sending the correct credentials. For production, use an API Key and Secret. For local testing, use your Account SID and Auth Token.\n- If a token or key was deleted, rotated, or compromised, generate a replacement and update every environment variable, secret store, and deployed application that still uses the old value.\n- Confirm that the credentials belong to the account or subaccount that owns the resource you are calling. Do not use subaccount credentials for main account resources. Do not use main account API keys for subaccount resources that require subaccount authentication.\n- If you are using Test Credentials, call only the supported test resources and do not mix them with live account resources.\n- If you are calling `/Accounts` or Keys endpoints, use a Main API key instead of a Standard API key.\n- If your account uses Twilio Regions, create or use credentials in the same region as the request.\n- Check any proxy, gateway, or middleware between your application and Twilio. Make sure it forwards the `Authorization` header unchanged.\n- When you generate Twilio Access Tokens or other JWT-based credentials for client SDKs, sign them with an API Key SID and API Key Secret instead of an Auth Token.\n- If you use OAuth, request a new access token and send it as a Bearer token in the `Authorization` header.\n- If the account is suspended or closed, contact support before retrying the request.\n- Open the [Twilio Console](https://1console.twilio.com/go?to=/account/__account__/us1/ai-terms-acceptance) and accept the AI/ML Features Addendum.\n- If you use Flex Webchat, confirm the requesting domain is listed as an allowed origin in your deployment key settings. You can configure up to 10 trusted origins per key.\n- Please refer to the [Trust Hub documentation](/docs/trust-hub) process and complete the Primary Compliance Profile in Trust Hub to gain access.\n\n#### Additional resources\n\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [API keys overview](/docs/iam/api-keys)\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n",
    "causes": "* You sent the wrong Account SID and Auth Token combination, you used an Auth Token that was deleted, or the credentials include extra characters or spaces.\n* You used Test Credentials against live account resources or against an endpoint that does not support test credentials.\n* You used subaccount credentials to access the main account or another subaccount, or you used main account API keys against subaccount resources that require subaccount authentication.\n* You used a Standard API key for an endpoint that requires a Main API key, such as `/Accounts` or `/v1/Keys`.\n* The API key was deleted, or the API key was created in a different Twilio Region than the request you sent.\n* The account is suspended or closed.\n* A web proxy or middleware removed the authentication credentials before the request reached Twilio.\n* You used an Auth Token where an API Key SID and API Key Secret are required to sign a Twilio Access Token or another JWT-based workflow.\n* The OAuth access token is incorrect or expired.\n* You haven't accepted the AI/ML Features Addendum.\n* You sent a Flex Webchat request from an origin not listed in the deployment key's allowed origins.\n* A Primary Compliance Profile hasn't been submitted and approved for the account.",
    "solutions": "* Verify that you are sending the correct credentials. For production, use an API Key and Secret. For local testing, use your Account SID and Auth Token.\n* If a token or key was deleted, rotated, or compromised, generate a replacement and update every environment variable, secret store, and deployed application that still uses the old value.\n* Confirm that the credentials belong to the account or subaccount that owns the resource you are calling. Do not use subaccount credentials for main account resources. Do not use main account API keys for subaccount resources that require subaccount authentication.\n* If you are using Test Credentials, call only the supported test resources and do not mix them with live account resources.\n* If you are calling `/Accounts` or Keys endpoints, use a Main API key instead of a Standard API key.\n* If your account uses Twilio Regions, create or use credentials in the same region as the request.\n* Check any proxy, gateway, or middleware between your application and Twilio. Make sure it forwards the `Authorization` header unchanged.\n* When you generate Twilio Access Tokens or other JWT-based credentials for client SDKs, sign them with an API Key SID and API Key Secret instead of an Auth Token.\n* If you use OAuth, request a new access token and send it as a Bearer token in the `Authorization` header.\n* If the account is suspended or closed, contact support before retrying the request.\n* Open the [Twilio Console](https://1console.twilio.com/go?to=/account/__account__/us1/ai-terms-acceptance) and accept the AI/ML Features Addendum.\n* If you use Flex Webchat, confirm the requesting domain is listed as an allowed origin in your deployment key settings. You can configure up to 10 trusted origins per key.\n* Please refer to the [Trust Hub documentation](/docs/trust-hub) process and complete the Primary Compliance Profile in Trust Hub to gain access.",
    "description": "This error usually means the credentials on your request are incorrect, expired, deleted, scoped to the wrong account, or not valid for the resource you are trying to access. If you use OAuth, send a valid access token in the `Authorization` header. Twilio server-side SDKs can also simplify authentication.",
    "date_created": "2016-03-31T17:13:51Z",
    "last_updated": "2026-08-31T09:17:49-05:00"
  },
  {
    "code": 20004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Method not allowed",
    "secondary_message": "The resource you accessed is valid, but the HTTP method you attempted to use is not supported for the resource. For example, you cannot DELETE your own account.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe resource you accessed is valid, but the HTTP method you attempted to use is not supported for the resource. For example, you cannot `DELETE` your own account.\n",
    "causes": null,
    "solutions": null,
    "description": "The resource you accessed is valid, but the HTTP method you attempted to use is not supported for the resource. For example, you cannot `DELETE` your own account.",
    "date_created": "2016-03-31T17:13:51Z",
    "last_updated": "2020-08-04T10:00:27.409Z"
  },
  {
    "code": 20005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account not active",
    "secondary_message": null,
    "product": "Account, Iam, Usage, Phone Numbers",
    "products_used": [
      "api",
      "iam",
      "usage",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou encounter this error when you send a request from an account that isn't active. This situation can occur if your project was suspended after its balance fell to $0 or below, or if you haven't yet activated your free trial for the usage you're attempting. An inactive account can't place calls, send messages, purchase or provision phone numbers, or perform other API operations until you reactivate it.\n\n### Possible causes\n\n- Your account balance reached $0 or below, which suspended the project.\n- You haven't yet upgraded or activated your free trial account for the workflow you're trying to use.\n- A parent account was suspended, which also suspended the subaccount making the request.\n- The account or subaccount `Status` is `suspended` instead of `active`. Twilio account resources can also be `closed`, which prevents API use.\n- The account was disabled during a Terms of Service or Acceptable Use Policy review.\n\n### Possible solutions\n\n- Check your project balance in Console or by using the Balance resource. If the balance is below $0, add funds to bring the project back above $0.\n- If you recently paid an overdue balance or added funds, allow 5–10 minutes for reactivation. If the project still appears suspended in Console, sign out and sign back in before retrying the request.\n- If you're still using a trial project and require paid usage, upgrade the project in Console. Upgrading removes trial restrictions and adds a starting balance or any applicable promotional credit.\n- If you suspended a subaccount, update the subaccount `Status` to `active` before sending new requests.\n- Review the account status before retrying. If the account is `closed`, use another active account because closed, upgraded accounts cannot be reopened. If the account was disabled for review or doesn't reactivate after payment, contact Twilio Support through the Help Center.\n\n#### Additional resources\n\n- [Get started with your Twilio free trial account](/docs/usage/tutorials/how-to-use-your-free-trial-account)\n- [REST API: Accounts](/docs/iam/api/account)\n- [Manually add funds and refill your Twilio project balance](https://help.twilio.com/articles/360015760053-Manually-Add-Funds-and-Refill-your-Twilio-Project-Balance)\n",
    "causes": "* Your account balance reached $0 or below, which suspended the project.\n* You haven't yet upgraded or activated your free trial account for the workflow you're trying to use.\n* A parent account was suspended, which also suspended the subaccount making the request.\n* The account or subaccount `Status` is `suspended` instead of `active`. Twilio account resources can also be `closed`, which prevents API use.\n* The account was disabled during a Terms of Service or Acceptable Use Policy review.",
    "solutions": "* Check your project balance in Console or by using the Balance resource. If the balance is below $0, add funds to bring the project back above $0.\n* If you recently paid an overdue balance or added funds, allow 5–10 minutes for reactivation. If the project still appears suspended in Console, sign out and sign back in before retrying the request.\n* If you're still using a trial project and require paid usage, upgrade the project in Console. Upgrading removes trial restrictions and adds a starting balance or any applicable promotional credit.\n* If you suspended a subaccount, update the subaccount `Status` to `active` before sending new requests.\n* Review the account status before retrying. If the account is `closed`, use another active account because closed, upgraded accounts cannot be reopened. If the account was disabled for review or doesn't reactivate after payment, contact Twilio Support through the Help Center.",
    "description": "You encounter this error when you send a request from an account that isn't active. This situation can occur if your project was suspended after its balance fell to $0 or below, or if you haven't yet activated your free trial for the usage you're attempting. An inactive account can't place calls, send messages, purchase or provision phone numbers, or perform other API operations until you reactivate it.",
    "date_created": "2016-03-31T17:13:52Z",
    "last_updated": "2026-07-10T15:17:43+01:00"
  },
  {
    "code": 20006,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Access Denied",
    "secondary_message": "You don't have sufficient privileges to access the requested resource. The user on whose behalf you are attempting to access the API may have revoked your privileges, or you may need to request greater privileges from the user.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou don't have sufficient privileges to access the requested resource. The user on whose behalf you are attempting to access the API may have revoked your privileges, or you may need to request greater privileges from the user.\n",
    "causes": null,
    "solutions": null,
    "description": "You don't have sufficient privileges to access the requested resource. The user on whose behalf you are attempting to access the API may have revoked your privileges, or you may need to request greater privileges from the user.",
    "date_created": "2016-03-31T17:14:14Z",
    "last_updated": "2020-08-04T10:00:25.964Z"
  },
  {
    "code": 20007,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Page size too large",
    "secondary_message": "You've requested a page size that is too large. The maximum page size is 1000.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou've requested a page size that is too large. The maximum page size is 1000.\n\n### Possible solutions\n\n- Decrease the page size in your request.\n",
    "causes": null,
    "solutions": "* Decrease the page size in your request.",
    "description": "You've requested a page size that is too large. The maximum page size is 1000.",
    "date_created": "2016-03-31T17:14:30Z",
    "last_updated": "2020-08-04T10:00:24.826Z"
  },
  {
    "code": 20008,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Test Credentials",
    "secondary_message": "Currently only a handful of API resources can be tested with your test credentials. Trying to authenticate with your test credentials to other resources will return a Forbidden error message. For a full list of supported resources, please see our [Test Credentials](/docs/api/rest/test-credentials) page.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nCurrently only a handful of API resources can be tested with your test credentials. Trying to authenticate with your test credentials to other resources will return a Forbidden error message. For a full list of supported resources, please see our [Test Credentials](/docs/iam/test-credentials) page.\n",
    "causes": null,
    "solutions": null,
    "description": "Currently only a handful of API resources can be tested with your test credentials. Trying to authenticate with your test credentials to other resources will return a Forbidden error message. For a full list of supported resources, please see our [Test Credentials](/docs/iam/test-credentials) page.",
    "date_created": "2016-03-31T17:14:14Z",
    "last_updated": "2020-08-04T10:00:25.906Z"
  },
  {
    "code": 20009,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Cannot delete this resource before it is complete",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to delete a call or message resource before it was completed. If you are attempting to delete a call, wait until the call is completed and try your request again. If you are attempting to delete a message, wait several minutes and try again.\n\nIf you're seeing a message in the logs that you have already deleted, please allow up to 14 days for our systems to completely remove this record before reaching out to support.\n\n### Possible causes\n\n- You requested the call or message be deleted before all of Twilio's systems finished processing it.\n- In rare cases, a message or call record may take up to 14 days to be finalized and able to be deleted.\n\n### Possible solutions\n\n- If you are attempting to delete a call, verify that the call is not still in-progress.\n- If you are attempting to delete a call or message shortly after sending or receiving it, please wait at least 1 minute to make your `DELETE` request. If you receive this error after waiting 1 minute, wait several minutes and retry deletion again.\n- If you encounter this issue frequently even when waiting several minutes before deleting a message or a completed call, please [contact Twilio support](https://www.twilio.com/console/support/tickets/create) with examples of affected Call or Message SIDs.\n- For the highest level of privacy for Twilio SMS messages, apply for [message redaction](https://ahoy.twilio.com/message-redaction) which can automatically redact message bodies or phone numbers immediately after a message is sent or received.\n",
    "causes": "* You requested the call or message be deleted before all of Twilio's systems finished processing it.\n* In rare cases, a message or call record may take up to 14 days to be finalized and able to be deleted.",
    "solutions": "* If you are attempting to delete a call, verify that the call is not still in-progress.\n* If you are attempting to delete a call or message shortly after sending or receiving it, please wait at least 1 minute to make your `DELETE` request. If you receive this error after waiting 1 minute, wait several minutes and retry deletion again.\n* If you encounter this issue frequently even when waiting several minutes before deleting a message or a completed call, please [contact Twilio support](https://www.twilio.com/console/support/tickets/create) with examples of affected Call or Message SIDs.\n* For the highest level of privacy for Twilio SMS messages, apply for [message redaction](https://ahoy.twilio.com/message-redaction) which can automatically redact message bodies or phone numbers immediately after a message is sent or received.",
    "description": "You attempted to delete a call or message resource before it was completed. If you are attempting to delete a call, wait until the call is completed and try your request again. If you are attempting to delete a message, wait several minutes and try again. If you're seeing a message in the logs that you have already deleted, please allow up to 14 days for our systems to completely remove this record before reaching out to support.",
    "date_created": "2017-03-03T21:14:43Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20010,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Action disabled for account",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe action you attempted to perform has been disabled for your account. Please contact Customer Support for assistance.\n",
    "causes": null,
    "solutions": null,
    "description": "The action you attempted to perform has been disabled for your account. Please contact Customer Support for assistance.",
    "date_created": "2017-03-03T21:15:29Z",
    "last_updated": "2020-08-04T10:00:20.199Z"
  },
  {
    "code": 20011,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid TLS version",
    "secondary_message": "Service requires TLSv1.2",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Invalid TLS version\n\nThe request was rejected because it was not correctly configured to use TLSv1.2. All new accounts are [required to use TLSv1.2 with supported ciphers suites](https://support.twilio.com/hc/en-us/articles/360007724794).\n\n### Possible solutions\n\n- Reconfigure request to use a supported cipher suite for TLSv1.2\n- Review these [tips for upgrading your environment to TLSv1.2](https://support.twilio.com/hc/en-us/articles/360006751753)\n",
    "causes": null,
    "solutions": "* Reconfigure request to use a supported cipher suite for TLSv1.2\n* Review these [tips for upgrading your environment to TLSv1.2](https://support.twilio.com/hc/en-us/articles/360006751753)",
    "description": "",
    "date_created": "2019-01-30T22:44:42Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 20012,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid TLSv1.2 Cipher Suite",
    "secondary_message": "Request is not configured with a PCI compliant cipher suite",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request was rejected because it was not correctly configured to use TLSv1.2. All new accounts are [required to use TLSv1.2 with supported ciphers suites](https://support.twilio.com/hc/en-us/articles/360007724794).\n\n### Possible solutions\n\n- Reconfigure request to use a supported cipher suite for TLSv1.2\n- Review these [tips for upgrading your environment to TLSv1.2](https://support.twilio.com/hc/en-us/articles/360006751753)\n\n#### Supported Cipher Suites:\n\n- TLS\\_ECDHE\\_RSA\\_WITH\\_AES\\_128\\_GCM\\_SHA256 (ecdh\\_x25519) - A\n- TLS\\_ECDHE\\_RSA\\_WITH\\_AES\\_128\\_CBC\\_SHA256 (ecdh\\_x25519) - A\n- TLS\\_ECDHE\\_RSA\\_WITH\\_AES\\_128\\_CBC\\_SHA (ecdh\\_x25519) - A\n- TLS\\_ECDHE\\_RSA\\_WITH\\_AES\\_256\\_GCM\\_SHA384 (ecdh\\_x25519) - A\n- TLS\\_ECDHE\\_RSA\\_WITH\\_AES\\_256\\_CBC\\_SHA384 (ecdh\\_x25519) - A\n- TLS\\_ECDHE\\_RSA\\_WITH\\_AES\\_256\\_CBC\\_SHA (ecdh\\_x25519) - A\n- TLS\\_RSA\\_WITH\\_AES\\_128\\_GCM\\_SHA256 (rsa 2048) - A\n- TLS\\_RSA\\_WITH\\_AES\\_128\\_CBC\\_SHA256 (rsa 2048) - A\n- TLS\\_RSA\\_WITH\\_AES\\_128\\_CBC\\_SHA (rsa 2048) - A\n- TLS\\_RSA\\_WITH\\_AES\\_256\\_GCM\\_SHA384 (rsa 2048) - A\n- TLS\\_RSA\\_WITH\\_AES\\_256\\_CBC\\_SHA256 (rsa 2048) - A\n- TLS\\_RSA\\_WITH\\_AES\\_256\\_CBC\\_SHA (rsa 2048) - A\n- TLS\\_RSA\\_WITH\\_3DES\\_EDE\\_CBC\\_SHA (rsa 2048) - C\n\n### Possible causes\n\nSupported Cipher Suites list is not reflecting the reality.\n\n### Possible solutions\n\nChanged with the real list which is checked\n",
    "causes": "Supported Cipher Suites list is not reflecting the reality.",
    "solutions": "* Reconfigure request to use a supported cipher suite for TLSv1.2\n* Review these [tips for upgrading your environment to TLSv1.2](https://support.twilio.com/hc/en-us/articles/360006751753)",
    "description": "The request was rejected because it was not correctly configured to use TLSv1.2. All new accounts are [required to use TLSv1.2 with supported ciphers suites](https://support.twilio.com/hc/en-us/articles/360007724794).",
    "date_created": "2019-01-30T22:43:25Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 20020,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "No update/state change is observed for the data entered",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nNo update/state change is observed for the data entered\n\n### Possible causes\n\n- The data already exist in T-Mobile SDG Service Provisioning API\n\n### Possible solutions\n\n- If data is needed to be updated in T-Mobile SDG Service Provisioning API the request must have updated fields\n",
    "causes": "* The data already exist in T-Mobile SDG Service Provisioning API",
    "solutions": "* If data is needed to be updated in T-Mobile SDG Service Provisioning API the request must have updated fields",
    "description": "No update/state change is observed for the data entered",
    "date_created": "2020-10-13T21:53:42Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone number rejected by T-Mobile SDG Service Provisioning API",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nException received while creating application address in SDG Service Provisioning API: Invalid short code And enum server status is: FAILURE\n\n### Possible causes\n\n- The phone number was rejected by T-Mobile SDG Service Provisioning API\n\n### Possible solutions\n\n- Check the phone number\n",
    "causes": "* The phone number was rejected by T-Mobile SDG Service Provisioning API",
    "solutions": "* Check the phone number",
    "description": "Exception received while creating application address in SDG Service Provisioning API: Invalid short code And enum server status is: FAILURE",
    "date_created": "2020-10-13T22:02:21Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone number is not correct: it cannot be null or have non-decimal symbols",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nPhone number is not correct: it cannot be null and have non-decimal symbols\n\n### Possible causes\n\n- The phone number entered is not correct: either it is null or it has non-decimal symbols.\n\n### Possible solutions\n\n- Check the phone number\n",
    "causes": "* The phone number entered is not correct: either it is null or it has non-decimal symbols.",
    "solutions": "* Check the phone number",
    "description": "Phone number is not correct: it cannot be null and have non-decimal symbols",
    "date_created": "2020-10-12T22:15:42Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20101,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Access Token",
    "secondary_message": null,
    "product": "Account, Iam, Programmable Voice, Programmable Video, Connect, Sync",
    "products_used": [
      "api",
      "iam",
      "voice",
      "video",
      "conversations",
      "sync"
    ],
    "docs": "\n## Description\nThe Access Token provided to the Twilio API was invalid.\n\nTwilio Access Tokens are short-lived `JWT` credentials used to authenticate client-side SDKs for Voice, Conversations, Sync, and Video, with a maximum configurable lifetime of up to 24 hours.\n\n### Possible causes\n- The value supplied is not a valid Twilio Access Token (for example, it is not a `JWT` with the required header and payload structure expected by Twilio Access Tokens).\n\n### Possible solutions\n- Regenerate a fresh Access Token on your server using your Account SID and an API Key/Secret, following the Access Token creation guide.\n- Ensure the token header contains `typ`=`\"JWT\"`, `alg`=`\"HS256\"`, and `cty`=`\"twilio-fpa;v=1\"`.\n- Verify the payload fields: `iss` must be the API Key SID used to sign the token and `sub` must be the Twilio Account SID the token is scoped to; include standard claims like `jti`, `iat`, and set `exp` within the allowed window.\n- Keep tokens short-lived (maximum 24 hours) and generate them per-session as recommended.\n- Include the product-specific grants required by your SDK. For example, Video requires an `identity` grant and a `VideoGrant`.\n- Use the Twilio Console Debugger and Error Logs to inspect failing requests and review error details during troubleshooting.\n\n#### Additional resources\n- [Access Tokens](/docs/iam/access-tokens)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The value supplied is not a valid Twilio Access Token (for example, it is not a `JWT` with the required header and payload structure expected by Twilio Access Tokens).",
    "solutions": "* Regenerate a fresh Access Token on your server using your Account SID and an API Key/Secret, following the Access Token creation guide.\n* Ensure the token header contains `typ`=`\"JWT\"`, `alg`=`\"HS256\"`, and `cty`=`\"twilio-fpa;v=1\"`.\n* Verify the payload fields: `iss` must be the API Key SID used to sign the token and `sub` must be the Twilio Account SID the token is scoped to; include standard claims like `jti`, `iat`, and set `exp` within the allowed window.\n* Keep tokens short-lived (maximum 24 hours) and generate them per-session as recommended.\n* Include the product-specific grants required by your SDK. For example, Video requires an `identity` grant and a `VideoGrant`.\n* Use the Twilio Console Debugger and Error Logs to inspect failing requests and review error details during troubleshooting.",
    "description": "The Access Token provided to the Twilio API was invalid. Twilio Access Tokens are short-lived `JWT` credentials used to authenticate client-side SDKs for Voice, Conversations, Sync, and Video, with a maximum configurable lifetime of up to 24 hours.",
    "date_created": "2016-04-01T06:43:22Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20102,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Access Token header",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\nThis error occurs when the header of the Access Token sent to a Twilio API does not meet Twilio's expected format/values for a JWT header.\n\nTwilio Access Tokens are JWTs whose header must include the fields `typ`, `alg`, and `cty` with specific required values. If these are missing or incorrect, the token will be rejected.\n\n### Possible causes\n- The Access Token header does not contain the required `typ` field with value `JWT`.\n- The Access Token header uses an unsupported signing algorithm (e.g., anything other than `HS256`) in the `alg` field.\n- The Access Token header omits the `cty` field or sets it to a value other than `twilio-fpa;v=1`.\n\n### Possible solutions\n- Regenerate the Access Token using a Twilio SDK `AccessToken` helper to ensure the header is formed correctly, then serialize with `toJwt()`.\n- Verify the header fields and values before issuing tokens:\n  - Set `typ` to `JWT`.\n  - Set `alg` to `HS256`.\n  - Set `cty` to `twilio-fpa;v=1`.\n\n#### Additional resources\n- [Access Tokens](/docs/iam/access-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n- [Generate Twilio Access Tokens in Python](https://www.twilio.com/en-us/blog/twilio-access-tokens-python)\n",
    "causes": "* The Access Token header does not contain the required `typ` field with value `JWT`.\n* The Access Token header uses an unsupported signing algorithm (e.g., anything other than `HS256`) in the `alg` field.\n* The Access Token header omits the `cty` field or sets it to a value other than `twilio-fpa;v=1`.",
    "solutions": "* Regenerate the Access Token using a Twilio SDK `AccessToken` helper to ensure the header is formed correctly, then serialize with `toJwt()`.\n* Verify the header fields and values before issuing tokens:\n  * Set `typ` to `JWT`.\n  * Set `alg` to `HS256`.\n  * Set `cty` to `twilio-fpa;v=1`.",
    "description": "This error occurs when the header of the Access Token sent to a Twilio API does not meet Twilio's expected format/values for a JWT header. Twilio Access Tokens are JWTs whose header must include the fields `typ`, `alg`, and `cty` with specific required values. If these are missing or incorrect, the token will be rejected.",
    "date_created": "2016-04-01T06:49:49Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20103,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Access Token issuer/subject",
    "secondary_message": "Invalid Access Token issuer or subject",
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe issuer or subject of the Access Token provided to the Twilio API was invalid.\n\n**Issuer:** The [API Key](/docs/iam/api-keys/key-resource-v2010) used to sign the the token.\n\n**Subject:** The Twilio Account SID from your [Live Credentials](/console/account/settings).\n\n### Possible causes\n\n- Account is inactive or suspended.\n- Account SID is incorrect.\n- API Key is incorrect or has been deleted.\n\n### Possible solutions\n\n- Ensure the account is active and there are enough funds available.\n- Ensure the Account SID is correct and is from your Live Credentials.\n- Make sure that the API Key used to sign the request is correct and associated with the supplied Account SID.\n\nTo check whether the Access Token is structurally correct, you can use the tools available at [jwt.io](https://jwt.io/).\n\nAccess Tokens are used by multiple Twilio SDKs, including Programmable Voice, Programmable Video, and Programmable Chat. For the details of Twilio's specific Access Token implementation and the requirements of the issuer and subject fields, see [the documentation](/docs/iam/access-tokens).\n",
    "causes": "* Account is inactive or suspended.\n* Account SID is incorrect.\n* API Key is incorrect or has been deleted.",
    "solutions": "* Ensure the account is active and there are enough funds available.\n* Ensure the Account SID is correct and is from your Live Credentials.\n* Make sure that the API Key used to sign the request is correct and associated with the supplied Account SID. To check whether the Access Token is structurally correct, you can use the tools available at [jwt.io](https://jwt.io/). Access Tokens are used by multiple Twilio SDKs, including Programmable Voice, Programmable Video, and Programmable Chat. For the details of Twilio's specific Access Token implementation and the requirements of the issuer and subject fields, see [the documentation](/docs/iam/access-tokens).",
    "description": "The issuer or subject of the Access Token provided to the Twilio API was invalid. **Issuer:** The [API Key](/docs/iam/api-keys/key-resource-v2010) used to sign the the token. **Subject:** The Twilio Account SID from your [Live Credentials](/console/account/settings).",
    "date_created": "2016-04-01T06:51:44Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20104,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Access Token expired or expiration date invalid",
    "secondary_message": null,
    "product": "Account, Iam",
    "products_used": [
      "api",
      "iam"
    ],
    "docs": "\n## Description\n\nThis warning occurs when the Access Token sent to a Twilio API is no longer valid because its `exp` claim is in the past, the expiration time in the token is invalid, or the expiration was set beyond the maximum allowed lifetime. Access Token lifetimes are configurable up to 24 hours, and tokens should be as short-lived as feasible for your application. You can also validate token structure with standard JWT tools.\n\nAccess Tokens are used by multiple Twilio client SDKs, including Voice, Conversations, Sync, and Video.\n\n### Possible causes\n\n- The token's `exp` claim indicates a time that has already passed, so the Access Token has expired.\n- The expiration time in the token is invalid (for example, not a valid value), causing the token to be rejected.\n- The expiration time was set too far in the future, exceeding the maximum allowed lifetime for Access Tokens (up to 24 hours).\n\n### Possible solutions\n\n- Regenerate the Access Token with an appropriate `ttl` that does not exceed 24 hours, following the guidance to keep tokens as short-lived as feasible.\n- Implement client-side handling to refresh Access Tokens before they expire using the SDKs' token update/expiration mechanisms.\n- Verify the token is well-formed and that time-based claims (such as `exp`) are set correctly according to JWT/Access Token requirements before sending requests.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Voice SDK Error Codes](/docs/voice/sdks/error-codes)\n- [Best Practices for Building with Sync SDKs](/docs/sync/sdks-best-practices)\n",
    "causes": "* The token's `exp` claim indicates a time that has already passed, so the Access Token has expired.\n* The expiration time in the token is invalid (for example, not a valid value), causing the token to be rejected.\n* The expiration time was set too far in the future, exceeding the maximum allowed lifetime for Access Tokens (up to 24 hours).",
    "solutions": "* Regenerate the Access Token with an appropriate `ttl` that does not exceed 24 hours, following the guidance to keep tokens as short-lived as feasible.\n* Implement client-side handling to refresh Access Tokens before they expire using the SDKs' token update/expiration mechanisms.\n* Verify the token is well-formed and that time-based claims (such as `exp`) are set correctly according to JWT/Access Token requirements before sending requests.",
    "description": "This warning occurs when the Access Token sent to a Twilio API is no longer valid because its `exp` claim is in the past, the expiration time in the token is invalid, or the expiration was set beyond the maximum allowed lifetime. Access Token lifetimes are configurable up to 24 hours, and tokens should be as short-lived as feasible for your application. You can also validate token structure with standard JWT tools. Access Tokens are used by multiple Twilio client SDKs, including Voice, Conversations, Sync, and Video.",
    "date_created": "2016-04-01T06:53:53Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20105,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Access Token not yet valid",
    "secondary_message": null,
    "product": "Account, Programmable Video",
    "products_used": [
      "api",
      "video"
    ],
    "docs": "\n## Description\n\nThis error indicates that the Access Token presented to Twilio is not valid yet. Twilio Access Tokens are JSON Web Tokens that can include an optional `nbf` claim which defines the earliest time the token is accepted; if `nbf` is in the future relative to the validating system, the request will fail with this error.\n\n### Possible causes\n\n- The token's `nbf` (not-before) claim is set to a future timestamp, so the token is not yet accepted for use.\n- Clock drift or incorrect system time on the machine generating or validating the token causes the current time to fall before the token's validity start.\n- In Programmable Video apps, attempting to connect with a token before it becomes valid triggers an SDK error corresponding to this code.\n\n### Possible solutions\n\n- Ensure the system time on token-issuing and validating hosts is correct; resolve any clock drift so the current time is on or after the token's intended start.\n- When creating Access Tokens, avoid setting `nbf` in the future unless required; if used, set `nbf` to the current epoch time so the token is immediately valid, and ensure `iat` reflects the actual issuance time.\n- Reissue the token closer to the time of use (with an appropriate `ttl`) so it becomes valid when needed; Access Tokens are short-lived (maximum 24 hours).\n- For Video SDK apps, wait until the token becomes valid or obtain a fresh token before calling `connect` to a Room to avoid the corresponding SDK error.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [User Identity & Access Tokens for Programmable Video](/docs/video/tutorials/user-identity-access-tokens)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The token's `nbf` (not-before) claim is set to a future timestamp, so the token is not yet accepted for use.\n* Clock drift or incorrect system time on the machine generating or validating the token causes the current time to fall before the token's validity start.\n* In Programmable Video apps, attempting to connect with a token before it becomes valid triggers an SDK error corresponding to this code.",
    "solutions": "* Ensure the system time on token-issuing and validating hosts is correct; resolve any clock drift so the current time is on or after the token's intended start.\n* When creating Access Tokens, avoid setting `nbf` in the future unless required; if used, set `nbf` to the current epoch time so the token is immediately valid, and ensure `iat` reflects the actual issuance time.\n* Reissue the token closer to the time of use (with an appropriate `ttl`) so it becomes valid when needed; Access Tokens are short-lived (maximum 24 hours).\n* For Video SDK apps, wait until the token becomes valid or obtain a fresh token before calling `connect` to a Room to avoid the corresponding SDK error.",
    "description": "This error indicates that the Access Token presented to Twilio is not valid yet. Twilio Access Tokens are JSON Web Tokens that can include an optional `nbf` claim which defines the earliest time the token is accepted; if `nbf` is in the future relative to the validating system, the request will fail with this error.",
    "date_created": "2016-04-01T06:57:16Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20106,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Access Token grants",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nTwilio accepted the Access Token's signature and issuer, but rejected the token because the `grants` claim was invalid, could not be parsed, or did not permit the requested operation.\n\n### Possible causes\n\n- The token's `grants` claim did not include the product-specific grant required for the SDK or API being used (for example, Video requires a mandatory `video` grant).\n- The `grants` object was malformed or used unrecognized fields, so Twilio could not parse it.\n- A required field inside a product grant was missing or incorrect (for example, `SyncGrant` requires a `serviceSid`).\n- A token generated for one product type was attempted in a different context (for example, a Verify Push Access Token used with client-side SDKs), which is not supported.\n\n### Possible solutions\n\n- Regenerate the Access Token server-side and ensure the `grants` claim includes at least one correct, product-specific grant for the capability you need; use Twilio server-side SDK helpers to construct grants and tokens.\n- For Video, include a `VideoGrant`; to limit access to a single Room, set the `room` value within that grant (for example, using `AccessToken.VideoGrant`).\n- For Sync, include a `SyncGrant` and provide the required `serviceSid`.\n- If you're using Verify Push, create a product-specific Access Token using the Verify Access Token resource instead of reusing tokens from other products.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [User Identity & Access Tokens for Programmable Video](/docs/video/tutorials/user-identity-access-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n",
    "causes": "* The token's `grants` claim did not include the product-specific grant required for the SDK or API being used (for example, Video requires a mandatory `video` grant).\n* The `grants` object was malformed or used unrecognized fields, so Twilio could not parse it.\n* A required field inside a product grant was missing or incorrect (for example, `SyncGrant` requires a `serviceSid`).\n* A token generated for one product type was attempted in a different context (for example, a Verify Push Access Token used with client-side SDKs), which is not supported.",
    "solutions": "* Regenerate the Access Token server-side and ensure the `grants` claim includes at least one correct, product-specific grant for the capability you need; use Twilio server-side SDK helpers to construct grants and tokens.\n* For Video, include a `VideoGrant`; to limit access to a single Room, set the `room` value within that grant (for example, using `AccessToken.VideoGrant`).\n* For Sync, include a `SyncGrant` and provide the required `serviceSid`.\n* If you're using Verify Push, create a product-specific Access Token using the Verify Access Token resource instead of reusing tokens from other products.",
    "description": "Twilio accepted the Access Token's signature and issuer, but rejected the token because the `grants` claim was invalid, could not be parsed, or did not permit the requested operation.",
    "date_created": "2016-04-01T07:00:25Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20107,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Access Token signature",
    "secondary_message": "Invalid Access Token signature",
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe signature for the Access Token provided was invalid.\n\nCheck that your code is correctly generating signatures using the algorithm and format expected by the Twilio API.\n\nTo check whether the Access Token is structurally correct, you can use the tools available at [jwt.io](https://jwt.io/).\n\nAccess Tokens are used by multiple Twilio SDKs, including Programmable Voice, Programmable Video, and Programmable Chat. For the details of Twilio's specific Access Token implementation, see [the documentation](/docs/iam/access-tokens).\n\n### Possible causes\n\n- The supplied Account SID, API Key or API Secret is incorrect.\n\n### Possible solutions\n\n- Ensure you're using the correct Account SID for your [Live API Credentials](/console/account/settings).\n- Verify the API Key was generated for the same account as the supplied Account SID. (The API Secret is not the same as the Account Auth Token.)\n- Verify the API Secret is correct for the API Key being used and that no extra characters are included.\n- Check if the API Secret passes signature validation when used at [jwt.io](https://jwt.io/).\n- Generate a new API Key and Secret for the Account SID and try again.\n",
    "causes": "* The supplied Account SID, API Key or API Secret is incorrect.",
    "solutions": "* Ensure you're using the correct Account SID for your [Live API Credentials](/console/account/settings).\n* Verify the API Key was generated for the same account as the supplied Account SID. (The API Secret is not the same as the Account Auth Token.)\n* Verify the API Secret is correct for the API Key being used and that no extra characters are included.\n* Check if the API Secret passes signature validation when used at [jwt.io](https://jwt.io/).\n* Generate a new API Key and Secret for the Account SID and try again.",
    "description": "The signature for the Access Token provided was invalid. Check that your code is correctly generating signatures using the algorithm and format expected by the Twilio API. To check whether the Access Token is structurally correct, you can use the tools available at [jwt.io](https://jwt.io/). Access Tokens are used by multiple Twilio SDKs, including Programmable Voice, Programmable Video, and Programmable Chat. For the details of Twilio's specific Access Token implementation, see [the documentation](/docs/iam/access-tokens).",
    "date_created": "2016-04-01T07:02:07Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20151,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Authentication Failed",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error indicates that authentication with the provided `JWT` failed when Twilio attempted to validate the token for an API/SDK request. It is listed in Twilio's Error and Warning Dictionary as Authentication Failed under API errors. Twilio Access Tokens are `JWT`s used to authenticate client-side SDKs, and incorrect or invalid tokens will fail authentication.\n\n### Possible causes\n\n- Invalid `JWT` header.\n- Invalid `iss` or `sub` values in the token.\n- Invalid claim set in the token payload.\n- Token time-related issues, such as expiration set in the future, expired or invalid expiration, or expiration exceeding the maximum allowed lifetime.\n\n### Possible solutions\n\n- Re-generate the Access Token on your server using the correct API Key SID and secret, and ensure the token header and payload are properly formed: `typ` must be `JWT`, `alg` must be `HS256`, and `cty` must be `twilio-fpa;v=1`; include required claims like `iss` (API Key SID), `sub` (Account SID), `iat`, and appropriate `grants`.\n- Verify token lifetime settings: set `exp` within the permitted window (tokens are short‑lived and have a maximum age of 24 hours) and avoid setting `nbf` in the future relative to the server time. If needed, reissue a fresh token.\n- Use the Twilio Console Debugger and error logs to inspect the specific event and any accompanying, more granular token error codes to pinpoint the underlying cause.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Invalid `JWT` header.\n* Invalid `iss` or `sub` values in the token.\n* Invalid claim set in the token payload.\n* Token time-related issues, such as expiration set in the future, expired or invalid expiration, or expiration exceeding the maximum allowed lifetime.",
    "solutions": "* Re-generate the Access Token on your server using the correct API Key SID and secret, and ensure the token header and payload are properly formed: `typ` must be `JWT`, `alg` must be `HS256`, and `cty` must be `twilio-fpa;v=1`; include required claims like `iss` (API Key SID), `sub` (Account SID), `iat`, and appropriate `grants`.\n* Verify token lifetime settings: set `exp` within the permitted window (tokens are short‑lived and have a maximum age of 24 hours) and avoid setting `nbf` in the future relative to the server time. If needed, reissue a fresh token.\n* Use the Twilio Console Debugger and error logs to inspect the specific event and any accompanying, more granular token error codes to pinpoint the underlying cause.",
    "description": "This error indicates that authentication with the provided `JWT` failed when Twilio attempted to validate the token for an API/SDK request. It is listed in Twilio's Error and Warning Dictionary as Authentication Failed under API errors. Twilio Access Tokens are `JWT`s used to authenticate client-side SDKs, and incorrect or invalid tokens will fail authentication.",
    "date_created": "2017-05-05T15:59:36Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20152,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Header",
    "secondary_message": null,
    "product": "Account, Iam",
    "products_used": [
      "api",
      "iam"
    ],
    "docs": "\n## Description\n\nThis error occurs when the header portion of the JWT presented for Public Key Client Validation does not meet Twilio's required structure or values (for example, missing required fields or using unsupported algorithms).\n\n### Possible causes\n\n- The JWT header omits required fields such as `cty`, `alg`, or `kid`, which Twilio marks as required for Public Key Client Validation.\n- The `cty` value is not exactly `twilio-pkrv;v=1`.\n- The `alg` value is not one of `RS256` or `PS256`, which are the only algorithms Twilio supports for this feature.\n- The `typ` value is set to something other than `JWT` (other values are rejected), or the header is otherwise malformed.\n- The JWT components are not correctly base64url-encoded and concatenated as `<base64URLencoded header>.<base64URLencoded claims>.<base64URLencoded signature>`.\n\n### Possible solutions\n\n- Construct the JWT header with the exact fields and values Twilio requires:\n  - Set `cty` to `twilio-pkrv;v=1`.\n  - Use `alg` as `RS256` or `PS256` only.\n  - Include `kid` referencing the `CredentialSid` for the uploaded public key.\n  - Use `typ` as `JWT` or omit it (defaults to `JWT`).\n- Ensure the JWT is base64url-encoded and formed as `<base64URLencoded header>.<base64URLencoded claims>.<base64URLencoded signature>`.\n- Upload your public key and reference it via the `CredentialSid` in `kid` so Twilio can validate the signature.\n- Attach the generated JWT to your API request using the `Twilio-Client-Validation` header.\n\n#### Additional resources\n\n- [Public Key Client Validation Quickstart](/docs/iam/pkcv/quickstart)\n- [Get Started with Public Key Client Validation](/docs/iam/pkcv)\n- [Credentials API](/docs/iam/credentials/api)\n",
    "causes": "* The JWT header omits required fields such as `cty`, `alg`, or `kid`, which Twilio marks as required for Public Key Client Validation.\n* The `cty` value is not exactly `twilio-pkrv;v=1`.\n* The `alg` value is not one of `RS256` or `PS256`, which are the only algorithms Twilio supports for this feature.\n* The `typ` value is set to something other than `JWT` (other values are rejected), or the header is otherwise malformed.\n* The JWT components are not correctly base64url-encoded and concatenated as `<base64URLencoded header>.<base64URLencoded claims>.<base64URLencoded signature>`.",
    "solutions": "* Construct the JWT header with the exact fields and values Twilio requires:\n  * Set `cty` to `twilio-pkrv;v=1`.\n  * Use `alg` as `RS256` or `PS256` only.\n  * Include `kid` referencing the `CredentialSid` for the uploaded public key.\n  * Use `typ` as `JWT` or omit it (defaults to `JWT`).\n* Ensure the JWT is base64url-encoded and formed as `<base64URLencoded header>.<base64URLencoded claims>.<base64URLencoded signature>`.\n* Upload your public key and reference it via the `CredentialSid` in `kid` so Twilio can validate the signature.\n* Attach the generated JWT to your API request using the `Twilio-Client-Validation` header.",
    "description": "This error occurs when the header portion of the JWT presented for Public Key Client Validation does not meet Twilio's required structure or values (for example, missing required fields or using unsupported algorithms).",
    "date_created": "2017-05-05T16:04:34Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20153,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Issuer Or Subject",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when the issuer or subject of the JSON Web Token provided to the Twilio API is invalid.\n\nFor Public Key Client Validation, the `iss` claim must be an API Key SID and the `sub` claim must be the Account SID.\n\n### Possible causes\n\n- The `iss` claim is missing.\n- The issuer entity (API Key) is suspended in Twilio.\n- The `sub` claim is missing.\n- The subject entity (account) is suspended in Twilio.\n- The API Key SID in `iss` is not associated with the Account SID in `sub`.\n\n### Possible solutions\n\n- If using Public Key Client Validation, ensure the account and the API key are valid and not suspended.\n- Verify that both `iss` and `sub` claims are present and correctly set: API Key SID in `iss` and Account SID in `sub`.\n- Confirm that the API Key used to sign the token is associated with the specified account.\n- If needed, validate that the token is structurally sound using standard JWT tooling.\n\n#### Additional resources\n\n- [Public Key Client Validation Quickstart](/docs/iam/pkcv/quickstart)\n- [Get Started with Public Key Client Validation](/docs/iam/pkcv)\n- [REST API: Credentials](/docs/iam/credentials/api)\n",
    "causes": "* The `iss` claim is missing.\n* The issuer entity (API Key) is suspended in Twilio.\n* The `sub` claim is missing.\n* The subject entity (account) is suspended in Twilio.\n* The API Key SID in `iss` is not associated with the Account SID in `sub`.",
    "solutions": "* If using Public Key Client Validation, ensure the account and the API key are valid and not suspended.\n* Verify that both `iss` and `sub` claims are present and correctly set: API Key SID in `iss` and Account SID in `sub`.\n* Confirm that the API Key used to sign the token is associated with the specified account.\n* If needed, validate that the token is structurally sound using standard JWT tooling.",
    "description": "This error occurs when the issuer or subject of the JSON Web Token provided to the Twilio API is invalid. For Public Key Client Validation, the `iss` claim must be an API Key SID and the `sub` claim must be the Account SID.",
    "date_created": "2017-05-05T16:05:37Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20154,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Claim Set",
    "secondary_message": null,
    "product": "Account, Iam",
    "products_used": [
      "api",
      "iam"
    ],
    "docs": "\n## Description\n\nThis error indicates that the JWT was parsed successfully, but one or more claims in the payload are invalid.\n\n### Possible causes\n\n- One of the required claims is missing from the payload.\n- For Public Key Client Validation, the payload must include the `hrh` and `rqh` claims; `hrh` is the semicolon-delimited list of lowercase headers used in the request-hash calculation (must at least include `Host` and `Authorization`), and `rqh` is the hash of the canonicalized HTTP request. Omitting or misformatting these claims will invalidate the set.\n- For Public Key Client Validation, required payload claims include `iss`, `sub`, and `exp`; tokens received after `exp` (allowing for clock skew) or with `exp - nbf` exceeding the documented maximum are rejected, which makes the claim set invalid.\n\n### Possible solutions\n\n- Ensure you are using the latest Twilio Helper Library so required JWT claims are produced correctly.\n- When using Public Key Client Validation:\n  - Include both `hrh` and `rqh` in the payload; ensure `hrh` lists `Host` and `Authorization`.\n  - Attach the JWT on requests via the `Twilio-Client-Validation` header.\n  - Verify `iss`, `sub`, `exp`, and (if used) `nbf` satisfy the documented constraints, including the maximum allowed `exp - nbf` window.\n- If you only need to confirm that the token is well-formed (structure/signature presence), use a standard JWT inspection tool before retesting.\n\n#### Additional resources\n\n- [Public Key Client Validation Quickstart](/docs/iam/pkcv/quickstart)\n- [Access Tokens](/docs/iam/access-tokens)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* One of the required claims is missing from the payload.\n* For Public Key Client Validation, the payload must include the `hrh` and `rqh` claims; `hrh` is the semicolon-delimited list of lowercase headers used in the request-hash calculation (must at least include `Host` and `Authorization`), and `rqh` is the hash of the canonicalized HTTP request. Omitting or misformatting these claims will invalidate the set.\n* For Public Key Client Validation, required payload claims include `iss`, `sub`, and `exp`; tokens received after `exp` (allowing for clock skew) or with `exp - nbf` exceeding the documented maximum are rejected, which makes the claim set invalid.",
    "solutions": "* Ensure you are using the latest Twilio Helper Library so required JWT claims are produced correctly.\n* When using Public Key Client Validation:\n  * Include both `hrh` and `rqh` in the payload; ensure `hrh` lists `Host` and `Authorization`.\n  * Attach the JWT on requests via the `Twilio-Client-Validation` header.\n  * Verify `iss`, `sub`, `exp`, and (if used) `nbf` satisfy the documented constraints, including the maximum allowed `exp - nbf` window.\n* If you only need to confirm that the token is well-formed (structure/signature presence), use a standard JWT inspection tool before retesting.",
    "description": "This error indicates that the JWT was parsed successfully, but one or more claims in the payload are invalid.",
    "date_created": "2017-05-05T16:08:16Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20155,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Expiration Time In The Future",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe JWT provided to the Twilio API is not yet valid. This typically indicates that the token's valid start time has not been reached.\n\n### Possible causes\n\n- The system clock on the server that generates the token is inaccurate (clock drift), causing the token to appear not yet valid.\n- The token includes an `nbf` value that is in the future relative to current time; tokens are not accepted before the `nbf` timestamp.\n\n### Possible solutions\n\n- Correct the server's system time so that token generation uses the current time; then retry the request.\n- Remove the optional `nbf` claim or ensure `nbf` is set to a time that is at or before the moment the token will be used.\n- Inspect the token to verify time-based claims (`nbf`, `iat`, `exp`) are reasonable and consistent with Twilio's expectations; regenerate the token immediately before use if needed.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [20105: Access Token not yet valid](/docs/api/errors/20105)\n- [20157: Expiration Time Exceeds Maximum Time Allowed](/docs/api/errors/20157)\n",
    "causes": "* The system clock on the server that generates the token is inaccurate (clock drift), causing the token to appear not yet valid.\n* The token includes an `nbf` value that is in the future relative to current time; tokens are not accepted before the `nbf` timestamp.",
    "solutions": "* Correct the server's system time so that token generation uses the current time; then retry the request.\n* Remove the optional `nbf` claim or ensure `nbf` is set to a time that is at or before the moment the token will be used.\n* Inspect the token to verify time-based claims (`nbf`, `iat`, `exp`) are reasonable and consistent with Twilio's expectations; regenerate the token immediately before use if needed.",
    "description": "The JWT provided to the Twilio API is not yet valid. This typically indicates that the token's valid start time has not been reached.",
    "date_created": "2017-05-05T16:11:20Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20156,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Expired or Invalid Expiration in Token",
    "secondary_message": null,
    "product": "Account, Iam",
    "products_used": [
      "api",
      "iam"
    ],
    "docs": "\n## Description\n\nThis error occurs when the JSON Web Token provided to the Twilio API has already expired, or the expiration value in the token is invalid.\n\n### Possible causes\n\n- The system that generates the token has incorrect clock time, causing the token's `exp` to be evaluated as expired or outside allowed clock skew.\n- The token's `exp` claim is not a valid expiration timestamp or is set in the past.\n\n### Possible solutions\n\n- Regenerate a fresh Access Token and ensure you set an appropriate `ttl` (in seconds) so the resulting `exp` is valid and not already expired.\n- Keep your token-issuing server's clock synchronized (e.g., via NTP). Tokens received after `exp` (beyond permitted clock skew) are rejected; ensure clock drift is minimized.\n- Implement token refresh/rotation in your client using the SDK's token update mechanisms so clients do not continue using expired tokens.\n- Use Twilio Helper Libraries to construct tokens to avoid common mistakes in claim formatting and signing.\n- If you are unsure whether the token is well-formed, validate its structure with a JWT inspection tool before retrying. (This workflow is referenced on the official 20156 page.)\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Public Key Client Validation Quickstart](/docs/iam/pkcv/quickstart)\n",
    "causes": "* The system that generates the token has incorrect clock time, causing the token's `exp` to be evaluated as expired or outside allowed clock skew.\n* The token's `exp` claim is not a valid expiration timestamp or is set in the past.",
    "solutions": "* Regenerate a fresh Access Token and ensure you set an appropriate `ttl` (in seconds) so the resulting `exp` is valid and not already expired.\n* Keep your token-issuing server's clock synchronized (e.g., via NTP). Tokens received after `exp` (beyond permitted clock skew) are rejected; ensure clock drift is minimized.\n* Implement token refresh/rotation in your client using the SDK's token update mechanisms so clients do not continue using expired tokens.\n* Use Twilio Helper Libraries to construct tokens to avoid common mistakes in claim formatting and signing.\n* If you are unsure whether the token is well-formed, validate its structure with a JWT inspection tool before retrying. (This workflow is referenced on the official 20156 page.)",
    "description": "This error occurs when the JSON Web Token provided to the Twilio API has already expired, or the expiration value in the token is invalid.",
    "date_created": "2017-05-05T16:12:14Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20157,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Expiration Time Exceeds Maximum Time Allowed",
    "secondary_message": null,
    "product": "Account, Iam",
    "products_used": [
      "api",
      "iam"
    ],
    "docs": "\n## Description\n\nThis error occurs when the expiration time used while creating an Access Token `JWT` exceeds 24 hours, which is the maximum allowed lifetime. This behavior is documented on the error page and the Access Tokens overview, which states tokens are \"configurable for up to 24 hours.\"\n\n### Possible causes\n\n- The `ttl` parameter provided when generating the Access Token is greater than 86400 seconds (24 hours). The Access Tokens overview sets a 24-hour maximum and specifies `ttl` is expressed in seconds.\n- The token's `exp` claim is set so that its lifetime exceeds 24 hours relative to issuance; Access Tokens are `JWT`s that include an `exp` claim as shown in Twilio's examples.\n- Passing time values in milliseconds instead of seconds for `ttl`, inadvertently creating a value above the 24-hour maximum. Twilio materials indicate `ttl` is in seconds and blog guidance notes the maximum must be given as 86400 seconds.\n\n### Possible solutions\n\n- Set the Access Token `ttl` to a value at or below 86400 seconds, and in general keep it as short as feasible for your application (best practice noted by Twilio).\n- If you manually construct tokens, compute `exp` so that it does not exceed 24 hours after issuance, or rely on the helper to set `exp` based on `ttl`. Twilio's examples show the `exp` claim and parameterization for `ttl`.\n- Ensure you are providing `ttl` in seconds, not milliseconds; for example, 3600 for one hour or 86400 for the maximum. Twilio documentation specifies `ttl` is in seconds, and the Twilio blog reiterates the 24-hour limit as 86400 seconds.\n- Implement short-lived tokens with periodic refresh in clients where applicable; Twilio recommends shorter token lifetimes and details token refresh patterns (for example, in Sync SDK guidance).\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Create Access Tokens for Conversations](/docs/conversations-classic/create-tokens)\n- [Best Practices for Building with Sync SDKs](/docs/sync/sdks-best-practices)\n",
    "causes": "* The `ttl` parameter provided when generating the Access Token is greater than 86400 seconds (24 hours). The Access Tokens overview sets a 24-hour maximum and specifies `ttl` is expressed in seconds.\n* The token's `exp` claim is set so that its lifetime exceeds 24 hours relative to issuance; Access Tokens are `JWT`s that include an `exp` claim as shown in Twilio's examples.\n* Passing time values in milliseconds instead of seconds for `ttl`, inadvertently creating a value above the 24-hour maximum. Twilio materials indicate `ttl` is in seconds and blog guidance notes the maximum must be given as 86400 seconds.",
    "solutions": "* Set the Access Token `ttl` to a value at or below 86400 seconds, and in general keep it as short as feasible for your application (best practice noted by Twilio).\n* If you manually construct tokens, compute `exp` so that it does not exceed 24 hours after issuance, or rely on the helper to set `exp` based on `ttl`. Twilio's examples show the `exp` claim and parameterization for `ttl`.\n* Ensure you are providing `ttl` in seconds, not milliseconds; for example, 3600 for one hour or 86400 for the maximum. Twilio documentation specifies `ttl` is in seconds, and the Twilio blog reiterates the 24-hour limit as 86400 seconds.\n* Implement short-lived tokens with periodic refresh in clients where applicable; Twilio recommends shorter token lifetimes and details token refresh patterns (for example, in Sync SDK guidance).",
    "description": "This error occurs when the expiration time used while creating an Access Token `JWT` exceeds 24 hours, which is the maximum allowed lifetime. This behavior is documented on the error page and the Access Tokens overview, which states tokens are \"configurable for up to 24 hours.\"",
    "date_created": "2017-05-05T16:12:57Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 20159,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Signature",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when the JWT provided to the Twilio API has an invalid or mismatching signature.\n\n### Possible causes\n\nThe public key referenced in the JWT does not match the actual private key used to sign the token.\n\n### Possible solutions\n\n- Ensure the private key used to sign the JWT corresponds to the public key identifier referenced in the token.\n- If needed, validate the JWT's structure and signature using standard JWT tooling before retrying.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [API keys overview](/docs/iam/api-keys)\n- [Public Key Client Validation Quickstart](/docs/iam/pkcv/quickstart)\n",
    "causes": "The public key referenced in the JWT does not match the actual private key used to sign the token.",
    "solutions": "* Ensure the private key used to sign the JWT corresponds to the public key identifier referenced in the token.\n* If needed, validate the JWT's structure and signature using standard JWT tooling before retrying.",
    "description": "This error occurs when the JWT provided to the Twilio API has an invalid or mismatching signature.",
    "date_created": "2017-05-05T16:14:06Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20160,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Token",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when the token presented to the Twilio API is not a valid `JWT`. Twilio Access Tokens are `JWT`s used by client SDKs and must follow the JSON Web Token structure and constraints documented by Twilio.\n\n### Possible causes\n\n- The token is not a properly formed `JWT` (Twilio Access Tokens are composed of three parts: `header`, `payload`, and `signature`).\n- The `JWT` `header` is not set as required (for example, `typ` must be `\"JWT\"`, `alg` must be `\"HS256\"`, and `cty` must be `\"twilio-fpa;v=1\"`).\n- The token was generated or signed without the correct API Key SID/Secret for the account (the `iss` identifies the API Key and the `signature` is created using the API Key Secret).\n- A Restricted API Key was used to create an Access Token for client-side SDKs (not supported).\n\n### Possible solutions\n\n- Re-generate the Access Token on your server using Twilio SDKs and the correct credentials (Account SID, API Key SID, and API Key Secret).\n- Ensure the token's `header` fields meet Twilio's requirements and the `alg` is `HS256`.\n- Verify the token lifetime: Access Tokens have a maximum age of 24 hours and should be created with the shortest feasible `ttl`.\n- Use a Main or Standard API Key when creating Access Tokens; do not use a Restricted API Key.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [20156: Expired or Invalid Expiration in Token](/docs/api/errors/20156)\n- [20159: Invalid Signature](/docs/api/errors/20159)\n",
    "causes": "* The token is not a properly formed `JWT` (Twilio Access Tokens are composed of three parts: `header`, `payload`, and `signature`).\n* The `JWT` `header` is not set as required (for example, `typ` must be `\"JWT\"`, `alg` must be `\"HS256\"`, and `cty` must be `\"twilio-fpa;v=1\"`).\n* The token was generated or signed without the correct API Key SID/Secret for the account (the `iss` identifies the API Key and the `signature` is created using the API Key Secret).\n* A Restricted API Key was used to create an Access Token for client-side SDKs (not supported).",
    "solutions": "* Re-generate the Access Token on your server using Twilio SDKs and the correct credentials (Account SID, API Key SID, and API Key Secret).\n* Ensure the token's `header` fields meet Twilio's requirements and the `alg` is `HS256`.\n* Verify the token lifetime: Access Tokens have a maximum age of 24 hours and should be created with the shortest feasible `ttl`.\n* Use a Main or Standard API Key when creating Access Tokens; do not use a Restricted API Key.",
    "description": "This error occurs when the token presented to the Twilio API is not a valid `JWT`. Twilio Access Tokens are `JWT`s used by client SDKs and must follow the JSON Web Token structure and constraints documented by Twilio.",
    "date_created": "2017-05-05T16:14:48Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20161,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Programmable Chat: Parameters are not specified for update request",
    "secondary_message": null,
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nUpdate request doesn't contain any parameters\n\n### Possible causes\n\n- You may have passed parameters, but named them incorrectly.\n- You may have forgotten to pass form-encoded parameters with your request\n\n### Possible solutions\n\nCompare your request with the documentation for this resource. Be sure you are submitting form-encoded parameters.\n",
    "causes": "* You may have passed parameters, but named them incorrectly.\n* You may have forgotten to pass form-encoded parameters with your request",
    "solutions": "Compare your request with the documentation for this resource. Be sure you are submitting form-encoded parameters.",
    "description": "Update request doesn't contain any parameters",
    "date_created": "2020-02-27T11:22:48Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20162,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "A conflicting resource update is in progress",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe requested resource is already being updated simultaneously by another API request. The last request will be rejected to avoid inconsistent state.\n\n### Possible causes\n\nThe same API resource is being updated by multiple simultaneous API requests from different threads in a conflicting fashion.\n\n### Possible solutions\n\n- Implement an operation retrier and repeat the failed API requests after an interval of time using, exponential backoff algorithm.\n- Serialize your API requests that modify the same resources, and wait until the original request completes and returns an API response, before sending any successive modifications.\n",
    "causes": "The same API resource is being updated by multiple simultaneous API requests from different threads in a conflicting fashion.",
    "solutions": "* Implement an operation retrier and repeat the failed API requests after an interval of time using, exponential backoff algorithm.\n* Serialize your API requests that modify the same resources, and wait until the original request completes and returns an API response, before sending any successive modifications.",
    "description": "The requested resource is already being updated simultaneously by another API request. The last request will be rejected to avoid inconsistent state.",
    "date_created": "2020-02-27T11:18:50Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20403,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "403 Forbidden",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the account lacks permission to access the Twilio API. This commonly occurs when an account is suspended or closed. For assistance, contact Twilio Support via the Console or Help Center.\n\n### Possible causes\n\n- The account has been suspended or closed, which prevents API access.\n- The credentials used do not include permission for the resource. For example, using a restricted API key without the required permission set.\n- A recent rotation of the `Auth Token` caused dependent Services or Functions (Classic) to temporarily use an outdated token, resulting in 403 responses until propagation completes.\n\n### Possible solutions\n\n- Review the project's status in Console and, if suspended or closed, reach out to Twilio Support to restore access.\n- If you are using Restricted API Keys, add the necessary permission for the endpoint you are calling or switch to a `Standard` or `Main` API key where appropriate.\n- If you recently rotated your `Auth Token`, wait at least one minute for propagation and ensure all code, Services, and Functions reference the updated token.\n\n#### Additional resources\n\n- [Requests to Twilio](/docs/usage/requests-to-twilio)\n- [Restricted API keys](/docs/iam/api-keys/restricted-api-keys)\n- [REST API: Auth Token](/docs/iam/api/authtoken)\n",
    "causes": "* The account has been suspended or closed, which prevents API access.\n* The credentials used do not include permission for the resource. For example, using a restricted API key without the required permission set.\n* A recent rotation of the `Auth Token` caused dependent Services or Functions (Classic) to temporarily use an outdated token, resulting in 403 responses until propagation completes.",
    "solutions": "* Review the project's status in Console and, if suspended or closed, reach out to Twilio Support to restore access.\n* If you are using Restricted API Keys, add the necessary permission for the endpoint you are calling or switch to a `Standard` or `Main` API key where appropriate.\n* If you recently rotated your `Auth Token`, wait at least one minute for propagation and ensure all code, Services, and Functions reference the updated token.",
    "description": "Twilio returns this error when the account lacks permission to access the Twilio API. This commonly occurs when an account is suspended or closed. For assistance, contact Twilio Support via the Console or Help Center.",
    "date_created": "2016-04-01T14:31:42Z",
    "last_updated": "2026-03-19T15:18:23Z"
  },
  {
    "code": 20404,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Found",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when you request a resource that Twilio cannot find. Common reasons include using an incorrect or deleted SID, sending a malformed request path, using the wrong resource name or casing, or sending the request to the wrong product base URL.\n\n### Possible causes\n\n- The SID in the request does not exist, or the resource existed previously and has since been deleted.\n- A Verify Verification SID was approved or expired and then soft deleted. After that happens, requests to that Verification resource return 20404.\n- The request path points to a resource that does not exist, such as using `TwilioCalls` instead of `Calls`, or the path uses the wrong casing.\n- A required SID is missing or empty in the request path, which produces a malformed URL.\n- The request was sent to the wrong host or base URL for the product you are calling. Core REST API resources use `https://api.twilio.com/2010-04-01`. Verify uses `https://verify.twilio.com/v2/`.\n- You requested `/Numbers/AvailableNumbers` or another incorrect path for the Available Phone Numbers API. The correct resource path includes the country code and number type.\n\n### Possible solutions\n\n- Use the exact SID returned by the resource create or list response, and send the request to the documented endpoint for that resource. For example, Call resources use `/Accounts/{AccountSid}/Calls/{Sid}.json`, and Verify fetches use `/Services/{ServiceSid}/Verifications/{Sid}`.\n- For Verify, do not fetch a Verification resource after it has been approved or expired. Use the Verification Check endpoint to validate the code, or start a new verification if you need a new verification attempt.\n- Match the resource name and path casing exactly as documented. Use `Calls`, not `TwilioCalls` or `calls`.\n- Validate every path value before sending the request. Ensure `AccountSid`, `ServiceSid`, `CallSid`, and `VerificationSid` values are present and non-empty.\n- Use the correct product host and base URL for the endpoint you are calling. Do not send core REST API requests to `https://twilio.com` or `https://www.twilio.com`.\n- To search for available phone numbers, use `/AvailablePhoneNumbers/{CountryCode}/{Type}.json` (for example, `/AvailablePhoneNumbers/US/Local.json`). See the [AvailablePhoneNumber resource](/docs/phone-numbers/api/availablephonenumber-resource) for the full endpoint reference.\n\n#### Additional resources\n\n- [Twilio API overview](/docs/usage/api)\n- [Verify API](/docs/verify/api)\n- [Call resource](/docs/voice/api/call-resource)\n",
    "causes": "* The SID in the request does not exist, or the resource existed previously and has since been deleted.\n* A Verify Verification SID was approved or expired and then soft deleted. After that happens, requests to that Verification resource return 20404.\n* The request path points to a resource that does not exist, such as using `TwilioCalls` instead of `Calls`, or the path uses the wrong casing.\n* A required SID is missing or empty in the request path, which produces a malformed URL.\n* The request was sent to the wrong host or base URL for the product you are calling. Core REST API resources use `https://api.twilio.com/2010-04-01`. Verify uses `https://verify.twilio.com/v2/`.\n* You requested `/Numbers/AvailableNumbers` or another incorrect path for the Available Phone Numbers API. The correct resource path includes the country code and number type.",
    "solutions": "* Use the exact SID returned by the resource create or list response, and send the request to the documented endpoint for that resource. For example, Call resources use `/Accounts/{AccountSid}/Calls/{Sid}.json`, and Verify fetches use `/Services/{ServiceSid}/Verifications/{Sid}`.\n* For Verify, do not fetch a Verification resource after it has been approved or expired. Use the Verification Check endpoint to validate the code, or start a new verification if you need a new verification attempt.\n* Match the resource name and path casing exactly as documented. Use `Calls`, not `TwilioCalls` or `calls`.\n* Validate every path value before sending the request. Ensure `AccountSid`, `ServiceSid`, `CallSid`, and `VerificationSid` values are present and non-empty.\n* Use the correct product host and base URL for the endpoint you are calling. Do not send core REST API requests to `https://twilio.com` or `https://www.twilio.com`.\n* To search for available phone numbers, use `/AvailablePhoneNumbers/{CountryCode}/{Type}.json` (for example, `/AvailablePhoneNumbers/US/Local.json`). See the [AvailablePhoneNumber resource](/docs/phone-numbers/api/availablephonenumber-resource) for the full endpoint reference.",
    "description": "This error occurs when you request a resource that Twilio cannot find. Common reasons include using an incorrect or deleted SID, sending a malformed request path, using the wrong resource name or casing, or sending the request to the wrong product base URL.",
    "date_created": "2017-05-03T21:16:28Z",
    "last_updated": "2026-06-22T15:33:29+01:00"
  },
  {
    "code": 20409,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conflict",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe request could not be completed due to a conflict with the current state of the target resource.\n\n### Possible causes\n\nThe resource is not in a state that allows this modification.\n\n### Possible solutions\n\nWait until the resource is in a modifiable state.\n",
    "causes": "The resource is not in a state that allows this modification.",
    "solutions": "Wait until the resource is in a modifiable state.",
    "description": "The request could not be completed due to a conflict with the current state of the target resource.",
    "date_created": "2020-04-03T19:50:57Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20410,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Gone",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when you request a discontinued messaging API. The API is no longer available.\n\n### Possible causes\n\n- You are sending messages through a discontinued API.\n- You are still using the legacy `SMS/Messages` endpoint.\n\n### Possible solutions\n\n- Update your integration to use the current Messaging API endpoints.\n- Replace any requests to the legacy `SMS/Messages` URI with the `Messages` resource URI.\n- Review the current Messaging API and `Messages` resource documentation before you deploy changes.\n\n#### Additional resources\n\n- [Messaging API overview](/docs/messaging/api)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Switching from SMS/Messages resource URI to Messages resource URI](https://help.twilio.com/articles/223181028-Switching-from-SMS-Messages-resource-URI-to-Messages-resource-URI-)\n",
    "causes": "* You are sending messages through a discontinued API.\n* You are still using the legacy `SMS/Messages` endpoint.",
    "solutions": "* Update your integration to use the current Messaging API endpoints.\n* Replace any requests to the legacy `SMS/Messages` URI with the `Messages` resource URI.\n* Review the current Messaging API and `Messages` resource documentation before you deploy changes.",
    "description": "Twilio returns this error when you request a discontinued messaging API. The API is no longer available.",
    "date_created": "2023-02-24T21:26:52Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 20412,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Precondition Failed",
    "secondary_message": "The resource does not meet one of preconditions defined by the request.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe resource does not meet one of preconditions defined by the request.\n\n### Possible causes\n\n- An ETag was included in an If-Match header, but the resource's current ETag does not match the ETag provided in the request.\n\n### Possible solutions\n\n- Retrieve the resource to obtain the current ETag, and then retry the request with the correct ETag in the If-Match header.\n",
    "causes": "* An ETag was included in an If-Match header, but the resource's current ETag does not match the ETag provided in the request.",
    "solutions": "* Retrieve the resource to obtain the current ETag, and then retry the request with the correct ETag in the If-Match header.",
    "description": "The resource does not meet one of preconditions defined by the request.",
    "date_created": "2016-12-06T23:56:19.441Z",
    "last_updated": "2026-03-12T13:44:18-04:00"
  },
  {
    "code": 20413,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Request Entity Too Large",
    "secondary_message": "Request entity is larger than limits defined",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this error because the HTTP request body is larger than the maximum size the endpoint accepts. Reduce the size of the payload and send the request again.\n\n### Possible causes\n\n- The request body includes too much data for the resource you are creating or updating.\n- You are sending a large media file, document, or encoded payload in the request body instead of using a supported media URL or upload flow.\n- Your application is sending an unexpectedly large JSON, XML, or form-encoded request because of duplicated fields or oversized parameter values.\n- A webhook or integration is forwarding a request to Twilio without enforcing payload size limits.\n\n### Possible solutions\n\n- Reduce the size of the request body before sending the request.\n- Remove unnecessary parameters, repeated fields, or extra metadata from the payload.\n- If you are sending media, use the product's supported media handling method instead of embedding large binary content directly in the request.\n- Check your application logs to confirm the final serialized request size your client sends to Twilio.\n- Review the API resource you are calling and make sure you are only sending parameters that the endpoint supports.\n",
    "causes": "* The request body includes too much data for the resource you are creating or updating.\n* You are sending a large media file, document, or encoded payload in the request body instead of using a supported media URL or upload flow.\n* Your application is sending an unexpectedly large JSON, XML, or form-encoded request because of duplicated fields or oversized parameter values.\n* A webhook or integration is forwarding a request to Twilio without enforcing payload size limits.",
    "solutions": "* Reduce the size of the request body before sending the request.\n* Remove unnecessary parameters, repeated fields, or extra metadata from the payload.\n* If you are sending media, use the product's supported media handling method instead of embedding large binary content directly in the request.\n* Check your application logs to confirm the final serialized request size your client sends to Twilio.\n* Review the API resource you are calling and make sure you are only sending parameters that the endpoint supports.",
    "description": "Twilio returned this error because the HTTP request body is larger than the maximum size the endpoint accepts. Reduce the size of the payload and send the request again.",
    "date_created": "2018-10-10T09:44:56Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 20422,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Parameter",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request contained malformed or semantically incorrect parameters.\n\nCommon occurrences:\n\n- Lacking a specified `Content-Type` header field\n- Invalid or missing XML data\n- Invalid parameter type or value\n\n### Is the request safe to retry?\n\nA 422 request is never processed and is always safe to retry.\n",
    "causes": null,
    "solutions": null,
    "description": "The request contained malformed or semantically incorrect parameters. Common occurrences: - Lacking a specified `Content-Type` header field\n- Invalid or missing XML data\n- Invalid parameter type or value",
    "date_created": "2019-01-30T16:11:48Z",
    "last_updated": "2020-08-04T10:00:10.994Z"
  },
  {
    "code": 20423,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid SID",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request contained at least one parameter what is incorrect SID but has to be.\n\n### Is the request safe to retry?\n\nA 422 request is never processed and is always safe to retry.\n",
    "causes": null,
    "solutions": null,
    "description": "The request contained at least one parameter what is incorrect SID but has to be.",
    "date_created": "2019-01-30T16:17:11Z",
    "last_updated": "2020-08-04T10:00:10.976Z"
  },
  {
    "code": 20426,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Upgrade Required",
    "secondary_message": "The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.\n\n### TLS and cipher suite upgrade requirements\n\nIn moving towards a more secure posture with regards to [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security), we require that all new accounts must use TLS v1.2 or later. All customers must use TLS > 1.2 starting June 26, 2019.\n\nCustomers running older operating systems or legacy network software may need to upgrade their systems to be compatible with these changes. If you've received Error 20426, you likely need to upgrade your system.\n\nTo learn more about these changes, see our support site's FAQ on [Twilio REST API's TLS and Cipher Suite Security Changes](https://support.twilio.com/hc/en-us/articles/360007820133-FAQ-Twilio-REST-API-s-TLS-and-Cipher-Suite-Security-Changes-for-June-2019)\n\n### Tips for upgrading your environment\n\nTo learn more about Twilio's TLS and cipher requirements, please reference [this support article](https://support.twilio.com/hc/en-us/articles/360006751753-Tips-for-Upgrading-Your-Environment-to-Support-Twilio-REST-API-s-TLS-and-Strong-Cipher-Suite-Changes) where you can learn more about understanding failure signatures, which components to upgrade, and verifying your upgrade.\n",
    "causes": null,
    "solutions": null,
    "description": "The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.",
    "date_created": "2019-01-30T22:49:37Z",
    "last_updated": "2020-08-04T10:00:10.866Z"
  },
  {
    "code": 20429,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Too many requests",
    "secondary_message": "Your account is sending too many concurrent Rest API requests to Twilio servers.",
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your account exceeds allowed concurrency to Twilio's REST API (HTTP 429 Too Many Requests). Requests that receive 429 responses aren't processed and are safe to retry after backing off.\n\n### Possible causes\n\n- Excessive concurrent REST API requests from the account, exceeding platform concurrency limits.\n- Multiple verification starts initiated in a short period for the same phone number, triggering a concurrency safeguard on Verify endpoints (HTTP 429).\n- Built-in Verify attempt limits reached, such as max send attempts or max check attempts, which return HTTP 429.\n- Exceeding Verify Service Rate Limits that you configure (for example, per phone number or other keys), enforced when starting verifications.\n- Polling verification status above the documented per-minute/hour/day limits.\n\n### Possible solutions\n\n- Implement retries with exponential backoff; 429 responses are safe to retry.\n- Throttle or queue requests to reduce concurrent API calls to Twilio until you remain under concurrency limits.\n- For verification flows, avoid repeatedly starting new verifications for the same number; complete the lifecycle by checking the existing verification or allow it to expire before starting another.\n- Define and tune Verify Service Rate Limits (for example, per phone number, IP, or session) and pass the appropriate keys when starting verifications.\n- Reduce verification status polling to stay within the documented limits.\n- Monitor Twilio response headers like Twilio-Concurrent-Requests to understand current load and adjust client behavior.\n\n#### Additional resources\n\n- [API best practices](/docs/usage/rest-api-best-practices)\n- [Rate limits and timeouts](/docs/verify/api/rate-limits-and-timeouts)\n- [Protect your Verify application with Service Rate Limits](/docs/verify/api/programmable-rate-limits)\n- [Service Rate Limits](/docs/verify/api/service-rate-limits)\n- [Twilio API response Error 429 \"Too Many Requests\"](https://help.twilio.com/hc/en-us/articles/360044308153-Twilio-API-response-Error-429-Too-Many-Requests)\n",
    "causes": "* Excessive concurrent REST API requests from the account, exceeding platform concurrency limits.\n* Multiple verification starts initiated in a short period for the same phone number, triggering a concurrency safeguard on Verify endpoints (HTTP 429).\n* Built-in Verify attempt limits reached, such as max send attempts or max check attempts, which return HTTP 429.\n* Exceeding Verify Service Rate Limits that you configure (for example, per phone number or other keys), enforced when starting verifications.\n* Polling verification status above the documented per-minute/hour/day limits.",
    "solutions": "* Implement retries with exponential backoff; 429 responses are safe to retry.\n* Throttle or queue requests to reduce concurrent API calls to Twilio until you remain under concurrency limits.\n* For verification flows, avoid repeatedly starting new verifications for the same number; complete the lifecycle by checking the existing verification or allow it to expire before starting another.\n* Define and tune Verify Service Rate Limits (for example, per phone number, IP, or session) and pass the appropriate keys when starting verifications.\n* Reduce verification status polling to stay within the documented limits.\n* Monitor Twilio response headers like Twilio-Concurrent-Requests to understand current load and adjust client behavior.",
    "description": "Twilio returns this error when your account exceeds allowed concurrency to Twilio's REST API (HTTP 429 Too Many Requests). Requests that receive 429 responses aren't processed and are safe to retry after backing off.",
    "date_created": "2016-03-31T17:13:52Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 20500,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal Server Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Twilio API encountered an error when processing your request. This generally indicates an error in the server handling logic or a timeout in the API. We apologize for the inconvenience.\n\n### I'm seeing a lot of these\n\nIf you are seeing a consistent pattern of 500 server errors coming from the Twilio API, check our [status page](http://status.twilio.com/) for more details. If our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.\n\n### Is the request safe to retry?\n\n`GET` and `DELETE` requests are always safe for you to retry as they are idempotent. Some `POST` requests are idempotent by nature - purchasing a specific phone number, or hanging up a call - and while these may return different HTTP status codes on each attempt, the end state of the system will be the same whether you make the request one time or ten.\n\nOther `POST` requests - sending an SMS or triggering an outbound call - are not idempotent. If you get a 500 Server Error on these requests, and you retry the request, it is possible for a customer to receive multiple messages or calls from your application.\n",
    "causes": null,
    "solutions": null,
    "description": "The Twilio API encountered an error when processing your request. This generally indicates an error in the server handling logic or a timeout in the API. We apologize for the inconvenience.",
    "date_created": "2017-06-22T15:02:09Z",
    "last_updated": "2020-08-04T10:00:18.283Z"
  },
  {
    "code": 20503,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Service unavailable",
    "secondary_message": "Service is unavailable",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Service unavailable\n\nThe requested Twilio Service is temporarily unavailable.\n\n### Possible solutions\n\n- Try again a few times with exponential back-off\n- If the problem persists, please [contact support](https://www.twilio.com/help/contact).\n",
    "causes": null,
    "solutions": "* Try again a few times with exponential back-off\n* If the problem persists, please [contact support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2017-07-06T13:43:21Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 20504,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Twilio Internal Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio's platform encountered an internal error while processing this message.\n\n### Possible causes\n\n- If this message was being processed during an incident, it is possible that this message was affected. See [Twilio's status page](https://status.twilio.com/) for ongoing and historical incidents.\n- There was an unrecoverable anomaly that occurred while processing this particular message.\n\n### Possible solutions\n\n- Try sending the message again.\n- If the subsequent attempt also fails with this error, [contact support](https://support.twilio.com/hc/en-us/articles/360048500694-Contacting-Twilio-Support) referencing the affected Message Sids for further troubleshooting.\n",
    "causes": "* If this message was being processed during an incident, it is possible that this message was affected. See [Twilio's status page](https://status.twilio.com/) for ongoing and historical incidents.\n* There was an unrecoverable anomaly that occurred while processing this particular message.",
    "solutions": "* Try sending the message again.\n* If the subsequent attempt also fails with this error, [contact support](https://support.twilio.com/hc/en-us/articles/360048500694-Contacting-Twilio-Support) referencing the affected Message Sids for further troubleshooting.",
    "description": "Twilio's platform encountered an internal error while processing this message.",
    "date_created": "2024-08-05T16:25:18Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21100,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Accounts Resource",
    "secondary_message": "Errors related to the Accounts resource",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error indicates that a request to the Accounts resource could not be completed. Review the request path, authentication context, and any values you send for account properties such as `FriendlyName` or `Status` before retrying.\n\n### Possible causes\n\n- The request used an invalid Account SID in the path. Account SIDs for this resource must match the `AC` SID format and identify the account you want to fetch or update.\n- The request included an invalid value for `Status`. The Accounts resource only accepts `active`, `suspended`, or `closed`.\n- The request used credentials that do not have access to the target account. Subaccount credentials cannot access the main account or other subaccounts.\n- The request used a main account API Key to access subaccount resources. Main account API Keys only grant access to main account resources.\n- The request attempted to update an account in a way the resource does not allow, such as closing the main account or trying to reopen a closed subaccount.\n- The request included an invalid `FriendlyName`, such as a value that exceeds the allowed length for the account resource.\n\n### Possible solutions\n\n- Confirm that the request targets the correct Accounts endpoint, such as `/2010-04-01/Accounts.json` for creating a subaccount or `/2010-04-01/Accounts/{Sid}.json` for fetching or updating an account.\n- Verify that the `Sid` in the request path is a valid Account SID and belongs to the account you intend to manage.\n- Send only supported values for `Status`: `active`, `suspended`, or `closed`.\n- Use the correct credentials for the operation. For work inside a subaccount, use the subaccount SID and Auth Token or subaccount-level API Keys where supported.\n- Use main account credentials when you need to close a subaccount. Do not try to close your main account.\n- Verify the `FriendlyName` value and keep it within the limits supported by the Accounts resource.\n- If you are creating subaccounts, create them from the main account that will own them and verify that your account is allowed to create additional subaccounts.\n\n#### Additional resources\n\n- [REST API: Accounts](/docs/iam/api/account)\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n- [Our API: the basics](/docs/iam/api)\n",
    "causes": "* The request used an invalid Account SID in the path. Account SIDs for this resource must match the `AC` SID format and identify the account you want to fetch or update.\n* The request included an invalid value for `Status`. The Accounts resource only accepts `active`, `suspended`, or `closed`.\n* The request used credentials that do not have access to the target account. Subaccount credentials cannot access the main account or other subaccounts.\n* The request used a main account API Key to access subaccount resources. Main account API Keys only grant access to main account resources.\n* The request attempted to update an account in a way the resource does not allow, such as closing the main account or trying to reopen a closed subaccount.\n* The request included an invalid `FriendlyName`, such as a value that exceeds the allowed length for the account resource.",
    "solutions": "* Confirm that the request targets the correct Accounts endpoint, such as `/2010-04-01/Accounts.json` for creating a subaccount or `/2010-04-01/Accounts/{Sid}.json` for fetching or updating an account.\n* Verify that the `Sid` in the request path is a valid Account SID and belongs to the account you intend to manage.\n* Send only supported values for `Status`: `active`, `suspended`, or `closed`.\n* Use the correct credentials for the operation. For work inside a subaccount, use the subaccount SID and Auth Token or subaccount-level API Keys where supported.\n* Use main account credentials when you need to close a subaccount. Do not try to close your main account.\n* Verify the `FriendlyName` value and keep it within the limits supported by the Accounts resource.\n* If you are creating subaccounts, create them from the main account that will own them and verify that your account is allowed to create additional subaccounts.",
    "description": "This error indicates that a request to the Accounts resource could not be completed. Review the request path, authentication context, and any values you send for account properties such as `FriendlyName` or `Status` before retrying.",
    "date_created": "2016-03-31T17:13:52Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Subaccounts cannot contain subaccounts",
    "secondary_message": "A subaccount cannot contain nested subaccounts. Only a root account may contain subaccounts.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA subaccount cannot contain nested subaccounts. Only a root account may contain subaccounts.\n",
    "causes": null,
    "solutions": null,
    "description": "A subaccount cannot contain nested subaccounts. Only a root account may contain subaccounts.",
    "date_created": "2016-03-31T17:13:52Z",
    "last_updated": "2020-08-04T10:00:27.333Z"
  },
  {
    "code": 21102,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Reached maximum number of Services",
    "secondary_message": "Reached maximum number of Services per parent account and product",
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create a new Service after the parent account has already reached the maximum number of Services allowed for that product. Twilio evaluates this limit at the parent account and product level, including requests made from subaccounts.\n\n### Possible causes\n\n- Your parent account already has the maximum number of Services for the product you are using.\n- You sent the create request from a subaccount, but the parent account has already reached the Service limit for that product.\n- Existing Services under the same parent account still count toward the limit, so the new create request cannot succeed.\n\n### Possible solutions\n\n- Review the Services already created for that product and delete any that you no longer need.\n- If you use subaccounts, check the total number of Services associated with the same parent account before creating another one.\n- If you need to keep your existing Services and create more, contact Twilio Support to discuss a limit increase.\n\n#### Additional resources\n\n- [REST API: Accounts](/docs/iam/api/account)\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n- [Contacting Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support)\n",
    "causes": "* Your parent account already has the maximum number of Services for the product you are using.\n* You sent the create request from a subaccount, but the parent account has already reached the Service limit for that product.\n* Existing Services under the same parent account still count toward the limit, so the new create request cannot succeed.",
    "solutions": "* Review the Services already created for that product and delete any that you no longer need.\n* If you use subaccounts, check the total number of Services associated with the same parent account before creating another one.\n* If you need to keep your existing Services and create more, contact Twilio Support to discuss a limit increase.",
    "description": "This error occurs when you try to create a new Service after the parent account has already reached the maximum number of Services allowed for that product. Twilio evaluates this limit at the parent account and product level, including requests made from subaccounts.",
    "date_created": "2018-01-19T11:42:55Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 21200,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Calls Resource",
    "secondary_message": "Errors related to the Calls resource",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error points to a problem with a request to the Calls resource. When you create a call, include `to` and `from`, and provide `url`, `twiml`, or `applicationSid` so Twilio can execute the call.\n\n### Possible causes\n\n- The request omitted the required `to` parameter or `from` parameter.\n- The request did not include `url`, `twiml`, or `applicationSid` to provide call instructions.\n- The `from` value is not a Twilio phone number or a verified outgoing caller ID, or `to` is a phone number while `from` is not.\n- The request used an unsupported value for `method`, `fallbackMethod`, or `statusCallbackMethod`. These parameters only accept `GET` or `POST`.\n- The request included an invalid `url` or callback URL. The call `url` must be an absolute URL, and `statusCallback` URLs must contain a valid hostname.\n\n### Possible solutions\n\n- Send the call request as `application/x-www-form-urlencoded` and confirm that all required parameters are present.\n- Provide a valid `url`, inline `twiml`, or a valid `applicationSid` so Twilio has instructions for the call.\n- If you are calling a phone number, format `to` and `from` in `E.164` and use a Twilio number or verified outgoing caller ID for `from`.\n- Use only `GET` or `POST` for method parameters, and make sure every webhook URL is publicly reachable by Twilio.\n- Review your Voice logs and the Request Inspector in Twilio Console to identify the exact parameter or webhook that failed.\n\n#### Additional resources\n\n- [Call resource API reference](/docs/voice/api/call-resource)\n- [Make outbound phone calls](/docs/voice/tutorials/how-to-make-outbound-phone-calls)\n- [Troubleshooting Outgoing Twilio Programmable Voice Calls](https://help.twilio.com/articles/360009924213-Troubleshooting-Outgoing-Twilio-Programmable-Voice-Calls)\n",
    "causes": "* The request omitted the required `to` parameter or `from` parameter.\n* The request did not include `url`, `twiml`, or `applicationSid` to provide call instructions.\n* The `from` value is not a Twilio phone number or a verified outgoing caller ID, or `to` is a phone number while `from` is not.\n* The request used an unsupported value for `method`, `fallbackMethod`, or `statusCallbackMethod`. These parameters only accept `GET` or `POST`.\n* The request included an invalid `url` or callback URL. The call `url` must be an absolute URL, and `statusCallback` URLs must contain a valid hostname.",
    "solutions": "* Send the call request as `application/x-www-form-urlencoded` and confirm that all required parameters are present.\n* Provide a valid `url`, inline `twiml`, or a valid `applicationSid` so Twilio has instructions for the call.\n* If you are calling a phone number, format `to` and `from` in `E.164` and use a Twilio number or verified outgoing caller ID for `from`.\n* Use only `GET` or `POST` for method parameters, and make sure every webhook URL is publicly reachable by Twilio.\n* Review your Voice logs and the Request Inspector in Twilio Console to identify the exact parameter or webhook that failed.",
    "description": "This error points to a problem with a request to the Calls resource. When you create a call, include `to` and `from`, and provide `url`, `twiml`, or `applicationSid` so Twilio can execute the call.",
    "date_created": "2016-03-31T17:13:53Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21201,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No Called number specified",
    "secondary_message": "You attempted to initiate an outbound phone call, but you did not specify what number to call in the Called POST parameter",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, but you did not specify what number to call in the 'To' `POST` parameter\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call, but you did not specify what number to call in the 'To' `POST` parameter",
    "date_created": "2016-03-31T17:13:53Z",
    "last_updated": "2020-08-04T10:00:27.297Z"
  },
  {
    "code": 21202,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Called number is a premium number",
    "secondary_message": "You attempted to initiate an outboud phone call to a \"premium\" phone number, such as a toll 976 line.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call to a \"premium\" phone number, such as a toll 976 line.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call to a \"premium\" phone number, such as a toll 976 line.",
    "date_created": "2016-03-31T17:13:53Z",
    "last_updated": "2020-08-04T10:00:27.276Z"
  },
  {
    "code": 21203,
    "log_level": "ERROR",
    "log_type": null,
    "message": "International calling not enabled",
    "secondary_message": "You attempted to initiate an outbound phone call to an international phone number, which is not currently supported.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call to an international phone number, which is not currently supported.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call to an international phone number, which is not currently supported.",
    "date_created": "2016-03-31T17:13:54Z",
    "last_updated": "2020-08-04T10:00:27.258Z"
  },
  {
    "code": 21204,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Call already initiated",
    "secondary_message": "You should never receive this error",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error indicates that Twilio has already accepted the outbound call initiation request. Create the call once with the Calls resource, then use the returned Call SID to track call progress or update the active call instead of trying to initiate the same call again.\n\n### Possible causes\n\n- A duplicate outbound call request was sent after Twilio had already started the call lifecycle for the original request. Twilio can send call progress events such as `initiated`, `ringing`, `answered`, and `completed`, which means the original call may already be moving through normal execution.\n- Your application attempted to manage an existing call by creating it again instead of updating the active call with its Call SID. Twilio supports updating active calls and accepts only `canceled` or `completed` as status values for a call update.\n- Your application did not persist or reuse the Call SID from the original create request or status callback, so a later step retried call creation instead of tracking or modifying the existing call. ([help.twilio.com](https://help.twilio.com/articles/223132247-How-do-I-modify-a-call-after-it-has-been-created-))\n\n### Possible solutions\n\n- Store the Call SID as soon as Twilio creates the call. Use that SID to retrieve the call record or update the active call instead of sending another create request. ([help.twilio.com](https://help.twilio.com/articles/223132247-How-do-I-modify-a-call-after-it-has-been-created-))\n- Add `StatusCallback` and `StatusCallbackEvent` to your outbound call request so your application can track when the call moves to `initiated`, `ringing`, `answered`, or `completed`.\n- If you need to change a live call, update the existing call with new TwiML or a new `url`. If you need to stop the call, update the call status to `canceled` or `completed` instead of creating a second outbound call.\n- Review the Voice logs and Request Inspector for the affected request to confirm whether Twilio already created the original call. If this error continues after you remove duplicate call creation attempts, contact support with the request timestamp and Call SID details.\n\n#### Additional resources\n\n- [Call resource](/docs/voice/api/call-resource)\n- [Make outbound phone calls](/docs/voice/tutorials/how-to-make-outbound-phone-calls)\n- [Troubleshooting Voice Calls](/docs/voice/troubleshooting)\n",
    "causes": "* A duplicate outbound call request was sent after Twilio had already started the call lifecycle for the original request. Twilio can send call progress events such as `initiated`, `ringing`, `answered`, and `completed`, which means the original call may already be moving through normal execution.\n* Your application attempted to manage an existing call by creating it again instead of updating the active call with its Call SID. Twilio supports updating active calls and accepts only `canceled` or `completed` as status values for a call update.\n* Your application did not persist or reuse the Call SID from the original create request or status callback, so a later step retried call creation instead of tracking or modifying the existing call. ([help.twilio.com](https://help.twilio.com/articles/223132247-How-do-I-modify-a-call-after-it-has-been-created-))",
    "solutions": "* Store the Call SID as soon as Twilio creates the call. Use that SID to retrieve the call record or update the active call instead of sending another create request. ([help.twilio.com](https://help.twilio.com/articles/223132247-How-do-I-modify-a-call-after-it-has-been-created-))\n* Add `StatusCallback` and `StatusCallbackEvent` to your outbound call request so your application can track when the call moves to `initiated`, `ringing`, `answered`, or `completed`.\n* If you need to change a live call, update the existing call with new TwiML or a new `url`. If you need to stop the call, update the call status to `canceled` or `completed` instead of creating a second outbound call.\n* Review the Voice logs and Request Inspector for the affected request to confirm whether Twilio already created the original call. If this error continues after you remove duplicate call creation attempts, contact support with the request timestamp and Call SID details.",
    "description": "This error indicates that Twilio has already accepted the outbound call initiation request. Create the call once with the Calls resource, then use the returned Call SID to track call progress or update the active call instead of trying to initiate the same call again.",
    "date_created": "2016-03-31T17:13:54Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21205,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid URL",
    "secondary_message": "You attempted to initiate an outbound phone call, but the URL you specified to handle the call was not a valid URL.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, but the URL you specified to handle the call was not a valid URL.\n\nIf you specified an Application Sid for your outbound phone call, the application must have a valid VoiceUrl or the call will fail.\n\n### Possible solutions\n\nMake sure you submit a fully qualified URL including:\n\n- protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters\n\nTwilio must be able to reach this URL over the public Internet.\n",
    "causes": null,
    "solutions": "Make sure you submit a fully qualified URL including: - protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "description": "You attempted to initiate an outbound phone call, but the URL you specified to handle the call was not a valid URL. If you specified an Application Sid for your outbound phone call, the application must have a valid VoiceUrl or the call will fail.",
    "date_created": "2016-03-31T17:13:54Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 21206,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid SendDigits",
    "secondary_message": "You attempted to initiate an outbound phone call, and you included a `SendDigits` parameter that wasn't valid. `SendDigits` is optional, and specifies that Twilio should simulate sending keypad digits when the party answers. `SendDigits` may contain numbers, the `#` and `*` characters, the letters `A`, `B`, `C`, `D`, as well as lowercase `w` to \"wait\" for half a second or uppercase `W` to \"wait\" for a full second.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, and you included a `SendDigits` parameter that wasn't valid. `SendDigits` is optional, and specifies that Twilio should simulate sending keypad digits when the party answers. `SendDigits` may contain numbers, the `#` and `*` characters, the letters `A`, `B`, `C`, `D`, as well as lowercase `w` to \"wait\" for half a second or uppercase `W` to \"wait\" for a full second.\n\n### Possible causes\n\nThe parameter `SendDigits` includes an invalid character.\n\n### Possible solutions\n\nEnsure the `SendDigits` parameter only contains the characters: `0123456789ABCD*#wW`.\n",
    "causes": "The parameter `SendDigits` includes an invalid character.",
    "solutions": "Ensure the `SendDigits` parameter only contains the characters: `0123456789ABCD*#wW`.",
    "description": "You attempted to initiate an outbound phone call, and you included a `SendDigits` parameter that wasn't valid. `SendDigits` is optional, and specifies that Twilio should simulate sending keypad digits when the party answers. `SendDigits` may contain numbers, the `#` and `*` characters, the letters `A`, `B`, `C`, `D`, as well as lowercase `w` to \"wait\" for half a second or uppercase `W` to \"wait\" for a full second.",
    "date_created": "2016-03-31T17:13:54Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21207,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid IfMachine",
    "secondary_message": "You attempted to initiate an outbound phone call, but you sent an invalid IfMachine parameter. Twilio can determine if an answering machine or voicemail has answered the call, and behave differently if it has. Valid options for IfMachine are \"Continue\" (continue with the call, progressing after the beep), \"Hangup\" (immediately hangup the call) or \"False\" (don't determine if a machine has answered).",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, but you sent an invalid IfMachine parameter. Twilio can determine if an answering machine or voicemail has answered the call, and behave differently if it has. Valid options for IfMachine are \"Continue\" (continue with the call, progressing after the beep), \"Hangup\" (immediately hangup the call) or \"False\" (don't determine if a machine has answered).\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call, but you sent an invalid IfMachine parameter. Twilio can determine if an answering machine or voicemail has answered the call, and behave differently if it has. Valid options for IfMachine are \"Continue\" (continue with the call, progressing after the beep), \"Hangup\" (immediately hangup the call) or \"False\" (don't determine if a machine has answered).",
    "date_created": "2016-03-31T17:13:55Z",
    "last_updated": "2020-08-04T10:00:27.187Z"
  },
  {
    "code": 21208,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Timeout",
    "secondary_message": "You attempted to initiate an outbound phone call, but you sent an invalid Timeout parameter. The timeoutspecifes how long Twilio should let the phone ring before giving up, and is useful if you want to have Twilio hangup before an answering machine picks up. You may specify any positive, whole integer for the Timeout parameter.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, but you sent an invalid Timeout parameter. The timeout specifes how long Twilio should let the phone ring before giving up, and is useful if you want to have Twilio hangup before an answering machine picks up. You may specify any positive, whole integer for the Timeout parameter.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call, but you sent an invalid Timeout parameter. The timeout specifes how long Twilio should let the phone ring before giving up, and is useful if you want to have Twilio hangup before an answering machine picks up. You may specify any positive, whole integer for the Timeout parameter.",
    "date_created": "2016-03-31T17:13:55Z",
    "last_updated": "2020-08-04T10:00:27.169Z"
  },
  {
    "code": 21209,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Method",
    "secondary_message": "You attempted to initiate an outbound phone call, but you sent a Method paramter that was invalid. Method specifies what HTTP method Twilio should use in contacting your web server. Possible values are GET and POST.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, but you sent a Method parameter that was invalid. Method specifies what HTTP method Twilio should use in contacting your web server. Possible values are `GET` and `POST`.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call, but you sent a Method parameter that was invalid. Method specifies what HTTP method Twilio should use in contacting your web server. Possible values are `GET` and `POST`.",
    "date_created": "2016-03-31T17:13:56Z",
    "last_updated": "2020-08-04T10:00:27.151Z"
  },
  {
    "code": 21210,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'From' phone number not verified",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, but the 'From' number you specified is not a verified number for your account. In order to use a phone number as the Caller ID on outgoing calls, you must first verify your ownership of that phone number.\n\nYou can verify phone numbers in the Console [here](https://www.twilio.com/console/phone-numbers/verified).\n\n### Test Credentials\n\nIf you received this error while trying to authenticate with your Test Credentials, you probably tried to make a test call with a `From` number from your live account. The only number that can be used to queue `successful` calls with your Test Credentials is `+15005550006`. For more information, read our documentation on [the `From` number for making calls with your test credentials](/docs/iam/test-credentials#test-sms-messages-parameters-From).\n\n### Possible causes\n\nThe From number used to make outbound call not a Twilio number or not a verified caller ID\n\n### Possible solutions\n\n[phone number verification on Console](https://www.twilio.com/console/phone-numbers/verified)\n",
    "causes": "The From number used to make outbound call not a Twilio number or not a verified caller ID",
    "solutions": "[phone number verification on Console](https://www.twilio.com/console/phone-numbers/verified)",
    "description": "You attempted to initiate an outbound phone call, but the 'From' number you specified is not a verified number for your account. In order to use a phone number as the Caller ID on outgoing calls, you must first verify your ownership of that phone number. You can verify phone numbers in the Console [here](https://www.twilio.com/console/phone-numbers/verified).",
    "date_created": "2016-03-31T17:13:56Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21211,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid 'To' Phone Number",
    "secondary_message": "You attempted to initiate an outbound phone call or send a message, but the `To` phone number you supplied was not a valid phone number or was incorrectly formatted. Twilio accepts phone numbers in E.164 format: [+][country code][subscriber number including area code].",
    "product": "Branded Comms, Programmable Voice",
    "products_used": [
      "messaging",
      "voice"
    ],
    "docs": "\n## Description\n\nThe `To` phone number in your API request is not a valid phone number or is incorrectly formatted. Twilio requires phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164): a `+` followed by the country code and the subscriber number including the area code, with no spaces, dashes, or parentheses.\n\n### Possible causes\n\n- The `To` number is not in E.164 format. Common formatting mistakes include omitting the `+` prefix, omitting the country code, including spaces or punctuation, or using a local format without the country code.\n- The `To` number contains a typo, extra digit, or too few digits for the destination country.\n- You used the same Twilio number in both the `To` and `From` parameters. Twilio numbers cannot call or message themselves.\n- You attempted to send a message to a short code or an alphanumeric sender ID. These sender types can only send messages and cannot receive them.\n- You sent a message through a Messaging Service with an invalid prefix prepended to the `To` number.\n\n### Possible solutions\n\n- Format the `To` number in E.164: `+` followed by the country code and subscriber number with no separators. See the examples below.\n- Verify you are using the correct [country calling code](https://en.wikipedia.org/wiki/List_of_country_calling_codes#Alphabetical_listing_by_country_or_region) for the destination. For example, use `+44` for the UK and `+91` for India, not `+1` (which is US/Canada).\n- Check the `To` value for typos, extra digits, or missing digits. US numbers have 10 digits after the country code; UK mobile numbers have 10 digits after the country code.\n- Confirm the `To` and `From` values are different. A Twilio number cannot send to itself.\n- Do not set the `To` parameter to a short code or alphanumeric sender ID. These are outbound-only sender types.\n- When using a Messaging Service, pass the `To` number in plain E.164 format without any channel prefix. The Messaging Service selects the appropriate sender automatically.\n- If a third-party integration provides the `To` value, test the same request in the [Twilio Console SMS sandbox](https://console.twilio.com/us1/develop/sms/try-it-out/send-an-sms). If the Console request succeeds, the third party may be modifying the `To` parameter before it reaches Twilio.\n\n### E.164 formatting examples\n\n| Input (incorrect)   | Problem                                       | Corrected (E.164) |\n| ------------------- | --------------------------------------------- | ----------------- |\n| `(555) 123-4567`    | Missing `+` and country code, has punctuation | `+15551234567`    |\n| `555-123-4567`      | Missing `+` and country code                  | `+15551234567`    |\n| `+1 555 123 4567`   | Contains spaces                               | `+15551234567`    |\n| `07911 123456`      | UK local format, missing country code         | `+447911123456`   |\n| `15551234567`       | Missing `+` prefix                            | `+15551234567`    |\n| `+1 (555) 123-4567` | Contains parentheses, spaces, and dashes      | `+15551234567`    |\n\n#### Additional resources\n\n- [What is E.164?](/docs/glossary/what-e164)\n- [Twilio phone number format](/docs/phone-numbers/api/incomingphonenumber-resource)\n- [Debugging tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The `To` number is not in E.164 format. Common formatting mistakes include omitting the `+` prefix, omitting the country code, including spaces or punctuation, or using a local format without the country code.\n* The `To` number contains a typo, extra digit, or too few digits for the destination country.\n* You used the same Twilio number in both the `To` and `From` parameters. Twilio numbers cannot call or message themselves.\n* You attempted to send a message to a short code or an alphanumeric sender ID. These sender types can only send messages and cannot receive them.\n* You sent a message through a Messaging Service with an invalid prefix prepended to the `To` number.",
    "solutions": "* Format the `To` number in E.164: `+` followed by the country code and subscriber number with no separators. See the examples below.\n* Verify you are using the correct [country calling code](https://en.wikipedia.org/wiki/List_of_country_calling_codes#Alphabetical_listing_by_country_or_region) for the destination. For example, use `+44` for the UK and `+91` for India, not `+1` (which is US/Canada).\n* Check the `To` value for typos, extra digits, or missing digits. US numbers have 10 digits after the country code; UK mobile numbers have 10 digits after the country code.\n* Confirm the `To` and `From` values are different. A Twilio number cannot send to itself.\n* Do not set the `To` parameter to a short code or alphanumeric sender ID. These are outbound-only sender types.\n* When using a Messaging Service, pass the `To` number in plain E.164 format without any channel prefix. The Messaging Service selects the appropriate sender automatically.\n* If a third-party integration provides the `To` value, test the same request in the [Twilio Console SMS sandbox](https://console.twilio.com/us1/develop/sms/try-it-out/send-an-sms). If the Console request succeeds, the third party may be modifying the `To` parameter before it reaches Twilio.",
    "description": "The `To` phone number in your API request is not a valid phone number or is incorrectly formatted. Twilio requires phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164): a `+` followed by the country code and the subscriber number including the area code, with no spaces, dashes, or parentheses.",
    "date_created": "2016-03-31T17:13:57Z",
    "last_updated": "2026-06-22T15:33:29+01:00"
  },
  {
    "code": 21212,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid 'From' Number",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call or message, but the `From` parameter you supplied was not a valid phone number, Alphanumeric Sender ID or approved WhatsApp Sender.\n\nTwilio accepts phone numbers in [E.164 format](/docs/glossary/what-e164) (i.e. \"+1 format\"), 10-digit US and Canadian numbers with any combination of non-digit separators, or Alphanumeric Sender IDs (SMS only) with up to 11 alphanumeric characters \\[a-zA-Z0-9]. Refer to [this page](https://support.twilio.com/hc/en-us/articles/223133867-Using-Alphanumeric-Sender-ID-with-Messaging-Services) for acceptable characters.\n\nThe number must not be on a do-not-originate (DNO) list, and Alphanumeric Sender IDs may not be generic.\n\n### Possible causes\n\n- You have supplied a phone number that was not in [E.164 format](/docs/glossary/what-e164).\n- Your `From` phone number is on a do-not-originate (DNO) list.\n- Your [Alphanumeric Sender ID](/docs/glossary/what-alphanumeric-sender-id) is blocked or too generic.\n- You are trying to use an Alphanumeric Sender ID on Trial Account. Trial accounts [cannot send from Alphanumeric Sender IDs](/docs/usage/trials#pre-defined-content).\n- Your WhatsApp Sender is not approved.\n- You attempted to send a message with a `From` number that has an invalid prefix, using a Messaging Service.\n\n### Possible solutions\n\n- Ensure your number is formatted in [E.164 format](/docs/glossary/what-e164).\n- Ensure that your `From` number is assigned and not on a do-not-originate (DNO) list.\n- Ensure you are not using an [alphanumeric sender ID](/docs/glossary/what-alphanumeric-sender-id) that is too generic (for example, \"SMS\" or \"INFO\").\n- If you are getting this error when using a non-generic alphanumeric sender ID, please [submit a support ticket](https://www.twilio.com/console/support/tickets/create) for further assistance.\n- If you are using an Alphanumeric Sender ID on a Trial Account, upgrade your account.\n- If you are using a WhatsApp Sender, check that your [sender is approved](https://console.twilio.com/us1/develop/sms/senders/whatsapp-senders) and that you have followed the [onboarding instructions](/docs/whatsapp).\n- If you are sending messages using a Messaging Service, and you wish to utilize an RCS Agent in your Sender Pool that falls back to SMS, [send the message from a MessagingServiceSid](/docs/messaging/services#send-a-message-with-a-messaging-service).\n",
    "causes": "* You have supplied a phone number that was not in [E.164 format](/docs/glossary/what-e164).\n* Your `From` phone number is on a do-not-originate (DNO) list.\n* Your [Alphanumeric Sender ID](/docs/glossary/what-alphanumeric-sender-id) is blocked or too generic.\n* You are trying to use an Alphanumeric Sender ID on Trial Account. Trial accounts [cannot send from Alphanumeric Sender IDs](/docs/usage/trials#pre-defined-content).\n* Your WhatsApp Sender is not approved.\n* You attempted to send a message with a `From` number that has an invalid prefix, using a Messaging Service.",
    "solutions": "* Ensure your number is formatted in [E.164 format](/docs/glossary/what-e164).\n* Ensure that your `From` number is assigned and not on a do-not-originate (DNO) list.\n* Ensure you are not using an [alphanumeric sender ID](/docs/glossary/what-alphanumeric-sender-id) that is too generic (for example, \"SMS\" or \"INFO\").\n* If you are getting this error when using a non-generic alphanumeric sender ID, please [submit a support ticket](https://www.twilio.com/console/support/tickets/create) for further assistance.\n* If you are using an Alphanumeric Sender ID on a Trial Account, upgrade your account.\n* If you are using a WhatsApp Sender, check that your [sender is approved](https://console.twilio.com/us1/develop/sms/senders/whatsapp-senders) and that you have followed the [onboarding instructions](/docs/whatsapp).\n* If you are sending messages using a Messaging Service, and you wish to utilize an RCS Agent in your Sender Pool that falls back to SMS, [send the message from a MessagingServiceSid](/docs/messaging/services#send-a-message-with-a-messaging-service).",
    "description": "You attempted to initiate an outbound phone call or message, but the `From` parameter you supplied was not a valid phone number, Alphanumeric Sender ID or approved WhatsApp Sender. Twilio accepts phone numbers in [E.164 format](/docs/glossary/what-e164) (i.e. \"+1 format\"), 10-digit US and Canadian numbers with any combination of non-digit separators, or Alphanumeric Sender IDs (SMS only) with up to 11 alphanumeric characters \\[a-zA-Z0-9]. Refer to [this page](https://support.twilio.com/hc/en-us/articles/223133867-Using-Alphanumeric-Sender-ID-with-Messaging-Services) for acceptable characters. The number must not be on a do-not-originate (DNO) list, and Alphanumeric Sender IDs may not be generic.",
    "date_created": "2016-03-31T17:13:57Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 21213,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Caller phone number is required",
    "secondary_message": "You attempted to initiate an outbound phone call, but you forgot to send a Caller parameter. Caller is required, and tells Twilio what Caller ID to use for the phone call.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, but you forgot to include a 'From' parameter. The 'From' parameter is required, and tells Twilio what Caller ID to use for the phone call.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call, but you forgot to include a 'From' parameter. The 'From' parameter is required, and tells Twilio what Caller ID to use for the phone call.",
    "date_created": "2016-03-31T17:13:58Z",
    "last_updated": "2020-08-04T10:00:27.082Z"
  },
  {
    "code": 21214,
    "log_level": "ERROR",
    "log_type": null,
    "message": "'To' phone number cannot be reached",
    "secondary_message": "You attempted to initiate an outbound phone call to a phone number that cannot be reached. Please check the number and try again.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call to a phone number that cannot be reached. Please check the number and try again.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call to a phone number that cannot be reached. Please check the number and try again.",
    "date_created": "2016-03-31T17:14:15Z",
    "last_updated": "2020-08-04T10:00:25.879Z"
  },
  {
    "code": 21215,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Geo Permission configuration is not permitting call",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call to a phone number that is not enabled on your account.\n\n### Possible causes\n\nUser dialed a destination your application is not enabled to support calling to.\n\n### Possible solutions\n\nPlease check your [Voice Dialing Geographic Permissions](https://www.twilio.com/console/voice/calls/geo-permissions), fix it, and try again.\n",
    "causes": "User dialed a destination your application is not enabled to support calling to.",
    "solutions": "Please check your [Voice Dialing Geographic Permissions](https://www.twilio.com/console/voice/calls/geo-permissions), fix it, and try again.",
    "description": "You attempted to initiate an outbound phone call to a phone number that is not enabled on your account.",
    "date_created": "2016-03-31T17:14:15Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21216,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "API: Call blocked by Twilio",
    "secondary_message": null,
    "product": "Programmable Voice, Trust-Hub",
    "products_used": [
      "voice",
      "trust-hub"
    ],
    "docs": "\n\n## Description\n\nTwilio blocked the outbound call before connecting it to the destination. This can happen when Twilio identifies the destination as high risk for fraud, when regulatory restrictions prevent routing, or when your account does not meet the requirements for outbound calls to +1 numbers.\n\n### Possible causes\n\n- The destination is in a high-risk fraud range that Twilio blocks to reduce exposure to toll fraud.\n- Regulatory restrictions prevent Twilio from routing the call to the destination.\n- Your account is placing a call to a +1 destination without an approved Primary Customer Profile.\n\n### Possible solutions\n\n- Confirm that the destination and use case are legitimate. If the block appears to be incorrect, contact Support from Console or through the Help Center and include the destination number and your business use case.\n- If you need to place calls to +1 destinations, create and submit the required Primary Customer Profile in Trust Hub on your master account, then retry the call after the profile is approved.\n- If your account was created outside the United States or Canada on or after October 8, 2025, create a Business Primary Customer Profile. Support cannot manually remove this restriction.\n- Review your Voice Dialing Geographic Permissions and enable only the countries and number ranges you expect to call.\n- Validate destination numbers in your application and rate-limit outbound call requests to reduce abusive or unexpected traffic that can trigger fraud controls.\n\n#### Additional resources\n\n- [Dialing Permissions overview](/docs/voice/api/dialing-permissions-resources)\n- [Console: Create a Primary Customer Profile](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n- [Requirements for Calling US and Canada Numbers (+1 Country Code)](https://help.twilio.com/articles/42720101060379)\n",
    "causes": "* The destination is in a high-risk fraud range that Twilio blocks to reduce exposure to toll fraud.\n* Regulatory restrictions prevent Twilio from routing the call to the destination.\n* Your account is placing a call to a +1 destination without an approved Primary Customer Profile.",
    "solutions": "* Confirm that the destination and use case are legitimate. If the block appears to be incorrect, contact Support from Console or through the Help Center and include the destination number and your business use case.\n* If you need to place calls to +1 destinations, create and submit the required Primary Customer Profile in Trust Hub on your master account, then retry the call after the profile is approved.\n* If your account was created outside the United States or Canada on or after October 8, 2025, create a Business Primary Customer Profile. Support cannot manually remove this restriction.\n* Review your Voice Dialing Geographic Permissions and enable only the countries and number ranges you expect to call.\n* Validate destination numbers in your application and rate-limit outbound call requests to reduce abusive or unexpected traffic that can trigger fraud controls.",
    "description": "Twilio blocked the outbound call before connecting it to the destination. This can happen when Twilio identifies the destination as high risk for fraud, when regulatory restrictions prevent routing, or when your account does not meet the requirements for outbound calls to +1 numbers.",
    "date_created": "2016-03-31T17:14:15Z",
    "last_updated": "2026-06-26T19:25:13+05:30"
  },
  {
    "code": 21217,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Phone number does not appear to be valid",
    "secondary_message": "You attempted to initiate an outbound phone call to an invalid phone number. Please check the phone number and try again.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call to an invalid phone number.\\\nPlease check the phone number and try again.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call to an invalid phone number.\\\nPlease check the phone number and try again.",
    "date_created": "2016-03-31T17:14:15Z",
    "last_updated": "2020-08-04T10:00:25.822Z"
  },
  {
    "code": 21218,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid ApplicationSid",
    "secondary_message": "You attempted to initiate an outbound phone call with an invalid ApplicationSid. The application may not exist anymore or may not be available within your account.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call with an invalid ApplicationSid. The application may not exist anymore or may not be available within your account.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call with an invalid ApplicationSid. The application may not exist anymore or may not be available within your account.",
    "date_created": "2016-03-31T17:14:16Z",
    "last_updated": "2020-08-04T10:00:25.804Z"
  },
  {
    "code": 21219,
    "log_level": "ERROR",
    "log_type": null,
    "message": "'To' phone number not verified",
    "secondary_message": "You attempted to initiate an outbound phone call from a trial account, but the 'To' number you specified is not a verified number for your account. In order to make calls during a free trial, you must first verify your ownership of the phone number being called. You can verify phone numbers from the [phone numbers section](/user/account/phone-numbers) of your account portal.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call from a trial account, but the 'To' number you specified is not a verified number for your account. In order to make calls during a free trial, you must first verify your ownership of the phone number being called.\n\nYou can verify phone numbers from the [phone numbers section](/user/account/phone-numbers) of your account portal.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to initiate an outbound phone call from a trial account, but the 'To' number you specified is not a verified number for your account. In order to make calls during a free trial, you must first verify your ownership of the phone number being called. You can verify phone numbers from the [phone numbers section](/user/account/phone-numbers) of your account portal.",
    "date_created": "2016-03-31T17:14:16Z",
    "last_updated": "2020-08-04T10:00:25.786Z"
  },
  {
    "code": 21220,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid call state",
    "secondary_message": "You attempted a realtime operation on a Call that was not in-progress. Calls that have completed cannot be recorded or redirected.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted a realtime operation on a Call that was not in-progress. Calls that have completed cannot be recorded or redirected.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted a realtime operation on a Call that was not in-progress. Calls that have completed cannot be recorded or redirected.",
    "date_created": "2016-03-31T17:14:16Z",
    "last_updated": "2020-08-04T10:00:25.767Z"
  },
  {
    "code": 21221,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid SipAuthUsername. Must be fewer than 256 chars",
    "secondary_message": "The SipAuthUsername you specified was longer than 255 characters.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SipAuthUsername you specified was longer than 255 characters.\n",
    "causes": null,
    "solutions": null,
    "description": "The SipAuthUsername you specified was longer than 255 characters.",
    "date_created": "2016-03-31T17:14:17Z",
    "last_updated": "2020-08-04T10:00:25.75Z"
  },
  {
    "code": 21222,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid SipAuthUsername. Illegal chars",
    "secondary_message": "The SipAuthUsername you specified contained characters not allowed in SIP.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SipAuthUsername you specified contained characters not allowed in SIP.\n",
    "causes": null,
    "solutions": null,
    "description": "The SipAuthUsername you specified contained characters not allowed in SIP.",
    "date_created": "2016-03-31T17:14:17Z",
    "last_updated": "2020-08-04T10:00:25.732Z"
  },
  {
    "code": 21223,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid SipAuthPassword. Must be fewer than 256 chars",
    "secondary_message": "The SipAuthPassword you specified contained too many characters.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SipAuthPassword you specified contained too many characters.\n",
    "causes": null,
    "solutions": null,
    "description": "The SipAuthPassword you specified contained too many characters.",
    "date_created": "2016-03-31T17:14:17Z",
    "last_updated": "2020-08-04T10:00:25.713Z"
  },
  {
    "code": 21224,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid SipAuthPassword. Illegal chars",
    "secondary_message": "The SipAuthUsername you specified contained characters not allowed in SIP.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SipAuthUsername you specified contained characters not allowed in SIP.\n",
    "causes": null,
    "solutions": null,
    "description": "The SipAuthUsername you specified contained characters not allowed in SIP.",
    "date_created": "2016-03-31T17:14:18Z",
    "last_updated": "2020-08-04T10:00:25.694Z"
  },
  {
    "code": 21225,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SipAuthPassword is required when providing SipAuthUsername",
    "secondary_message": "You must specify a SipAuthPassword if you are also using SipAuthUsername.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou must specify a SipAuthPassword if you are also using SipAuthUsername.\n",
    "causes": null,
    "solutions": null,
    "description": "You must specify a SipAuthPassword if you are also using SipAuthUsername.",
    "date_created": "2016-03-31T17:14:18Z",
    "last_updated": "2020-08-04T10:00:25.675Z"
  },
  {
    "code": 21226,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP calling not enabled for this account",
    "secondary_message": "Your account is not enabled for SIP calling.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour account is not enabled for SIP calling.\n",
    "causes": null,
    "solutions": null,
    "description": "Your account is not enabled for SIP calling.",
    "date_created": "2016-03-31T17:14:18Z",
    "last_updated": "2020-08-04T10:00:25.654Z"
  },
  {
    "code": 21227,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Headers portion of SIP URI must be fewer than 1024 chars",
    "secondary_message": "The headers you are sending must be fewer than 1024 characters.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe headers you are sending must be fewer than 1024 characters.\n",
    "causes": null,
    "solutions": null,
    "description": "The headers you are sending must be fewer than 1024 characters.",
    "date_created": "2016-03-31T17:14:19Z",
    "last_updated": "2020-08-04T10:00:25.635Z"
  },
  {
    "code": 21228,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid SIP Header. Illegal chars in header name",
    "secondary_message": "The header you passed has characters not allowed in SIP.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe header you passed has characters not allowed in SIP.\n",
    "causes": null,
    "solutions": null,
    "description": "The header you passed has characters not allowed in SIP.",
    "date_created": "2016-03-31T17:14:19Z",
    "last_updated": "2020-08-04T10:00:25.616Z"
  },
  {
    "code": 21229,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid SIP Header. Illegal chars in header value",
    "secondary_message": "The header value you passed has characters not allowed in SIP.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe header value you passed has characters not allowed in SIP.\n",
    "causes": null,
    "solutions": null,
    "description": "The header value you passed has characters not allowed in SIP.",
    "date_created": "2016-03-31T17:14:19Z",
    "last_updated": "2020-08-04T10:00:25.597Z"
  },
  {
    "code": 21230,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Maximum Domains Reached",
    "secondary_message": "An account cannot have more than 100 domains.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn account cannot have more than 100 domains.\n",
    "causes": null,
    "solutions": null,
    "description": "An account cannot have more than 100 domains.",
    "date_created": "2016-03-31T17:14:31Z",
    "last_updated": "2020-08-04T10:00:24.744Z"
  },
  {
    "code": 21231,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Domain Validation Error",
    "secondary_message": "One of the parameters passed when creating or updating a SIP domain was incorrect. Please see the response body for more details.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne of the parameters passed when creating or updating a SIP domain was incorrect. This may be caused by the IP Access Control List SID already being associated with the Domain.\n",
    "causes": null,
    "solutions": null,
    "description": "One of the parameters passed when creating or updating a SIP domain was incorrect. This may be caused by the IP Access Control List SID already being associated with the Domain.",
    "date_created": "2016-03-31T17:14:31Z",
    "last_updated": "2020-08-04T10:00:24.725Z"
  },
  {
    "code": 21232,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Domain",
    "secondary_message": "The domain name requested is invalid, already in use or a subdomain of a domain you do not control. Please see the response body for more details.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe domain name requested is invalid, already in use or a subdomain of a domain you do not control. This is likely because the parent domain does not exist or because neither the account sid or its parent account controls the parent domain.\n",
    "causes": null,
    "solutions": null,
    "description": "The domain name requested is invalid, already in use or a subdomain of a domain you do not control. This is likely because the parent domain does not exist or because neither the account sid or its parent account controls the parent domain.",
    "date_created": "2016-03-31T17:14:32Z",
    "last_updated": "2020-08-04T10:00:24.684Z"
  },
  {
    "code": 21233,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Domain still has subdomains",
    "secondary_message": "You cannot delete a domain while subdomains of it exist.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou cannot delete a domain while subdomains of it exist.\n",
    "causes": null,
    "solutions": null,
    "description": "You cannot delete a domain while subdomains of it exist.",
    "date_created": "2016-03-31T17:14:32Z",
    "last_updated": "2020-08-04T10:00:24.664Z"
  },
  {
    "code": 21234,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Machine Detection configuration value",
    "secondary_message": "You attempted to initiate an outbound call, but you provided a Machine Detection configuration value that is not allowed",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `MachineDetection` value in a Voice request is not one of the supported AMD values, or when one of the optional AMD tuning parameters falls outside its allowed range. AMD is supported on the Calls API, Participants API, `<Dial><Number>`, and `<Dial><Sip>`.\n\n### Possible causes\n\n- `MachineDetection` is set to a value other than `Enable` or `DetectMessageEnd`.\n- One or more AMD tuning parameters is outside its allowed range: `MachineDetectionTimeout`, `MachineDetectionSpeechThreshold`, `MachineDetectionSpeechEndThreshold`, or `MachineDetectionSilenceTimeout`.\n\n### Possible solutions\n\n- Set `MachineDetection` to `Enable` for early human or machine detection, or to `DetectMessageEnd` if you need to wait for the end of a voicemail greeting.\n- Keep AMD tuning parameters within their supported ranges: `MachineDetectionTimeout` between `3` and `59`, `MachineDetectionSpeechThreshold` between `1000` and `6000`, `MachineDetectionSpeechEndThreshold` between `500` and `5000`, and `MachineDetectionSilenceTimeout` between `2000` and `10000`.\n\n#### Additional resources\n\n- [Answering Machine Detection](/docs/voice/answering-machine-detection)\n- [Programmable Voice API Overview](/docs/voice/api)\n",
    "causes": "* `MachineDetection` is set to a value other than `Enable` or `DetectMessageEnd`.\n* One or more AMD tuning parameters is outside its allowed range: `MachineDetectionTimeout`, `MachineDetectionSpeechThreshold`, `MachineDetectionSpeechEndThreshold`, or `MachineDetectionSilenceTimeout`.",
    "solutions": "* Set `MachineDetection` to `Enable` for early human or machine detection, or to `DetectMessageEnd` if you need to wait for the end of a voicemail greeting.\n* Keep AMD tuning parameters within their supported ranges: `MachineDetectionTimeout` between `3` and `59`, `MachineDetectionSpeechThreshold` between `1000` and `6000`, `MachineDetectionSpeechEndThreshold` between `500` and `5000`, and `MachineDetectionSilenceTimeout` between `2000` and `10000`.",
    "description": "Twilio returns this error when the `MachineDetection` value in a Voice request is not one of the supported AMD values, or when one of the optional AMD tuning parameters falls outside its allowed range. AMD is supported on the Calls API, Participants API, `<Dial><Number>`, and `<Dial><Sip>`.",
    "date_created": "2019-02-04T23:25:55Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 21235,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "IP Access Control List Validation Error",
    "secondary_message": "One of the parameters passed when creating or updating an IP Access Control List was incorrect.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne of the parameters passed when creating or updating an IP Access Control List was incorrect.\n\n### Possible causes\n\n- An IP Access Control List or IP Address with the same FriendlyName may already exist.\n- The IP Access Control List may already contain that IP Address\n\n### Possible solutions\n\n- Use a different FriendlyName\n- Make sure the IP Access Control List does not already contain that IP Address.\n",
    "causes": "* An IP Access Control List or IP Address with the same FriendlyName may already exist.\n* The IP Access Control List may already contain that IP Address",
    "solutions": "* Use a different FriendlyName\n* Make sure the IP Access Control List does not already contain that IP Address.",
    "description": "One of the parameters passed when creating or updating an IP Access Control List was incorrect.",
    "date_created": "2020-08-04T02:02:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21236,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "IP Access Control List Dependencies Violation",
    "secondary_message": "You cannot delete an IP Access Control List that is still mapped to a SIP Domain.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou cannot delete an IP Access Control List that is still mapped to a SIP Domain.\n\n### Possible causes\n\n- Your IP Access Control List is still mapped to a SIP Domain.\n\n### Possible solutions\n\n- Remove the IP Access Control list from your SIP Domain before trying to delete it.\n",
    "causes": "* Your IP Access Control List is still mapped to a SIP Domain.",
    "solutions": "* Remove the IP Access Control list from your SIP Domain before trying to delete it.",
    "description": "You cannot delete an IP Access Control List that is still mapped to a SIP Domain.",
    "date_created": "2020-08-04T02:08:32Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21237,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum IP Addresses Reached for List",
    "secondary_message": "IP Access control lists cannot contain more than 25 Addresses.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nIP Access control lists cannot contain more than 25 Addresses.\n\n### Possible causes\n\n- IP Access control lists cannot contain more than 25 Addresses.\n\n### Possible solutions\n\n- Remove IP Addresses from your IP Access Control List if you must create new ones.\n",
    "causes": "* IP Access control lists cannot contain more than 25 Addresses.",
    "solutions": "* Remove IP Addresses from your IP Access Control List if you must create new ones.",
    "description": "IP Access control lists cannot contain more than 25 Addresses.",
    "date_created": "2020-08-04T02:14:19Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21238,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Address Validation Error",
    "secondary_message": "One of the parameters passed when creating or updating an Address was incorrect.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne of the parameters passed when creating or updating an Address was incorrect.\n\n### Possible causes\n\n- One of the parameters passed when creating or updating an Address was incorrect.\n\n### Possible solutions\n\n- Ensure that you are creating a valid Address.\n",
    "causes": "* One of the parameters passed when creating or updating an Address was incorrect.",
    "solutions": "* Ensure that you are creating a valid Address.",
    "description": "One of the parameters passed when creating or updating an Address was incorrect.",
    "date_created": "2020-08-04T02:20:07Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21239,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum Credential Lists Reached",
    "secondary_message": "An account cannot have more than 100 IP Access Control Lists.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn account cannot have more than 100 IP Access Control Lists.\n\n### Possible causes\n\n- An account cannot have more than 100 IP Access Control Lists.\n\n### Possible solutions\n\n- Delete an existing IP Access Control List if you must create more.\n",
    "causes": "* An account cannot have more than 100 IP Access Control Lists.",
    "solutions": "* Delete an existing IP Access Control List if you must create more.",
    "description": "An account cannot have more than 100 IP Access Control Lists.",
    "date_created": "2020-08-04T02:22:12Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21240,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Credential List Validation Error",
    "secondary_message": "One of the parameters passed when creating or updating a Credential List was incorrect.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne of the parameters passed when creating or updating a Credential List was incorrect.\n\n### Possible causes\n\n- A Credential List with the same FriendlyName may already exist\n- A Username was not provided. A Username must be provided and it must have 32 characters or less\n- The password was not provided. A password is required that meets the following criteria:\n\n  - Minimum 12 characters\n  - At least one mixed case\n  - At least one digit\n\n### Possible solutions\n\n- Ensure that your Credential List meets the validation requirements.\n",
    "causes": "* A Credential List with the same FriendlyName may already exist\n* A Username was not provided. A Username must be provided and it must have 32 characters or less\n* The password was not provided. A password is required that meets the following criteria:\n\n  * Minimum 12 characters\n  * At least one mixed case\n  * At least one digit",
    "solutions": "* Ensure that your Credential List meets the validation requirements.",
    "description": "One of the parameters passed when creating or updating a Credential List was incorrect.",
    "date_created": "2020-08-04T02:28:44Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21241,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Credential List Dependencies Violation",
    "secondary_message": "You cannot delete a Credential List that is still mapped to a SIP Domain.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou cannot delete a Credential List that is still mapped to a SIP Domain.\n\n### Possible causes\n\n- You cannot delete a Credential List that is still mapped to a SIP Domain.\n\n### Possible solutions\n\n- Remove the Credential List from any mapped SIP Domains before deleting.\n",
    "causes": "* You cannot delete a Credential List that is still mapped to a SIP Domain.",
    "solutions": "* Remove the Credential List from any mapped SIP Domains before deleting.",
    "description": "You cannot delete a Credential List that is still mapped to a SIP Domain.",
    "date_created": "2020-08-04T02:34:01Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21242,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum Credentials Reached for List",
    "secondary_message": "Credential Lists cannot contain more than 1000 Credentials.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nCredential Lists cannot contain more than 1000 Credentials.\n\n### Possible causes\n\n- Credential Lists cannot contain more than 1000 Credentials.\n\n### Possible solutions\n\n- Delete Credentials from your Credential List if you must create more.\n",
    "causes": "* Credential Lists cannot contain more than 1000 Credentials.",
    "solutions": "* Delete Credentials from your Credential List if you must create more.",
    "description": "Credential Lists cannot contain more than 1000 Credentials.",
    "date_created": "2020-08-04T02:35:59Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21243,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Credential Validation Error",
    "secondary_message": "One of the parameters passed when creating or updating a Credential was incorrect. Please see the response body for more details.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne of the parameters passed when creating or updating a Credential was incorrect. Please see the response body for more details.\n\n### Possible causes\n\n- One of the parameters passed when creating or updating a Credential was incorrect.\n\n### Possible solutions\n\n- Please see the response body for more details.\n",
    "causes": "* One of the parameters passed when creating or updating a Credential was incorrect.",
    "solutions": "* Please see the response body for more details.",
    "description": "One of the parameters passed when creating or updating a Credential was incorrect. Please see the response body for more details.",
    "date_created": "2020-08-04T02:37:49Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21244,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum Number of Trunks reached",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Maximum Number of Trunks reached.\n\n### Possible solutions\n\n- Please see limits allowed, visit [Trunking Key Concepts](/docs/sip-trunking/scale-and-limits).\n",
    "causes": "* Maximum Number of Trunks reached.",
    "solutions": "* Please see limits allowed, visit [Trunking Key Concepts](/docs/sip-trunking/scale-and-limits).",
    "description": "",
    "date_created": "2017-03-11T21:05:16Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21245,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trunk Validation Error",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Cannot use another account's SID as the Termination URI for this Trunk\n- Cannot create more than one Trunk with the same Termination URI\n- Credential List or IP-ACL already associated with Trunk\n\n### Possible solutions\n\n- Please update your Trunk settings to avoid the conditions stated above. Learn more: [Configure Trunks](/docs/sip-trunking#configure-trunks).\n",
    "causes": "* Cannot use another account's SID as the Termination URI for this Trunk\n* Cannot create more than one Trunk with the same Termination URI\n* Credential List or IP-ACL already associated with Trunk",
    "solutions": "* Please update your Trunk settings to avoid the conditions stated above. Learn more: [Configure Trunks](/docs/sip-trunking#configure-trunks).",
    "description": "",
    "date_created": "2017-03-11T21:06:22Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21247,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trunk Dependencies",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Cannot create subdomain because parent domain does not exist/account does not own it\n- Cannot delete trunk while it has subdomains\n- Cannot rename subdomain because parent domain does not exist/account doesn't own it\n- Cannot rename domain while it has subdomains\n\n### Possible solutions\n\n- One of these constraints in the \"Possible Causes\" has been be violated, please review your Termination URI (Domain name).\n",
    "causes": "* Cannot create subdomain because parent domain does not exist/account does not own it\n* Cannot delete trunk while it has subdomains\n* Cannot rename subdomain because parent domain does not exist/account doesn't own it\n* Cannot rename domain while it has subdomains",
    "solutions": "* One of these constraints in the \"Possible Causes\" has been be violated, please review your Termination URI (Domain name).",
    "description": "",
    "date_created": "2017-03-11T21:07:34Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21248,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trunk Domain already taken",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- This Termination URI (Domain) is not available.\n\n### Possible solutions\n\n- Please review your Termination URI (Domain name) and select a different one.\n",
    "causes": "* This Termination URI (Domain) is not available.",
    "solutions": "* Please review your Termination URI (Domain name) and select a different one.",
    "description": "",
    "date_created": "2017-03-11T21:08:25Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21249,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum Origination URIs reached  ",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You've configured the maximum number of Origination URIs allowed for your Trunk.\n\n### Possible solutions\n\n- Please see [Multiple Origination URIs](/docs/sip-trunking#multiple-orig-uris) for more information.\n",
    "causes": "* You've configured the maximum number of Origination URIs allowed for your Trunk.",
    "solutions": "* Please see [Multiple Origination URIs](/docs/sip-trunking#multiple-orig-uris) for more information.",
    "description": "",
    "date_created": "2017-03-11T21:09:20Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21251,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trunking CPS change not allowed",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- This CPS change is not allowed.\n\n### Possible solutions\n\n- This CPS change is not allowed, kindly contact Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).\n",
    "causes": "* This CPS change is not allowed.",
    "solutions": "* This CPS change is not allowed, kindly contact Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).",
    "description": "",
    "date_created": "2017-03-11T21:11:59Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21252,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Region",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Region requested is not valid.\n\n### Possible solutions\n\n- Please see [Localized Termination URIs](/docs/sip-trunking#localized-termination-uris) for more information on the valid Elastic SIP Trunking Regions.\n",
    "causes": "* The Region requested is not valid.",
    "solutions": "* Please see [Localized Termination URIs](/docs/sip-trunking#localized-termination-uris) for more information on the valid Elastic SIP Trunking Regions.",
    "description": "",
    "date_created": "2017-03-11T21:13:06Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21253,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max Connection Policies Reached",
    "secondary_message": "An account cannot have more than 10000 Connection Policies.",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nAn account cannot have more than 10000 Connection Policies.\n\n### Possible causes\n\n- An account cannot have more than 10000 Connection Policies.\n\n### Possible solutions\n\n- Delete an existing Connection Policy if you must create more.\n",
    "causes": "* An account cannot have more than 10000 Connection Policies.",
    "solutions": "* Delete an existing Connection Policy if you must create more.",
    "description": "An account cannot have more than 10000 Connection Policies.",
    "date_created": "2020-08-21T20:41:42Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21254,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max Connection Policy Entries Reached",
    "secondary_message": "A Connection Policy cannot have more than 10 entries.",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nA Connection Policy cannot have more than 10 entries.\n\n### Possible causes\n\n- A Connection Policy cannot have more than 10 entries.\n\n### Possible solutions\n\n- Delete an existing entry from the Connection Policy if you must create more.\n",
    "causes": "* A Connection Policy cannot have more than 10 entries.",
    "solutions": "* Delete an existing entry from the Connection Policy if you must create more.",
    "description": "A Connection Policy cannot have more than 10 entries.",
    "date_created": "2020-08-21T20:45:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21255,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum IP Access Control Lists reached",
    "secondary_message": "You cannot have more than 1000 IP Access Control Lists.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou cannot have more than 1000 IP Access Control Lists.\n\n### Possible causes\n\n- You cannot have more than 1000 IP Access Control Lists.\n\n### Possible solutions\n\n- Remove current IP Access Control Lists if you must create new ones.\n",
    "causes": "* You cannot have more than 1000 IP Access Control Lists.",
    "solutions": "* Remove current IP Access Control Lists if you must create new ones.",
    "description": "You cannot have more than 1000 IP Access Control Lists.",
    "date_created": "2020-08-04T01:30:00Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21256,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid ruleset",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nTwilio could not process the ruleset in your request because the ruleset is not valid. This error usually occurs when the JSON structure does not match the expected schema or when the ruleset contains duplicate rule names.\n\n### Possible causes\n\n- The request body contains invalid JSON.\n- The ruleset structure does not match the schema expected by the API.\n- A required ruleset property is missing.\n- A property value uses the wrong data type.\n- The ruleset contains duplicate rule names.\n- The request includes unsupported or misspelled fields.\n\n### Possible solutions\n\n- Validate that your request body contains well-formed JSON before you send it to Twilio.\n- Compare your ruleset payload to the API schema for the resource you are updating and remove any unsupported fields.\n- Confirm that all required properties are present and that each property uses the expected data type and format.\n- Make sure each rule name in the ruleset is unique.\n- If you generate the ruleset programmatically, log the final payload and inspect it for serialization issues, missing values, or duplicate entries.\n- Retry the request only after you correct the ruleset payload.\n\n#### Additional resources\n\n- [Elastic SIP Trunking](/docs/sip-trunking)\n",
    "causes": "* The request body contains invalid JSON.\n* The ruleset structure does not match the schema expected by the API.\n* A required ruleset property is missing.\n* A property value uses the wrong data type.\n* The ruleset contains duplicate rule names.\n* The request includes unsupported or misspelled fields.",
    "solutions": "* Validate that your request body contains well-formed JSON before you send it to Twilio.\n* Compare your ruleset payload to the API schema for the resource you are updating and remove any unsupported fields.\n* Confirm that all required properties are present and that each property uses the expected data type and format.\n* Make sure each rule name in the ruleset is unique.\n* If you generate the ruleset programmatically, log the final payload and inspect it for serialization issues, missing values, or duplicate entries.\n* Retry the request only after you correct the ruleset payload.",
    "description": "Twilio could not process the ruleset in your request because the ruleset is not valid. This error usually occurs when the JSON structure does not match the expected schema or when the ruleset contains duplicate rule names.",
    "date_created": "2021-09-16T19:30:42Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21257,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid SIP Manipulation Policy SID",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nOperation could not be performed because the SIP Manipulation Policy SID does not exist.\n\n### Possible causes\n\nSIP Manipulation Policy SID is incorrect.\n\n### Possible solutions\n\nVerify the SIP Manipulation Policy SID is valid.\n",
    "causes": "SIP Manipulation Policy SID is incorrect.",
    "solutions": "Verify the SIP Manipulation Policy SID is valid.",
    "description": "Operation could not be performed because the SIP Manipulation Policy SID does not exist.",
    "date_created": "2021-09-16T19:31:45Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21258,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid SIP Manipulation Policy",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nThere was a validation error for the Sip Manipulation Policy in question.\n\n### Possible causes\n\nReference the docs for configuration information - https://www.twilio.com/docs/sip-trunking/sip-header-manipulation\n\n### Possible solutions\n\nReference the docs for a possible configuation solition - https://www.twilio.com/docs/sip-trunking/sip-header-manipulation\n",
    "causes": "Reference the docs for configuration information - https://www.twilio.com/docs/sip-trunking/sip-header-manipulation",
    "solutions": "Reference the docs for a possible configuation solition - https://www.twilio.com/docs/sip-trunking/sip-header-manipulation",
    "description": "There was a validation error for the Sip Manipulation Policy in question.",
    "date_created": "2021-09-16T19:32:54Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21259,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum number of SIP Manipulation Polies per account reached",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nYour account already has the maximum number of Sip Manipulation Policies allowed.\n\n### Possible causes\n\nThe number of Sip Manipulation Policies per account cannot exceed the limit. See https://www.twilio.com/docs/sip-trunking/sip-header-manipulation\n\n### Possible solutions\n\nRemove unused Sip Manipulation Policies.\n",
    "causes": "The number of Sip Manipulation Policies per account cannot exceed the limit. See https://www.twilio.com/docs/sip-trunking/sip-header-manipulation",
    "solutions": "Remove unused Sip Manipulation Policies.",
    "description": "Your account already has the maximum number of Sip Manipulation Policies allowed.",
    "date_created": "2021-09-16T19:34:08Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21260,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum number of actions per rule reached",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nThis rule already has the maximum number of actions allowed.\n\n### Possible causes\n\nThe number of actions in a given rule cannot exceed the limit. See https://www.twilio.com/docs/sip-trunking/sip-header-manipulation\n\n### Possible solutions\n\nOptimize your rule by removing unused actions.\n",
    "causes": "The number of actions in a given rule cannot exceed the limit. See https://www.twilio.com/docs/sip-trunking/sip-header-manipulation",
    "solutions": "Optimize your rule by removing unused actions.",
    "description": "This rule already has the maximum number of actions allowed.",
    "date_created": "2021-09-16T19:35:05Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21261,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum number of conditions per rule reached",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nThis rule already has the maximum number of conditions allowed.\n\n### Possible causes\n\nThe number of conditions in a given rule cannot exceed the limit. See https://www.twilio.com/docs/sip-trunking/sip-header-manipulation\n\n### Possible solutions\n\nOptimize your rule by removing unused conditions.\n",
    "causes": "The number of conditions in a given rule cannot exceed the limit. See https://www.twilio.com/docs/sip-trunking/sip-header-manipulation",
    "solutions": "Optimize your rule by removing unused conditions.",
    "description": "This rule already has the maximum number of conditions allowed.",
    "date_created": "2021-09-16T19:36:00Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21262,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "No AMD status callback URL provided",
    "secondary_message": "No Answering Machine Detection status callback URL was provided for this call.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nAnswering Machine Detection was enabled on this call, but no AMD status callback URL was provided, so Twilio has no where to send the results when they are returned. AMD results will still be available in the /Calls resource once the call is complete.\n\n### Possible causes\n\nNo AMD status callback URL was provided\n\n### Possible solutions\n\nProvide an AMD status callback URL when enabling Answering Machine Detection\n",
    "causes": "No AMD status callback URL was provided",
    "solutions": "Provide an AMD status callback URL when enabling Answering Machine Detection",
    "description": "Answering Machine Detection was enabled on this call, but no AMD status callback URL was provided, so Twilio has no where to send the results when they are returned. AMD results will still be available in the /Calls resource once the call is complete.",
    "date_created": "2022-08-25T01:37:10Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21263,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid Answering Machine Detection Parameters",
    "secondary_message": "Answering Machine Detection parameters specific to POST to /Calls API have been passed in POST to /Participants, `<Dial><Number>`, or `<Dial><Sip>`",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInvalid Answering Machine Detection Parameters\n\n### Possible causes\n\nAsyncAmd, AsyncAmdStatusCallback, and/or AsyncAmdStatusCallbackMethod parameters from `POST` to /Calls API have been passed in a `POST` to /Participants API, or added to `<Dial><Number>` or `<Dial><Sip>` TwiML.\n\n### Possible solutions\n\nDo not include AsyncAmd, AsyncAmdStatusCallback, or AsyncAmdStatusCallbackMethod parameters in `POST` requests made to /Participants API and in TwiML responses that include `<Dial><Number>` or `<Dial><Sip>` with Answering Machine Detection enabled.\n",
    "causes": "AsyncAmd, AsyncAmdStatusCallback, and/or AsyncAmdStatusCallbackMethod parameters from `POST` to /Calls API have been passed in a `POST` to /Participants API, or added to `<Dial><Number>` or `<Dial><Sip>` TwiML.",
    "solutions": "Do not include AsyncAmd, AsyncAmdStatusCallback, or AsyncAmdStatusCallbackMethod parameters in `POST` requests made to /Participants API and in TwiML responses that include `<Dial><Number>` or `<Dial><Sip>` with Answering Machine Detection enabled.",
    "description": "Invalid Answering Machine Detection Parameters",
    "date_created": "2022-08-25T01:47:01Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21264,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "‘From’ phone number not verified",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou received an inbound phone call to a Twilio phone number owned by your trial account, but the 'From' number is not a [Verified Caller ID](https://support.twilio.com/hc/en-us/articles/223180048-How-to-Add-and-Remove-a-Verified-Phone-Number-or-Caller-ID-with-Twilio) on your account. In order to receive calls to a Twilio number during a free trial, you must first verify your ownership of the phone number that is placing the call. See [Verified recipients](/docs/usage/trials#verified-recipients) for details.\n\n### Possible causes\n\nThe 'From' number of the inbound call is not a [Verified Caller ID](https://support.twilio.com/hc/en-us/articles/223180048-How-to-Add-and-Remove-a-Verified-Phone-Number-or-Caller-ID-with-Twilio). Trial accounts can only receive inbound calls from verified phone numbers.\n\n### Possible solutions\n\nYou can verify phone numbers from the [phone numbers section](https://www.twilio.com/user/account/phone-numbers) of your account portal.\n",
    "causes": "The 'From' number of the inbound call is not a [Verified Caller ID](https://support.twilio.com/hc/en-us/articles/223180048-How-to-Add-and-Remove-a-Verified-Phone-Number-or-Caller-ID-with-Twilio). Trial accounts can only receive inbound calls from verified phone numbers.",
    "solutions": "You can verify phone numbers from the [phone numbers section](https://www.twilio.com/user/account/phone-numbers) of your account portal.",
    "description": "You received an inbound phone call to a Twilio phone number owned by your trial account, but the 'From' number is not a [Verified Caller ID](https://support.twilio.com/hc/en-us/articles/223180048-How-to-Add-and-Remove-a-Verified-Phone-Number-or-Caller-ID-with-Twilio) on your account. In order to receive calls to a Twilio number during a free trial, you must first verify your ownership of the phone number that is placing the call. See [Verified recipients](/docs/usage/trials#verified-recipients) for details.",
    "date_created": "2023-09-27T00:07:29Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 21265,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'To' number cannot be a Short Code",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you attempt to send an SMS to a short code in the `To` parameter. Short codes are numeric sender IDs with three to seven digits, and Twilio phone numbers cannot send messages to short codes, whether the short code is hosted by Twilio or by another provider.\n\n### Possible causes\n\n- The `To` value is a short code instead of a standard destination phone number.\n- Your application stored or collected a three to seven digit short code as the recipient address and attempted to use it in an outbound SMS request.\n- Your workflow is trying to reply to a message that originated from a short code by sending a new outbound SMS from a Twilio phone number to that short code.\n\n### Possible solutions\n\n- Send the message to a full recipient phone number instead of a short code. Do not use a short code in the `To` parameter for outbound SMS from a Twilio phone number.\n- Validate destination numbers before you send. If your use case expects a mobile or landline number, reject recipients that match short code formats such as three to seven digits.\n- Review the source of your recipient data and remove short codes from contact lists, inbound reply handling, and automated message workflows that send through Twilio phone numbers.\n- If you need to receive messages from short codes on a Twilio long code, configure your account for inbound short code reception instead of attempting to send outbound messages to the short code. This setting is account-wide and requires contacting Twilio Support.\n\n#### Additional resources\n\n- [Messaging API overview](/docs/messaging/api)\n- [Debugging common issues with SMS](/docs/messaging/guides/debugging-common-issues)\n- [What's an SMS Short Code?](/docs/glossary/what-is-a-short-code)\n",
    "causes": "* The `To` value is a short code instead of a standard destination phone number.\n* Your application stored or collected a three to seven digit short code as the recipient address and attempted to use it in an outbound SMS request.\n* Your workflow is trying to reply to a message that originated from a short code by sending a new outbound SMS from a Twilio phone number to that short code.",
    "solutions": "* Send the message to a full recipient phone number instead of a short code. Do not use a short code in the `To` parameter for outbound SMS from a Twilio phone number.\n* Validate destination numbers before you send. If your use case expects a mobile or landline number, reject recipients that match short code formats such as three to seven digits.\n* Review the source of your recipient data and remove short codes from contact lists, inbound reply handling, and automated message workflows that send through Twilio phone numbers.\n* If you need to receive messages from short codes on a Twilio long code, configure your account for inbound short code reception instead of attempting to send outbound messages to the short code. This setting is account-wide and requires contacting Twilio Support.",
    "description": "This error occurs when you attempt to send an SMS to a short code in the `To` parameter. Short codes are numeric sender IDs with three to seven digits, and Twilio phone numbers cannot send messages to short codes, whether the short code is hosted by Twilio or by another provider.",
    "date_created": "2024-07-10T08:39:46Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 21266,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'To' and 'From' numbers cannot be the same",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou attempted to send an SMS, but the `To` phone number you supplied is the same as the `From` number.\n\n### Possible causes\n\nYou attempted to send an SMS from a Twilio number to itself (putting the same Twilio number in the `To` and `From` parameters).\n\n### Possible solutions\n\nEnsure you are not attempting to send a message from a Twilio number to itself.\n",
    "causes": "You attempted to send an SMS from a Twilio number to itself (putting the same Twilio number in the `To` and `From` parameters).",
    "solutions": "Ensure you are not attempting to send a message from a Twilio number to itself.",
    "description": "You attempted to send an SMS, but the `To` phone number you supplied is the same as the `From` number.",
    "date_created": "2024-07-10T08:44:56Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21267,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Alphanumeric Sender ID cannot be used as the 'From' number on trial accounts",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send an SMS from a trial account and use an Alphanumeric Sender ID as the `From` value. Alphanumeric Sender IDs are supported only on paid accounts.\n\n### Possible causes\n\n- Your account is still in trial status.\n- Your request uses an Alphanumeric Sender ID as the `From` value.\n- Your messaging workflow is configured to send with an Alphanumeric Sender ID before the account has been upgraded.\n\n### Possible solutions\n\n- Upgrade your account before sending with an Alphanumeric Sender ID.\n- Until you upgrade, send messages from an SMS-capable Twilio phone number in your account instead of an Alphanumeric Sender ID.\n- After you upgrade, enable Alphanumeric Sender ID in your messaging settings and add the sender to your Messaging Service.\n- If you continue with an Alphanumeric Sender ID after upgrading, confirm that the destination country supports it and complete preregistration when required.\n\n#### Additional resources\n\n- [Get started with your Twilio free trial account](/docs/usage/tutorials/how-to-use-your-free-trial-account)\n- [Twilio Free Trial Limitations](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations)\n- [Alphanumeric Sender IDs in Messaging Services](/docs/messaging/services/alphanumeric-sender-ids-in-messaging-services)\n",
    "causes": "* Your account is still in trial status.\n* Your request uses an Alphanumeric Sender ID as the `From` value.\n* Your messaging workflow is configured to send with an Alphanumeric Sender ID before the account has been upgraded.",
    "solutions": "* Upgrade your account before sending with an Alphanumeric Sender ID.\n* Until you upgrade, send messages from an SMS-capable Twilio phone number in your account instead of an Alphanumeric Sender ID.\n* After you upgrade, enable Alphanumeric Sender ID in your messaging settings and add the sender to your Messaging Service.\n* If you continue with an Alphanumeric Sender ID after upgrading, confirm that the destination country supports it and complete preregistration when required.",
    "description": "This error occurs when you send an SMS from a trial account and use an Alphanumeric Sender ID as the `From` value. Alphanumeric Sender IDs are supported only on paid accounts.",
    "date_created": "2024-07-10T08:52:32Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 21268,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sending to Premium rate or Information Service numbers is not allowed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou can't send SMS messages to premium rate or information service numbers through Twilio. Twilio classifies premium numbers as higher-cost numbers for special services, and Lookup Line Type Intelligence identifies these destinations with the `premium` line type.\n\n### Possible causes\n\n- The `To` number is a premium rate or information service number, which Twilio does not allow as an SMS destination.\n- Your application submitted a destination number without validating its line type first. Lookup Line Type Intelligence can identify whether a number is `premium` before you send the message.\n- Your application accepts user-entered or international destination numbers, which can expose your account to premium-rate fraud attempts in high-risk geographies. ([help.twilio.com](https://help.twilio.com/articles/223181108-International-SMS-Messaging-Geographic-Permissions-Geo-Permissions-and-How-They-Work))\n\n### Possible solutions\n\n- Send the message to a standard SMS-capable recipient number instead of a premium rate or information service number.\n- Validate destination numbers before sending. Use `GET /v2/PhoneNumbers/{PhoneNumber}` with `Fields=line_type_intelligence` and reject numbers whose `line_type_intelligence.type` is `premium`.\n- If your application allows broad international sending, review your SMS Geographic Permissions and block countries you do not intend to message. Twilio recommends limiting destinations to reduce exposure to premium-rate fraud. ([help.twilio.com](https://help.twilio.com/articles/223181108-International-SMS-Messaging-Geographic-Permissions-Geo-Permissions-and-How-They-Work))\n\n#### Additional resources\n\n- [Line Type Intelligence](/docs/lookup/v2-api/line-type-intelligence)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [International SMS Messaging Geographic Permissions and How They Work](https://help.twilio.com/articles/223181108-International-SMS-Messaging-Geographic-Permissions-Geo-Permissions-and-How-They-Work)\n",
    "causes": "* The `To` number is a premium rate or information service number, which Twilio does not allow as an SMS destination.\n* Your application submitted a destination number without validating its line type first. Lookup Line Type Intelligence can identify whether a number is `premium` before you send the message.\n* Your application accepts user-entered or international destination numbers, which can expose your account to premium-rate fraud attempts in high-risk geographies. ([help.twilio.com](https://help.twilio.com/articles/223181108-International-SMS-Messaging-Geographic-Permissions-Geo-Permissions-and-How-They-Work))",
    "solutions": "* Send the message to a standard SMS-capable recipient number instead of a premium rate or information service number.\n* Validate destination numbers before sending. Use `GET /v2/PhoneNumbers/{PhoneNumber}` with `Fields=line_type_intelligence` and reject numbers whose `line_type_intelligence.type` is `premium`.\n* If your application allows broad international sending, review your SMS Geographic Permissions and block countries you do not intend to message. Twilio recommends limiting destinations to reduce exposure to premium-rate fraud. ([help.twilio.com](https://help.twilio.com/articles/223181108-International-SMS-Messaging-Geographic-Permissions-Geo-Permissions-and-How-They-Work))",
    "description": "You can't send SMS messages to premium rate or information service numbers through Twilio. Twilio classifies premium numbers as higher-cost numbers for special services, and Lookup Line Type Intelligence identifies these destinations with the `premium` line type.",
    "date_created": "2024-07-10T08:54:29Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21300,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid BYOC trunk SID",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYou have specified a BYOC trunk SID that is malformed or non-existent.\n\n### Possible causes\n\n- The SID in question is not formatted correctly. A valid BYOC trunk SID starts with prefix \"BY\" and is 34 characters in length.\n- The BYOC trunk identified by the SID does not exist. If it existed in the past, it has since been removed.\n- The BYOC trunk exists but ownership is with a different account.\n\n### Possible solutions\n\nMake sure you submit the SID of a BYOC trunk that you can locate within your account.\n",
    "causes": "* The SID in question is not formatted correctly. A valid BYOC trunk SID starts with prefix \"BY\" and is 34 characters in length.\n* The BYOC trunk identified by the SID does not exist. If it existed in the past, it has since been removed.\n* The BYOC trunk exists but ownership is with a different account.",
    "solutions": "Make sure you submit the SID of a BYOC trunk that you can locate within your account.",
    "description": "You have specified a BYOC trunk SID that is malformed or non-existent.",
    "date_created": "2020-01-17T19:31:54Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21301,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot create application: application limit exceeded",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nCannot create application: application limit exceeded\n\n### Possible causes\n\nYou have attempted to create a new application that exceeds the limit of 1000 applications.\n\n### Possible solutions\n\nDelete or update application in order to create new application.\n",
    "causes": "You have attempted to create a new application that exceeds the limit of 1000 applications.",
    "solutions": "Delete or update application in order to create new application.",
    "description": "Cannot create application: application limit exceeded",
    "date_created": "2020-03-30T19:08:19Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21302,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Approaching application creation limit ",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio raises 21302 when your account is approaching the limit of 1000 TwiML applications. TwiML Applications can be managed in the Console or through the Applications Resource.\n\n### Possible causes\n\n- You are approaching the limit of 1000 TwiML applications.\n\n### Possible solutions\n\n- Delete or update existing applications instead of creating new applications.\n- Review your existing TwiML Applications in the Console or with the Applications Resource before creating more.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [REST API: Applications](/docs/usage/api/applications)\n- [TwiML Voice: `<Application>` usage](/docs/voice/twiml/dial/application/usage)\n",
    "causes": "* You are approaching the limit of 1000 TwiML applications.",
    "solutions": "* Delete or update existing applications instead of creating new applications.\n* Review your existing TwiML Applications in the Console or with the Applications Resource before creating more.",
    "description": "Twilio raises 21302 when your account is approaching the limit of 1000 TwiML applications. TwiML Applications can be managed in the Console or through the Applications Resource.",
    "date_created": "2020-04-27T22:13:38Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 21401,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Phone Number",
    "secondary_message": "The phone number you specified was not a valid North American (US or Canadian) number. Twilio accepts only 10 digit US domestic and Canadian phone numbers, with or without a leading \"1\" or \"+1\", with any combination of character separators. For example, these are all valid: 415-867-5309, 4158675309, +1 (415) 867 5309.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou received this error when the sender you provided for an outbound SMS request is not valid. The `From` value must be a Twilio-hosted sender that belongs to your account. If you use a phone number, use a Twilio number that you purchased from or ported to Twilio in `E.164` format. If you use an alphanumeric sender ID, it must meet Twilio formatting requirements and be used only in supported countries.\n\n### Possible causes\n\n- You passed a `From` phone number that is not purchased from or ported to Twilio.\n- You passed the `From` phone number in a format other than `E.164`.\n- You used an alphanumeric sender ID for a destination where alphanumeric sender IDs are not supported, including the United States or Canada.\n- Your alphanumeric sender ID does not meet sender ID requirements. For example, it is longer than 11 characters, uses unsupported characters, or contains only digits.\n- You sent with `From` instead of `MessagingServiceSid`, and the sender you provided is not available to the account that is creating the message.\n\n### Possible solutions\n\n- Update `From` to a valid Twilio sender that belongs to the account sending the message.\n- Format phone numbers in `E.164`, for example `+14155552671`.\n- Buy a Twilio phone number or port an existing number to Twilio before using it as a sender.\n- If you use an alphanumeric sender ID, confirm that the destination country supports it and complete registration when required.\n- Keep alphanumeric sender IDs to 11 characters or fewer and include at least one letter.\n- If you use a Messaging Service, send with `MessagingServiceSid` so Twilio can select a sender from your Sender Pool, or specify only a sender that is already in that pool.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Phone Numbers](/docs/phone-numbers)\n- [Alphanumeric Sender IDs](/docs/numbers-and-senders/alphanumeric-senders)\n",
    "causes": "* You passed a `From` phone number that is not purchased from or ported to Twilio.\n* You passed the `From` phone number in a format other than `E.164`.\n* You used an alphanumeric sender ID for a destination where alphanumeric sender IDs are not supported, including the United States or Canada.\n* Your alphanumeric sender ID does not meet sender ID requirements. For example, it is longer than 11 characters, uses unsupported characters, or contains only digits.\n* You sent with `From` instead of `MessagingServiceSid`, and the sender you provided is not available to the account that is creating the message.",
    "solutions": "* Update `From` to a valid Twilio sender that belongs to the account sending the message.\n* Format phone numbers in `E.164`, for example `+14155552671`.\n* Buy a Twilio phone number or port an existing number to Twilio before using it as a sender.\n* If you use an alphanumeric sender ID, confirm that the destination country supports it and complete registration when required.\n* Keep alphanumeric sender IDs to 11 characters or fewer and include at least one letter.\n* If you use a Messaging Service, send with `MessagingServiceSid` so Twilio can select a sender from your Sender Pool, or specify only a sender that is already in that pool.",
    "description": "You received this error when the sender you provided for an outbound SMS request is not valid. The `From` value must be a Twilio-hosted sender that belongs to your account. If you use a phone number, use a Twilio number that you purchased from or ported to Twilio in `E.164` format. If you use an alphanumeric sender ID, it must meet Twilio formatting requirements and be used only in supported countries.",
    "date_created": "2016-03-31T17:13:58Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21402,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Url",
    "secondary_message": "You attempted to update the URL handler associated with a phone number, but the URL you specified was not valid. You must specify a valid URL, beginning with http or https, such as http://mycompany.com/callHandler",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to update the URL handler associated with a phone number, but the URL you specified was not valid.\n\n### Possible solutions\n\nMake sure you submit a fully qualified URL including:\n\n- protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters\n\nTwilio must be able to reach this URL over the public Internet.\n",
    "causes": null,
    "solutions": "Make sure you submit a fully qualified URL including: - protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "description": "You attempted to update the URL handler associated with a phone number, but the URL you specified was not valid.",
    "date_created": "2016-03-31T17:13:58Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 21403,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Method",
    "secondary_message": "You attempted to update the HTTP method that Twilio uses when somebody calls your phone number, but the Method you supplied was not valid. Valid Method values are GET or POST.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to update the HTTP method that Twilio uses when somebody calls your phone number, but the Method you supplied was not valid. Valid Method values are `GET` or `POST`.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to update the HTTP method that Twilio uses when somebody calls your phone number, but the Method you supplied was not valid. Valid Method values are `GET` or `POST`.",
    "date_created": "2016-03-31T17:13:59Z",
    "last_updated": "2020-08-04T10:00:27.028Z"
  },
  {
    "code": 21404,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Inbound Phone number not available to trial account",
    "secondary_message": "You attempted to get a phone number using the REST API, but your Twilio Free Trial Account does not support having your own phone number. Please upgrade to a Full Twilio Account in order to enable this feature.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nPurchasing phone numbers is a feature that is only available for upgraded accounts.\n\n### Possible causes\n\nYou attempted to purchase a phone number using the REST API while on a trial account.\n\n### Possible solutions\n\n[Upgrade your account](/docs/usage/trials#upgrade-your-account) in order to purchase numbers.\n",
    "causes": "You attempted to purchase a phone number using the REST API while on a trial account.",
    "solutions": "[Upgrade your account](/docs/usage/trials#upgrade-your-account) in order to purchase numbers.",
    "description": "Purchasing phone numbers is a feature that is only available for upgraded accounts.",
    "date_created": "2016-03-31T17:13:59Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 21405,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Cannot set VoiceFallbackUrl without setting Url",
    "secondary_message": "You cannot set a fallback URL without specifying a primary URL",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou cannot set a fallback URL without specifying a primary URL\n",
    "causes": null,
    "solutions": null,
    "description": "You cannot set a fallback URL without specifying a primary URL",
    "date_created": "2016-03-31T17:14:19Z",
    "last_updated": "2020-08-04T10:00:25.579Z"
  },
  {
    "code": 21406,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Cannot set SmsFallbackUrl without setting SmsUrl",
    "secondary_message": "You cannot set a fallback URL without specifying a primary URL",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou cannot set a fallback URL without specifying a primary URL\n",
    "causes": null,
    "solutions": null,
    "description": "You cannot set a fallback URL without specifying a primary URL",
    "date_created": "2016-03-31T17:14:20Z",
    "last_updated": "2020-08-04T10:00:25.558Z"
  },
  {
    "code": 21407,
    "log_level": "ERROR",
    "log_type": null,
    "message": "This Phone Number type does not support SMS",
    "secondary_message": "This phone number type does not support SMS. You cannot set SmsUrl, SmsMethod, SmsFallbackUrl, or SmsFallbackMethod",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis phone number type does not support SMS. You cannot set SmsUrl, SmsMethod, SmsFallbackUrl, or SmsFallbackMethod\n",
    "causes": null,
    "solutions": null,
    "description": "This phone number type does not support SMS. You cannot set SmsUrl, SmsMethod, SmsFallbackUrl, or SmsFallbackMethod",
    "date_created": "2016-03-31T17:14:20Z",
    "last_updated": "2020-08-04T10:00:25.541Z"
  },
  {
    "code": 21408,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message blocked: permissions disabled for the destination region",
    "secondary_message": "Permission to send an SMS or MMS has not been enabled for the region indicated by the 'To' number",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your account tried to send a message to a destination that is disabled in Messaging Geo Permissions, or to a destination that Twilio does not support for the channel you are using. Messaging Geo Permissions are designed to help you limit outbound traffic to the countries and regions where you operate.\n\n### Possible causes\n\n- The destination country or region is disabled in Messaging Geo Permissions for this account. New accounts can send only to the home country verified during signup until you enable additional destinations.\n- The `To` number maps to a destination that Twilio does not support for the channel you are using. For WhatsApp and RCS, this includes recipients whose numbers begin with `+98`.\n- Delivery is blocked by regulatory restrictions that Geo Permissions cannot override. Twilio stopped delivering voice, messaging, and email traffic to recipients in Iran on March 15, 2025, and to recipients in Syria and Cuba on September 15, 2025.\n\n### Possible solutions\n\n- In Console, go to Messaging > Settings > Geo Permissions and enable the destination country or region if Twilio supports that route and your use case requires it. Changes take effect immediately.\n- Confirm that the `To` number uses the correct international country code for the recipient you intend to reach. SMS Geo Permissions are generally evaluated by destination country code, so an incorrect prefix can trigger this error.\n- Review the destination's messaging requirements before enabling it. Some countries require additional registration and may restrict traffic by sender type or use case.\n- Do not retry traffic to recipients in Iran, Syria, or Cuba expecting Geo Permissions to restore delivery. If you send over WhatsApp, also verify that the recipient is not using a blocked country number such as `+98`, `+53`, `+963`, `+7978`, or `+850`.\n\n#### Additional resources\n\n- [SMS Geo Permissions](/docs/messaging/guides/sms-geo-permissions)\n- [Programmable Messaging RCS Regional Availability](/docs/rcs/regional)\n- [What countries can I reach with the Twilio API for WhatsApp?](https://help.twilio.com/articles/360051177134-What-countries-can-I-reach-with-the-Twilio-API-for-WhatsApp-)\n",
    "causes": "* The destination country or region is disabled in Messaging Geo Permissions for this account. New accounts can send only to the home country verified during signup until you enable additional destinations.\n* The `To` number maps to a destination that Twilio does not support for the channel you are using. For WhatsApp and RCS, this includes recipients whose numbers begin with `+98`.\n* Delivery is blocked by regulatory restrictions that Geo Permissions cannot override. Twilio stopped delivering voice, messaging, and email traffic to recipients in Iran on March 15, 2025, and to recipients in Syria and Cuba on September 15, 2025.",
    "solutions": "* In Console, go to Messaging > Settings > Geo Permissions and enable the destination country or region if Twilio supports that route and your use case requires it. Changes take effect immediately.\n* Confirm that the `To` number uses the correct international country code for the recipient you intend to reach. SMS Geo Permissions are generally evaluated by destination country code, so an incorrect prefix can trigger this error.\n* Review the destination's messaging requirements before enabling it. Some countries require additional registration and may restrict traffic by sender type or use case.\n* Do not retry traffic to recipients in Iran, Syria, or Cuba expecting Geo Permissions to restore delivery. If you send over WhatsApp, also verify that the recipient is not using a blocked country number such as `+98`, `+53`, `+963`, `+7978`, or `+850`.",
    "description": "This error means your account tried to send a message to a destination that is disabled in Messaging Geo Permissions, or to a destination that Twilio does not support for the channel you are using. Messaging Geo Permissions are designed to help you limit outbound traffic to the countries and regions where you operate.",
    "date_created": "2016-03-31T17:14:20Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 21409,
    "log_level": "ERROR",
    "log_type": null,
    "message": "VoiceCallerIdLookup cannot be set for this phone number",
    "secondary_message": "You attempted to set the VoiceCallerIdLookup for a phone number using the REST API, but the number does not support this feature.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to set the VoiceCallerIdLookup for a phone number using the REST API, but the number does not support this feature.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to set the VoiceCallerIdLookup for a phone number using the REST API, but the number does not support this feature.",
    "date_created": "2016-03-31T17:13:59Z",
    "last_updated": "2020-08-04T10:00:26.966Z"
  },
  {
    "code": 21420,
    "log_level": "ERROR",
    "log_type": null,
    "message": "ApplicationSid is not accessible",
    "secondary_message": "You specified a VoiceApplicationSid or SmsApplicationSid for a new phone number that is not controlled by your account, or is invalid. Please specify an ApplicationSid that you've created in your [Account Dashboard](/user/account/apps).",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou specified a VoiceApplicationSid or SmsApplicationSid for a new phone number that is not controlled by your account, or is invalid. Please specify an ApplicationSid that you've created in your [Account Dashboard](/user/account/apps).\n",
    "causes": null,
    "solutions": null,
    "description": "You specified a VoiceApplicationSid or SmsApplicationSid for a new phone number that is not controlled by your account, or is invalid. Please specify an ApplicationSid that you've created in your [Account Dashboard](/user/account/apps).",
    "date_created": "2016-03-31T17:14:20Z",
    "last_updated": "2020-08-04T10:00:25.499Z"
  },
  {
    "code": 21421,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone Number is invalid",
    "secondary_message": "You tried to purchase a phone number for your account that was an invalid number. Please specify a valid phone number in E.164 format.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou tried to purchase or lookup a phone number that is invalid or add a phone number to a Messaging Service with an invalid Phone Number SID.\n\n### Possible causes\n\n- You tried to purchase or lookup a phone number that is invalid.\n- You tried to add an invalid Phone Number SID or Short Code SID to a Messaging Service.\n\n### Possible solutions\n\n- For phone number lookup or purchase, please specify a valid phone number in E.164 format.\n- For adding a Phone Number to a Messaging Service, verify that the Phone Number SID or Short Code SID is correct and formatted properly, then retry the request.\n",
    "causes": "* You tried to purchase or lookup a phone number that is invalid.\n* You tried to add an invalid Phone Number SID or Short Code SID to a Messaging Service.",
    "solutions": "* For phone number lookup or purchase, please specify a valid phone number in E.164 format.\n* For adding a Phone Number to a Messaging Service, verify that the Phone Number SID or Short Code SID is correct and formatted properly, then retry the request.",
    "description": "You tried to purchase or lookup a phone number that is invalid or add a phone number to a Messaging Service with an invalid Phone Number SID.",
    "date_created": "2016-03-31T17:14:21Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21422,
    "log_level": "ERROR",
    "log_type": null,
    "message": "PhoneNumber is not available",
    "secondary_message": "You tried to purchase a phone number that is not available for purchase. This error can be triggered in a few ways: - Twilio does not own the phone number in question. - Twilio owns the number, but it is reserved for another account.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou tried to purchase a phone number that is not available for purchase.\n\nThis error can be triggered in a few ways:\n\n- Twilio does not own the phone number in question.\n- Twilio owns the number, but it is reserved for another account.\n",
    "causes": null,
    "solutions": null,
    "description": "You tried to purchase a phone number that is not available for purchase. This error can be triggered in a few ways: - Twilio does not own the phone number in question.\n- Twilio owns the number, but it is reserved for another account.",
    "date_created": "2016-03-31T17:14:21Z",
    "last_updated": "2020-08-04T10:00:25.461Z"
  },
  {
    "code": 21449,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Number already can be used for outgoing calls and messages",
    "secondary_message": "The number you attempted to add as an Outgoing Caller ID to your account already can be used for outgoing calls and messages.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe number you attempted to add as an Outgoing Caller ID to your account already can be used for outgoing calls and messages.\n",
    "causes": null,
    "solutions": null,
    "description": "The number you attempted to add as an Outgoing Caller ID to your account already can be used for outgoing calls and messages.",
    "date_created": "2018-01-16T12:08:00Z",
    "last_updated": "2020-08-04T10:00:15.293Z"
  },
  {
    "code": 21450,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Phone number already validated on your account",
    "secondary_message": "You attempted to add an Outgoing Caller ID to your account, but that number is already verified as an Outgoing Caller ID on your account.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to verify a phone number for your account, but that number is already verified for your account.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to verify a phone number for your account, but that number is already verified for your account.",
    "date_created": "2016-03-31T17:13:59Z",
    "last_updated": "2020-08-04T10:00:26.945Z"
  },
  {
    "code": 21451,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid area code",
    "secondary_message": "You attempted to get a phone number for your account, but the AreaCode parameter you specified was not a valid North American area code. AreaCode is optional, and for Local phone numbers, may be any US or Canadian area code, or for TollFree numbers, may be one of 800,888,877 or 866.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to get a phone number for your account, but the AreaCode parameter you specified was not a valid North American area code. AreaCode is optional, and for Local phone numbers, may be any US or Canadian area code, or for TollFree numbers, may be one of 800,888,877 or 866.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to get a phone number for your account, but the AreaCode parameter you specified was not a valid North American area code. AreaCode is optional, and for Local phone numbers, may be any US or Canadian area code, or for TollFree numbers, may be one of 800,888,877 or 866.",
    "date_created": "2016-03-31T17:14:00Z",
    "last_updated": "2020-08-04T10:00:26.927Z"
  },
  {
    "code": 21452,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No phone numbers found in area code",
    "secondary_message": "You attempted to get a phone number for your account, but Twilio couldn't find any numbers in the area you specified. You may try again with a different AreaCode or contact us to request a number in a certain area. We can usually accommodate such requests within a few days.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to get a phone number for your account, but Twilio couldn't find any numbers in the area you specified. You may try again with a different AreaCode or contact us to request a number in a certain area. We can usually accommodate such requests within a few days.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to get a phone number for your account, but Twilio couldn't find any numbers in the area you specified. You may try again with a different AreaCode or contact us to request a number in a certain area. We can usually accommodate such requests within a few days.",
    "date_created": "2016-03-31T17:14:00Z",
    "last_updated": "2020-08-04T10:00:26.909Z"
  },
  {
    "code": 21453,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Phone number already validated on another account",
    "secondary_message": "You attempted to validate your phone number to activate your Twilio Free Trial Account, but that phone number is already associated with another Free Trial Account. You can only open one Free Trial Account per phone number.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to verify your phone number to activate your Twilio Free Trial Account, but that phone number is already associated with another Free Trial Account.\n\n### Possible causes\n\nA single verified tester number can be associated with a maximum of 3 accounts globally. The phone number you are trying to verify has already reached this limit.\n\n### Possible solutions\n\n- Use a different phone number to verify your account.\n- See [Verified recipients](/docs/usage/trials#verified-recipients) for details on trial verification limits.\n",
    "causes": "A single verified tester number can be associated with a maximum of 3 accounts globally. The phone number you are trying to verify has already reached this limit.",
    "solutions": "* Use a different phone number to verify your account.\n* See [Verified recipients](/docs/usage/trials#verified-recipients) for details on trial verification limits.",
    "description": "You attempted to verify your phone number to activate your Twilio Free Trial Account, but that phone number is already associated with another Free Trial Account.",
    "date_created": "2016-03-31T17:14:00Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 21454,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid CallDelay",
    "secondary_message": "Call delay specified must be an integer between 0 and 60, specifying the number of seconds to delay before initiating the validation call.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nCall delay specified must be an integer between 0 and 60, specifying the number of seconds to delay before initiating the validation call.\n\n### Possible causes\n\n- Make sure to enter an integer between 0 and 60.\n",
    "causes": "* Make sure to enter an integer between 0 and 60.",
    "solutions": null,
    "description": "Call delay specified must be an integer between 0 and 60, specifying the number of seconds to delay before initiating the validation call.",
    "date_created": "2016-03-31T17:14:00Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 21455,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid PlayUrl",
    "secondary_message": "PlayUrl must be a valid URL using the HTTP or HTTPS protocol.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe URL given to play during validation isn't a valid URL.\n\n### Possible causes\n",
    "causes": "",
    "solutions": null,
    "description": "The URL given to play during validation isn't a valid URL.",
    "date_created": "2016-03-31T17:14:01Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 21456,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid CallbackUrl",
    "secondary_message": "CallbackUrl must be a valid URL using the HTTP or HTTPS protol.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe callback URL given to callback after validation isn't a valid URL.\n\n### Possible causes\n",
    "causes": "",
    "solutions": null,
    "description": "The callback URL given to callback after validation isn't a valid URL.",
    "date_created": "2016-03-31T17:14:01Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 21457,
    "log_level": "ERROR",
    "log_type": null,
    "message": "AreaCode Parameter not Supported",
    "secondary_message": "The AreaCode parameter for provisioning numbers is not supported on the IncomingPhoneNumbers/Local & IncomingPhoneNumbers/TollFree sub-resources.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe AreaCode parameter for provisioning numbers is not supported on the IncomingPhoneNumbers/Local & IncomingPhoneNumbers/TollFree sub-resources.\n",
    "causes": null,
    "solutions": null,
    "description": "The AreaCode parameter for provisioning numbers is not supported on the IncomingPhoneNumbers/Local & IncomingPhoneNumbers/TollFree sub-resources.",
    "date_created": "2016-03-31T17:14:21Z",
    "last_updated": "2020-08-04T10:00:25.443Z"
  },
  {
    "code": 21458,
    "log_level": "ERROR",
    "log_type": null,
    "message": "PhoneNumber Provisioning Type Mismatch",
    "secondary_message": "The type of a PhoneNumber (toll-free or not) did not match the type of the IncomingPhoneNumbers sub-resource (Local or TollFree). #### Possible Causes \\* Make sure to provision toll-free numbers from the IncomingPhoneNumbers/TollFree resource or directly from the IncomingPhoneNumbers/ resource. \\* Make sure to provision non-toll-free numbers from the IncomingPhoneNumbers/Local resource or directly from the IncomingPhoneNumbers/ resource.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe type of a PhoneNumber (toll-free or not) did not match the type of the IncomingPhoneNumbers sub-resource (Local or TollFree).\n\n### Possible causes\n\n- Make sure to provision toll-free numbers from the IncomingPhoneNumbers/TollFree resource or directly from the IncomingPhoneNumbers/ resource.\n- Make sure to provision non-toll-free numbers from the IncomingPhoneNumbers/Local resource or directly from the IncomingPhoneNumbers/ resource.\n",
    "causes": "* Make sure to provision toll-free numbers from the IncomingPhoneNumbers/TollFree resource or directly from the IncomingPhoneNumbers/ resource.\n* Make sure to provision non-toll-free numbers from the IncomingPhoneNumbers/Local resource or directly from the IncomingPhoneNumbers/ resource.",
    "solutions": null,
    "description": "The type of a PhoneNumber (toll-free or not) did not match the type of the IncomingPhoneNumbers sub-resource (Local or TollFree).",
    "date_created": "2016-03-31T17:14:21Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 21470,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid AccountSid",
    "secondary_message": "The AccountSid you specified was not a valid AccountSid identifier. AccountSid's are 34 character strings that represent the Twilio Account . For example, AC44CE4123947237834573457345347567.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe AccountSid you specified was not a valid AccountSid identifier. AccountSid's are 34 character strings that represent the Twilio Account . For example, AC44CE4123947237834573457345347567.\n",
    "causes": null,
    "solutions": null,
    "description": "The AccountSid you specified was not a valid AccountSid identifier. AccountSid's are 34 character strings that represent the Twilio Account . For example, AC44CE4123947237834573457345347567.",
    "date_created": "2016-03-31T17:14:22Z",
    "last_updated": "2020-08-04T10:00:25.405Z"
  },
  {
    "code": 21471,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Account does not exist",
    "secondary_message": "The AccountSid you specified does not exist. AccountSids are 34 character strings that represent the Twilio Account. For example, AC44CE4123947237834573457345347567.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe AccountSid you specified does not exist. AccountSids are 34 character strings that represent the Twilio Account. For example, AC44CE4123947237834573457345347567.\n",
    "causes": null,
    "solutions": null,
    "description": "The AccountSid you specified does not exist. AccountSids are 34 character strings that represent the Twilio Account. For example, AC44CE4123947237834573457345347567.",
    "date_created": "2016-03-31T17:14:22Z",
    "last_updated": "2020-08-04T10:00:25.371Z"
  },
  {
    "code": 21472,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Account is not active",
    "secondary_message": "The AccountSid you specified is not an active Twilio Account. To transfer the account, you must supply an Active 34 character AccountSid .",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe AccountSid you specified is not an active Twilio Account. To transfer the account, you must supply an Active 34 character AccountSid .\n",
    "causes": null,
    "solutions": null,
    "description": "The AccountSid you specified is not an active Twilio Account. To transfer the account, you must supply an Active 34 character AccountSid .",
    "date_created": "2016-03-31T17:14:22Z",
    "last_updated": "2020-08-04T10:00:25.353Z"
  },
  {
    "code": 21473,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Transfer target AccountSid is not related to the phone number owner",
    "secondary_message": "The AccountSid you specified is neither parent nor child of the originating Account owner. Please make sure that the subaccount or parent account is related to the current owner you are transferring from or to.",
    "product": "Phone Numbers, Iam",
    "products_used": [
      "phone-numbers",
      "iam"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to transfer a phone number by updating `AccountSid` on an `IncomingPhoneNumber`, but the destination account is not in the same parent and subaccount hierarchy as the account that currently owns the number. You can only transfer phone numbers between your main account and its subaccounts, or between subaccounts under the same main account.\n\n### Possible causes\n\n- The target `AccountSid` belongs to a different account hierarchy instead of the phone number owner's parent account or a sibling subaccount under the same main account.\n- The target `AccountSid` is neither the current owner's parent account nor a child account of that same parent.\n- The transfer request uses an unrelated Twilio account SID instead of an account that is connected through subaccounts.\n\n### Possible solutions\n\n- Verify that the source account and destination account are in the same account hierarchy before retrying the transfer. Use the account relationship information to confirm that the destination is the main account or a subaccount under the same main account.\n- Retry the transfer only to your main account, one of its subaccounts, or another subaccount under the same main account.\n- Send the transfer as an HTTP `POST` to the `IncomingPhoneNumber` instance resource and set `AccountSid` to the valid destination account SID.\n- Use your main account credentials when you submit the transfer request.\n\n#### Additional resources\n\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n- [REST API: Accounts](/docs/iam/api/account)\n",
    "causes": "* The target `AccountSid` belongs to a different account hierarchy instead of the phone number owner's parent account or a sibling subaccount under the same main account.\n* The target `AccountSid` is neither the current owner's parent account nor a child account of that same parent.\n* The transfer request uses an unrelated Twilio account SID instead of an account that is connected through subaccounts.",
    "solutions": "* Verify that the source account and destination account are in the same account hierarchy before retrying the transfer. Use the account relationship information to confirm that the destination is the main account or a subaccount under the same main account.\n* Retry the transfer only to your main account, one of its subaccounts, or another subaccount under the same main account.\n* Send the transfer as an HTTP `POST` to the `IncomingPhoneNumber` instance resource and set `AccountSid` to the valid destination account SID.\n* Use your main account credentials when you submit the transfer request.",
    "description": "This error occurs when you try to transfer a phone number by updating `AccountSid` on an `IncomingPhoneNumber`, but the destination account is not in the same parent and subaccount hierarchy as the account that currently owns the number. You can only transfer phone numbers between your main account and its subaccounts, or between subaccounts under the same main account.",
    "date_created": "2016-03-31T17:14:23Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 21474,
    "log_level": "ERROR",
    "log_type": null,
    "message": "API User must be the parent account to transfer phone numbers.",
    "secondary_message": "The API user can not be a subaccount, must be a parent account to transfer phone numbers between parent and child accounts.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe API user can not be a subaccount, must be a parent account to transfer phone numbers between parent and child accounts.\n",
    "causes": null,
    "solutions": null,
    "description": "The API user can not be a subaccount, must be a parent account to transfer phone numbers between parent and child accounts.",
    "date_created": "2016-03-31T17:14:23Z",
    "last_updated": "2020-08-04T10:00:25.311Z"
  },
  {
    "code": 21475,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to update Status, invalid Status.",
    "secondary_message": "The Status you specified must be one of the following strings: 'active', 'suspended', or 'closed'.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Status you specified must be one of the following strings: 'active', 'suspended', or 'closed'.\n",
    "causes": null,
    "solutions": null,
    "description": "The Status you specified must be one of the following strings: 'active', 'suspended', or 'closed'.",
    "date_created": "2016-03-31T17:14:23Z",
    "last_updated": "2020-08-04T10:00:25.294Z"
  },
  {
    "code": 21476,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to update Status for subaccount, parent account is suspended.",
    "secondary_message": "Unable to update Status for subaccount, parent account is suspended. The account needs to be in good standing to continue using the subaccount feature.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUnable to update Status for subaccount, parent account is suspended. The account needs to be in good standing to continue using the subaccount feature.\n",
    "causes": null,
    "solutions": null,
    "description": "Unable to update Status for subaccount, parent account is suspended. The account needs to be in good standing to continue using the subaccount feature.",
    "date_created": "2016-03-31T17:14:24Z",
    "last_updated": "2020-08-04T10:00:25.253Z"
  },
  {
    "code": 21477,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to update Status for parent accounts",
    "secondary_message": "Unable to update Status for parent accounts, status updates restricted to subaccounts only",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUnable to update Status for parent accounts, status updates restricted to subaccounts only\n",
    "causes": null,
    "solutions": null,
    "description": "Unable to update Status for parent accounts, status updates restricted to subaccounts only",
    "date_created": "2016-03-31T17:14:24Z",
    "last_updated": "2020-08-04T10:00:25.235Z"
  },
  {
    "code": 21478,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to update Status for subaccount, subaccount has been suspended by Twilio",
    "secondary_message": "Unable to update Status for subaccounts that have been suspended externally by Twilio. Please contact customer support: http://www.twilio.com/help",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUnable to update Status for subaccounts that have been suspended externally by Twilio. Please contact customer support: http://www.twilio.com/help\n",
    "causes": null,
    "solutions": null,
    "description": "Unable to update Status for subaccounts that have been suspended externally by Twilio. Please contact customer support: http://www.twilio.com/help",
    "date_created": "2016-03-31T17:14:24Z",
    "last_updated": "2020-08-04T10:00:25.219Z"
  },
  {
    "code": 21479,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to update Status for subaccount, subaccount has been closed.",
    "secondary_message": "Unable to update Status for subaccount, subaccount is closed and can not be re-opened.",
    "product": "Account, Iam",
    "products_used": [
      "api",
      "iam"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to update a subaccount after its `Status` has already been set to `closed`. Closing a subaccount is permanent. A closed subaccount cannot be reopened, it cannot make or receive calls or send or receive SMS messages, and Twilio releases the phone numbers assigned to it when the subaccount is closed.\n\n### Possible causes\n\n- Your request targets a subaccount whose current `status` is `closed`.\n- You tried to change a closed subaccount back to `active`. Only suspended subaccounts can be restored by updating `Status` to `active`.\n- Your application may send a follow-up status update for an `AccountSid` that was already closed earlier in your workflow.\n\n### Possible solutions\n\n- Fetch the Account resource for the target `AccountSid` and confirm its current `status` before retrying the request. If the subaccount is `closed`, do not retry the status update.\n- If you need to stop activity temporarily, suspend the subaccount instead of closing it. You can restore a suspended subaccount by updating `Status` to `active`.\n- Use another active account for future requests if the original subaccount is closed. Closed accounts cannot be reopened.\n- Before you close a subaccount, transfer any phone numbers you need to keep to your main account or another related subaccount. Closing a subaccount releases its phone numbers.\n\nTo check a subaccount's status before retrying an update:\n\n```bash\ncurl -G \"https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json\" \\\n  -u \"$TWILIO_API_KEY:$TWILIO_API_SECRET\"\n```\n\nUse the target subaccount SID in the request URL and authenticate with a Main API key associated with your main account. Standard API keys can't access Account resources.\n\nCheck the `status` property in the response. If it is `closed`, do not retry the `Status` update.\n\n#### Additional resources\n\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n- [REST API: Accounts](/docs/iam/api/account)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Your request targets a subaccount whose current `status` is `closed`.\n* You tried to change a closed subaccount back to `active`. Only suspended subaccounts can be restored by updating `Status` to `active`.\n* Your application may send a follow-up status update for an `AccountSid` that was already closed earlier in your workflow.",
    "solutions": "* Fetch the Account resource for the target `AccountSid` and confirm its current `status` before retrying the request. If the subaccount is `closed`, do not retry the status update.\n* If you need to stop activity temporarily, suspend the subaccount instead of closing it. You can restore a suspended subaccount by updating `Status` to `active`.\n* Use another active account for future requests if the original subaccount is closed. Closed accounts cannot be reopened.\n* Before you close a subaccount, transfer any phone numbers you need to keep to your main account or another related subaccount. Closing a subaccount releases its phone numbers. To check a subaccount's status before retrying an update: ```bash\ncurl -G \"https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json\" \\\n  -u \"$TWILIO_API_KEY:$TWILIO_API_SECRET\"\n``` Use the target subaccount SID in the request URL and authenticate with a Main API key associated with your main account. Standard API keys can't access Account resources. Check the `status` property in the response. If it is `closed`, do not retry the `Status` update.",
    "description": "This error occurs when you try to update a subaccount after its `Status` has already been set to `closed`. Closing a subaccount is permanent. A closed subaccount cannot be reopened, it cannot make or receive calls or send or receive SMS messages, and Twilio releases the phone numbers assigned to it when the subaccount is closed.",
    "date_created": "2016-03-31T17:14:24Z",
    "last_updated": "2026-09-11T10:52:17+01:00"
  },
  {
    "code": 21480,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Reached maximum number of subaccounts",
    "secondary_message": "Reached maximum number of subaccounts, please contact [Twilio](/help) if you want to create more subaccounts.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nReached maximum number of subaccounts, please contact [Twilio](/help) if you want to create more subaccounts.\n",
    "causes": null,
    "solutions": null,
    "description": "Reached maximum number of subaccounts, please contact [Twilio](/help) if you want to create more subaccounts.",
    "date_created": "2016-03-31T17:14:25Z",
    "last_updated": "2020-08-04T10:00:25.155Z"
  },
  {
    "code": 21481,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid PageToken",
    "secondary_message": "The PageToken in the requested URL was not valid.",
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe `PageToken` in the requested URL was not valid. If you are paging through a result set, be sure you are requesting the provided paging urls in the Twilio API response.\n",
    "causes": null,
    "solutions": null,
    "description": "The `PageToken` in the requested URL was not valid. If you are paging through a result set, be sure you are requesting the provided paging urls in the Twilio API response.",
    "date_created": "2017-05-03T21:24:06Z",
    "last_updated": "2020-08-04T10:00:19.161Z"
  },
  {
    "code": 21501,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Resource not available",
    "secondary_message": "The resource you requested is not (yet) available.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe resource you requested is not (yet) available.\n\n### Possible causes\n\n- Most likely you're fetching a Recording resource that is temporarily performing some post-processing, and will be available momentarily.\n\n### Possible solutions\n\n- Retry the HTTP request again. The Retry-After header will tell you when to retry. Within a couple seconds should be ample.\n",
    "causes": "* Most likely you're fetching a Recording resource that is temporarily performing some post-processing, and will be available momentarily.",
    "solutions": "* Retry the HTTP request again. The Retry-After header will tell you when to retry. Within a couple seconds should be ample.",
    "description": "The resource you requested is not (yet) available.",
    "date_created": "2016-03-31T17:14:01Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21502,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid callback url",
    "secondary_message": "The callback url provided is not a valid URL.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe callback url provided is not a valid URL.\n\n### Possible solutions\n\nMake sure you submit a fully qualified URL including:\n\n- protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters\n\nTwilio must be able to reach this URL over the public Internet.\n",
    "causes": null,
    "solutions": "Make sure you submit a fully qualified URL including: - protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "description": "The callback url provided is not a valid URL.",
    "date_created": "2016-03-31T17:14:02Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 21503,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid transcription type",
    "secondary_message": "The transcription type you provided is not a valid choice. You may use one of: fast, accurate or all.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe transcription value you provided is invalid. You may use one of: \"true\" or \"false\".\n",
    "causes": null,
    "solutions": null,
    "description": "The transcription value you provided is invalid. You may use one of: \"true\" or \"false\".",
    "date_created": "2016-03-31T17:14:02Z",
    "last_updated": "2020-08-04T10:00:26.781Z"
  },
  {
    "code": 21504,
    "log_level": "ERROR",
    "log_type": null,
    "message": "RecordingSid is required.",
    "secondary_message": "You POSTed to the /Accounts/\\{AccountSid}/Transcriptions resource, but you did not include a RecordingSid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou `POST`ed to the /Accounts/\\{AccountSid}/Transcriptions resource, but you did not include a RecordingSid.\n",
    "causes": null,
    "solutions": null,
    "description": "You `POST`ed to the /Accounts/{AccountSid}/Transcriptions resource, but you did not include a RecordingSid.",
    "date_created": "2016-03-31T17:14:02Z",
    "last_updated": "2020-08-04T10:00:26.764Z"
  },
  {
    "code": 21601,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Phone number is not a valid SMS-capable inbound phone number",
    "secondary_message": "The phone number you provided as the FROM field to initiate an outbound SMS is not an incoming phone number assigned to your account. Only phone numbers that you buy from Twilio can be used for outgoing SMSes. In particular, 3rd party phone numbers such as validated CallerIDs cannot be used to send SMSs.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe phone number you provided as the FROM field to initiate an outbound message is not an incoming phone number assigned to your account. Only phone numbers that you buy from Twilio can be used for outgoing messages. In particular, 3rd party phone numbers such as validated CallerIDs cannot be used to send messages.\n",
    "causes": null,
    "solutions": null,
    "description": "The phone number you provided as the FROM field to initiate an outbound message is not an incoming phone number assigned to your account. Only phone numbers that you buy from Twilio can be used for outgoing messages. In particular, 3rd party phone numbers such as validated CallerIDs cannot be used to send messages.",
    "date_created": "2016-03-31T17:14:25Z",
    "last_updated": "2020-08-04T10:00:25.138Z"
  },
  {
    "code": 21602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message body is required",
    "secondary_message": "You must specify content (text or media) for your message.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe `Body` OR `MediaURL` parameter is required to send a Message with Twilio.\n\n### Possible causes\n\nYou may have attempted to send a message without a `Body` or `MediaURL` parameter.\n\n### Possible solutions\n\nRetry your message including a body or a link to some media. For sample code that shows how to send an SMS message with Twilio's supported helper libraries, cURL, or the Twilio CLI, please see [this short tutorial](/docs/messaging/quickstart)\n",
    "causes": "You may have attempted to send a message without a `Body` or `MediaURL` parameter.",
    "solutions": "Retry your message including a body or a link to some media. For sample code that shows how to send an SMS message with Twilio's supported helper libraries, cURL, or the Twilio CLI, please see [this short tutorial](/docs/messaging/quickstart)",
    "description": "The `Body` OR `MediaURL` parameter is required to send a Message with Twilio.",
    "date_created": "2016-03-31T17:14:02Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21603,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "A 'From' or 'MessagingServiceSid' parameter is required to send a message",
    "secondary_message": "Make sure to specify a valid Twilio Phone Number, Alpha Sender ID, or Messaging Service SID in your API requests",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe 'From' parameter in your API request to send an outbound message did not include a valid [Twilio Number](/user/account/phone-numbers/), [Alphanumeric Sender ID](https://support.twilio.com/hc/en-us/articles/223181348-Alphanumeric-Sender-ID-for-Twilio-Programmable-SMS), or [Messaging Service SID](/docs/messaging/services).\n\nYou can provide any of the above sender types in your From parameter. You may also provide a Messaging Service SID using the dedicated 'MessagingServiceSid' parameter, either instead of or in addition to a specific 'From' parameter.\n\n### Possible causes\n\n- You did not specify a 'From' parameter in your API request\n\n### Possible solutions\n\n- Specify a valid [Twilio Number](/user/account/phone-numbers/), [Alphanumeric Sender ID](https://support.twilio.com/hc/en-us/articles/223181348-Alphanumeric-Sender-ID-for-Twilio-Programmable-SMS), or [Messaging Service SID](/docs/messaging/services) as the 'From' parameter in your API request\n- Specify a valid Messaging Service SID as the 'MessagingServiceSid' parameter in your API request\n",
    "causes": "* You did not specify a 'From' parameter in your API request",
    "solutions": "* Specify a valid [Twilio Number](/user/account/phone-numbers/), [Alphanumeric Sender ID](https://support.twilio.com/hc/en-us/articles/223181348-Alphanumeric-Sender-ID-for-Twilio-Programmable-SMS), or [Messaging Service SID](/docs/messaging/services) as the 'From' parameter in your API request\n* Specify a valid Messaging Service SID as the 'MessagingServiceSid' parameter in your API request",
    "description": "The 'From' parameter in your API request to send an outbound message did not include a valid [Twilio Number](/user/account/phone-numbers/), [Alphanumeric Sender ID](https://support.twilio.com/hc/en-us/articles/223181348-Alphanumeric-Sender-ID-for-Twilio-Programmable-SMS), or [Messaging Service SID](/docs/messaging/services). You can provide any of the above sender types in your From parameter. You may also provide a Messaging Service SID using the dedicated 'MessagingServiceSid' parameter, either instead of or in addition to a specific 'From' parameter.",
    "date_created": "2016-03-31T17:14:03Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21604,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The destination 'To' phone number is required to send an SMS",
    "secondary_message": "Make sure to specify a valid phone number as the recipient of the SMS.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### 'To' phone number is required to send a Message\n\nMake sure to specify a valid phone number as the recipient of the message.\n\n### Possible causes\n\n- 'To' phone number is not specified\n- Your request is not formatted as `application/x-www-form-urlencoded`\n\n### Possible solutions\n\n- Make sure to include a 'To' phone number\n- Check that you are submitting your request as `application/x-www-form-urlencoded` and not as `json`.\n",
    "causes": "* 'To' phone number is not specified\n* Your request is not formatted as `application/x-www-form-urlencoded`",
    "solutions": "* Make sure to include a 'To' phone number\n* Check that you are submitting your request as `application/x-www-form-urlencoded` and not as `json`.",
    "description": "",
    "date_created": "2016-03-31T17:14:03Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21605,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum body length is 160 characters (old API endpoint)",
    "secondary_message": "You are using the deprecated /SMS/Messages API endpoint, which supports up to 160 characters per message. To send up to 1600 characters per message, switch to our upgraded /Messages endpoint.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou receive this error when you send a request to the legacy `/SMS/Messages` endpoint with a message body longer than 160 characters. If you need to send longer text, use the `/Messages` endpoint instead. The current Messages resource accepts `body` values up to 1,600 characters, and SMS content longer than one segment is segmented and billed accordingly.\n\n### Possible causes\n\n- Your application is still sending outbound requests to the legacy `/SMS/Messages` endpoint.\n- The message body in the request is longer than 160 characters.\n- Your message content is better suited for the current `Messages` resource, which supports longer SMS bodies and segmented delivery.\n\n### Possible solutions\n\n- Reduce the message body to 160 characters or fewer if you must keep the legacy endpoint during a migration.\n- Update your integration to send outbound messages with the `/Messages` endpoint instead of `/SMS/Messages`.\n- Review your SMS content for Unicode characters such as emoji or smart quotes, since encoding affects segment size and message cost when you send long messages through the current endpoint.\n- If you regularly send longer text, design for segmented SMS or consider `send_as_mms` when that delivery model fits your use case.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [How long can a message be?](/docs/glossary/what-sms-character-limit)\n- [Switching from SMS/Messages resource URI to Messages resource URI](https://help.twilio.com/articles/223181028-Switching-from-SMS-Messages-resource-URI-to-Messages-resource-URI-)\n",
    "causes": "* Your application is still sending outbound requests to the legacy `/SMS/Messages` endpoint.\n* The message body in the request is longer than 160 characters.\n* Your message content is better suited for the current `Messages` resource, which supports longer SMS bodies and segmented delivery.",
    "solutions": "* Reduce the message body to 160 characters or fewer if you must keep the legacy endpoint during a migration.\n* Update your integration to send outbound messages with the `/Messages` endpoint instead of `/SMS/Messages`.\n* Review your SMS content for Unicode characters such as emoji or smart quotes, since encoding affects segment size and message cost when you send long messages through the current endpoint.\n* If you regularly send longer text, design for segmented SMS or consider `send_as_mms` when that delivery model fits your use case.",
    "description": "You receive this error when you send a request to the legacy `/SMS/Messages` endpoint with a message body longer than 160 characters. If you need to send longer text, use the `/Messages` endpoint instead. The current Messages resource accepts `body` values up to 1,600 characters, and SMS content longer than one segment is segmented and billed accordingly.",
    "date_created": "2016-03-31T17:14:03Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21606,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'From' number is not a valid message-capable Twilio number for this account",
    "secondary_message": "You can only send SMS messages from a phone number provided by Twilio, and that phone number must be SMS enabled. Visit the phone numbers page on your account portal to view a list of phone numbers that you own, and whether or not they are enabled for SMS.",
    "product": "Branded Comms, Iam",
    "products_used": [
      "messaging",
      "iam"
    ],
    "docs": "\n## Description\n\nYou can send SMS messages only from a sender that your account can use for messaging. Valid senders include an SMS-capable Twilio phone number, a Twilio-hosted or ported number after provisioning completes, a supported Alphanumeric Sender ID, or a short code. If you send from a short code, the destination must be in the same country as that short code.\n\n### Possible causes\n\n- The `From` value is not a Twilio sender on the account or subaccount that made the API request.\n- The sender is not SMS-capable, or its porting or hosting process is not complete yet.\n- The `From` phone number is not formatted in `E.164`.\n- The sender is a short code and the `To` number is in a different country.\n- The sender is an Alphanumeric Sender ID for a country that does not support it, or for a country that requires preregistration that is not complete.\n- You are using test credentials and a live `From` number instead of a supported test number.\n\n### Possible solutions\n\n- Confirm in Console that the sender belongs to the same account or subaccount whose credentials you used, and that the sender has SMS capability.\n- Format the `From` phone number in `E.164`, for example `+14155552671`.\n- If you use a short code, send only to recipients in the same country as that short code.\n- If you use an Alphanumeric Sender ID, send only to supported countries and complete sender registration where required.\n- If you recently ported or hosted the number, wait until Twilio finishes provisioning the sender before you send messages from it.\n- If you test the Messages API with test credentials, use `+15005550006` as the `From` number.\n\n#### Additional resources\n\n- [Phone Numbers](/docs/phone-numbers)\n- [Alphanumeric Sender ID](/docs/glossary/what-alphanumeric-sender-id)\n- [Test Credentials](/docs/iam/test-credentials)\n",
    "causes": "* The `From` value is not a Twilio sender on the account or subaccount that made the API request.\n* The sender is not SMS-capable, or its porting or hosting process is not complete yet.\n* The `From` phone number is not formatted in `E.164`.\n* The sender is a short code and the `To` number is in a different country.\n* The sender is an Alphanumeric Sender ID for a country that does not support it, or for a country that requires preregistration that is not complete.\n* You are using test credentials and a live `From` number instead of a supported test number.",
    "solutions": "* Confirm in Console that the sender belongs to the same account or subaccount whose credentials you used, and that the sender has SMS capability.\n* Format the `From` phone number in `E.164`, for example `+14155552671`.\n* If you use a short code, send only to recipients in the same country as that short code.\n* If you use an Alphanumeric Sender ID, send only to supported countries and complete sender registration where required.\n* If you recently ported or hosted the number, wait until Twilio finishes provisioning the sender before you send messages from it.\n* If you test the Messages API with test credentials, use `+15005550006` as the `From` number.",
    "description": "You can send SMS messages only from a sender that your account can use for messaging. Valid senders include an SMS-capable Twilio phone number, a Twilio-hosted or ported number after provisioning completes, a supported Alphanumeric Sender ID, or a short code. If you send from a short code, the destination must be in the same country as that short code.",
    "date_created": "2016-03-31T17:14:05Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 21607,
    "log_level": "ERROR",
    "log_type": null,
    "message": "The 'from' phone number must be the sandbox phone number for trial accounts.",
    "secondary_message": "You can only send SMS messages from the sandbox phone number while your account is in the free trial. Upgrade your account to a Full Twilio account to send and receive from your own phone numbers.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nWhile your account is in Trial mode, you can only send SMS messages from your free trial number, or the Twilio Sandbox Number.\n\n### Possible causes\n\nYou attempted to send an SMS from a phone number other than your trial number or the Twilio Sandbox Number.\n\n### Possible solutions\n\n- Send SMS from your assigned trial number or the Twilio Sandbox Number.\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove this restriction.\n",
    "causes": "You attempted to send an SMS from a phone number other than your trial number or the Twilio Sandbox Number.",
    "solutions": "* Send SMS from your assigned trial number or the Twilio Sandbox Number.\n* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove this restriction.",
    "description": "While your account is in Trial mode, you can only send SMS messages from your free trial number, or the Twilio Sandbox Number.",
    "date_created": "2016-03-31T17:14:05Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 21608,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Upgrade and create an approved primary compliance profile to reach unverified numbers",
    "secondary_message": "While your account is in Trial Mode, you may only send SMS messages to verified numbers. Upgrade to a Full Twilio account to send to any phone number.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou have attempted to send a message to an unverified phone number while using a trial account or an account without an approved primary compliance profile (PCP).\n\nTo prevent spam, trial accounts and accounts without an approved PCP can only send messages to phone numbers you've verified with Twilio. You must upgrade your account and submit an approved primary compliance profile to remove this restriction.\n\n### Possible causes\n\n- You attempted to send a message to a phone number that has not been verified on your trial account.\n- Your upgraded account doesn't have an approved primary compliance profile, which is required for unrestricted messaging.\n\n### Possible solutions\n\n- Trial account: Verify the phone number you wish to reach via the Twilio Console. See [Verified recipients](/docs/usage/trials#verified-recipients) for details on trial verification limits. *Note that you will need access to this device to receive the call or text with your verification code.*\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) and create an [approved primary compliance profile](/docs/trust-hub/profiles/primary-compliance-profiles) to remove this restriction or add [Verified caller IDs](https://1console.twilio.com/us1/develop/phone-numbers/manage/verified) to continue testing.\n",
    "causes": "* You attempted to send a message to a phone number that has not been verified on your trial account.\n* Your upgraded account doesn't have an approved primary compliance profile, which is required for unrestricted messaging.",
    "solutions": "* Trial account: Verify the phone number you wish to reach via the Twilio Console. See [Verified recipients](/docs/usage/trials#verified-recipients) for details on trial verification limits. *Note that you will need access to this device to receive the call or text with your verification code.*\n* [Upgrade your account](/docs/usage/trials#upgrade-your-account) and create an [approved primary compliance profile](/docs/trust-hub/profiles/primary-compliance-profiles) to remove this restriction or add [Verified caller IDs](https://1console.twilio.com/us1/develop/phone-numbers/manage/verified) to continue testing.",
    "description": "You have attempted to send a message to an unverified phone number while using a trial account or an account without an approved primary compliance profile (PCP). To prevent spam, trial accounts and accounts without an approved PCP can only send messages to phone numbers you've verified with Twilio. You must upgrade your account and submit an approved primary compliance profile to remove this restriction.",
    "date_created": "2016-03-31T17:14:06Z",
    "last_updated": "2026-08-17T05:13:35-05:00"
  },
  {
    "code": 21609,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid 'StatusCallback'",
    "secondary_message": "StatusCallback must be a valid HTTP(s) URL. The maximum length of the StatusCallback is 4000 characters.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `StatusCallback` value in your Message request isn't a valid URL. Use a fully qualified public URL with a valid hostname. Keep the URL at 4000 characters or fewer.\n\n### Possible causes\n\n- The `StatusCallback` value isn't a valid URL.\n- The URL is longer than 4000 characters.\n- The URL is missing part of a fully qualified address, such as the protocol, hostname, or path.\n- The query string includes characters that aren't properly URL-encoded.\n- The hostname is invalid. For example, it contains underscores.\n- The endpoint isn't publicly reachable.\n\n### Possible solutions\n\n- Set `StatusCallback` to a fully qualified `http://` or `https://` URL.\n- Use a valid hostname and remove unsupported characters such as underscores.\n- Shorten the URL so it stays within the 4000-character limit.\n- URL-encode query parameters before you submit the request.\n- Make sure your endpoint is reachable from the public internet.\n- Test with a temporary public webhook endpoint to confirm that Twilio can send callbacks. If that test succeeds, review your application logs, firewall rules, authentication requirements, and SSL configuration on your original endpoint.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n- [How to Test and Troubleshoot Twilio Messaging StatusCallback Failures](https://help.twilio.com/articles/43659166532123)\n",
    "causes": "* The `StatusCallback` value isn't a valid URL.\n* The URL is longer than 4000 characters.\n* The URL is missing part of a fully qualified address, such as the protocol, hostname, or path.\n* The query string includes characters that aren't properly URL-encoded.\n* The hostname is invalid. For example, it contains underscores.\n* The endpoint isn't publicly reachable.",
    "solutions": "* Set `StatusCallback` to a fully qualified `http://` or `https://` URL.\n* Use a valid hostname and remove unsupported characters such as underscores.\n* Shorten the URL so it stays within the 4000-character limit.\n* URL-encode query parameters before you submit the request.\n* Make sure your endpoint is reachable from the public internet.\n* Test with a temporary public webhook endpoint to confirm that Twilio can send callbacks. If that test succeeds, review your application logs, firewall rules, authentication requirements, and SSL configuration on your original endpoint.",
    "description": "This error occurs when the `StatusCallback` value in your Message request isn't a valid URL. Use a fully qualified public URL with a valid hostname. Keep the URL at 4000 characters or fewer.",
    "date_created": "2016-03-31T17:14:06Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 21610,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attempt to send to unsubscribed recipient",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe person you are trying to message has opted out of receiving messages from your Twilio phone number, Channels sender, or Messaging Service.\n\nYou have attempted to message a 'To' number that has replied with \"STOP\" to one of your previous messages. You will not be able to send to the phone number specified in the 'To' parameter until the subscriber identified by the phone number has responded with \"START\".\n\nPlease see [this FAQ](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) for more information about how Twilio handles opt-out and opt-in.\n\n### Possible causes\n\n- The end user handset has responded with \"STOP\" or [another opt-out keyword](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-).\n- The phone number has been reassigned to a different end user recently.\n\n### Possible solutions\n\n- Consider removing this phone number from your list of recipients.\n- Request the recipient to resubscribe to your messages by texting in \"START\" or [another opt-in keyword](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) to your Twilio sender.\n- Before sending messages to a recipient, ensure they have consented to receive messages from you. Please read these guidelines to understand [messaging opt-in requirements and best practices](https://www.twilio.com/blog/ctia-messaging-principles-and-best-practices).\n",
    "causes": "* The end user handset has responded with \"STOP\" or [another opt-out keyword](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-).\n* The phone number has been reassigned to a different end user recently.",
    "solutions": "* Consider removing this phone number from your list of recipients.\n* Request the recipient to resubscribe to your messages by texting in \"START\" or [another opt-in keyword](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) to your Twilio sender.\n* Before sending messages to a recipient, ensure they have consented to receive messages from you. Please read these guidelines to understand [messaging opt-in requirements and best practices](https://www.twilio.com/blog/ctia-messaging-principles-and-best-practices).",
    "description": "The person you are trying to message has opted out of receiving messages from your Twilio phone number, Channels sender, or Messaging Service. You have attempted to message a 'To' number that has replied with \"STOP\" to one of your previous messages. You will not be able to send to the phone number specified in the 'To' parameter until the subscriber identified by the phone number has responded with \"START\". Please see [this FAQ](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) for more information about how Twilio handles opt-out and opt-in.",
    "date_created": "2016-03-31T17:14:25Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21611,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "This 'From' number has exceeded the maximum number of queued messages",
    "secondary_message": "You have attempted to enqueue too many messages for a given 'From' number.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nTwilio returns 21611 when you try to create another outbound message for a `From` sender whose queue is already full. Twilio queues outbound messages according to the throughput available to a sender or account, and a queue can hold up to 10 hours of message segments. If you send with a Messaging Service, sender pool overload can instead appear after message creation as error 30001.\n\n### Possible causes\n\n- Your application is submitting messages for one `From` sender faster than Twilio can dequeue them at that sender's available throughput. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues))\n- The queued volume for that sender has grown beyond the maximum queue window, which is up to 10 hours of message segments. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues))\n- You set a lower Validity Period on the message request or Messaging Service, which reduces how long messages can remain queued before they fail.\n\n### Possible solutions\n\n- Reduce the rate at which your application submits messages for that sender so the queue can drain.\n- Use a Messaging Service when it fits your use case so Twilio can distribute traffic across an appropriate sender pool.\n- Review the Validity Period on the message request or Messaging Service. If you set it below 36,000 seconds, increase it as needed up to the 10 hour maximum.\n- Monitor queue time, delivery failures, and backlog trends in Messaging Insights or Messaging Logs so you can detect congestion before new requests start failing.\n\n#### Additional resources\n- [Understanding Twilio Rate Limits and Message Queues](https://help.twilio.com/hc/en-us/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues)\n- [Messaging Services](/docs/messaging/services)\n- [Messaging Insights Dashboards](/docs/messaging/features/messaging-insights/dashboards)\n",
    "causes": "* Your application is submitting messages for one `From` sender faster than Twilio can dequeue them at that sender's available throughput. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues))\n* The queued volume for that sender has grown beyond the maximum queue window, which is up to 10 hours of message segments. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues))\n* You set a lower Validity Period on the message request or Messaging Service, which reduces how long messages can remain queued before they fail.",
    "solutions": "* Reduce the rate at which your application submits messages for that sender so the queue can drain.\n* Use a Messaging Service when it fits your use case so Twilio can distribute traffic across an appropriate sender pool.\n* Review the Validity Period on the message request or Messaging Service. If you set it below 36,000 seconds, increase it as needed up to the 10 hour maximum.\n* Monitor queue time, delivery failures, and backlog trends in Messaging Insights or Messaging Logs so you can detect congestion before new requests start failing.",
    "description": "Twilio returns 21611 when you try to create another outbound message for a `From` sender whose queue is already full. Twilio queues outbound messages according to the throughput available to a sender or account, and a queue can hold up to 10 hours of message segments. If you send with a Messaging Service, sender pool overload can instead appear after message creation as error 30001.",
    "date_created": "2016-03-31T17:14:25Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 21612,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message cannot be sent with the current combination of \"To\" and/or \"From\" parameters",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nMessage cannot be sent with the current combination of \"To\" and/or \"From\" parameters.\n\n### Possible causes\n\n**Sender ID restrictions in the destination country:** Many countries limit which numbers, short-codes, or alphanumeric senders can be used in that region. Consult the [SMS guidelines for the destination region](https://www.twilio.com/en-us/guidelines/sms).\n\n**Sender ID restrictions on the destination network:** Some networks do not support receiving messages from shortcodes, others might allow SMS from shortcodes but cannot receive MMS messages from shortcodes. Similar restrictions may apply to the use of longcodes from countries that do not match the destination country. Consult the [SMS guidelines for the destination region](https://www.twilio.com/en-us/guidelines/sms).\n\n**Alphanumeric senderIDs:** If you are using an alphanumeric sender ID, the 'To' number must be in a country where alphanumeric sender IDs are supported. Certain countries require pre-registration of alphanumeric sender IDs. A list of countries where alphanumeric sender ID is supported and whether or not pre-registration is required can be found [here](https://help.twilio.com/articles/223133767-International-support-for-Alphanumeric-Sender-ID).\n\n**Number formatting:** The format you used for the \"To\" or \"From\" number may not be formatted using the [E.164 format](/docs/glossary/what-e164). Twilio standardizes numbers using the E.164 format. If the \"To\" or \"From\" number of this message were altered by Twilio in a way that you didn't expect, try re-submitting the message with E.164 formatted addresses.\n\n**Destinations where Twilio does not have connectivity:** It is possible that Twilio does not yet have service with the carrier you are trying to reach. You can lookup the destination network via [the lookup api](/docs/lookup/v2-api).\n\n### Possible solutions\n\nConsult the linked documentation for each cause. You can also try sending again with a different \"To\" and \"From\" combination.\n",
    "causes": "**Sender ID restrictions in the destination country:** Many countries limit which numbers, short-codes, or alphanumeric senders can be used in that region. Consult the [SMS guidelines for the destination region](https://www.twilio.com/en-us/guidelines/sms). **Sender ID restrictions on the destination network:** Some networks do not support receiving messages from shortcodes, others might allow SMS from shortcodes but cannot receive MMS messages from shortcodes. Similar restrictions may apply to the use of longcodes from countries that do not match the destination country. Consult the [SMS guidelines for the destination region](https://www.twilio.com/en-us/guidelines/sms). **Alphanumeric senderIDs:** If you are using an alphanumeric sender ID, the 'To' number must be in a country where alphanumeric sender IDs are supported. Certain countries require pre-registration of alphanumeric sender IDs. A list of countries where alphanumeric sender ID is supported and whether or not pre-registration is required can be found [here](https://help.twilio.com/articles/223133767-International-support-for-Alphanumeric-Sender-ID). **Number formatting:** The format you used for the \"To\" or \"From\" number may not be formatted using the [E.164 format](/docs/glossary/what-e164). Twilio standardizes numbers using the E.164 format. If the \"To\" or \"From\" number of this message were altered by Twilio in a way that you didn't expect, try re-submitting the message with E.164 formatted addresses. **Destinations where Twilio does not have connectivity:** It is possible that Twilio does not yet have service with the carrier you are trying to reach. You can lookup the destination network via [the lookup api](/docs/lookup/v2-api).",
    "solutions": "Consult the linked documentation for each cause. You can also try sending again with a different \"To\" and \"From\" combination.",
    "description": "Message cannot be sent with the current combination of \"To\" and/or \"From\" parameters.",
    "date_created": "2016-03-31T17:14:26Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21613,
    "log_level": "ERROR",
    "log_type": null,
    "message": "PhoneNumber Requires Certification",
    "secondary_message": "To purchase this phone number, you must certify that you or your customer has a business or personal address within the local country. To certify that you have an address in this country for this account, please purchase this phone number via the [Numbers & senders](https://1console.twilio.com/go?to=/account/__account__/us1/senders-hub/list/phone-numbers/inventory) page in the Twilio console, or the [Buy a phone number](/user/account/phone-numbers/search) page in the legacy console.  You will only need to certify your address once for each country. Alternatively, you can provision a phone number that doesn't require certification.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nLocal regulation requires Twilio to have an address on file for your account to purchase this phone number. You must add an address that specifies the end user's location using our [API](/docs/usage/api/address) or [account portal](/user/account). Alternatively, you can provision a phone number that does not require an address by using Basic List Filters on the [AvailablePhoneNumbers](/docs/phone-numbers/api/availablephonenumber-resource) resource. If you received this error when trying to transfer a phone number to a subaccount or between subaccounts, please ensure that the subaccount has the correct address on file.\n",
    "causes": null,
    "solutions": null,
    "description": "Local regulation requires Twilio to have an address on file for your account to purchase this phone number. You must add an address that specifies the end user's location using our [API](/docs/usage/api/address) or [account portal](/user/account). Alternatively, you can provision a phone number that does not require an address by using Basic List Filters on the [AvailablePhoneNumbers](/docs/phone-numbers/api/availablephonenumber-resource) resource. If you received this error when trying to transfer a phone number to a subaccount or between subaccounts, please ensure that the subaccount has the correct address on file.",
    "date_created": "2016-03-31T17:14:26Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 21614,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'To' number is not a valid mobile number",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou have attempted to send a SMS with a 'To' number that is not a valid mobile number. It is likely that the number that you have specified is a landline number or is an invalid number.\n\n### Possible causes\n\n- The number you provided may be a landline number.\n- The number you provided may be invalid or formatted incorrectly.\n- If you are attempting to send SMS to Internet of Things (IoT) or machine-to-machine (M2M) numbers, the numbers may use a non-standard format that Twilio has not added to our number validation system yet.\n\n### Possible solutions\n\n- Confirm that the number you are sending to is not a landline, using the [Lookup API](/docs/lookup/v2-api).\n- Please verify you have provided a valid mobile number in proper [E.164 format](https://support.twilio.com/hc/en-us/articles/223183008-Formatting-International-Phone-Numbers).\n- If you are attempting to send SMS to an IoT or M2M number, check whether the number format is different from the standard mobile numbers in that country or locality. Often, these numbers have additional digits or unusual formats which do not pass Twilio's number validation. If you believe this is the issue, please [contact Twilio Support](https://www.twilio.com/help/contact) for assistance.\n",
    "causes": "* The number you provided may be a landline number.\n* The number you provided may be invalid or formatted incorrectly.\n* If you are attempting to send SMS to Internet of Things (IoT) or machine-to-machine (M2M) numbers, the numbers may use a non-standard format that Twilio has not added to our number validation system yet.",
    "solutions": "* Confirm that the number you are sending to is not a landline, using the [Lookup API](/docs/lookup/v2-api).\n* Please verify you have provided a valid mobile number in proper [E.164 format](https://support.twilio.com/hc/en-us/articles/223183008-Formatting-International-Phone-Numbers).\n* If you are attempting to send SMS to an IoT or M2M number, check whether the number format is different from the standard mobile numbers in that country or locality. Often, these numbers have additional digits or unusual formats which do not pass Twilio's number validation. If you believe this is the issue, please [contact Twilio Support](https://www.twilio.com/help/contact) for assistance.",
    "description": "You have attempted to send a SMS with a 'To' number that is not a valid mobile number. It is likely that the number that you have specified is a landline number or is an invalid number.",
    "date_created": "2016-03-31T17:14:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21615,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone Number Requires a Local Address",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTo purchase this number you must have an Address on your account which satisfies the local address requirements.\n\n### Possible causes\n\n- No address on your account or subaccount that satisfies the locality requirement. Depending on the country, this can be either same country or same geographic area as the number being purchased.\n\n### Possible solutions\n\n- Add an address that satisfies the locality requirement\n- Contact Twilio Support\n",
    "causes": "* No address on your account or subaccount that satisfies the locality requirement. Depending on the country, this can be either same country or same geographic area as the number being purchased.",
    "solutions": "* Add an address that satisfies the locality requirement\n* Contact Twilio Support",
    "description": "To purchase this number you must have an Address on your account which satisfies the local address requirements.",
    "date_created": "2017-05-17T11:33:25Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21616,
    "log_level": "ERROR",
    "log_type": null,
    "message": "The 'From' number matches multiple numbers for your account",
    "secondary_message": "You have attempted to send a SMS with a 'From' number that matches more than one number belonging to your account. Please submit the 'From' number in E.164 format to resolve the ambiguity.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou have attempted to send a SMS with a 'From' number that matches more than one number belonging to your account. Please submit the 'From' number in E.164 format to resolve the ambiguity.\n",
    "causes": null,
    "solutions": null,
    "description": "You have attempted to send a SMS with a 'From' number that matches more than one number belonging to your account. Please submit the 'From' number in E.164 format to resolve the ambiguity.",
    "date_created": "2016-03-31T17:14:27Z",
    "last_updated": "2020-08-04T10:00:25.025Z"
  },
  {
    "code": 21617,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The concatenated message body exceeds the 1600 character limit",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou tried to send or receive a Programmable Messaging message whose body is longer than the supported limit. The `Body` parameter for an outgoing message can be up to 1,600 characters. For SMS, characters outside `GSM-7`, such as emoji, smart quotes, or other Unicode characters, can use more space than standard GSM characters and cause the message to exceed the limit sooner than expected.\n\n### Possible causes\n\n- Your application sent a `Body` value longer than 1,600 characters.\n- Your TwiML response included `<Message>` or `<Body>` text longer than the supported limit.\n- The message contains emoji, smart punctuation, accented characters, or other non-`GSM-7` characters that increase the encoded length. Use the [Message Segment\n Calculator](https://twiliodeved.github.io/message-segment-calculator/) to preview how a given body is encoded and segmented.\n- Your application concatenated multiple strings or template values into a final message body that exceeded the limit.\n- An inbound message to your Twilio number exceeded the supported body length of 1,600 characters.\n\n### Possible solutions\n\n- Shorten the message body so the final payload stays within the supported limit.\n- Validate the fully rendered `Body` in your application before you send the request. Check the final text after template variables, personalization, or concatenation are applied.\n- Review the message for non-`GSM-7` characters such as emoji, smart quotes, long dashes, or non-Latin characters. Replace them where possible to reduce encoded length.\n- If you use a Messaging Service for SMS, enable Smart Encoding to replace certain Unicode punctuation with GSM-compatible characters.\n- For long SMS text, consider whether `send_as_mms` is appropriate for your use case and destination.\n- Keep SMS content concise. For the best deliverability and user experience, keep SMS messages under 320 characters when possible.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Message Segment Calculator](https://twiliodeved.github.io/message-segment-calculator/) - preview encoding, segment count, and the impact of non-`GSM-7` characters for a given message body\n- [How long can a message be?](/docs/glossary/what-sms-character-limit)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* Your application sent a `Body` value longer than 1,600 characters.\n* Your TwiML response included `<Message>` or `<Body>` text longer than the supported limit.\n* The message contains emoji, smart punctuation, accented characters, or other non-`GSM-7` characters that increase the encoded length. Use the [Message Segment\n  Calculator](https://twiliodeved.github.io/message-segment-calculator/) to preview how a given body is encoded and segmented.\n* Your application concatenated multiple strings or template values into a final message body that exceeded the limit.\n* An inbound message to your Twilio number exceeded the supported body length of 1,600 characters.",
    "solutions": "* Shorten the message body so the final payload stays within the supported limit.\n* Validate the fully rendered `Body` in your application before you send the request. Check the final text after template variables, personalization, or concatenation are applied.\n* Review the message for non-`GSM-7` characters such as emoji, smart quotes, long dashes, or non-Latin characters. Replace them where possible to reduce encoded length.\n* If you use a Messaging Service for SMS, enable Smart Encoding to replace certain Unicode punctuation with GSM-compatible characters.\n* For long SMS text, consider whether `send_as_mms` is appropriate for your use case and destination.\n* Keep SMS content concise. For the best deliverability and user experience, keep SMS messages under 320 characters when possible.",
    "description": "You tried to send or receive a Programmable Messaging message whose body is longer than the supported limit. The `Body` parameter for an outgoing message can be up to 1,600 characters. For SMS, characters outside `GSM-7`, such as emoji, smart quotes, or other Unicode characters, can use more space than standard GSM characters and cause the message to exceed the limit sooner than expected.",
    "date_created": "2016-03-31T17:14:27Z",
    "last_updated": "2026-07-08T12:10:04-06:00"
  },
  {
    "code": 21618,
    "log_level": "ERROR",
    "log_type": null,
    "message": "The message body cannot be sent",
    "secondary_message": "You have attempted to send a message with content that is being filtered by all of our carriers. We have logged the carrier you are attempting to reach and will monitor these failures when adding new carriers. If we add a new carrier in the future that does not filter the content you are trying to send, Twilio will automatically route your message through the new carrier.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou have attempted to send a message with content that is being filtered by all of our carriers.\n\nWe have logged the carrier you are attempting to reach and will monitor these failures when adding new carriers. If we add a new carrier in the future that does not filter the content you are trying to send, Twilio will automatically route your message through the new carrier.\n",
    "causes": null,
    "solutions": null,
    "description": "You have attempted to send a message with content that is being filtered by all of our carriers. We have logged the carrier you are attempting to reach and will monitor these failures when adding new carriers. If we add a new carrier in the future that does not filter the content you are trying to send, Twilio will automatically route your message through the new carrier.",
    "date_created": "2016-03-31T17:14:27Z",
    "last_updated": "2020-08-04T10:00:24.989Z"
  },
  {
    "code": 21619,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "A Message Body, Media URL or Content SID is required",
    "secondary_message": "A Message Body, Media URL or Content SID is required",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you create a Message with a Messaging Service and do not provide any message content. Include content in `Body`, `MediaUrl`, or `ContentSid`.\n\n### Possible causes\n\n- Your request includes `MessagingServiceSid` but omits `Body`, `MediaUrl`, and `ContentSid`.\n- Your application sends an empty or undefined `Body` and does not provide `MediaUrl` or `ContentSid`.\n- You are trying to send a content template without including `ContentSid`.\n\n### Possible solutions\n\n- Include at least one content parameter in your request: `Body`, `MediaUrl`, or `ContentSid`.\n- If you are sending plain text, pass the text in `Body`.\n- If you are sending media, include one or more `MediaUrl` values.\n- If you are sending a template created with the Content Template Builder, include `ContentSid`. Include `ContentVariables` when your template contains placeholders.\n- Review your request builder or helper library code to make sure it is not stripping all content fields before the API request is sent.\n\n#### Additional resources\n- [Create a Message resource](/docs/messaging/api/message-resource#create-a-message-resource)\n- [Messaging Services](/docs/messaging/services)\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n",
    "causes": "* Your request includes `MessagingServiceSid` but omits `Body`, `MediaUrl`, and `ContentSid`.\n* Your application sends an empty or undefined `Body` and does not provide `MediaUrl` or `ContentSid`.\n* You are trying to send a content template without including `ContentSid`.",
    "solutions": "* Include at least one content parameter in your request: `Body`, `MediaUrl`, or `ContentSid`.\n* If you are sending plain text, pass the text in `Body`.\n* If you are sending media, include one or more `MediaUrl` values.\n* If you are sending a template created with the Content Template Builder, include `ContentSid`. Include `ContentVariables` when your template contains placeholders.\n* Review your request builder or helper library code to make sure it is not stripping all content fields before the API request is sent.",
    "description": "This error occurs when you create a Message with a Messaging Service and do not provide any message content. Include content in `Body`, `MediaUrl`, or `ContentSid`.",
    "date_created": "2018-07-05T18:04:49Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 21620,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid media URL(s)",
    "secondary_message": "One or more media URL you provided is invalid. Please use only valid HTTP and HTTPS URLs.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne or more media URLs that you provided is invalid — they are malformed in some way.\n\nTypically, this error is issued when a URL lacks a protocol specifier prefix, i.e., `htttp://` or `https://`.\n\n### Possible causes\n\nThe URL(s) lack a protocol specifier: `http://` or `https://`\n\n### Possible solutions\n\nAdd a correct protocol specifier prefix: `http://` or `https://`\n",
    "causes": "The URL(s) lack a protocol specifier: `http://` or `https://`",
    "solutions": "Add a correct protocol specifier prefix: `http://` or `https://`",
    "description": "One or more media URLs that you provided is invalid — they are malformed in some way. Typically, this error is issued when a URL lacks a protocol specifier prefix, i.e., `htttp://` or `https://`.",
    "date_created": "2016-03-31T17:14:28Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21621,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The 'From' number has not been enabled for MMS",
    "secondary_message": "The 'From' phone number does not appear to be a phone number that you can send MMS messages from.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe `From` number is not enabled for MMS messaging.\n\n### Possible causes\n\nThe `From` phone number is not capable of sending MMS.\n\n### Possible solutions\n\n- Buy an MMS Capable phone number from the [Twilio Console](https://console.twilio.com/us1/develop/phone-numbers/manage/search?isoCountry=US\\&types%5B%5D=Local\\&types%5B%5D=Tollfree\\&capabilities%5B%5D=Sms\\&capabilities%5B%5D=Mms\\&capabilities%5B%5D=Voice\\&capabilities%5B%5D=Fax\\&searchTerm=\\&searchFilter=left\\&searchType=number) by filtering for \"MMS\" under \"Capabilities\".\n- Check if you already have MMS capable numbers in the [Twilio Console](https://console.twilio.com/us1/develop/phone-numbers/manage/incoming) and use that number in your `From` parameter or Messaging Service.\n",
    "causes": "The `From` phone number is not capable of sending MMS.",
    "solutions": "* Buy an MMS Capable phone number from the [Twilio Console](https://console.twilio.com/us1/develop/phone-numbers/manage/search?isoCountry=US\\&types%5B%5D=Local\\&types%5B%5D=Tollfree\\&capabilities%5B%5D=Sms\\&capabilities%5B%5D=Mms\\&capabilities%5B%5D=Voice\\&capabilities%5B%5D=Fax\\&searchTerm=\\&searchFilter=left\\&searchType=number) by filtering for \"MMS\" under \"Capabilities\".\n* Check if you already have MMS capable numbers in the [Twilio Console](https://console.twilio.com/us1/develop/phone-numbers/manage/incoming) and use that number in your `From` parameter or Messaging Service.",
    "description": "The `From` number is not enabled for MMS messaging.",
    "date_created": "2016-03-31T17:14:28Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21622,
    "log_level": "ERROR",
    "log_type": null,
    "message": "MMS has not been enabled for your account",
    "secondary_message": "Your account has not been enabled for picture messaging. Please contact support to send picture messages.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour account has not been enabled for picture messaging. Please [contact support](/help/contact) to send picture messages\n",
    "causes": null,
    "solutions": null,
    "description": "Your account has not been enabled for picture messaging. Please [contact support](/help/contact) to send picture messages",
    "date_created": "2016-03-31T17:14:28Z",
    "last_updated": "2020-08-04T10:00:24.934Z"
  },
  {
    "code": 21623,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Number of media files exceeds allowed limit",
    "secondary_message": "The number of media URLs exceeds the maximum allowed. You may send up to 10 media files in a single message.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe number of media URLs exceeds the maximum allowed. You may send up to 10 media files in a single message.\n",
    "causes": null,
    "solutions": null,
    "description": "The number of media URLs exceeds the maximum allowed. You may send up to 10 media files in a single message.",
    "date_created": "2016-03-31T17:14:29Z",
    "last_updated": "2020-08-04T10:00:24.917Z"
  },
  {
    "code": 21624,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid validity period value",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou provided an invalid value for the `ValidityPeriod` parameter when creating a Message resource. Set `ValidityPeriod` to an integer from 1 to 36000 seconds.\n\n### Possible causes\n\n- `ValidityPeriod` is less than 1\n- `ValidityPeriod` is greater than 36000\n- `ValidityPeriod` is not an integer value\n- Your application passes `ValidityPeriod` in an unsupported format, such as a string with non-numeric characters or a decimal value\n\n### Possible solutions\n\n- Update your request so `ValidityPeriod` is an integer between 1 and 36000\n- Validate the `ValidityPeriod` value in your application before you send the API request\n- Remove `ValidityPeriod` from the request if you do not need to override the default message validity behavior\n- Review the code that builds your Messaging API request and confirm the `ValidityPeriod` parameter is mapped correctly\n\n#### Additional resources\n\n- [Programmable Messaging API reference](/docs/messaging/api)\n- [Message resource](/docs/messaging/api/message-resource)\n",
    "causes": "* `ValidityPeriod` is less than 1\n* `ValidityPeriod` is greater than 36000\n* `ValidityPeriod` is not an integer value\n* Your application passes `ValidityPeriod` in an unsupported format, such as a string with non-numeric characters or a decimal value",
    "solutions": "* Update your request so `ValidityPeriod` is an integer between 1 and 36000\n* Validate the `ValidityPeriod` value in your application before you send the API request\n* Remove `ValidityPeriod` from the request if you do not need to override the default message validity behavior\n* Review the code that builds your Messaging API request and confirm the `ValidityPeriod` parameter is mapped correctly",
    "description": "You provided an invalid value for the `ValidityPeriod` parameter when creating a Message resource. Set `ValidityPeriod` to an integer from 1 to 36000 seconds.",
    "date_created": "2017-05-18T21:39:00Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21626,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid 'StatusCallbackEvent'",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYou passed one or more invalid values in `StatusCallbackEvent` for a Programmable Voice call. Use only `initiated`, `ringing`, `answered`, or `completed`. If you do not specify `StatusCallbackEvent`, Twilio sends the `completed` callback by default.\n\n### Possible causes\n\n- You sent a `StatusCallbackEvent` value other than `initiated`, `ringing`, `answered`, or `completed`.\n- You passed multiple callback events in an invalid format. For REST API calls, send each event in a separate `status_callback_event` parameter.\n- You used TwiML with an invalid `statusCallbackEvent` attribute value or formatting. When you specify multiple events in TwiML, separate them with spaces.\n\n### Possible solutions\n\n- Replace invalid values with supported call progress events only: `initiated`, `ringing`, `answered`, and `completed`.\n- If you only need the final call result, remove `StatusCallbackEvent` and keep `StatusCallback`. Twilio sends the `completed` event by default.\n- If you create calls with the REST API, send each event as a separate `status_callback_event` parameter or use your helper library's array form for `statusCallbackEvent`.\n- If you use TwiML such as `<Dial><Number>`, `<Dial><Sip>`, or similar Voice call flows, provide multiple `statusCallbackEvent` values as a space-delimited list.\n\n#### Additional resources\n\n- [Call resource](/docs/voice/api/call-resource)\n- [Voice Webhooks](/docs/usage/webhooks/voice-webhooks)\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n",
    "causes": "* You sent a `StatusCallbackEvent` value other than `initiated`, `ringing`, `answered`, or `completed`.\n* You passed multiple callback events in an invalid format. For REST API calls, send each event in a separate `status_callback_event` parameter.\n* You used TwiML with an invalid `statusCallbackEvent` attribute value or formatting. When you specify multiple events in TwiML, separate them with spaces.",
    "solutions": "* Replace invalid values with supported call progress events only: `initiated`, `ringing`, `answered`, and `completed`.\n* If you only need the final call result, remove `StatusCallbackEvent` and keep `StatusCallback`. Twilio sends the `completed` event by default.\n* If you create calls with the REST API, send each event as a separate `status_callback_event` parameter or use your helper library's array form for `statusCallbackEvent`.\n* If you use TwiML such as `<Dial><Number>`, `<Dial><Sip>`, or similar Voice call flows, provide multiple `statusCallbackEvent` values as a space-delimited list.",
    "description": "You passed one or more invalid values in `StatusCallbackEvent` for a Programmable Voice call. Use only `initiated`, `ringing`, `answered`, or `completed`. If you do not specify `StatusCallbackEvent`, Twilio sends the `completed` callback by default.",
    "date_created": "2016-03-31T17:14:06Z",
    "last_updated": "2026-08-17T09:18:06+02:00"
  },
  {
    "code": 21627,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max Price must be a valid float",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error code is obsolete. Historically, Twilio returned 21627 when your request included the `maxPrice` parameter with a value that was not a valid positive floating-point number. The Message resource marks `maxPrice` as obsolete, and as of June 3, 2024, the parameter no longer has any effect on message sending. Remove `maxPrice` from new requests.\n\n### Possible causes\n\n- A historical API request included `maxPrice` with a value of `0`.\n- A historical API request included `maxPrice` with a negative value.\n- A historical API request included `maxPrice` with a value that was not a float.\n- Your application still sends the obsolete `maxPrice` parameter in Message resource requests. This parameter is obsolete and no longer has any effect as of June 3, 2024.\n\n### Possible solutions\n\n- Remove the `maxPrice` parameter from your Message resource requests.\n- If you are troubleshooting an older implementation, set `maxPrice` to a valid positive floating-point value.\n- Review your SMS Geo Permissions settings and allow only the countries where you intend to send messages. Twilio recommends this as a more robust way to avoid unexpected messaging costs.\n\n#### Additional resources\n- [Messages resource](/docs/messaging/api/message-resource)\n- [SMS Geo Permissions](/docs/messaging/guides/sms-geo-permissions)\n- [End of Life (EOL) of Twilio Messaging MaxPrice API Parameter](https://www.twilio.com/en-us/changelog/end-of-life--eol--of-twilio-messaging-maxprice-api-parameter)\n",
    "causes": "* A historical API request included `maxPrice` with a value of `0`.\n* A historical API request included `maxPrice` with a negative value.\n* A historical API request included `maxPrice` with a value that was not a float.\n* Your application still sends the obsolete `maxPrice` parameter in Message resource requests. This parameter is obsolete and no longer has any effect as of June 3, 2024.",
    "solutions": "* Remove the `maxPrice` parameter from your Message resource requests.\n* If you are troubleshooting an older implementation, set `maxPrice` to a valid positive floating-point value.\n* Review your SMS Geo Permissions settings and allow only the countries where you intend to send messages. Twilio recommends this as a more robust way to avoid unexpected messaging costs.",
    "description": "This error code is obsolete. Historically, Twilio returned 21627 when your request included the `maxPrice` parameter with a value that was not a valid positive floating-point number. The Message resource marks `maxPrice` as obsolete, and as of June 3, 2024, the parameter no longer has any effect on message sending. Remove `maxPrice` from new requests.",
    "date_created": "2020-05-26T10:40:52Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 21628,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Address Validation Error",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the address you submit to the Address resource does not pass validation in a country where address validation is required for phone number regulatory compliance. Twilio does not create the address when validation fails.\n\n### Possible causes\n\n- The submitted street, city, region, postal code, or country does not match a valid address in the validation provider's data.\n- The address contains misspellings, extra spaces, punctuation, or special characters that prevent validation.\n- The address format does not follow country-specific expectations. For example, US addresses require a two-letter state abbreviation in `Region` and a standard 5-digit ZIP code in `PostalCode`.\n- The address is valid in the real world, but the external validation service cannot find it in the expected format.\n\n### Possible solutions\n\n- Confirm that the address is the end user's physical business or residential address and that all required fields are complete, including `Street`, `City`, `Region`, `PostalCode`, and `IsoCountry`.\n- Remove leading and trailing spaces. Remove unnecessary punctuation and special characters from the address and name fields.\n- Try a standardized street format, such as common abbreviations like `St` or `Ave` without punctuation.\n- For US addresses, send the state as a two-letter abbreviation in `Region` and use a 5-digit ZIP code in `PostalCode`.\n- If you are updating an existing unvalidated address, submit a `POST` request to the Address instance with all address fields to trigger validation again.\n- If the address is already linked to phone numbers and cannot be modified or revalidated, create a new address and use that address for regulatory compliance or emergency address registration.\n- If validation continues to fail, contact Support.\n\n#### Additional resources\n\n- [REST API: Addresses](/docs/usage/api/address)\n- [Getting Started: Phone Number Regulatory Compliance](/docs/phone-numbers/regulatory/getting-started)\n- [How to Validate an Address With Error \"The Address You Have Provided Cannot Be Validated\"](https://help.twilio.com/articles/360007534873-Twilio-phone-number-address-validation-FAQ)\n",
    "causes": "* The submitted street, city, region, postal code, or country does not match a valid address in the validation provider's data.\n* The address contains misspellings, extra spaces, punctuation, or special characters that prevent validation.\n* The address format does not follow country-specific expectations. For example, US addresses require a two-letter state abbreviation in `Region` and a standard 5-digit ZIP code in `PostalCode`.\n* The address is valid in the real world, but the external validation service cannot find it in the expected format.",
    "solutions": "* Confirm that the address is the end user's physical business or residential address and that all required fields are complete, including `Street`, `City`, `Region`, `PostalCode`, and `IsoCountry`.\n* Remove leading and trailing spaces. Remove unnecessary punctuation and special characters from the address and name fields.\n* Try a standardized street format, such as common abbreviations like `St` or `Ave` without punctuation.\n* For US addresses, send the state as a two-letter abbreviation in `Region` and use a 5-digit ZIP code in `PostalCode`.\n* If you are updating an existing unvalidated address, submit a `POST` request to the Address instance with all address fields to trigger validation again.\n* If the address is already linked to phone numbers and cannot be modified or revalidated, create a new address and use that address for regulatory compliance or emergency address registration.\n* If validation continues to fail, contact Support.",
    "description": "Twilio returns this error when the address you submit to the Address resource does not pass validation in a country where address validation is required for phone number regulatory compliance. Twilio does not create the address when validation fails.",
    "date_created": "2016-12-07T05:05:24Z",
    "last_updated": "2026-09-11T18:16:06+01:00"
  },
  {
    "code": 21629,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Address Validation Error - Check Suggested Address",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe address you have provided cannot be validated. A similar address has been found to be valid. The suggested address is included in the error message body.\n\n### Possible causes\n\n- Address misspelling\n- Alternate format or spelling in third-party data source\n\n### Possible solutions\n\n- Ensure the address is spelled correctly\n- If a correct suggestion, submit the suggested address for validation\n- Contact Twilio Support\n",
    "causes": "* Address misspelling\n* Alternate format or spelling in third-party data source",
    "solutions": "* Ensure the address is spelled correctly\n* If a correct suggestion, submit the suggested address for validation\n* Contact Twilio Support",
    "description": "The address you have provided cannot be validated. A similar address has been found to be valid. The suggested address is included in the error message body.",
    "date_created": "2017-05-15T17:44:46Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21630,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Cannot mutate Address that is linked to a verified Document.",
    "secondary_message": "Cannot mutate Address that is linked to a verified Document.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to update an existing address that is already tied to verified regulatory compliance data. Some regulatory workflows require an `AddressSid` on a Supporting Document, and addresses already linked to regulatory compliance or emergency address registration cannot be modified or revalidated in place.\n\n### Possible causes\n\n- You sent a `POST` update to an existing address after that address had already been linked to a verified Supporting Document used for regulatory compliance.\n- The address is already associated with phone numbers for regulatory compliance, so Twilio blocks direct edits to preserve the approved compliance record. ([help.twilio.com](https://help.twilio.com/articles/31156886116891))\n- The address is already being used for emergency address registration, which also prevents modifying or revalidating the existing record. ([help.twilio.com](https://help.twilio.com/articles/31156886116891))\n\n### Possible solutions\n\n- Create a new address with the corrected details instead of updating the existing linked address. Then use the new `AddressSid` anywhere an address is required.\n- Before replacing the address, list the phone numbers that depend on it with `GET /2010-04-01/Accounts/{AccountSid}/Addresses/{AddressSid}/DependentPhoneNumbers.json`.\n- Update the phone number or provisioning request to reference the new `AddressSid` so the correct address is mapped to the number. ([help.twilio.com](https://help.twilio.com/articles/31155205145243))\n- If the address is part of approved regulatory compliance information that must change, create a Bundle Copy, update the copied compliance items, submit the copy for review, and then replace the items on the original bundle after approval.\n\n#### Additional resources\n\n- [REST API: Addresses](/docs/usage/api/address)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n- [API Getting Started: Compliance Information Update](/docs/phone-numbers/regulatory/getting-started/api-getting-started-compliance-information-update)\n",
    "causes": "* You sent a `POST` update to an existing address after that address had already been linked to a verified Supporting Document used for regulatory compliance.\n* The address is already associated with phone numbers for regulatory compliance, so Twilio blocks direct edits to preserve the approved compliance record. ([help.twilio.com](https://help.twilio.com/articles/31156886116891))\n* The address is already being used for emergency address registration, which also prevents modifying or revalidating the existing record. ([help.twilio.com](https://help.twilio.com/articles/31156886116891))",
    "solutions": "* Create a new address with the corrected details instead of updating the existing linked address. Then use the new `AddressSid` anywhere an address is required.\n* Before replacing the address, list the phone numbers that depend on it with `GET /2010-04-01/Accounts/{AccountSid}/Addresses/{AddressSid}/DependentPhoneNumbers.json`.\n* Update the phone number or provisioning request to reference the new `AddressSid` so the correct address is mapped to the number. ([help.twilio.com](https://help.twilio.com/articles/31155205145243))\n* If the address is part of approved regulatory compliance information that must change, create a Bundle Copy, update the copied compliance items, submit the copy for review, and then replace the items on the original bundle after approval.",
    "description": "This error occurs when you try to update an existing address that is already tied to verified regulatory compliance data. Some regulatory workflows require an `AddressSid` on a Supporting Document, and addresses already linked to regulatory compliance or emergency address registration cannot be modified or revalidated in place.",
    "date_created": "2019-04-10T21:32:19Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21631,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone Number Requires an Address",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTo purchase this number you must supply the Address of the user of this phone number. Previously the IncomingPhoneNumbers API would look at your account for an appropriate address, however, you are now required to pass in an AddressSid that satisfies the requirement for the phone number. This is because Twilio needs to know which address will be operating the phone number to meet regulatory requirements for that country and type of phone number.\n\n### Possible causes\n\n- No address was provided\n- No address was that satisfies the locality requirement for this phone number type.\n- Depending on the country and number type, this may be an address in the same country or same geographic area as the number being purchased.\n\n### Possible solutions\n\n- Add an address that satisfies the locality requirement.\n- Contact Twilio Support.\n",
    "causes": "* No address was provided\n* No address was that satisfies the locality requirement for this phone number type.\n* Depending on the country and number type, this may be an address in the same country or same geographic area as the number being purchased.",
    "solutions": "* Add an address that satisfies the locality requirement.\n* Contact Twilio Support.",
    "description": "To purchase this number you must supply the Address of the user of this phone number. Previously the IncomingPhoneNumbers API would look at your account for an appropriate address, however, you are now required to pass in an AddressSid that satisfies the requirement for the phone number. This is because Twilio needs to know which address will be operating the phone number to meet regulatory requirements for that country and type of phone number.",
    "date_created": "2019-06-12T00:30:52Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21634,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP Trunk is in use for emergency calling",
    "secondary_message": "One or more numbers associated with this SIP trunk are provisioned for emergency calling.",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nPlease disable emergency calling on these numbers before proceeding.\n\n### Possible causes\n\n- One or more numbers associated with this SIP Trunk are provisioned for emergency calling.\n\n### Possible solutions\n\n- Refer to the docs on [Emergency Calling](/docs/sip-trunking/emergency-calling) over SIP trunking for more details.\n",
    "causes": "* One or more numbers associated with this SIP Trunk are provisioned for emergency calling.",
    "solutions": "* Refer to the docs on [Emergency Calling](/docs/sip-trunking/emergency-calling) over SIP trunking for more details.",
    "description": "Please disable emergency calling on these numbers before proceeding.",
    "date_created": "2020-08-04T02:54:12Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21635,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'To' number cannot be a landline",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you attempt to send an SMS message to a `To` number that is identified as a landline. In countries where Twilio does not attempt SMS delivery to landlines, the API rejects the request with this error.\n\n### Possible causes\n\n- The destination `To` number is a landline.\n- You attempted to send an SMS to a landline in a country where Twilio blocks landline delivery attempts instead of sending the message to the carrier.\n\n### Possible solutions\n\n- Confirm that the destination number is not a landline by checking it with the [Lookup API](/docs/lookup/v2-api).\n- Validate recipient numbers before sending so that your application only sends SMS to numbers that can receive text messages.\n- If you still want to attempt delivery where supported, include the `ForceDelivery` API parameter in your Message request. This does not guarantee that the recipient can receive the message.\n- Review how landline delivery is handled for the recipient's country before retrying. For landline numbers in the US, Canada, and the UK, Twilio may attempt delivery. In other countries, Twilio returns 21635.\n\n#### Additional resources\n- [Lookup API](/docs/lookup/v2-api)\n- [Message resource](/docs/messaging/api/message-resource)\n- [What happens when I attempt to send messages to a landline?](https://help.twilio.com/articles/223133647)\n",
    "causes": "* The destination `To` number is a landline.\n* You attempted to send an SMS to a landline in a country where Twilio blocks landline delivery attempts instead of sending the message to the carrier.",
    "solutions": "* Confirm that the destination number is not a landline by checking it with the [Lookup API](/docs/lookup/v2-api).\n* Validate recipient numbers before sending so that your application only sends SMS to numbers that can receive text messages.\n* If you still want to attempt delivery where supported, include the `ForceDelivery` API parameter in your Message request. This does not guarantee that the recipient can receive the message.\n* Review how landline delivery is handled for the recipient's country before retrying. For landline numbers in the US, Canada, and the UK, Twilio may attempt delivery. In other countries, Twilio returns 21635.",
    "description": "This error occurs when you attempt to send an SMS message to a `To` number that is identified as a landline. In countries where Twilio does not attempt SMS delivery to landlines, the API rejects the request with this error.",
    "date_created": "2024-07-10T06:18:51Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 21644,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "End-User cannot be deleted due to an active assignment to a Bundle",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe End-User cannot be deleted due to active assignments\n\n### Possible causes\n\nThe End User cannot be deleted due to one or more active assignments to a Bundle\n\n### Possible solutions\n\nReassign a new End-User to all Bundle(s) and then perform the `DELETE` operation.\n",
    "causes": "The End User cannot be deleted due to one or more active assignments to a Bundle",
    "solutions": "Reassign a new End-User to all Bundle(s) and then perform the `DELETE` operation.",
    "description": "The End-User cannot be deleted due to active assignments",
    "date_created": "2020-07-17T20:00:55Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21645,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Supporting Document cannot be deleted due to active Regulatory Bundle assignment",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Supporting Document cannot be deleted as it is an active item assignment in one or more Regulatory Bundles.\n\n### Possible causes\n\nThe Supporting Document cannot be deleted as it is an active item assignment in one or more Regulatory Bundles.\n\n### Possible solutions\n\nUnassign the Supporting Document from the Regulatory Bundle(s)\n",
    "causes": "The Supporting Document cannot be deleted as it is an active item assignment in one or more Regulatory Bundles.",
    "solutions": "Unassign the Supporting Document from the Regulatory Bundle(s)",
    "description": "The Supporting Document cannot be deleted as it is an active item assignment in one or more Regulatory Bundles.",
    "date_created": "2020-07-17T19:35:06Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21646,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Supporting Document is not eligible for deletion",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Supporting Document is in a non-deletable status and is not eligible to be deleted until the Supporting Document transitions to a deletable status.\n\n### Possible causes\n\nThe Supporting Document is in a non-deletable status (PENDING\\_REVIEW).\n\n### Possible solutions\n\nWait for the Supporting Document to transition to a deletable status (DRAFT, TWILIO\\_REJECTED, TWILIO\\_APPROVED). If your Supporting Document is idle for more than 3 business days, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).\n",
    "causes": "The Supporting Document is in a non-deletable status (PENDING\\_REVIEW).",
    "solutions": "Wait for the Supporting Document to transition to a deletable status (DRAFT, TWILIO\\_REJECTED, TWILIO\\_APPROVED). If your Supporting Document is idle for more than 3 business days, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).",
    "description": "The Supporting Document is in a non-deletable status and is not eligible to be deleted until the Supporting Document transitions to a deletable status.",
    "date_created": "2020-07-17T19:47:56Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21647,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Regulatory Bundle is not eligible for deletion",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nRegulatory Bundle is in a non-deletable status (PENDING\\_REVIEW & IN\\_REVIEW)\n\n### Possible causes\n\nRegulatory Bundle is in a non-deletable status.\n\n### Possible solutions\n\nWait for the Regulatory Bundle to transition to a deletable status (DRAFT, TWILIO\\_REJECTED, TWILIO\\_APPROVED).\n\nIf the Regulatory Bundle is idle for 3 or more business days, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).\n",
    "causes": "Regulatory Bundle is in a non-deletable status.",
    "solutions": "Wait for the Regulatory Bundle to transition to a deletable status (DRAFT, TWILIO\\_REJECTED, TWILIO\\_APPROVED). If the Regulatory Bundle is idle for 3 or more business days, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).",
    "description": "Regulatory Bundle is in a non-deletable status (PENDING\\_REVIEW & IN\\_REVIEW)",
    "date_created": "2020-07-17T19:49:52Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21648,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Regulatory Bundle cannot be deleted due to active number assignment",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Regulatory Bundle cannot be deleted due to an active number assignment.a\n\n### Possible causes\n\nThe Regulatory Bundle cannot be deleted due to an active number assignment.a\n\n### Possible solutions\n\nRe-assign the current number(s) to another twilio-approved Regulatory Bundle.\n",
    "causes": "The Regulatory Bundle cannot be deleted due to an active number assignment.a",
    "solutions": "Re-assign the current number(s) to another twilio-approved Regulatory Bundle.",
    "description": "The Regulatory Bundle cannot be deleted due to an active number assignment.a",
    "date_created": "2020-07-17T19:54:41Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21649,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone Number Requires a Bundle",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTo provision this number you must supply the Bundle with End-User information and Supporting Documents to comply with local telecom regulations.\n\nPreviously the IncomingPhoneNumbers API would let you provision the phone number without providing a Bundle, however, you are now required to pass in a BundleSid that satisfies the requirement for the phone number. This is because Twilio needs to know which Bundle containing End-User information and Supporting Documents will be assigned to the phone number to meet regulatory requirements for that country and type of phone number.\n\n### Possible causes\n\n- No Bundle was provided\n- No Bundle was that satisfies the locality requirement for this phone number type\n- Depending on the country, number type, and end-user type, the regulations will be different compared to other phone numbers\n\n### Possible solutions\n\n- Build a new Bundle that satisfies the regulations of the phone number.\n- Contact Twilio Support.\n",
    "causes": "* No Bundle was provided\n* No Bundle was that satisfies the locality requirement for this phone number type\n* Depending on the country, number type, and end-user type, the regulations will be different compared to other phone numbers",
    "solutions": "* Build a new Bundle that satisfies the regulations of the phone number.\n* Contact Twilio Support.",
    "description": "To provision this number you must supply the Bundle with End-User information and Supporting Documents to comply with local telecom regulations. Previously the IncomingPhoneNumbers API would let you provision the phone number without providing a Bundle, however, you are now required to pass in a BundleSid that satisfies the requirement for the phone number. This is because Twilio needs to know which Bundle containing End-User information and Supporting Documents will be assigned to the phone number to meet regulatory requirements for that country and type of phone number.",
    "date_created": "2019-11-15T00:21:58Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21650,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Phone Number Requires a Verified Identity Document",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTo purchase this number you must have a verified identity document on your account.\n\n### Possible causes\n\n- There is no verified identity document on your account or subaccount. Due to local regulations, some phone numbers require a verified identity document associated with your Twilio account.\n\n### Possible solutions\n\n- In the Phone Numbers > Documents section in Console, provide the name of the individual or business registering the phone numbers and a scanned copy of supporting identification documents.\n- Ensure that the verification status of the identity document record is \"Passed\". If \"Pending\", wait 48 business hours for Twilio to verify the document. If \"Failed\", please refer to the failure reason to address the issue.\n",
    "causes": "* There is no verified identity document on your account or subaccount. Due to local regulations, some phone numbers require a verified identity document associated with your Twilio account.",
    "solutions": "* In the Phone Numbers > Documents section in Console, provide the name of the individual or business registering the phone numbers and a scanned copy of supporting identification documents.\n* Ensure that the verification status of the identity document record is \"Passed\". If \"Pending\", wait 48 business hours for Twilio to verify the document. If \"Failed\", please refer to the failure reason to address the issue.",
    "description": "To purchase this number you must have a verified identity document on your account.",
    "date_created": "2017-06-28T22:21:51Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21651,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Document does not satisfy regulatory requirement",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe document being mapped to the number does not satisfy the regulatory requirements.\n\n### Possible causes\n\n- The document is the incorrect type for the number you are trying to purchase or update.\n- The document does not have the correct metadata fields required for the number you are trying to purchase or update.\n- The document sid is not valid.\n\n### Possible solutions\n\n- Ensure that the document you are using satisfies the regulatory requirement.\n- Ensure the document sid refers to a document on your account or subaccount.\n- Contact support for assistance.\n",
    "causes": "* The document is the incorrect type for the number you are trying to purchase or update.\n* The document does not have the correct metadata fields required for the number you are trying to purchase or update.\n* The document sid is not valid.",
    "solutions": "* Ensure that the document you are using satisfies the regulatory requirement.\n* Ensure the document sid refers to a document on your account or subaccount.\n* Contact support for assistance.",
    "description": "The document being mapped to the number does not satisfy the regulatory requirements.",
    "date_created": "2018-03-12T12:26:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21652,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Maximum subject length is 40 characters",
    "secondary_message": "Keep the subject text of your message to 40 characters or less.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nUse a subject that is 40 characters or fewer. Twilio returns this error when the subject text in your message exceeds that limit.\n\n### Possible causes\n\n- The subject line you sent is longer than 40 characters.\n- Dynamic text pushed the final subject over the limit after your application built the message request.\n\n### Possible solutions\n\n- Shorten the subject to 40 characters or fewer before you send the message.\n- Review the final rendered subject in your application and trim or abbreviate any text that makes it exceed the limit.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* The subject line you sent is longer than 40 characters.\n* Dynamic text pushed the final subject over the limit after your application built the message request.",
    "solutions": "* Shorten the subject to 40 characters or fewer before you send the message.\n* Review the final rendered subject in your application and trim or abbreviate any text that makes it exceed the limit.",
    "description": "Use a subject that is 40 characters or fewer. Twilio returns this error when the subject text in your message exceeds that limit.",
    "date_created": "2018-08-30T17:32:59Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 21653,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "There are more recipient addresses than allowed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThere are more recipient addresses than allowed for a channel. For instance for SMS we allow only one recipient but for Group MMS we allow multiple recipients\n\n### Possible causes\n\nToo many recipients were provided in the request or channel selection is incorrect\n\n### Possible solutions\n\nFix the list of recipients according a channel restrictions\n",
    "causes": "Too many recipients were provided in the request or channel selection is incorrect",
    "solutions": "Fix the list of recipients according a channel restrictions",
    "description": "There are more recipient addresses than allowed for a channel. For instance for SMS we allow only one recipient but for Group MMS we allow multiple recipients",
    "date_created": "2020-12-11T08:15:08Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21654,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ContentSid Required",
    "secondary_message": "A ContentSid must be specified if ContentVariables are provided in the request.",
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nProvide `ContentSid` whenever your request includes `ContentVariables`. `ContentSid` identifies the Content Template to send, and `ContentVariables` supplies substitution values for that template's placeholders.\n\n### Possible causes\n\n- Your request included `ContentVariables` but did not include `ContentSid`.\n- Your application attempted to send a Content Template and only passed variable values.\n- Your request builder or helper library did not include `ContentSid` in the final API request.\n- You are trying to use `ContentVariables` with content that is not being sent as a Content Template.\n\n### Possible solutions\n\n- Add `ContentSid` to the send request whenever you include `ContentVariables`.\n- Use the `HX` SID for the Content Template you want to send.\n- If you are not sending a Content Template, remove `ContentVariables` and send your message with `Body` or `MediaUrl` instead.\n- Verify that the template was created with the Content Template Builder or Content API. Only Content Templates can be sent with `ContentSid` and `ContentVariables`.\n- If your current helper library does not support `ContentSid`, update it and confirm the parameter is being sent in the request.\n\n#### Additional resources\n\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Content API public endpoints](/docs/content/content-api-resources)\n- [FAQs and troubleshooting for Content Templates](/docs/content/faqs-and-troubleshooting)\n",
    "causes": "* Your request included `ContentVariables` but did not include `ContentSid`.\n* Your application attempted to send a Content Template and only passed variable values.\n* Your request builder or helper library did not include `ContentSid` in the final API request.\n* You are trying to use `ContentVariables` with content that is not being sent as a Content Template.",
    "solutions": "* Add `ContentSid` to the send request whenever you include `ContentVariables`.\n* Use the `HX` SID for the Content Template you want to send.\n* If you are not sending a Content Template, remove `ContentVariables` and send your message with `Body` or `MediaUrl` instead.\n* Verify that the template was created with the Content Template Builder or Content API. Only Content Templates can be sent with `ContentSid` and `ContentVariables`.\n* If your current helper library does not support `ContentSid`, update it and confirm the parameter is being sent in the request.",
    "description": "Provide `ContentSid` whenever your request includes `ContentVariables`. `ContentSid` identifies the Content Template to send, and `ContentVariables` supplies substitution values for that template's placeholders.",
    "date_created": "2021-09-29T15:21:17Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 21655,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The ContentSid is Invalid",
    "secondary_message": null,
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nThis error means the `ContentSid` in your message request is not a valid Content Template SID for the message you are sending. Use a valid Content Template SID that matches the `HX` pattern and belongs to the same account that is creating the Message resource.\n\n### Possible causes\n\n- The `ContentSid` value has a typo, is incomplete, or does not match the required `^HX[0-9a-fA-F]{32}$` format.\n- The template was deleted, so the SID no longer points to an active Content Template.\n- The template belongs to a different account or subaccount than the one used to create the message. A Content Sid can only be used by one Twilio account SID, and the Message resource is created under the account in your request.\n\n### Possible solutions\n\n- Copy the `ContentSid` directly from the Content Template Builder or from the Content API response. Confirm that it starts with `HX` and is 34 characters long.\n- Verify that the template still exists by fetching it with `GET /v1/Content/{ContentSid}` or by listing templates with `GET /v1/Content`. If the template was deleted, create a new template and update your request to use the new SID.\n- Send the message from the same account or subaccount that owns the template. If you authenticate the request with a different account, use a `ContentSid` created under that account instead.\n\n#### Additional resources\n\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Content API public endpoints](/docs/content/content-api-resources)\n- [FAQs and Troubleshooting](/docs/content/faqs-and-troubleshooting)\n",
    "causes": "* The `ContentSid` value has a typo, is incomplete, or does not match the required `^HX[0-9a-fA-F]{32}$` format.\n* The template was deleted, so the SID no longer points to an active Content Template.\n* The template belongs to a different account or subaccount than the one used to create the message. A Content Sid can only be used by one Twilio account SID, and the Message resource is created under the account in your request.",
    "solutions": "* Copy the `ContentSid` directly from the Content Template Builder or from the Content API response. Confirm that it starts with `HX` and is 34 characters long.\n* Verify that the template still exists by fetching it with `GET /v1/Content/{ContentSid}` or by listing templates with `GET /v1/Content`. If the template was deleted, create a new template and update your request to use the new SID.\n* Send the message from the same account or subaccount that owns the template. If you authenticate the request with a different account, use a `ContentSid` created under that account instead.",
    "description": "This error means the `ContentSid` in your message request is not a valid Content Template SID for the message you are sending. Use a valid Content Template SID that matches the `HX` pattern and belongs to the same account that is creating the Message resource.",
    "date_created": "2021-09-29T15:24:20Z",
    "last_updated": "2026-04-17T12:01:11+01:00"
  },
  {
    "code": 21656,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The ContentVariables Parameter is invalid",
    "secondary_message": null,
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your `ContentVariables` value is invalid for a message request that uses `ContentSid`. Send `ContentVariables` as a JSON string of key value pairs that map template variable numbers to substitution values. If a value is omitted, Twilio uses the template's default placeholder value.\n\n### Possible causes\n\n- `ContentVariables` is not a valid JSON string.\n- A variable placeholder in the template is malformed, such as `{{example}`.\n- A variable placeholder is empty, such as `{{}}`.\n- The `ContentVariables` payload is improperly formatted when you send the message.\n- One or more variables resolve to `null` or an empty string at send time.\n- A variable value used in the body contains a newline, a tab, or more than four consecutive spaces.\n- The number of variables defined in the template must equal the number of variables provided in the `ContentVariables` payload.\n\n### Possible solutions\n\n- Send `ContentVariables` as a JSON string, such as `{\"1\":\"coupon_code\",\"2\":\"docs\"}`.\n- Check every template placeholder and use valid double curly brace syntax. Do not use incomplete or empty placeholders.\n- Make sure each variable has a non-empty value when you send the message. Do not pass `null` or an empty string.\n- Remove newlines, tabs, and long runs of spaces from variable values used in the body.\n- If you want Twilio to substitute a fallback value, define a default placeholder value in the template before you send the message.\n\n#### Additional resources\n\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Content API FAQs and Troubleshooting](/docs/content/faqs-and-troubleshooting)\n",
    "causes": "* `ContentVariables` is not a valid JSON string.\n* A variable placeholder in the template is malformed, such as `{{example}`.\n* A variable placeholder is empty, such as `{{}}`.\n* The `ContentVariables` payload is improperly formatted when you send the message.\n* One or more variables resolve to `null` or an empty string at send time.\n* A variable value used in the body contains a newline, a tab, or more than four consecutive spaces.\n* The number of variables defined in the template must equal the number of variables provided in the `ContentVariables` payload.",
    "solutions": "* Send `ContentVariables` as a JSON string, such as `{\"1\":\"coupon_code\",\"2\":\"docs\"}`.\n* Check every template placeholder and use valid double curly brace syntax. Do not use incomplete or empty placeholders.\n* Make sure each variable has a non-empty value when you send the message. Do not pass `null` or an empty string.\n* Remove newlines, tabs, and long runs of spaces from variable values used in the body.\n* If you want Twilio to substitute a fallback value, define a default placeholder value in the template before you send the message.",
    "description": "Twilio returns this error when your `ContentVariables` value is invalid for a message request that uses `ContentSid`. Send `ContentVariables` as a JSON string of key value pairs that map template variable numbers to substitution values. If a value is omitted, Twilio uses the template's default placeholder value.",
    "date_created": "2021-09-29T15:26:47Z",
    "last_updated": "2026-08-10T18:31:00+05:30"
  },
  {
    "code": 21657,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Sender ID is invalid ",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `From` value in your SMS request uses a Sender ID that is not supported for the destination. Alphanumeric Sender IDs are only available in supported countries, and some destinations require registration before you can use them.\n\n### Possible causes\n\n- You used an Alphanumeric Sender ID in a destination country that does not support it.\n- The destination country requires Sender ID registration, and the sender is not registered yet.\n- The `From` value does not match a registered Sender ID for that country, and no default Sender ID is configured.\n\n### Possible solutions\n\n- Review the SMS guidelines for the destination country and use a Sender ID that is supported there.\n- Register the Sender ID before sending to countries that require pre-registration.\n- If you send messages through a Messaging Service, configure a default Sender ID for the country so Twilio can use a compliant sender automatically.\n\n#### Additional resources\n\n- [Configure your default Sender ID](/docs/phone-numbers/default-sender-id)\n- [Alphanumeric Sender IDs in Messaging Services](/docs/messaging/services/alphanumeric-sender-ids-in-messaging-services)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* You used an Alphanumeric Sender ID in a destination country that does not support it.\n* The destination country requires Sender ID registration, and the sender is not registered yet.\n* The `From` value does not match a registered Sender ID for that country, and no default Sender ID is configured.",
    "solutions": "* Review the SMS guidelines for the destination country and use a Sender ID that is supported there.\n* Register the Sender ID before sending to countries that require pre-registration.\n* If you send messages through a Messaging Service, configure a default Sender ID for the country so Twilio can use a compliant sender automatically.",
    "description": "This error occurs when the `From` value in your SMS request uses a Sender ID that is not supported for the destination. Alphanumeric Sender IDs are only available in supported countries, and some destinations require registration before you can use them.",
    "date_created": "2023-04-26T13:54:13Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 21658,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Parameter exceeded character limit",
    "secondary_message": null,
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nYou receive this error when a Messaging API request includes a parameter value that is longer than the allowed limit. In a Message request, `Body` can be up to 1,600 characters. When you send a Content template, each variable value can be up to 1,600 characters, though some template fields enforce a lower limit and the variable limit follows that field limit.\n\n### Possible causes\n\n- Your `Body` value is longer than 1,600 characters.\n- A value in `ContentVariables` is longer than the allowed limit for the template field where it is used. Variable values can be up to 1,600 characters, and some fields have lower maximums.\n- Another Messaging request parameter exceeded its maximum character limit.\n\n### Possible solutions\n\n- Shorten the parameter that caused the request to fail, then send the request again.\n- If you are sending text in `Body`, keep it at 1,600 characters or fewer.\n- If you are using `ContentSid` and `ContentVariables`, shorten each variable value so it fits the limit for the template field where you use it.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [How long can a message be?](/docs/glossary/what-sms-character-limit)\n",
    "causes": "* Your `Body` value is longer than 1,600 characters.\n* A value in `ContentVariables` is longer than the allowed limit for the template field where it is used. Variable values can be up to 1,600 characters, and some fields have lower maximums.\n* Another Messaging request parameter exceeded its maximum character limit.",
    "solutions": "* Shorten the parameter that caused the request to fail, then send the request again.\n* If you are sending text in `Body`, keep it at 1,600 characters or fewer.\n* If you are using `ContentSid` and `ContentVariables`, shorten each variable value so it fits the limit for the template field where you use it.",
    "description": "You receive this error when a Messaging API request includes a parameter value that is longer than the allowed limit. In a Message request, `Body` can be up to 1,600 characters. When you send a Content template, each variable value can be up to 1,600 characters, though some template fields enforce a lower limit and the variable limit follows that field limit.",
    "date_created": "2023-05-01T20:55:01Z",
    "last_updated": "2026-04-17T12:01:11+01:00"
  },
  {
    "code": 21659,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'From' is not a Twilio phone number or Short Code country mismatch",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou can only send SMS messages from a phone number, Alphanumeric Sender ID or [short code](/docs/glossary/what-is-a-short-code) provided by or ported to Twilio.\n\nFor Short Codes, the `From` number must be in the same country as the `To` number.\n\n### Possible causes\n\n- The number you are using is in the process of porting/hosting.\n- You have provided an incorrect `From` number.\n- The number may be formatted incorrectly. Twilio accepts numbers in [E.164 format](/docs/glossary/what-e164)\n- If the number is a Short Code, it must be associated with the same country as the destination address.\n\n### Possible solutions\n\n- If you have ported/hosted the `From` number, ensure that the process is complete. You can follow up on this in the Twilio console for [porting](https://console.twilio.com/us1/develop/phone-numbers/port-host/porting-requests?frameUrl=%2Fconsole%2Fphone-numbers%2Fporting-requests%3Fx-target-region%3Dus1) and [hosting](https://console.twilio.com/us1/develop/phone-numbers/port-host/hosted-numbers?frameUrl=%2Fconsole%2Fphone-numbers%2Fhosted%3Fx-target-region%3Dus1).\n- If you are sending from a Short Code, verify that the country you are sending to matches the country of the Short Code.\n- Ensure the number you are using is in [E.164 format](/docs/glossary/what-e164).\n",
    "causes": "* The number you are using is in the process of porting/hosting.\n* You have provided an incorrect `From` number.\n* The number may be formatted incorrectly. Twilio accepts numbers in [E.164 format](/docs/glossary/what-e164)\n* If the number is a Short Code, it must be associated with the same country as the destination address.",
    "solutions": "* If you have ported/hosted the `From` number, ensure that the process is complete. You can follow up on this in the Twilio console for [porting](https://console.twilio.com/us1/develop/phone-numbers/port-host/porting-requests?frameUrl=%2Fconsole%2Fphone-numbers%2Fporting-requests%3Fx-target-region%3Dus1) and [hosting](https://console.twilio.com/us1/develop/phone-numbers/port-host/hosted-numbers?frameUrl=%2Fconsole%2Fphone-numbers%2Fhosted%3Fx-target-region%3Dus1).\n* If you are sending from a Short Code, verify that the country you are sending to matches the country of the Short Code.\n* Ensure the number you are using is in [E.164 format](/docs/glossary/what-e164).",
    "description": "You can only send SMS messages from a phone number, Alphanumeric Sender ID or [short code](/docs/glossary/what-is-a-short-code) provided by or ported to Twilio. For Short Codes, the `From` number must be in the same country as the `To` number.",
    "date_created": "2024-07-09T16:12:24Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21660,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Mismatch between the 'From' number and the account",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `From` sender in your SMS request is not owned by the account or subaccount identified by the credentials in the API request. The `from` value must be a sender that is hosted within Twilio and belongs to the Account creating the Message. If you send with `MessagingServiceSid`, you can omit `from` and let Twilio select a sender from the Messaging Service's Sender Pool.\n\n### Possible causes\n\n- You sent the request with the wrong Account SID, Auth Token, or API Key, so the request was authenticated against a different account or subaccount than the one that owns the sender.\n- The `From` phone number belongs to another subaccount or to the parent account, but your request used credentials for a different account.\n- The phone number was transferred between accounts or subaccounts, but your application still uses the previous account credentials.\n- You included `from` in a request that also uses `MessagingServiceSid`, and the specified sender does not belong to the same account that is creating the message.\n\n### Possible solutions\n\n- Verify that the credentials in your API request match the account or subaccount that owns the sender you want to use.\n- In Console, confirm that the `From` number is provisioned, hosted, or otherwise assigned to the same account that is creating the message.\n- If you send messages from a subaccount, use that subaccount's credentials when creating the message.\n- If the number was moved to a different subaccount, update your application to use the new account credentials or transfer the number to the account that should send the message.\n- If you use `MessagingServiceSid`, omit `from` to let Twilio choose a sender from the Messaging Service's Sender Pool. If you specify `from`, use a sender that belongs to the same account creating the message.\n\n#### Additional resources\n\n- [Message resource](/docs/messaging/api/message-resource)\n- [Subaccounts API](/docs/iam/api/subaccounts)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* You sent the request with the wrong Account SID, Auth Token, or API Key, so the request was authenticated against a different account or subaccount than the one that owns the sender.\n* The `From` phone number belongs to another subaccount or to the parent account, but your request used credentials for a different account.\n* The phone number was transferred between accounts or subaccounts, but your application still uses the previous account credentials.\n* You included `from` in a request that also uses `MessagingServiceSid`, and the specified sender does not belong to the same account that is creating the message.",
    "solutions": "* Verify that the credentials in your API request match the account or subaccount that owns the sender you want to use.\n* In Console, confirm that the `From` number is provisioned, hosted, or otherwise assigned to the same account that is creating the message.\n* If you send messages from a subaccount, use that subaccount's credentials when creating the message.\n* If the number was moved to a different subaccount, update your application to use the new account credentials or transfer the number to the account that should send the message.\n* If you use `MessagingServiceSid`, omit `from` to let Twilio choose a sender from the Messaging Service's Sender Pool. If you specify `from`, use a sender that belongs to the same account creating the message.",
    "description": "This error occurs when the `From` sender in your SMS request is not owned by the account or subaccount identified by the credentials in the API request. The `from` value must be a sender that is hosted within Twilio and belongs to the Account creating the Message. If you send with `MessagingServiceSid`, you can omit `from` and let Twilio select a sender from the Messaging Service's Sender Pool.",
    "date_created": "2024-07-10T06:07:49Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21661,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'From' number is not SMS-capable",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when the value you pass in `From` is not a Twilio phone number that can send SMS. If you specify `from` in `<Message>`, it must be a message-capable local phone number assigned to your account.\n\n### Possible causes\n\n- The `From` value is a Twilio phone number on your account that does not have SMS capability.\n- You specified `from` in `<Message>` with a phone number that is not message-capable.\n- You purchased or selected a number for another use case, such as voice, without confirming that SMS is enabled for that number.\n\n### Possible solutions\n\n- Use a Twilio phone number that shows SMS capability and belongs to the account sending the message.\n- Buy an SMS-capable Twilio phone number if your current number does not support SMS.\n- If you send with a Messaging Service, add at least one phone number or channel address to the Sender Pool, ensure it is SMS-capable, and send with `MessagingServiceSid` instead of `From`.\n\n#### Additional resources\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Get started with Messaging Services](/docs/messaging/tutorials/send-messages-with-messaging-services)\n- [Phone Numbers](/docs/phone-numbers)\n",
    "causes": "* The `From` value is a Twilio phone number on your account that does not have SMS capability.\n* You specified `from` in `<Message>` with a phone number that is not message-capable.\n* You purchased or selected a number for another use case, such as voice, without confirming that SMS is enabled for that number.",
    "solutions": "* Use a Twilio phone number that shows SMS capability and belongs to the account sending the message.\n* Buy an SMS-capable Twilio phone number if your current number does not support SMS.\n* If you send with a Messaging Service, add at least one phone number or channel address to the Sender Pool, ensure it is SMS-capable, and send with `MessagingServiceSid` instead of `From`.",
    "description": "This error occurs when the value you pass in `From` is not a Twilio phone number that can send SMS. If you specify `from` in `<Message>`, it must be a message-capable local phone number assigned to your account.",
    "date_created": "2024-07-10T06:13:18Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 21662,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Current combination of 'From' and 'To' parameters cannot be used in Ireland region",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you attempt to send an outbound message as a data resident workload in the Ireland Region (`IE1`), but the message uses a North American (+1) number in the `From` or `To` parameter. Twilio cannot process that `From` and `To` combination in `IE1`.\n\n### Possible causes\n\n- You sent the message from a North American (+1) sender while targeting the Ireland Region (`IE1`).\n- You sent the message to a North American (+1) destination while targeting the Ireland Region (`IE1`).\n- Your API request or SDK configuration targeted `IE1` for a messaging workload that should be processed in another Region. Twilio processes requests in the Region you select, and if you do not specify a Region, Twilio uses `US1` by default.\n\n### Possible solutions\n\n- Do not send data resident messages in `IE1` when the `From` or `To` value is a North American (+1) number. Use a supported sender and recipient combination for the Ireland Region instead.\n- If you need to send a message from or to a North American (+1) number, send that request through the default `US1` Region instead of `IE1`. Twilio handles requests in `US1` when you do not explicitly target another Region.\n- Review your API hostname or SDK client settings and remove the `IE1` target for this request if the message must use a +1 number. For REST API requests, the hostname determines the processing Region. For server-side SDKs, the `edge` and `region` settings determine the target Region.\n- If you are using SMS data residency in Europe, confirm that your use case is configured for the Ireland Region and that the sender and recipient combination matches the constraints of that regional workload.\n\n#### Additional resources\n\n- [Using the Twilio REST API in a non-US Region](/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region)\n- [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions)\n- [Send SMS and MMS messages](/docs/messaging/tutorials/how-to-send-sms-messages)\n",
    "causes": "* You sent the message from a North American (+1) sender while targeting the Ireland Region (`IE1`).\n* You sent the message to a North American (+1) destination while targeting the Ireland Region (`IE1`).\n* Your API request or SDK configuration targeted `IE1` for a messaging workload that should be processed in another Region. Twilio processes requests in the Region you select, and if you do not specify a Region, Twilio uses `US1` by default.",
    "solutions": "* Do not send data resident messages in `IE1` when the `From` or `To` value is a North American (+1) number. Use a supported sender and recipient combination for the Ireland Region instead.\n* If you need to send a message from or to a North American (+1) number, send that request through the default `US1` Region instead of `IE1`. Twilio handles requests in `US1` when you do not explicitly target another Region.\n* Review your API hostname or SDK client settings and remove the `IE1` target for this request if the message must use a +1 number. For REST API requests, the hostname determines the processing Region. For server-side SDKs, the `edge` and `region` settings determine the target Region.\n* If you are using SMS data residency in Europe, confirm that your use case is configured for the Ireland Region and that the sender and recipient combination matches the constraints of that regional workload.",
    "description": "This error occurs when you attempt to send an outbound message as a data resident workload in the Ireland Region (`IE1`), but the message uses a North American (+1) number in the `From` or `To` parameter. Twilio cannot process that `From` and `To` combination in `IE1`.",
    "date_created": "2025-09-23T07:43:53.782Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 21663,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'From' phone number routing configuration is incorrect ",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `From` phone number's regional configuration doesn't match the Twilio Region used for the outbound Messaging API request. Phone numbers are configured for `US1` by default.\n\n### Possible causes\n\n- The `From` phone number is configured for `IE1`, but the message request was sent to the default `US1` endpoint at `api.twilio.com`.\n- The `From` phone number is configured for `US1`, but the message request was sent to the `IE1` endpoint at `api.dublin.ie1.twilio.com`.\n\n### Possible solutions\n\n- Send the message request to the endpoint that matches the `From` phone number's Region. Use `api.dublin.ie1.twilio.com` for `IE1` or `api.twilio.com` for `US1`.\n- Review the phone number's regional configuration in Console and make sure the number is configured in the Region where you want to send messages.\n- If you use a Twilio server-side SDK, set both `edge` and `region` so the client targets the intended Region instead of falling back to `US1`.\n\n#### Additional resources\n\n- [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions)\n- [Use the Programmable Messaging API with Twilio Regions](/docs/global-infrastructure/messaging-api-with-twilio-regions)\n- [Managing Regional Resources in Console](/docs/global-infrastructure/managing-regional-resources-in-console)\n",
    "causes": "* The `From` phone number is configured for `IE1`, but the message request was sent to the default `US1` endpoint at `api.twilio.com`.\n* The `From` phone number is configured for `US1`, but the message request was sent to the `IE1` endpoint at `api.dublin.ie1.twilio.com`.",
    "solutions": "* Send the message request to the endpoint that matches the `From` phone number's Region. Use `api.dublin.ie1.twilio.com` for `IE1` or `api.twilio.com` for `US1`.\n* Review the phone number's regional configuration in Console and make sure the number is configured in the Region where you want to send messages.\n* If you use a Twilio server-side SDK, set both `edge` and `region` so the client targets the intended Region instead of falling back to `US1`.",
    "description": "This error occurs when the `From` phone number's regional configuration doesn't match the Twilio Region used for the outbound Messaging API request. Phone numbers are configured for `US1` by default.",
    "date_created": "2025-11-11T14:17:23.463Z",
    "last_updated": "2026-06-24T14:36:58+01:00"
  },
  {
    "code": 21664,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'FallbackFrom' cannot be used with a 'From' sender",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou can't use `FallbackFrom` when `From` is set to a specific phone number or RCS Sender. To use `FallbackFrom`, send the message with `MessagingServiceSid` so Twilio can select the RCS Sender from the Messaging Service's Sender Pool.\n\n### Possible causes\n\n- You sent both `FallbackFrom` and `From` in the same request, and `From` contains an `E.164` phone number such as `+15105550100`.\n- You sent both `FallbackFrom` and `From` in the same request, and `From` contains an RCS Sender such as `rcs:sender_id`.\n- You used `FallbackFrom` without routing the message through a Messaging Service. `FallbackFrom` only works with `MessagingServiceSid`.\n\n### Possible solutions\n\n- If you want native RCS fallback, remove `From` and send the message with `MessagingServiceSid` plus `FallbackFrom`.\n- If you want to send without RCS fallback, remove `FallbackFrom` and use `From` only. For direct RCS sending without fallback, set `From` to the RCS Sender ID and set `To` to the recipient's `rcs:` address.\n- If you need a specific fallback sender, provide it in `FallbackFrom` and make sure it belongs to the same Account SID. The fallback sender must be a Twilio phone number in `E.164` format, an alphanumeric sender ID, or a short code.\n- If you are passing a Messaging Service SID in `From`, move that value to `MessagingServiceSid`. This is the recommended way to combine Messaging Service sender selection with `FallbackFrom`.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services#specify-a-fallback-sms-or-mms-sender)\n- [Send and receive RCS messages](/docs/rcs/send-an-rcs-message#send-an-rcs-message-without-automatic-fallback-to-sms-or-mms)\n",
    "causes": "* You sent both `FallbackFrom` and `From` in the same request, and `From` contains an `E.164` phone number such as `+15105550100`.\n* You sent both `FallbackFrom` and `From` in the same request, and `From` contains an RCS Sender such as `rcs:sender_id`.\n* You used `FallbackFrom` without routing the message through a Messaging Service. `FallbackFrom` only works with `MessagingServiceSid`.",
    "solutions": "* If you want native RCS fallback, remove `From` and send the message with `MessagingServiceSid` plus `FallbackFrom`.\n* If you want to send without RCS fallback, remove `FallbackFrom` and use `From` only. For direct RCS sending without fallback, set `From` to the RCS Sender ID and set `To` to the recipient's `rcs:` address.\n* If you need a specific fallback sender, provide it in `FallbackFrom` and make sure it belongs to the same Account SID. The fallback sender must be a Twilio phone number in `E.164` format, an alphanumeric sender ID, or a short code.\n* If you are passing a Messaging Service SID in `From`, move that value to `MessagingServiceSid`. This is the recommended way to combine Messaging Service sender selection with `FallbackFrom`.",
    "description": "You can't use `FallbackFrom` when `From` is set to a specific phone number or RCS Sender. To use `FallbackFrom`, send the message with `MessagingServiceSid` so Twilio can select the RCS Sender from the Messaging Service's Sender Pool.",
    "date_created": "2026-03-03T11:44:46-08:00",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 21665,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid 'FallbackFrom' sender",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe `FallbackFrom` parameter must be a valid SMS or MMS sender. Use a Twilio phone number in `E.164` format, an alphanumeric sender ID, or a short code that belongs to the Account SID creating the message. `FallbackFrom` is used only for RCS fallback with a `MessagingServiceSid`.\n\n### Possible causes\n\n- `FallbackFrom` contains a phone number that isn't in `E.164` format, such as `15105550100` instead of `+15105550100`.\n- `FallbackFrom` contains unsupported phone number formatting, such as spaces or parentheses.\n- `FallbackFrom` contains a phone number, alphanumeric sender ID, or short code that isn't hosted within Twilio or doesn't belong to the same Account SID that is creating the message.\n- `FallbackFrom` uses an RCS sender value such as `rcs:sender_id` instead of an SMS or MMS sender.\n\n### Possible solutions\n\n- Pass a valid SMS or MMS sender in `FallbackFrom`. Use a Twilio phone number in `E.164` format, an alphanumeric sender ID, or a short code.\n- Remove extra formatting characters from phone numbers before sending the request.\n- Use a sender that belongs to the same Account SID that is creating the message. The sender doesn't need to be in the Messaging Service sender pool.\n- Do not pass an RCS sender in `FallbackFrom`. Let the Messaging Service select the RCS sender automatically and use `FallbackFrom` only for the SMS or MMS fallback sender.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n- [What is E.164?](/docs/glossary/what-e164)\n",
    "causes": "* `FallbackFrom` contains a phone number that isn't in `E.164` format, such as `15105550100` instead of `+15105550100`.\n* `FallbackFrom` contains unsupported phone number formatting, such as spaces or parentheses.\n* `FallbackFrom` contains a phone number, alphanumeric sender ID, or short code that isn't hosted within Twilio or doesn't belong to the same Account SID that is creating the message.\n* `FallbackFrom` uses an RCS sender value such as `rcs:sender_id` instead of an SMS or MMS sender.",
    "solutions": "* Pass a valid SMS or MMS sender in `FallbackFrom`. Use a Twilio phone number in `E.164` format, an alphanumeric sender ID, or a short code.\n* Remove extra formatting characters from phone numbers before sending the request.\n* Use a sender that belongs to the same Account SID that is creating the message. The sender doesn't need to be in the Messaging Service sender pool.\n* Do not pass an RCS sender in `FallbackFrom`. Let the Messaging Service select the RCS sender automatically and use `FallbackFrom` only for the SMS or MMS fallback sender.",
    "description": "The `FallbackFrom` parameter must be a valid SMS or MMS sender. Use a Twilio phone number in `E.164` format, an alphanumeric sender ID, or a short code that belongs to the Account SID creating the message. `FallbackFrom` is used only for RCS fallback with a `MessagingServiceSid`.",
    "date_created": "2026-03-03T11:44:46-08:00",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 21666,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'FallbackFrom' requires MessagingServiceSid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nWhen you use `FallbackFrom`, also provide `MessagingServiceSid`. `FallbackFrom` sets the SMS or MMS sender Twilio uses if an RCS message can't be delivered over RCS. This parameter works only with a Messaging Service.\n\n### Possible causes\n\n- Your request included `FallbackFrom` but didn't include `MessagingServiceSid`.\n- Your request used `FallbackFrom` with `From` instead of sending through a Messaging Service.\n- Your application attempted to set an RCS fallback sender without routing the message through a Messaging Service.\n\n### Possible solutions\n\n- Add `MessagingServiceSid` to the request when you use `FallbackFrom`.\n- Send the message through a Messaging Service that you use for RCS messaging.\n- If you don't need RCS fallback, remove `FallbackFrom` and send with `From` or `MessagingServiceSid` alone.\n- Verify that the fallback sender you specify in `FallbackFrom` is an SMS- or MMS-capable sender that belongs to the same Account SID.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n- [Send and receive RCS messages](/docs/rcs/send-an-rcs-message)\n",
    "causes": "* Your request included `FallbackFrom` but didn't include `MessagingServiceSid`.\n* Your request used `FallbackFrom` with `From` instead of sending through a Messaging Service.\n* Your application attempted to set an RCS fallback sender without routing the message through a Messaging Service.",
    "solutions": "* Add `MessagingServiceSid` to the request when you use `FallbackFrom`.\n* Send the message through a Messaging Service that you use for RCS messaging.\n* If you don't need RCS fallback, remove `FallbackFrom` and send with `From` or `MessagingServiceSid` alone.\n* Verify that the fallback sender you specify in `FallbackFrom` is an SMS- or MMS-capable sender that belongs to the same Account SID.",
    "description": "When you use `FallbackFrom`, also provide `MessagingServiceSid`. `FallbackFrom` sets the SMS or MMS sender Twilio uses if an RCS message can't be delivered over RCS. This parameter works only with a Messaging Service.",
    "date_created": "2026-03-03T11:44:46-08:00",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 21667,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'FallbackFrom' requires the Messaging Service to have an RCS Sender",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n`FallbackFrom` requires the Messaging Service to have at least one RCS Sender in its sender pool. `FallbackFrom` identifies the SMS or MMS sender that Twilio uses if RCS delivery fails.\n\n### Possible causes\n\n- The Messaging Service referenced by `MessagingServiceSid` has no RCS Sender in its sender pool.\n- An incorrect `MessagingServiceSid` was provided (e.g., a Messaging Service configured for SMS-only use).\n- The RCS Sender was removed from the Messaging Service sender pool after the integration was set up.\n\n### Possible solutions\n\n- Add an RCS Sender to the Messaging Service sender pool in the [Twilio Console](https://console.twilio.com).\n- Verify that the correct `MessagingServiceSid` is being used.\n- If RCS is not needed, remove `FallbackFrom` and send using the Messaging Service or `From` parameter without it.\n",
    "causes": "* The Messaging Service referenced by `MessagingServiceSid` has no RCS Sender in its sender pool.\n* An incorrect `MessagingServiceSid` was provided (e.g., a Messaging Service configured for SMS-only use).\n* The RCS Sender was removed from the Messaging Service sender pool after the integration was set up.",
    "solutions": "* Add an RCS Sender to the Messaging Service sender pool in the [Twilio Console](https://console.twilio.com).\n* Verify that the correct `MessagingServiceSid` is being used.\n* If RCS is not needed, remove `FallbackFrom` and send using the Messaging Service or `From` parameter without it.",
    "description": "`FallbackFrom` requires the Messaging Service to have at least one RCS Sender in its sender pool. `FallbackFrom` identifies the SMS or MMS sender that Twilio uses if RCS delivery fails.",
    "date_created": "2026-03-03T11:44:46-08:00",
    "last_updated": "2026-03-20T12:05:11-07:00"
  },
  {
    "code": 21668,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone number type is not supported for messaging in the Ireland (IE1) region.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you attempt to set the `messagingRegion` to `ie1` for a phone number type that is not supported in the Ireland (IE1) region.\n\n### Possible causes\n\nAttempting to set `messagingRegion` to `ie1` for a North American (+1) long code phone number.\n\n### Possible solutions\n\n- Use a supported sender type for the Ireland (IE1) region, such as any other country code number, a short code, or an Alphanumeric Sender ID.\n- Use the United States (US1) region for North American (+1) *10-digit long code* (10DLC) phone numbers.\n",
    "causes": "Attempting to set `messagingRegion` to `ie1` for a North American (+1) long code phone number.",
    "solutions": "* Use a supported sender type for the Ireland (IE1) region, such as any other country code number, a short code, or an Alphanumeric Sender ID.\n* Use the United States (US1) region for North American (+1) *10-digit long code* (10DLC) phone numbers.",
    "description": "This error occurs when you attempt to set the `messagingRegion` to `ie1` for a phone number type that is not supported in the Ireland (IE1) region.",
    "date_created": "2026-06-12T15:09:34+04:00",
    "last_updated": "2026-10-05T17:25:30+01:00"
  },
  {
    "code": 21669,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone number region does not match the Messaging Service region",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to add a phone number to a Messaging Service, but the phone number's regional configuration doesn't match the region of the Messaging Service. Phone numbers are configured for `US1` by default.\n\n### Possible causes\n\n- The phone number is configured for `US1`, but you are trying to add it to a Messaging Service in the `IE1` region.\n- The phone number is configured for `IE1`, but you are trying to add it to a Messaging Service in the `US1` region.\n\n### Possible solutions\n\n- Update the phone number's messaging region to match the Messaging Service's region before adding it.\n- Add the phone number to a Messaging Service that matches the phone number's current regional configuration.\n\n#### Additional resources\n\n- [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions)\n- [Use the Programmable Messaging API with Twilio Regions](/docs/global-infrastructure/messaging-api-with-twilio-regions)\n- [Phone Number Regional Configuration API](/docs/global-infrastructure/inbound-processing-api#v3-region-configuration-api)\n",
    "causes": "* The phone number is configured for `US1`, but you are trying to add it to a Messaging Service in the `IE1` region.\n* The phone number is configured for `IE1`, but you are trying to add it to a Messaging Service in the `US1` region.",
    "solutions": "* Update the phone number's messaging region to match the Messaging Service's region before adding it.\n* Add the phone number to a Messaging Service that matches the phone number's current regional configuration.",
    "description": "This error occurs when you try to add a phone number to a Messaging Service, but the phone number's regional configuration doesn't match the region of the Messaging Service. Phone numbers are configured for `US1` by default.",
    "date_created": "2026-07-15T22:14:07+01:00",
    "last_updated": "2026-07-15T22:14:07+01:00"
  },
  {
    "code": 21670,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media is not supported for messaging in this Twilio region.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create a message with media in the Ireland (IE1) region. IE1 does not support sending media messages.\n\n### Possible causes\n\n- You included the `MediaUrl` parameter when you created a Message in IE1.\n\n### Possible solutions\n\n- Remove `MediaUrl` from the request and create the message with the `Body` parameter instead.\n- Use the United States (US1) region to send media messages.\n\n#### Additional resources\n\n- [Messaging features in Ireland (IE1)](/docs/global-infrastructure/messaging-eu-feature-availability)\n- [Use the Programmable Messaging API with Twilio Regions](/docs/global-infrastructure/messaging-api-with-twilio-regions)\n- [Message resource](/docs/messaging/api/message-resource)\n",
    "causes": "* You included the `MediaUrl` parameter when you created a Message in IE1.",
    "solutions": "* Remove `MediaUrl` from the request and create the message with the `Body` parameter instead.\n* Use the United States (US1) region to send media messages.",
    "description": "This error occurs when you create a message with media in the Ireland (IE1) region. IE1 does not support sending media messages.",
    "date_created": "2026-10-01T16:38:55+01:00",
    "last_updated": "2026-10-01T16:38:55+01:00"
  },
  {
    "code": 21671,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Content Templates are not supported for messaging in this Twilio region.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create a message with a Content Template in the Ireland (IE1) region. IE1 does not support sending Content Template messages.\n\n### Possible causes\n\n- You included the `ContentSid` parameter when you created a Message in IE1.\n- You included the `ContentVariables` parameter when you created a Message in IE1.\n\n### Possible solutions\n\n- Remove `ContentSid` and `ContentVariables` from the request and create the message with the `Body` parameter instead.\n- Use the United States (US1) region to send Content Template messages.\n\n#### Additional resources\n\n- [Messaging features in Ireland (IE1)](/docs/global-infrastructure/messaging-eu-feature-availability)\n- [Use the Programmable Messaging API with Twilio Regions](/docs/global-infrastructure/messaging-api-with-twilio-regions)\n- [Message resource](/docs/messaging/api/message-resource)\n",
    "causes": "* You included the `ContentSid` parameter when you created a Message in IE1.\n* You included the `ContentVariables` parameter when you created a Message in IE1.",
    "solutions": "* Remove `ContentSid` and `ContentVariables` from the request and create the message with the `Body` parameter instead.\n* Use the United States (US1) region to send Content Template messages.",
    "description": "This error occurs when you create a message with a Content Template in the Ireland (IE1) region. IE1 does not support sending Content Template messages.",
    "date_created": "2026-10-01T16:38:55+01:00",
    "last_updated": "2026-10-01T16:38:55+01:00"
  },
  {
    "code": 21701,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Messaging Service does not exist",
    "secondary_message": "The Messaging Service resource you are referencing does not exist",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Messaging Service resource you are referencing does not exist or does not match the `Account SID` in the API Request.\n\n### Possible causes\n\n- The Messaging Service resource you are referencing does not exist.\n- The Messaging Service resource you are referencing does not belong to the Account SID in your API Request.\n\n### Possible solutions\n\n- Double check the `Messaging Service SID` and `Account SID` parameters that you are using. You can find the Messaging Service SID in the [Twilio Console](https://console.twilio.com/us1/develop/sms/services) (beginning with MG).\n",
    "causes": "* The Messaging Service resource you are referencing does not exist.\n* The Messaging Service resource you are referencing does not belong to the Account SID in your API Request.",
    "solutions": "* Double check the `Messaging Service SID` and `Account SID` parameters that you are using. You can find the Messaging Service SID in the [Twilio Console](https://console.twilio.com/us1/develop/sms/services) (beginning with MG).",
    "description": "The Messaging Service resource you are referencing does not exist or does not match the `Account SID` in the API Request.",
    "date_created": "2016-03-31T17:14:29Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21702,
    "log_level": "ERROR",
    "log_type": null,
    "message": "The Messaging Service is not available to send new messages",
    "secondary_message": "The Messaging Service is not available to send new messages",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Messaging Service is not available to send new messages.\n\n### Possible solutions\n\n- Retry your API call\n",
    "causes": null,
    "solutions": "* Retry your API call",
    "description": "The Messaging Service is not available to send new messages.",
    "date_created": "2016-03-31T17:14:29Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 21703,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Messaging Service does not have a phone number available to send a message",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Messaging Service has senders in its sender pool, but none of them can send the requested message or media to the recipient. When you send with `MessagingServiceSid`, Twilio accepts the request, selects a sender based on destination and sender capabilities, and fails the message if no eligible sender is available.\n\n### Possible causes\n\n- You are sending to a United States or Canada mobile number, but your Messaging Service does not contain a United States or Canada phone number or short code. Twilio does not use phone numbers from outside the United States or Canada to reach mobile recipients in those countries.\n- Your Messaging Service only contains a short code, and that short code cannot reach the recipient. This can happen when the recipient is in a different country from the short code or the carrier does not support short code messaging.\n- You are sending MMS, but your Messaging Service does not contain a United States or Canada long code or an MMS-enabled short code. Twilio supports MMS on short codes only where MMS short code support is available.\n- Your Messaging Service only contains an Alphanumeric Sender ID, and the destination country does not support Alphanumeric Sender ID. Some countries also require preregistration before you can send with that sender type.\n- You are sending to a United States mobile number with a 10DLC sender that is not associated with a verified A2P campaign. Messaging Services used for A2P 10DLC campaigns must include the phone numbers you plan to use in the sender pool, and unregistered numbers are not associated with a verified campaign.\n- You recently added a sender to the Messaging Service, but registration or number association is still pending. Twilio notes that newly added numbers can take time to become available for sending in some registration flows.\n\n### Possible solutions\n\n- Add a sender to the Messaging Service that supports the destination country and the message type you are sending. You can add phone numbers in Console or by using the Services PhoneNumbers API.\n- If you send to recipients in the United States or Canada, add a compatible sender from that region. Do not rely on phone numbers from outside the United States or Canada for delivery to mobile numbers in those countries.\n- If you send MMS, use a United States or Canada long code or enable MMS on your short code before sending media.\n- If you use Alphanumeric Sender ID, confirm that the destination country supports it and complete preregistration when required. If you need fallback for unsupported countries, add a compatible phone number to the same Messaging Service.\n- If you send to United States recipients over 10DLC, register your brand and campaign, associate the campaign with a Messaging Service, and add the phone numbers you plan to use to that Messaging Service before sending.\n- If you recently added a sender and it is not yet available through the Messaging Service, send temporarily with an explicit `From` value that names an eligible sender instead of relying on `MessagingServiceSid`. Then retry the Messaging Service flow after registration is complete.\n\n#### Additional resources\n\n- [Messaging Services](/docs/messaging/services)\n- [Services PhoneNumbers subresource](/docs/messaging/api/phonenumber-resource)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting A2P Phone Number registration issues](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-a2p-phone-number-registration-issues)\n",
    "causes": "* You are sending to a United States or Canada mobile number, but your Messaging Service does not contain a United States or Canada phone number or short code. Twilio does not use phone numbers from outside the United States or Canada to reach mobile recipients in those countries.\n* Your Messaging Service only contains a short code, and that short code cannot reach the recipient. This can happen when the recipient is in a different country from the short code or the carrier does not support short code messaging.\n* You are sending MMS, but your Messaging Service does not contain a United States or Canada long code or an MMS-enabled short code. Twilio supports MMS on short codes only where MMS short code support is available.\n* Your Messaging Service only contains an Alphanumeric Sender ID, and the destination country does not support Alphanumeric Sender ID. Some countries also require preregistration before you can send with that sender type.\n* You are sending to a United States mobile number with a 10DLC sender that is not associated with a verified A2P campaign. Messaging Services used for A2P 10DLC campaigns must include the phone numbers you plan to use in the sender pool, and unregistered numbers are not associated with a verified campaign.\n* You recently added a sender to the Messaging Service, but registration or number association is still pending. Twilio notes that newly added numbers can take time to become available for sending in some registration flows.",
    "solutions": "* Add a sender to the Messaging Service that supports the destination country and the message type you are sending. You can add phone numbers in Console or by using the Services PhoneNumbers API.\n* If you send to recipients in the United States or Canada, add a compatible sender from that region. Do not rely on phone numbers from outside the United States or Canada for delivery to mobile numbers in those countries.\n* If you send MMS, use a United States or Canada long code or enable MMS on your short code before sending media.\n* If you use Alphanumeric Sender ID, confirm that the destination country supports it and complete preregistration when required. If you need fallback for unsupported countries, add a compatible phone number to the same Messaging Service.\n* If you send to United States recipients over 10DLC, register your brand and campaign, associate the campaign with a Messaging Service, and add the phone numbers you plan to use to that Messaging Service before sending.\n* If you recently added a sender and it is not yet available through the Messaging Service, send temporarily with an explicit `From` value that names an eligible sender instead of relying on `MessagingServiceSid`. Then retry the Messaging Service flow after registration is complete.",
    "description": "This error occurs when your Messaging Service has senders in its sender pool, but none of them can send the requested message or media to the recipient. When you send with `MessagingServiceSid`, Twilio accepts the request, selects a sender based on destination and sender capabilities, and fails the message if no eligible sender is available.",
    "date_created": "2016-03-31T17:14:29Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21704,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Messaging Service contains no phone numbers",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a message with a `MessagingServiceSid`, but the Messaging Service has no available senders in its Sender Pool. To send with a Messaging Service, add at least one phone number, Alphanumeric Sender ID, or short code so Twilio can select a `From` sender for delivery.\n\n### Possible causes\n\n- The Messaging Service was created, but no sender was added to its Sender Pool.\n- All senders were removed from the Messaging Service, leaving no phone number, short code, or Alphanumeric Sender ID available for outbound messaging.\n- Your application sends with `MessagingServiceSid` and does not provide a specific `From` sender, but the Messaging Service has no sender for Twilio to choose.\n- You expected an Alphanumeric Sender ID to be used, but it has not been added to the Messaging Service or enabled for your account.\n\n### Possible solutions\n\n- Add at least one Twilio phone number to the Messaging Service Sender Pool in Console, or add one with the PhoneNumbers subresource.\n- If your use case requires a short code, provision one and add it to the Messaging Service so it can be selected for delivery.\n- If you send one-way SMS to a supported country, enable Alphanumeric Sender ID for your account and add it to the Messaging Service. Alphanumeric Sender ID is not supported in every country and is not available in the United States or Canada.\n- Verify that the Messaging Service shows at least one sender in its Sender Pool before retrying the message. If you want to use a specific sender, include a `From` value that belongs to that Sender Pool.\n\n#### Additional resources\n\n- [Messaging Services](/docs/messaging/services)\n- [Services PhoneNumbers subresource](/docs/messaging/api/phonenumber-resource)\n- [Alphanumeric Sender IDs in Messaging Services](/docs/messaging/services/alphanumeric-sender-ids-in-messaging-services)\n",
    "causes": "* The Messaging Service was created, but no sender was added to its Sender Pool.\n* All senders were removed from the Messaging Service, leaving no phone number, short code, or Alphanumeric Sender ID available for outbound messaging.\n* Your application sends with `MessagingServiceSid` and does not provide a specific `From` sender, but the Messaging Service has no sender for Twilio to choose.\n* You expected an Alphanumeric Sender ID to be used, but it has not been added to the Messaging Service or enabled for your account.",
    "solutions": "* Add at least one Twilio phone number to the Messaging Service Sender Pool in Console, or add one with the PhoneNumbers subresource.\n* If your use case requires a short code, provision one and add it to the Messaging Service so it can be selected for delivery.\n* If you send one-way SMS to a supported country, enable Alphanumeric Sender ID for your account and add it to the Messaging Service. Alphanumeric Sender ID is not supported in every country and is not available in the United States or Canada.\n* Verify that the Messaging Service shows at least one sender in its Sender Pool before retrying the message. If you want to use a specific sender, include a `From` value that belongs to that Sender Pool.",
    "description": "This error occurs when you send a message with a `MessagingServiceSid`, but the Messaging Service has no available senders in its Sender Pool. To send with a Messaging Service, add at least one phone number, Alphanumeric Sender ID, or short code so Twilio can select a `From` sender for delivery.",
    "date_created": "2016-03-31T17:14:30Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 21705,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Messaging Service is invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `MessagingServiceSid` in your request is not a valid Messaging Service SID. When you send a message with a Messaging Service, include `MessagingServiceSid` instead of a `From` number when appropriate. The value must be a Messaging Service SID that starts with `MG` and matches the expected SID pattern `^MG[0-9a-fA-F]{32}$`.\n\n### Possible causes\n\n- The `MessagingServiceSid` value does not start with `MG` or does not match the required SID pattern `^MG[0-9a-fA-F]{32}$`.\n- You supplied a SID for a different Twilio resource instead of a Messaging Service SID. Twilio resource SIDs are identified by their prefixes, and Messaging Service SIDs use the `MG` prefix.\n- The SID was copied incorrectly when you added it to the request. Messaging Service SIDs are 34 characters long and are shown when you create or manage a Messaging Service.\n\n### Possible solutions\n\n- Update the request to use a valid `MessagingServiceSid` that starts with `MG` and matches `^MG[0-9a-fA-F]{32}$`.\n- Copy the Messaging Service SID directly from Messaging > Services in the Twilio Console, then resend the request with that exact value.\n- If you just created the Messaging Service, use the SID returned for that service and confirm that you are passing the service SID, not another resource SID.\n\n#### Additional resources\n\n- [Messaging Services overview](/docs/messaging/services)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Get started with Messaging Services](/docs/messaging/tutorials/send-messages-with-messaging-services)\n",
    "causes": "* The `MessagingServiceSid` value does not start with `MG` or does not match the required SID pattern `^MG[0-9a-fA-F]{32}$`.\n* You supplied a SID for a different Twilio resource instead of a Messaging Service SID. Twilio resource SIDs are identified by their prefixes, and Messaging Service SIDs use the `MG` prefix.\n* The SID was copied incorrectly when you added it to the request. Messaging Service SIDs are 34 characters long and are shown when you create or manage a Messaging Service.",
    "solutions": "* Update the request to use a valid `MessagingServiceSid` that starts with `MG` and matches `^MG[0-9a-fA-F]{32}$`.\n* Copy the Messaging Service SID directly from Messaging > Services in the Twilio Console, then resend the request with that exact value.\n* If you just created the Messaging Service, use the SID returned for that service and confirm that you are passing the service SID, not another resource SID.",
    "description": "This error occurs when the `MessagingServiceSid` in your request is not a valid Messaging Service SID. When you send a message with a Messaging Service, include `MessagingServiceSid` instead of a `From` number when appropriate. The value must be a Messaging Service SID that starts with `MG` and matches the expected SID pattern `^MG[0-9a-fA-F]{32}$`.",
    "date_created": "2016-03-31T17:14:30Z",
    "last_updated": "2026-04-17T12:01:11+01:00"
  },
  {
    "code": 21708,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Alpha Sender ID Missing from the request",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n### Alpha Sender ID Missing from the request\n\n### Possible causes\n\n- Ensure that a request contains an alphasender in it\n\n### Possible solutions\n\nInclude an alphasender in the request.\n",
    "causes": "* Ensure that a request contains an alphasender in it",
    "solutions": "Include an alphasender in the request.",
    "description": "",
    "date_created": "2022-12-28T02:01:45Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21709,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Alpha Sender ID is Invalid or Not Authorized for this Messaging Service",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Alpha Sender ID being added to a Messaging Service is invalid or Alpha Sender IDs have not been enabled for this Messaging Service.\n\n### Possible causes\n\n- The Messaging Service is not enabled to support Alpha Sender IDs.\n- The Alpha Sender ID being added to a Messaging Service is invalid. Alphanumeric Sender IDs may be up to 11 characters. They may not be only numbers. Refer to [this page](https://support.twilio.com/hc/en-us/articles/223133867-Using-Alphanumeric-Sender-ID-with-Messaging-Services) for acceptable characters.\n\n### Possible solutions\n\n- Follow [these steps](https://support.twilio.com/hc/en-us/articles/223181348-Alphanumeric-Sender-ID-for-Twilio-Programmable-SMS#h_01F4SK0WYHA75NK1DNXGTCFMP8) to verify your Messaging Service is enabled to support Alpha Sender IDs. If it is not, please reach out to Support.\n- Verify the Alpha Sender ID you are trying to add to the Messaging Service is valid. View formatting requirements [here](https://support.twilio.com/hc/en-us/articles/223181348-Alphanumeric-Sender-ID-for-Twilio-Programmable-SMS#h_01F4SK0R6NH8AQW36Y4BR16FVA).\n",
    "causes": "* The Messaging Service is not enabled to support Alpha Sender IDs.\n* The Alpha Sender ID being added to a Messaging Service is invalid. Alphanumeric Sender IDs may be up to 11 characters. They may not be only numbers. Refer to [this page](https://support.twilio.com/hc/en-us/articles/223133867-Using-Alphanumeric-Sender-ID-with-Messaging-Services) for acceptable characters.",
    "solutions": "* Follow [these steps](https://support.twilio.com/hc/en-us/articles/223181348-Alphanumeric-Sender-ID-for-Twilio-Programmable-SMS#h_01F4SK0WYHA75NK1DNXGTCFMP8) to verify your Messaging Service is enabled to support Alpha Sender IDs. If it is not, please reach out to Support.\n* Verify the Alpha Sender ID you are trying to add to the Messaging Service is valid. View formatting requirements [here](https://support.twilio.com/hc/en-us/articles/223181348-Alphanumeric-Sender-ID-for-Twilio-Programmable-SMS#h_01F4SK0R6NH8AQW36Y4BR16FVA).",
    "description": "The Alpha Sender ID being added to a Messaging Service is invalid or Alpha Sender IDs have not been enabled for this Messaging Service.",
    "date_created": "2021-05-27T17:43:31Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21710,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Phone Number Already Exists in Messaging Service",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning occurs when you try to add a phone number, short code, or alpha sender ID that's already associated with the same Messaging Service Sender Pool.\n\n### Possible causes\n\n- You sent multiple requests to add the same phone number, short code, or alpha sender ID to the Messaging Service.\n- The sender was already added to the Messaging Service at an earlier time.\n- Your application retried a previous add request after the sender was already associated with the Service.\n\n### Possible solutions\n\n- If the sender is already associated with the correct Messaging Service, no action is required.\n- Check the Messaging Service Sender Pool before retrying the add request.\n- If the sender should be recreated, remove the existing phone number, short code, or alpha sender ID from the Messaging Service and then add the sender again.\n- Update your application logic to avoid sending duplicate create requests for the same sender.\n\n#### Additional resources\n\n- [Services PhoneNumbers subresource](/docs/messaging/api/phonenumber-resource)\n- [ShortCodes subresource](/docs/messaging/api/services-shortcode-resource)\n- [AlphaSenders subresource](/docs/messaging/api/alphasender-resource)\n",
    "causes": "* You sent multiple requests to add the same phone number, short code, or alpha sender ID to the Messaging Service.\n* The sender was already added to the Messaging Service at an earlier time.\n* Your application retried a previous add request after the sender was already associated with the Service.",
    "solutions": "* If the sender is already associated with the correct Messaging Service, no action is required.\n* Check the Messaging Service Sender Pool before retrying the add request.\n* If the sender should be recreated, remove the existing phone number, short code, or alpha sender ID from the Messaging Service and then add the sender again.\n* Update your application logic to avoid sending duplicate create requests for the same sender.",
    "description": "This warning occurs when you try to add a phone number, short code, or alpha sender ID that's already associated with the same Messaging Service Sender Pool.",
    "date_created": "2021-05-27T17:51:26Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 21711,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Sender is not associated with the specified Messaging Service",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou tried to use a phone number, short code, or Alphanumeric Sender ID with a `MessagingServiceSid`, but that sender is not associated with the Messaging Service you provided. When you send with both `MessagingServiceSid` and `From`, the `From` value must come from that service's Sender Pool. If you omit `From`, Twilio selects an eligible sender from the Sender Pool for you.\n\n### Possible causes\n\n- You included both `MessagingServiceSid` and `From`, but the `From` value is not in that Messaging Service's Sender Pool.\n- The sender was never added to the Messaging Service.\n- You are trying to send with a sender type that must first be associated with the Messaging Service, such as a phone number, short code, or Alphanumeric Sender ID.\n\n### Possible solutions\n\n- Add the sender you want to use to the Messaging Service Sender Pool. You can add phone numbers, short codes, and Alphanumeric Sender IDs to a Messaging Service by associating those resources with the service.\n- If you send with both `MessagingServiceSid` and `From`, update `From` so it matches a sender that is already associated with that Messaging Service.\n- If you do not need to force a specific sender, remove the `From` parameter and let Twilio choose an eligible sender from the Messaging Service's Sender Pool.\n- If the Messaging Service does not have a sender configured yet, add at least one sender before retrying the request.\n\n#### Additional resources\n\n- [Get started with Messaging Services](/docs/messaging/tutorials/send-messages-with-messaging-services)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Services PhoneNumbers subresource](/docs/messaging/api/phonenumber-resource)\n",
    "causes": "* You included both `MessagingServiceSid` and `From`, but the `From` value is not in that Messaging Service's Sender Pool.\n* The sender was never added to the Messaging Service.\n* You are trying to send with a sender type that must first be associated with the Messaging Service, such as a phone number, short code, or Alphanumeric Sender ID.",
    "solutions": "* Add the sender you want to use to the Messaging Service Sender Pool. You can add phone numbers, short codes, and Alphanumeric Sender IDs to a Messaging Service by associating those resources with the service.\n* If you send with both `MessagingServiceSid` and `From`, update `From` so it matches a sender that is already associated with that Messaging Service.\n* If you do not need to force a specific sender, remove the `From` parameter and let Twilio choose an eligible sender from the Messaging Service's Sender Pool.\n* If the Messaging Service does not have a sender configured yet, add at least one sender before retrying the request.",
    "description": "You tried to use a phone number, short code, or Alphanumeric Sender ID with a `MessagingServiceSid`, but that sender is not associated with the Messaging Service you provided. When you send with both `MessagingServiceSid` and `From`, the `From` value must come from that service's Sender Pool. If you omit `From`, Twilio selects an eligible sender from the Sender Pool for you.",
    "date_created": "2022-12-27T21:07:17Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 21712,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Phone Number or Short Code is associated with another Messaging Service.",
    "secondary_message": "You have tried to assign a Twilio phone number or short code to a Messaging Service, but the number is already associated with a different Messaging Service.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when you try to add a phone number or short code to a Messaging Service and that sender is already associated with another Messaging Service. A sender can belong to only one Messaging Service at a time. Remove it from the existing Service before you add it to the new one. Removing it from a Service does not release the number from your account.\n\n### Possible causes\n\n- The phone number or short code is already attached to a different Messaging Service.\n- The sender is still present in the existing Service's PhoneNumbers or ShortCodes subresource when you try to add it elsewhere.\n\n### Possible solutions\n\n- Remove the phone number from the existing Messaging Service with the PhoneNumbers subresource, or remove the short code with the ShortCodes subresource, before you add it to the target Service.\n- If you are managing the sender in the Twilio Console, remove it from the existing Service's Sender Pool and then add it to the target Service.\n- If you need to fully disassociate the sender from your account, release the phone number or cancel the short code from your Account. Removing it from the Service alone does not release it.\n\n#### Additional resources\n\n- [Services PhoneNumbers subresource](/docs/messaging/api/phonenumber-resource)\n- [ShortCodes subresource](/docs/messaging/api/services-shortcode-resource)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The phone number or short code is already attached to a different Messaging Service.\n* The sender is still present in the existing Service's PhoneNumbers or ShortCodes subresource when you try to add it elsewhere.",
    "solutions": "* Remove the phone number from the existing Messaging Service with the PhoneNumbers subresource, or remove the short code with the ShortCodes subresource, before you add it to the target Service.\n* If you are managing the sender in the Twilio Console, remove it from the existing Service's Sender Pool and then add it to the target Service.\n* If you need to fully disassociate the sender from your account, release the phone number or cancel the short code from your Account. Removing it from the Service alone does not release it.",
    "description": "Twilio returns this error when you try to add a phone number or short code to a Messaging Service and that sender is already associated with another Messaging Service. A sender can belong to only one Messaging Service at a time. Remove it from the existing Service before you add it to the new one. Removing it from a Service does not release the number from your account.",
    "date_created": "2019-03-11T18:43:55Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 21713,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Messaging Service Use Case is Invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create or update a Messaging Service with a `usecase` value that isn't supported. Supported values for `usecase` are `notifications`, `marketing`, `verification`, `discussion`, `poll`, and `undeclared`.\n\n### Possible causes\n\n- The request includes a `usecase` value that isn't in the supported list.\n- The `usecase` value is misspelled or uses different casing than the supported values shown in the API reference.\n- Your application sends an internal label or another category instead of a valid Messaging Service `usecase` value.\n\n### Possible solutions\n\n- Update the request so `usecase` is exactly one of these values: `notifications`, `marketing`, `verification`, `discussion`, `poll`, or `undeclared`.\n- Check your request payload and normalize the `usecase` value before you send it so it matches a supported value exactly.\n- If your traffic doesn't fit one of the named categories, use `undeclared` for the Messaging Service `usecase`.\n\n#### Additional resources\n\n- [Service resource](/docs/messaging/api/service-resource)\n- [Get started with Messaging Services](/docs/messaging/tutorials/send-messages-with-messaging-services)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n",
    "causes": "* The request includes a `usecase` value that isn't in the supported list.\n* The `usecase` value is misspelled or uses different casing than the supported values shown in the API reference.\n* Your application sends an internal label or another category instead of a valid Messaging Service `usecase` value.",
    "solutions": "* Update the request so `usecase` is exactly one of these values: `notifications`, `marketing`, `verification`, `discussion`, `poll`, or `undeclared`.\n* Check your request payload and normalize the `usecase` value before you send it so it matches a supported value exactly.\n* If your traffic doesn't fit one of the named categories, use `undeclared` for the Messaging Service `usecase`.",
    "description": "This error occurs when you create or update a Messaging Service with a `usecase` value that isn't supported. Supported values for `usecase` are `notifications`, `marketing`, `verification`, `discussion`, `poll`, and `undeclared`.",
    "date_created": "2021-05-27T17:53:40Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 21714,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Messaging Service Number Pool size limit reached",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou have attempted to add a Twilio phone number, alpha sender, or short code to your Messaging Service Number Pool, but you are already at the limit of phone numbers or alpha senders. By default, a Messaging Service can contain up to a total of 400 Twilio phone numbers and short codes and only one Alpha Sender per country.\n\n### Possible causes\n\n- Your Messaging Service number pool is already full (default: 400 numbers)\n- You may have attempted to add more than one alpha sender for the same country to a Messaging Service or Sender Pool. Each country can only have one alpha sender assigned per Messaging Service Number Pool.\n\n### Possible solutions\n\n- If you are sending to the United States and Canada, use a [Toll-Free or short code number](https://support.twilio.com/hc/en-us/articles/360038173654-Comparison-of-SMS-messaging-in-the-US-and-Canada-for-long-codes-short-codes-and-toll-free-phone-numbers) with higher message throughput (MPS), instead of adding more local numbers. Most mobile carriers in the US and Canada do not not permit [Application-to-Person (A2P)](https://support.twilio.com/hc/en-us/articles/223133807-What-is-P2P-and-A2P-messaging-) messaging via long codes, so there is a high risk of [carrier filtering](https://support.twilio.com/hc/en-us/articles/223181848-How-Does-Carrier-Filtering-Work-) when sending this type of traffic via long code.\n- If you are sending to other countries, you may be eligible to have your Number Pool size limit increased. Please [submit a ticket](https://www.twilio.com/console/support/tickets/create) with a description of your use case and why you need a higher number pool size limit. These requests will be reviewed by our Messaging team.\n",
    "causes": "* Your Messaging Service number pool is already full (default: 400 numbers)\n* You may have attempted to add more than one alpha sender for the same country to a Messaging Service or Sender Pool. Each country can only have one alpha sender assigned per Messaging Service Number Pool.",
    "solutions": "* If you are sending to the United States and Canada, use a [Toll-Free or short code number](https://support.twilio.com/hc/en-us/articles/360038173654-Comparison-of-SMS-messaging-in-the-US-and-Canada-for-long-codes-short-codes-and-toll-free-phone-numbers) with higher message throughput (MPS), instead of adding more local numbers. Most mobile carriers in the US and Canada do not not permit [Application-to-Person (A2P)](https://support.twilio.com/hc/en-us/articles/223133807-What-is-P2P-and-A2P-messaging-) messaging via long codes, so there is a high risk of [carrier filtering](https://support.twilio.com/hc/en-us/articles/223181848-How-Does-Carrier-Filtering-Work-) when sending this type of traffic via long code.\n* If you are sending to other countries, you may be eligible to have your Number Pool size limit increased. Please [submit a ticket](https://www.twilio.com/console/support/tickets/create) with a description of your use case and why you need a higher number pool size limit. These requests will be reviewed by our Messaging team.",
    "description": "You have attempted to add a Twilio phone number, alpha sender, or short code to your Messaging Service Number Pool, but you are already at the limit of phone numbers or alpha senders. By default, a Messaging Service can contain up to a total of 400 Twilio phone numbers and short codes and only one Alpha Sender per country.",
    "date_created": "2020-06-24T20:27:13Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 21715,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone Number Does Not Have Correct Messaging Service Capabilities",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to add a phone number to a Messaging Service and that number doesn't support SMS or MMS. A phone number must have at least one of those capabilities before you can add it to a Messaging Service.\n\n### Possible causes\n\n- The phone number you are trying to add doesn't have SMS or MMS capabilities.\n- The phone number type you selected doesn't provide the messaging capability your use case requires. Twilio phone number capabilities vary by number and region.\n\n### Possible solutions\n\n- Check the phone number's capabilities on the **Active Numbers** page in Console before you add it to the Messaging Service.\n- Add only a phone number that supports SMS, MMS, or both to your Messaging Service sender pool.\n- If you need a different sender, search for an available Twilio number with the required SMS or MMS connectivity and then add that number to the Messaging Service.\n\n#### Additional resources\n\n- [Messaging Services](/docs/messaging/services)\n- [Services PhoneNumbers subresource](/docs/messaging/api/phonenumber-resource)\n- [Available Phone Numbers API](/docs/phone-numbers/api/availablephonenumber-resource)\n",
    "causes": "* The phone number you are trying to add doesn't have SMS or MMS capabilities.\n* The phone number type you selected doesn't provide the messaging capability your use case requires. Twilio phone number capabilities vary by number and region.",
    "solutions": "* Check the phone number's capabilities on the **Active Numbers** page in Console before you add it to the Messaging Service.\n* Add only a phone number that supports SMS, MMS, or both to your Messaging Service sender pool.\n* If you need a different sender, search for an available Twilio number with the required SMS or MMS connectivity and then add that number to the Messaging Service.",
    "description": "This error occurs when you try to add a phone number to a Messaging Service and that number doesn't support SMS or MMS. A phone number must have at least one of those capabilities before you can add it to a Messaging Service.",
    "date_created": "2021-05-27T17:56:03Z",
    "last_updated": "2026-09-02T09:34:08-05:00"
  },
  {
    "code": 21717,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration SID for US A2P Campaign Use Case is Not Registered or Not Valid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Brand Registration SID you are trying to use to register a new US A2P campaign use case is not registered or the Brand Registration SID is not valid for the given use case.\n\n### Possible causes\n\n- The Brand Registration SID passed in the request is not registered.\n- The Brand Registration SID passed in the request is not valid for the given use case. Only brands with a STARTER brand\\_type can create STARTER campaign use cases.\n\n### Possible solutions\n\n- Verify if the Brand Registration SID has been registered by checking the `status` field using the [Brand API](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api). If the brand has been registered, it will have a status of APPROVED. If this is the case, verify that the Brand Registration SID passed into the request matches the Brand Registration SID that has been registered and retry the request.\n- If Brand Registration has an IN\\_PROGRESS status, registration is in progress. Please wait for it to be in an APPROVED status before moving forward with US A2P campaign use case creation.\n- If Brand Registration has a REGISTRATION\\_FAILED status, you may need to correct your brand request and re-trigger Brand registration.\n- Verify the brand\\_type of the Brand by checking the `brand_type` field using the [Brand API](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api). If the brand\\_type is STARTER, the brand can only be used to create STARTER campaign use cases. If it is a STANDARD brand\\_type, the brand can be used to create any other type of campaign use case.\n\n### Additional resources\n\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Brand Registration SID passed in the request is not registered.\n* The Brand Registration SID passed in the request is not valid for the given use case. Only brands with a STARTER brand\\_type can create STARTER campaign use cases.",
    "solutions": "* Verify if the Brand Registration SID has been registered by checking the `status` field using the [Brand API](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api). If the brand has been registered, it will have a status of APPROVED. If this is the case, verify that the Brand Registration SID passed into the request matches the Brand Registration SID that has been registered and retry the request.\n* If Brand Registration has an IN\\_PROGRESS status, registration is in progress. Please wait for it to be in an APPROVED status before moving forward with US A2P campaign use case creation.\n* If Brand Registration has a REGISTRATION\\_FAILED status, you may need to correct your brand request and re-trigger Brand registration.\n* Verify the brand\\_type of the Brand by checking the `brand_type` field using the [Brand API](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api). If the brand\\_type is STARTER, the brand can only be used to create STARTER campaign use cases. If it is a STANDARD brand\\_type, the brand can be used to create any other type of campaign use case.",
    "description": "The Brand Registration SID you are trying to use to register a new US A2P campaign use case is not registered or the Brand Registration SID is not valid for the given use case.",
    "date_created": "2021-05-27T17:59:10Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21719,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Incompatible Messaging Service/A2P Use Cases",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when your request combines a Messaging Service `usecase` with a US A2P campaign use case that is not compatible with that Messaging Service. This can happen when you update a Messaging Service or when you create a new A2P campaign for an existing Messaging Service.\n\n### Possible causes\n\n- You updated the Messaging Service `usecase` to a value that is not compatible with the current A2P campaign attached to that Messaging Service.\n- You created a new A2P campaign with a `usAppToPersonUsecase` value that is not available for the selected Messaging Service.\n- You reused a Messaging Service that was configured for a different messaging scenario than the A2P campaign you are trying to register.\n\n### Possible solutions\n\n- Retrieve the compatible A2P campaign use cases for the Messaging Service before you create or update the campaign. Use `GET /Services/{MessagingServiceSid}/Compliance/Usa2p/Usecases` and submit one of the returned `code` values in `usAppToPersonUsecase`.\n- Verify that the Messaging Service `usecase` matches the traffic you plan to send. Supported Messaging Service use cases include `notifications`, `marketing`, `verification`, `discussion`, `poll`, and `undeclared`.\n- If the existing Messaging Service is meant for a different messaging intent, create a new Messaging Service with the correct `usecase` and register the A2P campaign against that new service.\n- If you are registering the campaign in Console, select a Messaging Service that is compatible with the campaign you want to create, or create a new Messaging Service during onboarding.\n\n#### Additional resources\n\n- [Messaging Services](/docs/messaging/services)\n- [A2P 10DLC Usecases subresource](/docs/messaging/api/usapptopersonusecase-resource)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* You updated the Messaging Service `usecase` to a value that is not compatible with the current A2P campaign attached to that Messaging Service.\n* You created a new A2P campaign with a `usAppToPersonUsecase` value that is not available for the selected Messaging Service.\n* You reused a Messaging Service that was configured for a different messaging scenario than the A2P campaign you are trying to register.",
    "solutions": "* Retrieve the compatible A2P campaign use cases for the Messaging Service before you create or update the campaign. Use `GET /Services/{MessagingServiceSid}/Compliance/Usa2p/Usecases` and submit one of the returned `code` values in `usAppToPersonUsecase`.\n* Verify that the Messaging Service `usecase` matches the traffic you plan to send. Supported Messaging Service use cases include `notifications`, `marketing`, `verification`, `discussion`, `poll`, and `undeclared`.\n* If the existing Messaging Service is meant for a different messaging intent, create a new Messaging Service with the correct `usecase` and register the A2P campaign against that new service.\n* If you are registering the campaign in Console, select a Messaging Service that is compatible with the campaign you want to create, or create a new Messaging Service during onboarding.",
    "description": "This error occurs when your request combines a Messaging Service `usecase` with a US A2P campaign use case that is not compatible with that Messaging Service. This can happen when you update a Messaging Service or when you create a new A2P campaign for an existing Messaging Service.",
    "date_created": "2021-06-29T16:24:24Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21720,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "A2P Use Case is Invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe `us_app_to_person_usecase` value in your A2P 10DLC Campaign request is not valid for the Messaging Service and brand you are using. When you create a `Usa2p` resource, submit one of the supported use case `code` values returned by the A2P 10DLC Usecases subresource.\n\n### Possible causes\n\n- The request includes a `us_app_to_person_usecase` value that does not match a supported use case `code`.\n- The selected use case is not available for your brand type. Standard, Low-Volume Standard, Sole Proprietor, and Special campaigns support different use case values.\n- The request uses a display name or free-form label instead of the exact API `code` value, such as `ACCOUNT_NOTIFICATION`, `LOW_VOLUME`, or `SOLE_PROPRIETOR` where applicable.\n- The campaign details do not align with the intended use case. Campaign description and sample messages must match the selected `us_app_to_person_usecase`.\n\n### Possible solutions\n\n- Retrieve the allowed use cases for the Messaging Service and brand, then resubmit the request with one returned `code` value exactly as provided.\n- Confirm your brand type before choosing a use case. Standard brands can use values such as `2FA`, `ACCOUNT_NOTIFICATION`, `CUSTOMER_CARE`, and `MARKETING`. Low-Volume Standard brands can use `LOW_VOLUME`. Sole Proprietor brands must use `SOLE_PROPRIETOR`.\n- Update your campaign registration details so the description, opt-in flow, and sample messages clearly match the selected use case.\n- If you are unsure which use case fits your traffic, review the A2P 10DLC onboarding guidance and choose the campaign type that matches the messages you actually plan to send.\n\n#### Additional resources\n\n- [A2P 10DLC Usecases subresource](/docs/messaging/api/usapptopersonusecase-resource)\n- [A2P 10DLC: Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The request includes a `us_app_to_person_usecase` value that does not match a supported use case `code`.\n* The selected use case is not available for your brand type. Standard, Low-Volume Standard, Sole Proprietor, and Special campaigns support different use case values.\n* The request uses a display name or free-form label instead of the exact API `code` value, such as `ACCOUNT_NOTIFICATION`, `LOW_VOLUME`, or `SOLE_PROPRIETOR` where applicable.\n* The campaign details do not align with the intended use case. Campaign description and sample messages must match the selected `us_app_to_person_usecase`.",
    "solutions": "* Retrieve the allowed use cases for the Messaging Service and brand, then resubmit the request with one returned `code` value exactly as provided.\n* Confirm your brand type before choosing a use case. Standard brands can use values such as `2FA`, `ACCOUNT_NOTIFICATION`, `CUSTOMER_CARE`, and `MARKETING`. Low-Volume Standard brands can use `LOW_VOLUME`. Sole Proprietor brands must use `SOLE_PROPRIETOR`.\n* Update your campaign registration details so the description, opt-in flow, and sample messages clearly match the selected use case.\n* If you are unsure which use case fits your traffic, review the A2P 10DLC onboarding guidance and choose the campaign type that matches the messages you actually plan to send.",
    "description": "The `us_app_to_person_usecase` value in your A2P 10DLC Campaign request is not valid for the Messaging Service and brand you are using. When you create a `Usa2p` resource, submit one of the supported use case `code` values returned by the A2P 10DLC Usecases subresource.",
    "date_created": "2021-06-29T16:25:31Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21721,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot import Campaign Verify token due to incompatible A2P brand",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe attempt to import a Campaign Verify token to your brand failed because your A2P brand is in an incompatible state.\n\n### Possible causes\n\n- Your A2P brand has a status of `FAILED` meaning the brand was not successfully registered\n- Your A2P brand is of type `STARTER` meaning it is a starter brand, not a standard brand\n\n### Possible solutions\n\n- Verify if the Brand Registration SID has been registered successfully by checking the `status` field using the [Brand API](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api). If the brand has been registered successfully, it will have a status of `APPROVED`. If this is the case, try to import the token again.\n- Verify that the Brand Registration SID is of the correct type by checking the `brand_type` field using the [Brand API](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api). The brand should have a type of \"STANDARD.\" If the `brand_type` is `STARTER`, the brand does not support importing a Campaign Verify token. Once you've verified that you are using a standard brand, try to import the token again\n\n### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* Your A2P brand has a status of `FAILED` meaning the brand was not successfully registered\n* Your A2P brand is of type `STARTER` meaning it is a starter brand, not a standard brand",
    "solutions": "* Verify if the Brand Registration SID has been registered successfully by checking the `status` field using the [Brand API](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api). If the brand has been registered successfully, it will have a status of `APPROVED`. If this is the case, try to import the token again.\n* Verify that the Brand Registration SID is of the correct type by checking the `brand_type` field using the [Brand API](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api). The brand should have a type of \"STANDARD.\" If the `brand_type` is `STARTER`, the brand does not support importing a Campaign Verify token. Once you've verified that you are using a standard brand, try to import the token again",
    "description": "The attempt to import a Campaign Verify token to your brand failed because your A2P brand is in an incompatible state.",
    "date_created": "2021-10-25T16:04:32Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21722,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Campaign Verify token",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe attempt to import a Campaign Verify token to your brand failed because the token is invalid. Use a full CV token that matches Campaign Verify's required format and the organization entity listed on the token. Campaign Verify tokens expire, and you can only use a CV token with one Brand.\n\n### Possible causes\n\n- The token is not formatted correctly. Campaign Verify CV tokens use 6 pipe-delimited fields, and the token must match the format exactly.\n- The token is expired. Campaign Verify tokens expire after a period of time.\n- The token has already been used with another Brand. You can only use a CV token with one Brand.\n\n### Possible solutions\n\n- Verify that you are using the full CV token and set `VettingProvider` to `CAMPAIGN_VERIFY`. Provide `VettingId` with all 6 fields, including the pipes.\n- Confirm that the token is valid for the organization entity listed on the token. If you are supporting multiple Brands, generate a unique token for each Brand.\n- If the token has expired, obtain a new Campaign Verify token and import it again.\n- If you are registering a 527 political organization, complete the Campaign Verify flow before you submit the Brand registration.\n\n#### Additional resources\n\n- [A2P 10DLC - Registration for Government and Nonprofit Agencies](/docs/messaging/compliance/a2p-10dlc/onboarding-for-government-and-non-profit-agencies)\n- [A2P 10DLC - Vettings subresource](/docs/messaging/api/brand-vetting-resource)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The token is not formatted correctly. Campaign Verify CV tokens use 6 pipe-delimited fields, and the token must match the format exactly.\n* The token is expired. Campaign Verify tokens expire after a period of time.\n* The token has already been used with another Brand. You can only use a CV token with one Brand.",
    "solutions": "* Verify that you are using the full CV token and set `VettingProvider` to `CAMPAIGN_VERIFY`. Provide `VettingId` with all 6 fields, including the pipes.\n* Confirm that the token is valid for the organization entity listed on the token. If you are supporting multiple Brands, generate a unique token for each Brand.\n* If the token has expired, obtain a new Campaign Verify token and import it again.\n* If you are registering a 527 political organization, complete the Campaign Verify flow before you submit the Brand registration.",
    "description": "The attempt to import a Campaign Verify token to your brand failed because the token is invalid. Use a full CV token that matches Campaign Verify's required format and the organization entity listed on the token. Campaign Verify tokens expire, and you can only use a CV token with one Brand.",
    "date_created": "2021-10-25T16:08:50Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21723,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Verify token import already in progress",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour request to import a Campaign Verify token failed because another Campaign Verify vetting request for the same `BrandRegistration` is already queued or processing. Twilio only imports one Campaign Verify token at a time for a Brand.\n\n### Possible causes\n\n- An existing `BrandVetting` record for the same `BrandRegistration` and `campaign-verify` provider still has `vetting_status` of `IN_PROGRESS`.\n- You submitted a new Campaign Verify token import request before the earlier request finished.\n\n### Possible solutions\n\n- Retrieve the Brand's vetting records and check for an existing `campaign-verify` vetting that is still `IN_PROGRESS`.\n- Wait for the current vetting request to move to `SUCCESS` or `FAILED` before you submit another Campaign Verify token.\n- Retry the import only after no Campaign Verify vetting for that Brand remains in `IN_PROGRESS`.\n\n#### Additional resources\n\n- [A2P 10DLC - Vettings subresource](/docs/messaging/api/brand-vetting-resource)\n- [A2P 10DLC - Registration for Government and Nonprofit Agencies](/docs/messaging/compliance/a2p-10dlc/onboarding-for-government-and-non-profit-agencies)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* An existing `BrandVetting` record for the same `BrandRegistration` and `campaign-verify` provider still has `vetting_status` of `IN_PROGRESS`.\n* You submitted a new Campaign Verify token import request before the earlier request finished.",
    "solutions": "* Retrieve the Brand's vetting records and check for an existing `campaign-verify` vetting that is still `IN_PROGRESS`.\n* Wait for the current vetting request to move to `SUCCESS` or `FAILED` before you submit another Campaign Verify token.\n* Retry the import only after no Campaign Verify vetting for that Brand remains in `IN_PROGRESS`.",
    "description": "Your request to import a Campaign Verify token failed because another Campaign Verify vetting request for the same `BrandRegistration` is already queued or processing. Twilio only imports one Campaign Verify token at a time for a Brand.",
    "date_created": "2021-10-25T16:12:22Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21724,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand update count exceeded",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nReturn this error when a brand update request exceeds the allowed limit for the brand. Twilio allows up to three brand updates at no additional charge. After that, update requests return 21724.\n\n### Possible causes\n\n- The brand has already been updated three times.\n- Another `brand_registrations.update` request was sent after the update limit was reached.\n\n### Possible solutions\n\n- Stop retrying the brand update and contact Twilio Support for additional assistance.\n- Review the associated Customer Profile or Trust Bundle, correct the data, and resubmit the brand update with the fewest possible attempts.\n- If the brand is in `FAILED` status and has a non-null `tcr_id`, update the upstream profile or bundle first, then call `brand_registrations.update` again.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n",
    "causes": "* The brand has already been updated three times.\n* Another `brand_registrations.update` request was sent after the update limit was reached.",
    "solutions": "* Stop retrying the brand update and contact Twilio Support for additional assistance.\n* Review the associated Customer Profile or Trust Bundle, correct the data, and resubmit the brand update with the fewest possible attempts.\n* If the brand is in `FAILED` status and has a non-null `tcr_id`, update the upstream profile or bundle first, then call `brand_registrations.update` again.",
    "description": "Return this error when a brand update request exceeds the allowed limit for the brand. Twilio allows up to three brand updates at no additional charge. After that, update requests return 21724.",
    "date_created": "2021-11-18T18:19:00Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 21725,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand can only be updated when in FAILED state",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou tried to update a brand before it reached `FAILED` status. Only failed brands can be updated, and when you do have a failed brand, fix the related Customer Profile or Trust Bundle data first, then call the `brand_registrations` update endpoint.\n\n### Possible causes\n\n- The brand is in `REGISTERED` status.\n- The brand is in `IN_PROGRESS` status.\n- The brand has not entered `FAILED` status, so Twilio will not accept the update request.\n\n### Possible solutions\n\n- If the brand is `REGISTERED` and needs changes, contact Twilio Support.\n- If the brand is `IN_PROGRESS`, wait for it to leave that state before retrying.\n- If the brand is `FAILED`, review the brand `errors` field, correct the related Customer Profile or Trust Bundle information, and resubmit the brand update.\n\n#### Additional resources\n\n- [A2P 10DLC - BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Trust Hub](/docs/trust-hub)\n",
    "causes": "* The brand is in `REGISTERED` status.\n* The brand is in `IN_PROGRESS` status.\n* The brand has not entered `FAILED` status, so Twilio will not accept the update request.",
    "solutions": "* If the brand is `REGISTERED` and needs changes, contact Twilio Support.\n* If the brand is `IN_PROGRESS`, wait for it to leave that state before retrying.\n* If the brand is `FAILED`, review the brand `errors` field, correct the related Customer Profile or Trust Bundle information, and resubmit the brand update.",
    "description": "You tried to update a brand before it reached `FAILED` status. Only failed brands can be updated, and when you do have a failed brand, fix the related Customer Profile or Trust Bundle data first, then call the `brand_registrations` update endpoint.",
    "date_created": "2021-11-18T18:23:59Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 21726,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Starter brand registrations and updates are temporarily disabled",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nStarter Brands can no longer be created or updated in Twilio Messaging. Twilio deprecated those operations, and this error appears when a request targets a Starter Brand instead of a supported brand type.\n\n### Possible causes\n\n- You are trying to create or update a Starter Brand, and Twilio has disabled that operation in the Console and APIs.\n- The business should be registered as a Standard Brand or Low-Volume Standard Brand instead. Direct customers with a Tax ID use that registration path, and Twilio's brand-type guide recommends choosing the brand type based on messaging volume and throughput.\n- If you started with a Sole Proprietor Brand, your messaging needs or tax status may require a transition to a Standard or Low-Volume Standard Brand.\n\n### Possible solutions\n\n- Go to Messaging > Regulatory Compliance > Onboarding and register a Standard Brand or Low-Volume Standard Brand instead of a Starter Brand.\n- If you are moving from a Sole Proprietor Brand, create a separate Customer Profile, Brand, and Campaign for the new Standard or Low-Volume Standard Brand.\n- If you still need help with an existing Starter Brand, contact Twilio Support.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [Transition from a Sole Proprietor to a Standard Brand](/docs/messaging/compliance/a2p-10dlc/transition-sole-proprietor-to-standard-brand)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* You are trying to create or update a Starter Brand, and Twilio has disabled that operation in the Console and APIs.\n* The business should be registered as a Standard Brand or Low-Volume Standard Brand instead. Direct customers with a Tax ID use that registration path, and Twilio's brand-type guide recommends choosing the brand type based on messaging volume and throughput.\n* If you started with a Sole Proprietor Brand, your messaging needs or tax status may require a transition to a Standard or Low-Volume Standard Brand.",
    "solutions": "* Go to Messaging > Regulatory Compliance > Onboarding and register a Standard Brand or Low-Volume Standard Brand instead of a Starter Brand.\n* If you are moving from a Sole Proprietor Brand, create a separate Customer Profile, Brand, and Campaign for the new Standard or Low-Volume Standard Brand.\n* If you still need help with an existing Starter Brand, contact Twilio Support.",
    "description": "Starter Brands can no longer be created or updated in Twilio Messaging. Twilio deprecated those operations, and this error appears when a request targets a Starter Brand instead of a supported brand type.",
    "date_created": "2022-09-13T20:44:33Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21727,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign registration failed due to missing parameter(s)",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio could not register your US A2P 10DLC campaign because the campaign creation request is missing one or more required parameters. Campaign registration requires core fields such as `brandRegistrationSid`, `description`, `messageFlow`, `messageSamples`, `usAppToPersonUsecase`, `hasEmbeddedLinks`, and `hasEmbeddedPhone`. Additional keyword and auto-reply fields may also be required depending on how your campaign handles opt-in, opt-out, and help flows.\n\n### Possible causes\n\n- The campaign creation request omitted one or more required core fields.\n- The request did not include the required `messageSamples` values for the campaign.\n- The campaign allows end users to opt in by texting a keyword, but the request did not include `optInKeywords` or `optInMessage`.\n- The campaign manages opt-out or help responses outside Twilio's default or Advanced Opt-Out handling, but the request did not include `optOutKeywords`, `optOutMessage`, `helpKeywords`, or `helpMessage`.\n- A required parameter was included in the request structure but was sent without a usable value.\n\n### Possible solutions\n\n- Review the campaign creation request and include all required core parameters: `brandRegistrationSid`, `description`, `messageFlow`, `messageSamples`, `usAppToPersonUsecase`, `hasEmbeddedLinks`, and `hasEmbeddedPhone`.\n- Provide two to five representative `messageSamples` that match the campaign description and selected use case.\n- If recipients can subscribe by texting a keyword, include both `optInKeywords` and `optInMessage`.\n- If you manage opt-out and help behavior yourself, include `optOutKeywords`, `optOutMessage`, `helpKeywords`, and `helpMessage` in the request.\n- If you use Twilio's default opt-out handling or Advanced Opt-Out on the Messaging Service, confirm that configuration before submitting the campaign and only omit custom help and opt-out fields when that setup applies.\n- Recheck the request payload against the A2P 10DLC campaign requirements, then resubmit the campaign registration.\n\n#### Additional resources\n\n- [Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign API Reference](/docs/messaging/api/usapptoperson-resource)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The campaign creation request omitted one or more required core fields.\n* The request did not include the required `messageSamples` values for the campaign.\n* The campaign allows end users to opt in by texting a keyword, but the request did not include `optInKeywords` or `optInMessage`.\n* The campaign manages opt-out or help responses outside Twilio's default or Advanced Opt-Out handling, but the request did not include `optOutKeywords`, `optOutMessage`, `helpKeywords`, or `helpMessage`.\n* A required parameter was included in the request structure but was sent without a usable value.",
    "solutions": "* Review the campaign creation request and include all required core parameters: `brandRegistrationSid`, `description`, `messageFlow`, `messageSamples`, `usAppToPersonUsecase`, `hasEmbeddedLinks`, and `hasEmbeddedPhone`.\n* Provide two to five representative `messageSamples` that match the campaign description and selected use case.\n* If recipients can subscribe by texting a keyword, include both `optInKeywords` and `optInMessage`.\n* If you manage opt-out and help behavior yourself, include `optOutKeywords`, `optOutMessage`, `helpKeywords`, and `helpMessage` in the request.\n* If you use Twilio's default opt-out handling or Advanced Opt-Out on the Messaging Service, confirm that configuration before submitting the campaign and only omit custom help and opt-out fields when that setup applies.\n* Recheck the request payload against the A2P 10DLC campaign requirements, then resubmit the campaign registration.",
    "description": "Twilio could not register your US A2P 10DLC campaign because the campaign creation request is missing one or more required parameters. Campaign registration requires core fields such as `brandRegistrationSid`, `description`, `messageFlow`, `messageSamples`, `usAppToPersonUsecase`, `hasEmbeddedLinks`, and `hasEmbeddedPhone`. Additional keyword and auto-reply fields may also be required depending on how your campaign handles opt-in, opt-out, and help flows.",
    "date_created": "2022-10-06T18:25:40Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21728,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign registration failed due to length validation failures",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when your US A2P 10DLC Campaign registration includes one or more fields that do not meet the documented length requirements for campaign creation. Common fields with length limits include `description`, `messageFlow`, each entry in `messageSamples`, and optional keyword-response fields such as `optInMessage`, `optOutMessage`, and `helpMessage`.\n\n### Possible causes\n\n- The `description` value is shorter than 40 characters or longer than 4096 characters.\n- The `messageFlow` value is shorter than 40 characters or longer than the allowed maximum for the Campaign API.\n- You provided fewer than two `messageSamples`, more than five `messageSamples`, or one of the samples is shorter than 20 characters or longer than 1024 characters.\n- An optional field you supplied exceeds its limit, such as `optInMessage`, `optOutMessage`, or `helpMessage` at 20 to 320 characters, or `optInKeywords`, `optOutKeywords`, or `helpKeywords` over 255 characters.\n- The text you submitted is too short to satisfy the field requirements. For example, `description` must explain who is sending messages, who receives them, and why messages are being sent, and `messageFlow` must explain how end users opt in.\n\n### Possible solutions\n\n- Review every text field in your Campaign submission and update any value that is outside the documented length limits before you resubmit.\n- Update `description` so it clearly explains who the sender is, who the recipients are, and why messages are being sent. Keep the value within the allowed length range.\n- Update `messageFlow` so it fully describes every opt-in path you use. If you collect consent in more than one way, list all methods in the same field and keep the value within the documented limit.\n- Provide two to five realistic `messageSamples` that match the selected use case. Keep each sample within the allowed length range, include the Brand name or website in each message, and use square brackets `[]` for variable content.\n- If you manage keyword-based opt-in, opt-out, or help flows yourself, make sure the related messages and keyword lists are included when required and fit their documented length limits.\n- If you are correcting a rejected Campaign in Console, update the Campaign description, sample messages, and consent details in the resubmission form, then retry review.\n\n#### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [UsAppToPerson Resource](/docs/messaging/api/usapptoperson-resource)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n",
    "causes": "* The `description` value is shorter than 40 characters or longer than 4096 characters.\n* The `messageFlow` value is shorter than 40 characters or longer than the allowed maximum for the Campaign API.\n* You provided fewer than two `messageSamples`, more than five `messageSamples`, or one of the samples is shorter than 20 characters or longer than 1024 characters.\n* An optional field you supplied exceeds its limit, such as `optInMessage`, `optOutMessage`, or `helpMessage` at 20 to 320 characters, or `optInKeywords`, `optOutKeywords`, or `helpKeywords` over 255 characters.\n* The text you submitted is too short to satisfy the field requirements. For example, `description` must explain who is sending messages, who receives them, and why messages are being sent, and `messageFlow` must explain how end users opt in.",
    "solutions": "* Review every text field in your Campaign submission and update any value that is outside the documented length limits before you resubmit.\n* Update `description` so it clearly explains who the sender is, who the recipients are, and why messages are being sent. Keep the value within the allowed length range.\n* Update `messageFlow` so it fully describes every opt-in path you use. If you collect consent in more than one way, list all methods in the same field and keep the value within the documented limit.\n* Provide two to five realistic `messageSamples` that match the selected use case. Keep each sample within the allowed length range, include the Brand name or website in each message, and use square brackets `[]` for variable content.\n* If you manage keyword-based opt-in, opt-out, or help flows yourself, make sure the related messages and keyword lists are included when required and fit their documented length limits.\n* If you are correcting a rejected Campaign in Console, update the Campaign description, sample messages, and consent details in the resubmission form, then retry review.",
    "description": "This error appears when your US A2P 10DLC Campaign registration includes one or more fields that do not meet the documented length requirements for campaign creation. Common fields with length limits include `description`, `messageFlow`, each entry in `messageSamples`, and optional keyword-response fields such as `optInMessage`, `optOutMessage`, and `helpMessage`.",
    "date_created": "2022-10-06T18:28:14Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 21729,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot perform operation on suspended campaign",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe requested operation is blocked because the campaign is in a suspended state. Suspended campaigns cannot be used to send messages, and self-service deletion or number changes are unavailable until the suspension is lifted.\n\n### Possible causes\n\n- The campaign was suspended after a messaging policy or compliance violation, including issues such as campaign-to-traffic mismatch, spam, phishing, or other related violations.\n- The associated Brand is suspended, which can also place the campaign into a suspended state.\n\n### Possible solutions\n\n- Check the campaign status and associated Brand status in Messaging > Regulatory Compliance > Campaigns and Brands to confirm whether the campaign or Brand is suspended.\n- Review the suspension reason and resolve the underlying compliance or policy issue before retrying the operation.\n- If the campaign is suspended, do not try to delete it or change its numbers through self-service until the suspension is lifted.\n- Contact Twilio Support for the suspension details and next steps.\n\n#### Additional resources\n\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The campaign was suspended after a messaging policy or compliance violation, including issues such as campaign-to-traffic mismatch, spam, phishing, or other related violations.\n* The associated Brand is suspended, which can also place the campaign into a suspended state.",
    "solutions": "* Check the campaign status and associated Brand status in Messaging > Regulatory Compliance > Campaigns and Brands to confirm whether the campaign or Brand is suspended.\n* Review the suspension reason and resolve the underlying compliance or policy issue before retrying the operation.\n* If the campaign is suspended, do not try to delete it or change its numbers through self-service until the suspension is lifted.\n* Contact Twilio Support for the suspension details and next steps.",
    "description": "The requested operation is blocked because the campaign is in a suspended state. Suspended campaigns cannot be used to send messages, and self-service deletion or number changes are unavailable until the suspension is lifted.",
    "date_created": "2022-12-09T00:26:46Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 21730,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "System under maintenance. Please try again later.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error is returned by Twilio Systems when the system is going through a scheduled maintenance. During this maintenance window some of the operations are not allowed and this error is returned.\n\n### Possible causes\n\nThe system is going through scheduled maintenance.\n\n### Possible solutions\n\nTry again later because once maintenance activity is completed all requests are processed successfully.\n",
    "causes": "The system is going through scheduled maintenance.",
    "solutions": "Try again later because once maintenance activity is completed all requests are processed successfully.",
    "description": "This error is returned by Twilio Systems when the system is going through a scheduled maintenance. During this maintenance window some of the operations are not allowed and this error is returned.",
    "date_created": "2023-03-22T01:00:55Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21731,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot perform operation on suspended brand",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC Brand is in a suspended state. You cannot create a new campaign with that brand or update the brand until the suspension is addressed. Brands with `SUSPENDED` status require Twilio Support assistance, and campaigns associated with a suspended brand are also suspended.\n\n### Possible causes\n\n- The traffic sent on the brand does not match the campaign use case that was registered.\n- The brand or its campaigns were associated with spam, phishing, unsolicited messaging, or excessive consumer complaints.\n- The traffic involved prohibited or high-risk content such as controlled substances, illicit or fraudulent activity, affiliate marketing, promotional gambling, or age-restricted messaging without the required age gate.\n- The campaign registration details for purpose, workflow, opt-in, or opt-out did not adequately reflect the messaging program being run.\n\n### Possible solutions\n\n- Stop using this brand for new registration changes. Do not try to move the same traffic to another existing or new brand or campaign while the suspension is unresolved.\n- Review your brand and campaign setup against the messaging you actually send. Make sure your campaign description, use case, message flow, opt-in method, opt-out handling, and help information are accurate and consistent with your live traffic. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Remove or correct any traffic patterns that could trigger suspension, including spam-like messaging, prohibited content, affiliate marketing, gambling-related messaging, or age-restricted content without the required age gate.\n- Check your email and the Twilio Support Center for guidance. If you have not received next steps, contact Twilio Support because suspended brands require support assistance to address.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard and Low-Volume Standard Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands#brands-with-suspended-status-and-related-campaign-suspensions)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The traffic sent on the brand does not match the campaign use case that was registered.\n* The brand or its campaigns were associated with spam, phishing, unsolicited messaging, or excessive consumer complaints.\n* The traffic involved prohibited or high-risk content such as controlled substances, illicit or fraudulent activity, affiliate marketing, promotional gambling, or age-restricted messaging without the required age gate.\n* The campaign registration details for purpose, workflow, opt-in, or opt-out did not adequately reflect the messaging program being run.",
    "solutions": "* Stop using this brand for new registration changes. Do not try to move the same traffic to another existing or new brand or campaign while the suspension is unresolved.\n* Review your brand and campaign setup against the messaging you actually send. Make sure your campaign description, use case, message flow, opt-in method, opt-out handling, and help information are accurate and consistent with your live traffic. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Remove or correct any traffic patterns that could trigger suspension, including spam-like messaging, prohibited content, affiliate marketing, gambling-related messaging, or age-restricted content without the required age gate.\n* Check your email and the Twilio Support Center for guidance. If you have not received next steps, contact Twilio Support because suspended brands require support assistance to address.",
    "description": "Your A2P 10DLC Brand is in a suspended state. You cannot create a new campaign with that brand or update the brand until the suspension is addressed. Brands with `SUSPENDED` status require Twilio Support assistance, and campaigns associated with a suspended brand are also suspended.",
    "date_created": "2023-08-09T14:01:35Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21732,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign limit reached on the Brand",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create a second Sole Proprietor Campaign for a Sole Proprietor Brand. You can create only one `SOLE_PROPRIETOR` campaign per `SOLE_PROPRIETOR` brand, and campaigns in statuses such as Pending, Registered, and Failed still count toward that limit.\n\n### Possible causes\n\n- A Campaign is already associated with the same Sole Proprietor Brand.\n- The existing Campaign is still in a status such as Pending, Registered, or Failed, and it still counts toward the one-campaign limit for that Brand.\n- Your use case needs more than a Sole Proprietor Brand supports. Sole Proprietor Brands are limited to one Campaign.\n\n### Possible solutions\n\n- Find the existing Campaign for this Sole Proprietor Brand and delete it before you create a replacement Campaign. If you delete and recreate the Campaign programmatically on the same Messaging Service, wait at least 5 seconds after deletion before submitting the new Campaign.\n- If the existing Campaign is in `FAILED` status, update that Campaign in Console instead of trying to create a second Campaign for the same Sole Proprietor Brand.\n- If the business needs more than one Campaign, higher throughput, or more flexibility, move from a Sole Proprietor Brand to a Standard or Low-Volume Standard Brand and register a new Campaign for that Brand.\n\n#### Additional resources\n\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Sole Proprietor A2P 10DLC API onboarding](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api-sole-prop-new)\n- [Transition from a Sole Proprietor to a Standard Brand](/docs/messaging/compliance/a2p-10dlc/transition-sole-proprietor-to-standard-brand)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* A Campaign is already associated with the same Sole Proprietor Brand.\n* The existing Campaign is still in a status such as Pending, Registered, or Failed, and it still counts toward the one-campaign limit for that Brand.\n* Your use case needs more than a Sole Proprietor Brand supports. Sole Proprietor Brands are limited to one Campaign.",
    "solutions": "* Find the existing Campaign for this Sole Proprietor Brand and delete it before you create a replacement Campaign. If you delete and recreate the Campaign programmatically on the same Messaging Service, wait at least 5 seconds after deletion before submitting the new Campaign.\n* If the existing Campaign is in `FAILED` status, update that Campaign in Console instead of trying to create a second Campaign for the same Sole Proprietor Brand.\n* If the business needs more than one Campaign, higher throughput, or more flexibility, move from a Sole Proprietor Brand to a Standard or Low-Volume Standard Brand and register a new Campaign for that Brand.",
    "description": "This error occurs when you try to create a second Sole Proprietor Campaign for a Sole Proprietor Brand. You can create only one `SOLE_PROPRIETOR` campaign per `SOLE_PROPRIETOR` brand, and campaigns in statuses such as Pending, Registered, and Failed still count toward that limit.",
    "date_created": "2023-11-14T08:38:44Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 21733,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Default Messaging Service Not Found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio could not find the account's default Messaging Service. The outbound message itself should still succeed, but this warning can still appear.\n\n### Possible causes\n\n- A default Messaging Service was not created for the account.\n\n### Possible solutions\n\n- Contact Twilio Messaging Support with the `Account SID` and error code so the warning can be cleared.\n- Confirm that the account has a default Messaging Service. Twilio automatically generates a default Messaging Service for each account upon creation.\n\n#### Additional resources\n\n- [Messaging Services](/docs/messaging/services)\n- [Build your Account](/docs/messaging/onboarding/build-your-account)\n- [SMS Foundations](/docs/messaging/onboarding/sms-foundations)\n",
    "causes": "* A default Messaging Service was not created for the account.",
    "solutions": "* Contact Twilio Messaging Support with the `Account SID` and error code so the warning can be cleared.\n* Confirm that the account has a default Messaging Service. Twilio automatically generates a default Messaging Service for each account upon creation.",
    "description": "Twilio could not find the account's default Messaging Service. The outbound message itself should still succeed, but this warning can still appear.",
    "date_created": "2024-01-03T18:54:57Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 21736,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Domain Ownership Could Not Be Verified",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe domain used in the brand contact email could not be independently verified as belonging to the brand.\n\n### Possible causes\n\nThe domain has no verifiable public ownership records or does not align with the registered brand information.\n\n### Possible solutions\n\nUse an email domain that is clearly linked to the brand (for example, via website, WHOIS record, or DNS TXT record). Contact Twilio Support for additional guidance.\n",
    "causes": "The domain has no verifiable public ownership records or does not align with the registered brand information.",
    "solutions": "Use an email domain that is clearly linked to the brand (for example, via website, WHOIS record, or DNS TXT record). Contact Twilio Support for additional guidance.",
    "description": "The domain used in the brand contact email could not be independently verified as belonging to the brand.",
    "date_created": "2024-08-27T14:21:35Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21737,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: 2FA Verification Expired",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Authentication+ two-factor verification link or token for an A2P 10DLC Brand expires before the brand contact completes verification. To continue brand registration or re-verification, submit a new 2FA request and complete the verification within the active time window.\n\n### Possible causes\n\n- The brand contact did not use the Authentication+ verification link or token before it expired.\n- The brand registration requires a brand business contact email and the 2FA step was not completed within the verification window.\n- A new or existing public brand reached the Authentication+ step, but the contact did not finish verification before the deadline in the email.\n\n### Possible solutions\n\n- Submit a new 2FA request in Console or by sending a `POST` request to the Brand 2FA Verification resource.\n- Ask the brand contact to complete the verification as soon as the new email arrives and before the deadline shown in that email.\n- If the failed registration is for a new brand, update `brand_contact_email` in the associated `us_a2p_messaging_profile_information` bundle if needed, then trigger Authentication+ again using the 2FA endpoint.\n- If the contact did not receive the email, resend the Authentication+ email from Console and confirm the address is correct and associated with your business. Do not use a consumer email domain such as `gmail.com`.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC Brand 2FA Verification Resource](/docs/messaging/api/brand-2fa-verify)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n",
    "causes": "* The brand contact did not use the Authentication+ verification link or token before it expired.\n* The brand registration requires a brand business contact email and the 2FA step was not completed within the verification window.\n* A new or existing public brand reached the Authentication+ step, but the contact did not finish verification before the deadline in the email.",
    "solutions": "* Submit a new 2FA request in Console or by sending a `POST` request to the Brand 2FA Verification resource.\n* Ask the brand contact to complete the verification as soon as the new email arrives and before the deadline shown in that email.\n* If the failed registration is for a new brand, update `brand_contact_email` in the associated `us_a2p_messaging_profile_information` bundle if needed, then trigger Authentication+ again using the 2FA endpoint.\n* If the contact did not receive the email, resend the Authentication+ email from Console and confirm the address is correct and associated with your business. Do not use a consumer email domain such as `gmail.com`.",
    "description": "This error occurs when the Authentication+ two-factor verification link or token for an A2P 10DLC Brand expires before the brand contact completes verification. To continue brand registration or re-verification, submit a new 2FA request and complete the verification within the active time window.",
    "date_created": "2024-08-27T14:23:03Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21738,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: 2FA Email Undeliverable",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the Authentication+ verification email for your A2P 10DLC brand contact could not be delivered. Your brand contact must receive and complete this 2FA step before brand registration can continue.\n\n### Possible causes\n\n- The `brand_contact_email` value is invalid or contains a typo.\n- The mailbox is inactive or cannot receive external email.\n- The recipient's email server rejected the verification message.\n\n### Possible solutions\n\n- Confirm that the brand contact email is correct, active, and able to receive external messages.\n- If the email address is incorrect, update `brand_contact_email` in the associated `us_a2p_messaging_profile_information` bundle for the brand.\n- If this is a new brand registration, trigger Authentication+ again after updating the email address by creating a new Brand 2FA verification request.\n- If the brand contact still did not receive the email, resend the verification email from Console under Messaging > Regulatory Compliance > Brands.\n- If you are re-verifying an existing brand, update `brand_contact_email`, move the associated bundle to `pending-review`, and call the brand update endpoint.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard and Low Volume Standard brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC Brand 2FA Verification Resource](/docs/messaging/api/brand-2fa-verify)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n",
    "causes": "* The `brand_contact_email` value is invalid or contains a typo.\n* The mailbox is inactive or cannot receive external email.\n* The recipient's email server rejected the verification message.",
    "solutions": "* Confirm that the brand contact email is correct, active, and able to receive external messages.\n* If the email address is incorrect, update `brand_contact_email` in the associated `us_a2p_messaging_profile_information` bundle for the brand.\n* If this is a new brand registration, trigger Authentication+ again after updating the email address by creating a new Brand 2FA verification request.\n* If the brand contact still did not receive the email, resend the verification email from Console under Messaging > Regulatory Compliance > Brands.\n* If you are re-verifying an existing brand, update `brand_contact_email`, move the associated bundle to `pending-review`, and call the brand update endpoint.",
    "description": "This error means the Authentication+ verification email for your A2P 10DLC brand contact could not be delivered. Your brand contact must receive and complete this 2FA step before brand registration can continue.",
    "date_created": "2025-07-23T17:03:59.523Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21739,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Brand Registration Failure: 2FA Verification Failed or Timed Out",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nBrand registration failed because the Authentication+ verification flow for the brand contact email was not completed. This can happen when the contact does not finish the verification steps, does not enter the PIN code, or the verification session times out.\n\n### Possible causes\n\n- The brand contact did not complete the Authentication+ verification after receiving the 2FA email.\n- The brand contact started the verification flow but did not enter the required PIN code.\n- The verification session timed out before the process was completed.\n- The verification request was not completed promptly enough to finish the required steps.\n\n### Possible solutions\n\n- Re-initiate the 2FA request in Console or with the Brand 2FA Verification API.\n- Ask your brand contact to complete the verification as soon as they receive the email and before the deadline shown in that email.\n- If the contact email needs to change, update `brand_contact_email` in the associated `us_a2p_messaging_profile_information` bundle, then trigger Authentication+ verification again.\n- If the contact did not receive the email, resend the verification email from Console and confirm the mailbox can receive external messages.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard and Low-Volume Standard Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC Brand 2FA Verification Resource](/docs/messaging/api/brand-2fa-verify)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n",
    "causes": "* The brand contact did not complete the Authentication+ verification after receiving the 2FA email.\n* The brand contact started the verification flow but did not enter the required PIN code.\n* The verification session timed out before the process was completed.\n* The verification request was not completed promptly enough to finish the required steps.",
    "solutions": "* Re-initiate the 2FA request in Console or with the Brand 2FA Verification API.\n* Ask your brand contact to complete the verification as soon as they receive the email and before the deadline shown in that email.\n* If the contact email needs to change, update `brand_contact_email` in the associated `us_a2p_messaging_profile_information` bundle, then trigger Authentication+ verification again.\n* If the contact did not receive the email, resend the verification email from Console and confirm the mailbox can receive external messages.",
    "description": "Brand registration failed because the Authentication+ verification flow for the brand contact email was not completed. This can happen when the contact does not finish the verification steps, does not enter the PIN code, or the verification session times out.",
    "date_created": "2025-08-06T16:52:37.318Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21740,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Invalid Brand Contact Email Domain",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe brand contact email submitted uses a domain that is not permitted for 2FA validation. Only business or organizational domains are allowed for Auth+ verification.\n\n### Possible causes\n\nThe domain used in the brand contact email is a personal, generic, or otherwise unverified domain (such as gmail.com or yahoo.com).\n\n### Possible solutions\n\nUpdate the brand contact email to use a domain that is associated with the business or organization. Avoid free, personal, or unverified domains.\n",
    "causes": "The domain used in the brand contact email is a personal, generic, or otherwise unverified domain (such as gmail.com or yahoo.com).",
    "solutions": "Update the brand contact email to use a domain that is associated with the business or organization. Avoid free, personal, or unverified domains.",
    "description": "The brand contact email submitted uses a domain that is not permitted for 2FA validation. Only business or organizational domains are allowed for Auth+ verification.",
    "date_created": "2025-07-29T11:56:41.354Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21741,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: 2FA Code Expired",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Authentication+ PIN sent to the brand contact expires before the contact completes verification. Complete 2FA within the time window provided in the verification email.\n\n### Possible causes\n\n- The brand contact did not enter the verification code before it expired.\n- The verification attempt happened after the deadline in the 2FA email.\n- The verification email was missed or not acted on before the code expired.\n\n### Possible solutions\n\n- Re-initiate the 2FA process and ask the brand contact to complete verification before the code expires.\n- If the brand contact did not receive the verification email, resend the Authentication+ email from the Twilio Console.\n- If the contact email is incorrect or needs to be updated, update `brand_contact_email` in the `us_a2p_messaging_profile_information` bundle and trigger verification again.\n- If you are using the API for a failed new Brand registration, create a new 2FA verification request with the Brand 2FA Verification endpoint after you update the brand contact details.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard and Low-Volume Standard Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC Brand 2FA Verification Resource](/docs/messaging/api/brand-2fa-verify)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n",
    "causes": "* The brand contact did not enter the verification code before it expired.\n* The verification attempt happened after the deadline in the 2FA email.\n* The verification email was missed or not acted on before the code expired.",
    "solutions": "* Re-initiate the 2FA process and ask the brand contact to complete verification before the code expires.\n* If the brand contact did not receive the verification email, resend the Authentication+ email from the Twilio Console.\n* If the contact email is incorrect or needs to be updated, update `brand_contact_email` in the `us_a2p_messaging_profile_information` bundle and trigger verification again.\n* If you are using the API for a failed new Brand registration, create a new 2FA verification request with the Brand 2FA Verification endpoint after you update the brand contact details.",
    "description": "This error occurs when the Authentication+ PIN sent to the brand contact expires before the contact completes verification. Complete 2FA within the time window provided in the verification email.",
    "date_created": "2025-07-23T17:05:02.851Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 21900,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "DltPEId is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe `DltPEId` value in your request is invalid. This error occurs when you send a DLT Principal Entity ID that does not match the required format or length for Twilio's Messaging APIs.\n\n### Possible causes\n\n- The `DltPEId` value contains invalid characters.\n- The `DltPEId` value is too short or too long.\n- The `DltPEId` value was entered with extra spaces or formatting characters.\n- The `DltPEId` parameter does not match the DLT registration details for your sender or template.\n- Your application is sending the wrong parameter value in the API request.\n\n### Possible solutions\n\n- Verify that the `DltPEId` value exactly matches the Principal Entity ID provided during your DLT registration.\n- Remove any extra spaces, separators, or unsupported characters from the `DltPEId` value.\n- Verify that your application is mapping the correct `DltPEId` to the correct sender and message template.\n- Validate the request payload before you send it to Twilio.\n- If you manage messaging compliance for traffic to India, review your registered sender, template, and entity information to confirm that all values match.\n\n#### Additional resources\n\n- [Programmable Messaging API](/docs/messaging/api)\n- [Send an SMS message](/docs/messaging/tutorials/how-to-send-sms-messages)\n- [Alphanumeric Sender ID for India](https://help.twilio.com/articles/360037746094-Alphanumeric-Sender-ID-for-India)\n",
    "causes": "* The `DltPEId` value contains invalid characters.\n* The `DltPEId` value is too short or too long.\n* The `DltPEId` value was entered with extra spaces or formatting characters.\n* The `DltPEId` parameter does not match the DLT registration details for your sender or template.\n* Your application is sending the wrong parameter value in the API request.",
    "solutions": "* Verify that the `DltPEId` value exactly matches the Principal Entity ID provided during your DLT registration.\n* Remove any extra spaces, separators, or unsupported characters from the `DltPEId` value.\n* Verify that your application is mapping the correct `DltPEId` to the correct sender and message template.\n* Validate the request payload before you send it to Twilio.\n* If you manage messaging compliance for traffic to India, review your registered sender, template, and entity information to confirm that all values match.",
    "description": "The `DltPEId` value in your request is invalid. This error occurs when you send a DLT Principal Entity ID that does not match the required format or length for Twilio's Messaging APIs.",
    "date_created": "2020-12-11T08:18:46Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21901,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "DltTemplateId is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe `DltTemplateId` value in your request is not valid. This error occurs when you send an invalid Distributed Ledger Technology template identifier for messaging in India, or when the value does not match the format Twilio expects for a registered DLT template.\n\n### Possible causes\n\n- The `DltTemplateId` value is missing required characters or contains an invalid format.\n- The `DltTemplateId` value is longer than the supported limit.\n- The `DltTemplateId` value does not match the template ID registered with your sender on the applicable DLT platform.\n- You submitted a `DltTemplateId` for traffic that does not use an approved India DLT template configuration.\n- Your application passed the wrong parameter value, such as a template name or internal identifier instead of the DLT template ID.\n\n### Possible solutions\n\n- Verify that you are sending the correct `DltTemplateId` value for your registered India messaging template.\n- Review your application logic to confirm that the `DltTemplateId` parameter is populated with the expected template ID and not another internal reference.\n- Remove extra characters, whitespace, or formatting issues from the `DltTemplateId` value before sending the request.\n- Confirm that the template ID you use matches the sender, template, and use case approved in your DLT registration.\n- Review your India compliance and messaging configuration before resubmitting the message.\n\n#### Additional resources\n\n- [Programmable Messaging documentation](/docs/messaging)\n- [Send Messages with the Twilio API](/docs/messaging/tutorials/how-to-send-sms-messages)\n- [India messaging guidelines](https://help.twilio.com/articles/360037746094-SMS-Guidelines-for-India)\n",
    "causes": "* The `DltTemplateId` value is missing required characters or contains an invalid format.\n* The `DltTemplateId` value is longer than the supported limit.\n* The `DltTemplateId` value does not match the template ID registered with your sender on the applicable DLT platform.\n* You submitted a `DltTemplateId` for traffic that does not use an approved India DLT template configuration.\n* Your application passed the wrong parameter value, such as a template name or internal identifier instead of the DLT template ID.",
    "solutions": "* Verify that you are sending the correct `DltTemplateId` value for your registered India messaging template.\n* Review your application logic to confirm that the `DltTemplateId` parameter is populated with the expected template ID and not another internal reference.\n* Remove extra characters, whitespace, or formatting issues from the `DltTemplateId` value before sending the request.\n* Confirm that the template ID you use matches the sender, template, and use case approved in your DLT registration.\n* Review your India compliance and messaging configuration before resubmitting the message.",
    "description": "The `DltTemplateId` value in your request is not valid. This error occurs when you send an invalid Distributed Ledger Technology template identifier for messaging in India, or when the value does not match the format Twilio expects for a registered DLT template.",
    "date_created": "2020-12-11T08:20:37Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 21902,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "InvoiceTag length must be between 0 and 32",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when a Messaging request includes an `InvoiceTag` value that is outside the supported 0 to 32 character length range.\n\n### Possible causes\n\n- The `InvoiceTag` value is longer than 32 characters.\n- The request sends an `InvoiceTag` value that does not fit the supported length validation.\n\n### Possible solutions\n\n- Shorten `InvoiceTag` to 32 characters or fewer before you send the request.\n- Validate the `InvoiceTag` length in your application so the request cannot exceed the supported range.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* The `InvoiceTag` value is longer than 32 characters.\n* The request sends an `InvoiceTag` value that does not fit the supported length validation.",
    "solutions": "* Shorten `InvoiceTag` to 32 characters or fewer before you send the request.\n* Validate the `InvoiceTag` length in your application so the request cannot exceed the supported range.",
    "description": "This error appears when a Messaging request includes an `InvoiceTag` value that is outside the supported 0 to 32 character length range.",
    "date_created": "2021-03-19T18:43:52Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 21910,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid 'From' and 'To' pair. 'From' and 'To' should be of the same channel",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a Message resource request where `From` and `To` use different channel address formats. Twilio requires channel-specific addressing, such as an `E.164` phone number for SMS or MMS and `whatsapp:+15558675310` for WhatsApp.\n\n### Possible causes\n\n- You sent from an SMS or MMS sender in `E.164` format, but the destination is a WhatsApp address such as `whatsapp:+15558675310`.\n- You sent from a WhatsApp-enabled sender, but the destination is a plain phone number instead of a WhatsApp address with the `whatsapp:` prefix.\n- One of the channel addresses is formatted incorrectly for the channel you intend to use. For WhatsApp, both sender and recipient addresses must include the `whatsapp:` prefix.\n\n### Possible solutions\n\n- Make sure `From` and `To` are on the same channel before you send the request. For SMS or MMS, use phone numbers in `E.164` format for both values.\n- For WhatsApp, set `From` to your approved WhatsApp sender address and set `To` to the recipient's WhatsApp address. Prefix both values with `whatsapp:`.\n- Verify that the `From` value belongs to your Twilio account and is valid for the channel you are using. Twilio only accepts a `from` sender that is hosted within Twilio and belongs to the account creating the message.\n- If you send with `MessagingServiceSid`, omit `From` so Twilio can select a sender from the Messaging Service's Sender Pool. For channel destinations such as WhatsApp, add a sender for that same channel to the Messaging Service.\n\n#### Additional resources\n\n- [Twilio Messaging Channels](/docs/messaging/channels)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Quickstart: Send and receive WhatsApp messages](/docs/whatsapp/quickstart)\n",
    "causes": "* You sent from an SMS or MMS sender in `E.164` format, but the destination is a WhatsApp address such as `whatsapp:+15558675310`.\n* You sent from a WhatsApp-enabled sender, but the destination is a plain phone number instead of a WhatsApp address with the `whatsapp:` prefix.\n* One of the channel addresses is formatted incorrectly for the channel you intend to use. For WhatsApp, both sender and recipient addresses must include the `whatsapp:` prefix.",
    "solutions": "* Make sure `From` and `To` are on the same channel before you send the request. For SMS or MMS, use phone numbers in `E.164` format for both values.\n* For WhatsApp, set `From` to your approved WhatsApp sender address and set `To` to the recipient's WhatsApp address. Prefix both values with `whatsapp:`.\n* Verify that the `From` value belongs to your Twilio account and is valid for the channel you are using. Twilio only accepts a `from` sender that is hosted within Twilio and belongs to the account creating the message.\n* If you send with `MessagingServiceSid`, omit `From` so Twilio can select a sender from the Messaging Service's Sender Pool. For channel destinations such as WhatsApp, add a sender for that same channel to the Messaging Service.",
    "description": "This error occurs when you send a Message resource request where `From` and `To` use different channel address formats. Twilio requires channel-specific addressing, such as an `E.164` phone number for SMS or MMS and `whatsapp:+15558675310` for WhatsApp.",
    "date_created": "2021-02-17T12:46:50Z",
    "last_updated": "2026-04-17T12:01:11+01:00"
  },
  {
    "code": 22001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Call timed out",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe call timed out before system could complete the call\n\n### Possible causes\n\nThe call timed out before system could complete the call\n\n### Possible solutions\n\nCPS limits may be too low\n",
    "causes": "The call timed out before system could complete the call",
    "solutions": "CPS limits may be too low",
    "description": "The call timed out before system could complete the call",
    "date_created": "2019-12-11T23:12:34Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call Queue Full",
    "secondary_message": "There are more than 24 hours of calls in your call queue",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Call Queue Full\n\nThere are more than 24 hours of calls in your call queue.\n\nWhen you create calls via the REST API they are added to a call queue. Calls are removed from that call queue and placed at a default rate of 1 per second. This calls per second rate can be increased. Twilio will reject requests to place calls that will not be placed within 24 hours. At 1 call per second Twilio will reject calls once there are 86400 calls in your queue. More calls will not be accepted until your queue length decreases, calls in your queue will continue to be placed. If your application requires timely placement of calls, your application performance may be degraded.\n\n### Possible causes\n\n- Large spikes in call volume\n- Runaway or looping application\n\n### Possible solutions\n\n- Validate application logic\n- Contact your account manager or Twilio support to purchase additional capacity.\n",
    "causes": "* Large spikes in call volume\n* Runaway or looping application",
    "solutions": "* Validate application logic\n* Contact your account manager or Twilio support to purchase additional capacity.",
    "description": "",
    "date_created": "2020-02-11T23:32:02Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22100,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Reached Maximum Verification Attempts",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou have reached maximum verification attempts on this Hosted Number Order. Please reach out to hostedsms@twilio.com to reset the verification attempts.\n",
    "causes": null,
    "solutions": null,
    "description": "You have reached maximum verification attempts on this Hosted Number Order. Please reach out to hostedsms@twilio.com to reset the verification attempts.",
    "date_created": "2018-02-13T01:37:23Z",
    "last_updated": "2020-08-04T10:00:14.887Z"
  },
  {
    "code": 22101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Hosted Number Order SIDs",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou attempted to create or update an Authorization Document with one or more invalid Hosted Number Order SIDs.\n\n### Possible causes\n\n- No Hosted Number Order SIDs were provided when creating the Authorization Document.\n- One or more of the SIDs provided is not a 34-character string that is prefixed with \"HR\".\n\n### Possible solutions\n\nPlease specify Hosted Number Order SIDs you've created in your [Account Dashboard](https://www.twilio.com/console/phone-numbers/hosted).\n",
    "causes": "* No Hosted Number Order SIDs were provided when creating the Authorization Document.\n* One or more of the SIDs provided is not a 34-character string that is prefixed with \"HR\".",
    "solutions": "Please specify Hosted Number Order SIDs you've created in your [Account Dashboard](https://www.twilio.com/console/phone-numbers/hosted).",
    "description": "You attempted to create or update an Authorization Document with one or more invalid Hosted Number Order SIDs.",
    "date_created": "2018-02-16T00:38:03Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Phone Number",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe phone number provided is not a valid number.\n\n### Possible causes\n\n- The phone number provided is formatted incorrectly.\n- The phone number provided includes a non-existent country code, area code or exchange.\n\n### Possible solutions\n\nPlease specify a valid phone number in [E164 format](http://en.wikipedia.org/wiki/E.164) (i.e. \"+1 format\").\n",
    "causes": "* The phone number provided is formatted incorrectly.\n* The phone number provided includes a non-existent country code, area code or exchange.",
    "solutions": "Please specify a valid phone number in [E164 format](http://en.wikipedia.org/wiki/E.164) (i.e. \"+1 format\").",
    "description": "The phone number provided is not a valid number.",
    "date_created": "2018-01-30T03:49:28Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22103,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unsupported Iso Country",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou attempted to host a number, but Twilio does not currently support hosting numbers in the Iso Country provided.\n",
    "causes": null,
    "solutions": null,
    "description": "You attempted to host a number, but Twilio does not currently support hosting numbers in the Iso Country provided.",
    "date_created": "2018-01-30T03:50:24Z",
    "last_updated": "2020-08-04T10:00:15.224Z"
  },
  {
    "code": 22104,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Email Format",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe format of a provided email was invalid.\n\n### Possible causes\n\n- Invalid email provided in request for email or cc emails.\n\n### Possible solutions\n\nMake sure you submit emails in the format local-part@domain\n",
    "causes": "* Invalid email provided in request for email or cc emails.",
    "solutions": "Make sure you submit emails in the format local-part@domain",
    "description": "The format of a provided email was invalid.",
    "date_created": "2018-01-30T03:51:10Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22105,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid URL format",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou attempted to configure your hosted number, but the URL you specified was not valid.\n\n### Possible causes\n\n- Invalid URL provided for phone number configuration (SmsUrl, SmsFallbackUrl, VoiceUrl, VoiceFallbackUrl).\n- Invalid URL provided for status callback configuration (StatusCallbackUrl).\n\n### Possible solutions\n\nMake sure you submit a fully qualified URL including:\n\n- protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters\n\nTwilio must be able to reach this URL over the public Internet.\n",
    "causes": "* Invalid URL provided for phone number configuration (SmsUrl, SmsFallbackUrl, VoiceUrl, VoiceFallbackUrl).\n* Invalid URL provided for status callback configuration (StatusCallbackUrl).",
    "solutions": "Make sure you submit a fully qualified URL including: - protocol (http:// or https://)\n- hostname\n- file path\n- properly url-encoded query parameters Twilio must be able to reach this URL over the public Internet.",
    "description": "You attempted to configure your hosted number, but the URL you specified was not valid.",
    "date_created": "2018-01-30T03:52:45Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Method",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe method you provided for configuring your hosted number was invalid.\n\nValid values are `GET` and `POST`..\n\n### Possible causes\n\n- Invalid method passed for number configuration (SmsMethod, SmsFallbackMethod, VoiceMethod, VoiceFallbackMethod).\n- Invalid method passed for status callback configuration (StatusCallbackMethod).\n",
    "causes": "* Invalid method passed for number configuration (SmsMethod, SmsFallbackMethod, VoiceMethod, VoiceFallbackMethod).\n* Invalid method passed for status callback configuration (StatusCallbackMethod).",
    "solutions": null,
    "description": "The method you provided for configuring your hosted number was invalid. Valid values are `GET` and `POST`..",
    "date_created": "2018-01-30T03:53:18Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 22107,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to Update Authorization Document",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou attempted to make a change that cannot be applied to the Authorization Document resource.\n\n### Possible causes\n\n- Trying to update or delete an Authorization Document resource that is in status \"signed.\"\n- Trying to update an Authorization Document that is in status \"signing.\"\n\n### Possible solutions\n\nUpdate the Authorization Document to status \"opened\" if it is not already in a terminal state.\n",
    "causes": "* Trying to update or delete an Authorization Document resource that is in status \"signed.\"\n* Trying to update an Authorization Document that is in status \"signing.\"",
    "solutions": "Update the Authorization Document to status \"opened\" if it is not already in a terminal state.",
    "description": "You attempted to make a change that cannot be applied to the Authorization Document resource.",
    "date_created": "2018-02-16T00:40:19Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22108,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Application SID",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou attempted to configure a phone number with an invalid Application SID.\n\n### Possible causes\n\n- The SID is not a 34-character string that is prefixed with \"AP\".\n- Invalid SMS Application SID provided in request\n- Invalid Voice Application SID provided in request\n- The Application resource identified by the SID does not exist anymore or does not belong to your account.\n\n### Possible solutions\n\nPlease specify an Application SID you've created in your [Account Dashboard](https://www.twilio.com/user/account/apps).\n",
    "causes": "* The SID is not a 34-character string that is prefixed with \"AP\".\n* Invalid SMS Application SID provided in request\n* Invalid Voice Application SID provided in request\n* The Application resource identified by the SID does not exist anymore or does not belong to your account.",
    "solutions": "Please specify an Application SID you've created in your [Account Dashboard](https://www.twilio.com/user/account/apps).",
    "description": "You attempted to configure a phone number with an invalid Application SID.",
    "date_created": "2018-01-30T03:54:09Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22109,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Address SID",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou attempted to host a phone number with an invalid Address SID.\n\n### Possible causes\n\n- The SID is not a 34-character string that is prefixed with \"AD\".\n- The Address resource identified by the SID does not exist anymore or does not belong to your account.\n\n### Possible solutions\n\n- Please specify an Address SID you've created in your [Account Dashboard](https://www.twilio.com/console/phone-numbers/addresses).\n",
    "causes": "* The SID is not a 34-character string that is prefixed with \"AD\".\n* The Address resource identified by the SID does not exist anymore or does not belong to your account.",
    "solutions": "* Please specify an Address SID you've created in your [Account Dashboard](https://www.twilio.com/console/phone-numbers/addresses).",
    "description": "You attempted to host a phone number with an invalid Address SID.",
    "date_created": "2018-01-30T03:54:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22110,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Phone Number Not Hostable",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou attempted to host a number that is not hostable on Twilio.\n\n### Possible causes\n\n- The number is already hosted.\n- The number is owned by Twilio.\n- The number cannot be enabled by carrier for requested capabilities.\n- The number is type mobile or voip.\n",
    "causes": "* The number is already hosted.\n* The number is owned by Twilio.\n* The number cannot be enabled by carrier for requested capabilities.\n* The number is type mobile or voip.",
    "solutions": null,
    "description": "You attempted to host a number that is not hostable on Twilio.",
    "date_created": "2018-01-30T03:55:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 22111,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Hosted Number Order Status",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe status you specified is not a valid Hosted Number Order status.\n\n### Possible causes\n\n- Attempting to filter a list of Hosted Number Orders on a status that does not exist.\n- Attempting to update a Hosted Number Order instance with a status that cannot be applied to the current Hosted Number Order state.\n",
    "causes": "* Attempting to filter a list of Hosted Number Orders on a status that does not exist.\n* Attempting to update a Hosted Number Order instance with a status that cannot be applied to the current Hosted Number Order state.",
    "solutions": null,
    "description": "The status you specified is not a valid Hosted Number Order status.",
    "date_created": "2018-01-30T03:55:51Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 22112,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to Update Hosted Number Order Status",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe status provided in a request to update Hosted Number Order instance cannot be applied to the current Hosted Number Order state.\n\n### Possible causes\n\n- Trying to update a Hosted Number Order that has been completed or failed.\n- Trying to update the status of a Hosted Number Order to a status that cannot be user-initiated.\n\n### Possible solutions\n\n- If a Hosted Number Order is in a terminal state (failed or completed), create a new instance.\n- If a Hosted Number Order is in \"action-required\" state, reach out to support to remediate.\n",
    "causes": "* Trying to update a Hosted Number Order that has been completed or failed.\n* Trying to update the status of a Hosted Number Order to a status that cannot be user-initiated.",
    "solutions": "* If a Hosted Number Order is in a terminal state (failed or completed), create a new instance.\n* If a Hosted Number Order is in \"action-required\" state, reach out to support to remediate.",
    "description": "The status provided in a request to update Hosted Number Order instance cannot be applied to the current Hosted Number Order state.",
    "date_created": "2018-01-30T03:58:25Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22113,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Phone Verification Incorrect",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou attempted to complete caller verification but the code you provided was incorrect.\n\n### Possible causes\n\n- You entered the code incorrectly in the request\n- The code you entered has expired\n\n### Possible solutions\n\n- Make another request to update Hosted Number Order instance to Status pending-verification to receive another verification code.\n",
    "causes": "* You entered the code incorrectly in the request\n* The code you entered has expired",
    "solutions": "* Make another request to update Hosted Number Order instance to Status pending-verification to receive another verification code.",
    "description": "You attempted to complete caller verification but the code you provided was incorrect.",
    "date_created": "2018-01-30T03:59:12Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22114,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to Verify Code",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nA verification code was provided but the Hosted Number Order instance is not in a valid state for handling caller ID verification.\n\n### Possible solutions\n\n- Update the status of the Hosted Number Order instance to \"pending-verification\".\n- Remove VerificationCode from the request body if verification call has already been completed.\n",
    "causes": null,
    "solutions": "* Update the status of the Hosted Number Order instance to \"pending-verification\".\n* Remove VerificationCode from the request body if verification call has already been completed.",
    "description": "A verification code was provided but the Hosted Number Order instance is not in a valid state for handling caller ID verification.",
    "date_created": "2018-01-30T03:59:54Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 22115,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Unique Name",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe unique name must be a string that does not exceed a length of 128 characters.\n\n### Possible solutions\n\n- Confirm that your unique name is a string that does not exceed 128 characters.\n",
    "causes": null,
    "solutions": "* Confirm that your unique name is a string that does not exceed 128 characters.",
    "description": "The unique name must be a string that does not exceed a length of 128 characters.",
    "date_created": "2018-02-07T05:09:08Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 22116,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Friendly Name",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nFriendly name is a descriptive name to help you remember your resource. The friendly name cannot exceed a length of 128 characters.\n\n### Possible solutions\n\n- Confirm that your friendly name is a string that does not exceed 128 characters.\n",
    "causes": null,
    "solutions": "* Confirm that your friendly name is a string that does not exceed 128 characters.",
    "description": "Friendly name is a descriptive name to help you remember your resource. The friendly name cannot exceed a length of 128 characters.",
    "date_created": "2018-02-07T05:10:02Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 22117,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Extension",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe extension provided for the verification call contains characters that aren't allowed.\n\n### Possible solutions\n\n- Confirm that your Extension is a non-empty string. Extension may contain numbers, the # and \\* characters, as well as the \"w\" character to \"wait\" for half a second.\n",
    "causes": null,
    "solutions": "* Confirm that your Extension is a non-empty string. Extension may contain numbers, the # and \\* characters, as well as the \"w\" character to \"wait\" for half a second.",
    "description": "The extension provided for the verification call contains characters that aren't allowed.",
    "date_created": "2018-02-07T05:11:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 22118,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Verification Document SID",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Verification Document SID specified is not a valid identity document identifier.\n\n### Possible causes\n\n- The Verification Document SID is not a 34-character string that is prefixed with \"RI\".\n- The identity document represented by the Verification DocumentSID is not of type \"phone-bill\".\n- The identity document represented by the Verification Document SID does not exist anymore or does not belong to your account.\n\n### Possible solutions\n\nPlease specify a Verification Document SID you've created in your [Account Dashboard](https://www.twilio.com/console/phone-numbers/identities).\n",
    "causes": "* The Verification Document SID is not a 34-character string that is prefixed with \"RI\".\n* The identity document represented by the Verification DocumentSID is not of type \"phone-bill\".\n* The identity document represented by the Verification Document SID does not exist anymore or does not belong to your account.",
    "solutions": "Please specify a Verification Document SID you've created in your [Account Dashboard](https://www.twilio.com/console/phone-numbers/identities).",
    "description": "The Verification Document SID specified is not a valid identity document identifier.",
    "date_created": "2018-02-07T19:45:13Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22119,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Capabilities",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe SMS Capability you specified for your Hosted Number Order was not valid.\n\n### Possible solutions\n\nPlease explicitly specify SMS as the capability to host on Twilio's platform by setting SMS Capability to true.\n",
    "causes": null,
    "solutions": "Please explicitly specify SMS as the capability to host on Twilio's platform by setting SMS Capability to true.",
    "description": "The SMS Capability you specified for your Hosted Number Order was not valid.",
    "date_created": "2018-02-07T21:41:49Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 22120,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Verification Type",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nVerification Type must be either \"phone-call\" or \"phone-bill\".\n",
    "causes": null,
    "solutions": null,
    "description": "Verification Type must be either \"phone-call\" or \"phone-bill\".",
    "date_created": "2018-02-07T21:57:33Z",
    "last_updated": "2020-08-04T10:00:14.906Z"
  },
  {
    "code": 22121,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to Transfer Hosted Number",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Hosted Number you are trying to transfer is not in status \"in-use.\"\n\n### Possible solutions\n\nSee [Exchanging Numbers Between Subaccounts](/docs/iam/api/subaccounts#exchanging-numbers) for more details about transferring numbers.\n",
    "causes": "* The Hosted Number you are trying to transfer is not in status \"in-use.\"",
    "solutions": "See [Exchanging Numbers Between Subaccounts](/docs/iam/api/subaccounts#exchanging-numbers) for more details about transferring numbers.",
    "description": "",
    "date_created": "2018-02-16T00:41:27Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22122,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Authorization Document Status",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nStatus must be one of \"opened\" or \"signing.\"\n",
    "causes": null,
    "solutions": null,
    "description": "Status must be one of \"opened\" or \"signing.\"",
    "date_created": "2018-02-16T00:42:10Z",
    "last_updated": "2020-08-04T10:00:14.816Z"
  },
  {
    "code": 22123,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to Initiate Verification Call",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio cannot start the ownership verification call for a Hosted Number Order. When you use `phone-call` verification, the person who answers the number being hosted must listen to a security token before the order can move to `verified`.\n\n### Possible causes\n\n- The phone number cannot be reached for the verification call.\n- Your account is not allowed to place a call to the number you are trying to verify.\n- The destination number has been blocked.\n- The phone number is invalid or was submitted in an invalid format.\n- The number is not eligible for Hosted Numbers. Hosted Numbers support US and Canada landline and toll-free numbers. Mobile numbers are not supported.\n\n### Possible solutions\n\n- Verify that the phone number is correct and submit it in `E.164` format when you create the Hosted Number Order.\n- Confirm that the number is a supported Hosted Numbers destination and can answer a voice call. Hosted Numbers support US and Canada landline and toll-free numbers.\n- Make sure the end user can answer the verification call and listen to the security token.\n- Review your account permissions and any destination blocking that could prevent the verification call from being placed.\n- Check the Hosted Number Order status and failure reason in Console or through the API. If the order moves to `action-required`, use the failure reason to diagnose the issue.\n- Avoid repeated retries without fixing the underlying issue. Hosted Number Orders allow up to three verification attempts before moving to `action-required`.\n- If the problem continues, contact Hosted Numbers Support at HostedSMS@twilio.com and include the Hosted Number Order SID.\n\n#### Additional resources\n\n- [Hosted Number Order Resource](/docs/phone-numbers/hosted-numbers/hosted-numbers-api/hosted-number-order-resource)\n- [Hosted Numbers FAQ](/docs/phone-numbers/hosted-numbers)\n- [Porting and Hosting Numbers](/docs/numbers-and-senders/port-host)\n",
    "causes": "* The phone number cannot be reached for the verification call.\n* Your account is not allowed to place a call to the number you are trying to verify.\n* The destination number has been blocked.\n* The phone number is invalid or was submitted in an invalid format.\n* The number is not eligible for Hosted Numbers. Hosted Numbers support US and Canada landline and toll-free numbers. Mobile numbers are not supported.",
    "solutions": "* Verify that the phone number is correct and submit it in `E.164` format when you create the Hosted Number Order.\n* Confirm that the number is a supported Hosted Numbers destination and can answer a voice call. Hosted Numbers support US and Canada landline and toll-free numbers.\n* Make sure the end user can answer the verification call and listen to the security token.\n* Review your account permissions and any destination blocking that could prevent the verification call from being placed.\n* Check the Hosted Number Order status and failure reason in Console or through the API. If the order moves to `action-required`, use the failure reason to diagnose the issue.\n* Avoid repeated retries without fixing the underlying issue. Hosted Number Orders allow up to three verification attempts before moving to `action-required`.\n* If the problem continues, contact Hosted Numbers Support at HostedSMS@twilio.com and include the Hosted Number Order SID.",
    "description": "This error occurs when Twilio cannot start the ownership verification call for a Hosted Number Order. When you use `phone-call` verification, the person who answers the number being hosted must listen to a security token before the order can move to `verified`.",
    "date_created": "2018-02-27T21:58:54Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 22130,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Portable - Unsupported",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error indicates that the phone number you submitted cannot be ported because Twilio does not support porting for that number's country, number type, or rate center. Twilio returns this error when the portability request cannot proceed based on current porting support.\n\n### Possible causes\n\n- The phone number is in a country where Twilio does not support number porting.\n- The phone number belongs to a rate center that is not supported for porting.\n- The phone number type is not eligible for porting through Twilio.\n- The number was submitted for porting in a region where Twilio does not currently offer portability support.\n\n### Possible solutions\n\n- Confirm that the number is in a country where Twilio supports phone number porting.\n- Verify that the number's rate center and number type are eligible for porting.\n- Check the number details before submitting the port request to make sure the request matches a supported portability scenario.\n- If you need to use the number with Twilio and porting is not supported, purchase a new Twilio number from the supported inventory in [Phone Numbers](/docs/phone-numbers).\n- If you are unsure whether a specific number can be ported, review the porting guidance and contact Support through the Console if you need account-specific help.\n\n#### Additional resources\n\n- [Porting a phone number to Twilio](/docs/phone-numbers/port-in)\n- [Twilio Phone Numbers documentation](/docs/phone-numbers)\n",
    "causes": "* The phone number is in a country where Twilio does not support number porting.\n* The phone number belongs to a rate center that is not supported for porting.\n* The phone number type is not eligible for porting through Twilio.\n* The number was submitted for porting in a region where Twilio does not currently offer portability support.",
    "solutions": "* Confirm that the number is in a country where Twilio supports phone number porting.\n* Verify that the number's rate center and number type are eligible for porting.\n* Check the number details before submitting the port request to make sure the request matches a supported portability scenario.\n* If you need to use the number with Twilio and porting is not supported, purchase a new Twilio number from the supported inventory in [Phone Numbers](/docs/phone-numbers).\n* If you are unsure whether a specific number can be ported, review the porting guidance and contact Support through the Console if you need account-specific help.",
    "description": "This error indicates that the phone number you submitted cannot be ported because Twilio does not support porting for that number's country, number type, or rate center. Twilio returns this error when the portability request cannot proceed based on current porting support.",
    "date_created": "2023-06-22T18:44:14Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 22131,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Portable - Already in your Twilio Account",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nPhone number already exists on your Twilio account or is currently being ported into your Twilio account\n\n### Possible causes\n\nPhone number already exists on your Twilio account or is currently being ported into your Twilio account\n\n### Possible solutions\n\nIf needed, see this [support page](https://support.twilio.com/hc/en-us/articles/223135327-Moving-Twilio-Phone-Numbers-to-another-Twilio-Account) for more information on how to move the line to a different subaccount.\n",
    "causes": "Phone number already exists on your Twilio account or is currently being ported into your Twilio account",
    "solutions": "If needed, see this [support page](https://support.twilio.com/hc/en-us/articles/223135327-Moving-Twilio-Phone-Numbers-to-another-Twilio-Account) for more information on how to move the line to a different subaccount.",
    "description": "Phone number already exists on your Twilio account or is currently being ported into your Twilio account",
    "date_created": "2023-06-22T17:57:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22132,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Portable - Already in Twilio different owner",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a portability check returns `ALREADY_IN_TWILIO_DIFFERENT_OWNER`. The phone number already exists on another Twilio account, so you cannot port it into the target account as a new port-in request. Move the number to the correct account instead.\n\n### Possible causes\n\n- The phone number already exists on another Twilio account.\n- You tried to port a number that is already in Twilio's inventory instead of transferring the existing Twilio number to the account that should own it.\n- The target account for the portability check is different from the account that currently owns the number in Twilio.\n\n### Possible solutions\n\n- If the number needs to move between different Twilio accounts, request a phone number transfer through Twilio Support. Include the phone number, the losing and gaining Account SIDs, approval from both sides, and any required regulatory `AddressSid` or `BundleSid`.\n- If you are moving the number between your main account and a subaccount, or between subaccounts under the same parent account, transfer it with an HTTP `POST` to the `IncomingPhoneNumber` resource and set `AccountSid` to the destination account.\n- Reconfigure the number after the transfer completes. Number configuration does not carry over automatically, and messaging settings such as opt-outs, A2P registrations, and related WhatsApp sender setup may need to be recreated or moved separately.\n\n#### Additional resources\n\n- [Portability API](/docs/phone-numbers/port-in/portability-api)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n- [Moving Twilio Phone Numbers to another Twilio Account](https://help.twilio.com/articles/223135327)\n",
    "causes": "* The phone number already exists on another Twilio account.\n* You tried to port a number that is already in Twilio's inventory instead of transferring the existing Twilio number to the account that should own it.\n* The target account for the portability check is different from the account that currently owns the number in Twilio.",
    "solutions": "* If the number needs to move between different Twilio accounts, request a phone number transfer through Twilio Support. Include the phone number, the losing and gaining Account SIDs, approval from both sides, and any required regulatory `AddressSid` or `BundleSid`.\n* If you are moving the number between your main account and a subaccount, or between subaccounts under the same parent account, transfer it with an HTTP `POST` to the `IncomingPhoneNumber` resource and set `AccountSid` to the destination account.\n* Reconfigure the number after the transfer completes. Number configuration does not carry over automatically, and messaging settings such as opt-outs, A2P registrations, and related WhatsApp sender setup may need to be recreated or moved separately.",
    "description": "Twilio returns this error when a portability check returns `ALREADY_IN_TWILIO_DIFFERENT_OWNER`. The phone number already exists on another Twilio account, so you cannot port it into the target account as a new port-in request. Move the number to the correct account instead.",
    "date_created": "2023-06-22T18:43:44Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 22133,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Portable API - Manual porting available",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Portability resource returns `MANUAL_PORTING_AVAILABLE`. The phone number cannot be ported through the Porting API, so you need to use a manual porting workflow instead.\n\n### Possible causes\n\n- You checked portability for a number that Twilio cannot port through the Porting API.\n- You are trying to use the automated porting flow for a number that requires a manual porting path. The automated API flow supports US non-toll-free phone numbers.\n- The number must be submitted through Console if it is a US phone number, or through the international porting process if it is from another country.\n\n### Possible solutions\n\n- If the number is a US phone number, open a porting request through Console instead of using the Porting API.\n- If the number is from another country, create a support ticket to start the international porting process.\n- Check portability in Console or with the Portability resource before you submit a port-in request. This helps you route numbers that require manual porting to the correct workflow.\n\n#### Additional resources\n\n- [Check phone number portability](/docs/phone-numbers/port-in/check-portability)\n- [How to port a phone number to Twilio](https://help.twilio.com/articles/223179348-Porting-a-Phone-Number-to-Twilio)\n- [International Porting Process](https://help.twilio.com/articles/115000781088)\n",
    "causes": "* You checked portability for a number that Twilio cannot port through the Porting API.\n* You are trying to use the automated porting flow for a number that requires a manual porting path. The automated API flow supports US non-toll-free phone numbers.\n* The number must be submitted through Console if it is a US phone number, or through the international porting process if it is from another country.",
    "solutions": "* If the number is a US phone number, open a porting request through Console instead of using the Porting API.\n* If the number is from another country, create a support ticket to start the international porting process.\n* Check portability in Console or with the Portability resource before you submit a port-in request. This helps you route numbers that require manual porting to the correct workflow.",
    "description": "This error occurs when the Portability resource returns `MANUAL_PORTING_AVAILABLE`. The phone number cannot be ported through the Porting API, so you need to use a manual porting workflow instead.",
    "date_created": "2023-06-22T18:45:03Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 22135,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Error - Internal Server Error",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio could not complete the phone number portability check because an internal platform error occurred while determining whether the number can be ported. This error is generated by Twilio rather than by your request.\n\n### Possible causes\n\n- A temporary internal error occurred while processing the portability lookup request.\n- A downstream dependency used to evaluate number portability did not return a valid response.\n- The portability check request could not be completed because of a transient service issue.\n\n### Possible solutions\n\n- Retry the portability check after a short delay.\n- If the error continues, submit the request again later to confirm whether the issue is temporary.\n- Verify that you are using a valid phone number in the expected format before retrying.\n- If repeated retries continue to fail, contact support with the error code and request details.\n\n#### Additional resources\n\n- [Phone Numbers documentation](/docs/phone-numbers)\n- [Porting your Twilio number to another carrier](/docs/phone-numbers/port-in)\n",
    "causes": "* A temporary internal error occurred while processing the portability lookup request.\n* A downstream dependency used to evaluate number portability did not return a valid response.\n* The portability check request could not be completed because of a transient service issue.",
    "solutions": "* Retry the portability check after a short delay.\n* If the error continues, submit the request again later to confirm whether the issue is temporary.\n* Verify that you are using a valid phone number in the expected format before retrying.\n* If repeated retries continue to fail, contact support with the error code and request details.",
    "description": "Twilio could not complete the phone number portability check because an internal platform error occurred while determining whether the number can be ported. This error is generated by Twilio rather than by your request.",
    "date_created": "2023-06-22T18:45:40Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 22136,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Not Portable - Already in one of your Twilio Accounts",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when you check portability or try to port a phone number that already exists in one of your Twilio accounts, or that number is already being ported into one of your Twilio accounts. Twilio returns this reason code when the number cannot be ported again to the target account.\n\n### Possible causes\n\n- The phone number already belongs to your Twilio account or to one of your subaccounts.\n- The phone number is already part of an active port request into one of your Twilio accounts.\n- You checked portability against the wrong destination account. If you do not provide `TargetAccountSid`, Twilio assumes the authenticated account is the target account.\n\n### Possible solutions\n\n- Check your existing phone number inventory and your subaccounts to confirm whether the number is already in your account hierarchy.\n- If you are checking portability for a different destination account, resend the request with `TargetAccountSid` so Twilio evaluates the correct target account.\n- If the number is already in your main account or one of its subaccounts, move it by updating the `IncomingPhoneNumber` resource and setting `AccountSid` to the destination account.\n- If you need to move the number to a different Twilio account that is not part of the same account and subaccount hierarchy, submit a Support request to transfer the number.\n\n#### Additional resources\n\n- [Check phone number portability](/docs/phone-numbers/port-in/check-portability)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n- [Moving Twilio Phone Numbers to another Twilio Account](https://help.twilio.com/articles/223135327)\n",
    "causes": "* The phone number already belongs to your Twilio account or to one of your subaccounts.\n* The phone number is already part of an active port request into one of your Twilio accounts.\n* You checked portability against the wrong destination account. If you do not provide `TargetAccountSid`, Twilio assumes the authenticated account is the target account.",
    "solutions": "* Check your existing phone number inventory and your subaccounts to confirm whether the number is already in your account hierarchy.\n* If you are checking portability for a different destination account, resend the request with `TargetAccountSid` so Twilio evaluates the correct target account.\n* If the number is already in your main account or one of its subaccounts, move it by updating the `IncomingPhoneNumber` resource and setting `AccountSid` to the destination account.\n* If you need to move the number to a different Twilio account that is not part of the same account and subaccount hierarchy, submit a Support request to transfer the number.",
    "description": "Twilio returns this error when you check portability or try to port a phone number that already exists in one of your Twilio accounts, or that number is already being ported into one of your Twilio accounts. Twilio returns this reason code when the number cannot be ported again to the target account.",
    "date_created": "2023-08-02T23:41:06Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 22137,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port is already in progress with one of your Twilio accounts",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nA port request for this phone number is already in progress with one of your Twilio accounts.\n\n### Possible causes\n\nA port request for this phone number is already in progress with one of your Twilio accounts.\n\n### Possible solutions\n\nCheck your Twilio accounts for existing port requests. You cannot submit a new port request while another port is already in progress for the same phone number.\n",
    "causes": "A port request for this phone number is already in progress with one of your Twilio accounts.",
    "solutions": "Check your Twilio accounts for existing port requests. You cannot submit a new port request while another port is already in progress for the same phone number.",
    "description": "A port request for this phone number is already in progress with one of your Twilio accounts.",
    "date_created": "2026-03-26T08:17:06-07:00",
    "last_updated": "2026-03-26T08:17:06-07:00"
  },
  {
    "code": 22150,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Port In Error - Contact support required",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThere was an error during the port in process.\n\n### Possible causes\n\nThere was an error during the port in process.\n\n### Possible solutions\n\nPlease contact Twilio's Porting Operations team at porting@twilio.com for support.\n",
    "causes": "There was an error during the port in process.",
    "solutions": "Please contact Twilio's Porting Operations team at porting@twilio.com for support.",
    "description": "There was an error during the port in process.",
    "date_created": "2024-04-22T23:00:57Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22151,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Port In Error - Number with carrier restrictions",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nPhone number has carrier restrictions with the losing carrier that must be resolved before porting the phone number.\n\n### Possible causes\n\nA carrier may place a restriction on a phone number to prevent porting for many reasons, common ones include service freezes to prevent unauthorized transfers or billing problems.\n\n### Possible solutions\n\nContact the phone number's current carrier and resolve any outstanding issues that is preventing them from approving the port.\n",
    "causes": "A carrier may place a restriction on a phone number to prevent porting for many reasons, common ones include service freezes to prevent unauthorized transfers or billing problems.",
    "solutions": "Contact the phone number's current carrier and resolve any outstanding issues that is preventing them from approving the port.",
    "description": "Phone number has carrier restrictions with the losing carrier that must be resolved before porting the phone number.",
    "date_created": "2024-04-22T23:01:36Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22152,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Port In Error - Phone number is inactive or disconnected",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe phone number is inactive or disconnected on the losing carrier and so cannot be ported.\n\n### Possible causes\n\nThe phone number is inactive or disconnected on the losing carrier and so cannot be ported.\n\n### Possible solutions\n\nContact the phone number's current carrier to reactivate the phone number, so that you can port it to Twilio.\n",
    "causes": "The phone number is inactive or disconnected on the losing carrier and so cannot be ported.",
    "solutions": "Contact the phone number's current carrier to reactivate the phone number, so that you can port it to Twilio.",
    "description": "The phone number is inactive or disconnected on the losing carrier and so cannot be ported.",
    "date_created": "2024-04-22T23:02:22Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22153,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Invalid end user name",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe name of the Authorized Representative submitted in the port in request does not the losing carrier's information.\n\n### Possible causes\n\nThe name of the Authorized Representative submitted in the port in request does not the losing carrier's information.\n\n### Possible solutions\n\nUpdate the port in request to include an authorized representative that is on record with the losing carrier for this phone number.\n\nNote if this is the only phone number in a port in request that got rejected you may need to start a new port in request with this phone number so that you can correct the authorized representative name as it may be different from the other phone numbers in this request.\n",
    "causes": "The name of the Authorized Representative submitted in the port in request does not the losing carrier's information.",
    "solutions": "Update the port in request to include an authorized representative that is on record with the losing carrier for this phone number. Note if this is the only phone number in a port in request that got rejected you may need to start a new port in request with this phone number so that you can correct the authorized representative name as it may be different from the other phone numbers in this request.",
    "description": "The name of the Authorized Representative submitted in the port in request does not the losing carrier's information.",
    "date_created": "2024-04-22T23:03:06Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22154,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Invalid Address",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe address submitted in the port in request does not match the losing carrier's information for this phone number.\n\n### Possible causes\n\nThe address submitted in the port in request does not match the losing carrier's information for this phone number.\n\n### Possible solutions\n\nCheck the address submitted in the port in request for typos or change it to an address that matches the losing carrier's information for this phone number.\n\nNote if this is the only phone number in a port in request that got rejected you may need to start a new port in request with this phone number so that you can correct the address as it may be different from the other phone numbers in this request.\n",
    "causes": "The address submitted in the port in request does not match the losing carrier's information for this phone number.",
    "solutions": "Check the address submitted in the port in request for typos or change it to an address that matches the losing carrier's information for this phone number. Note if this is the only phone number in a port in request that got rejected you may need to start a new port in request with this phone number so that you can correct the address as it may be different from the other phone numbers in this request.",
    "description": "The address submitted in the port in request does not match the losing carrier's information for this phone number.",
    "date_created": "2024-04-22T23:04:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22155,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Invalid Pin",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe PIN submitted in the port in request for this phone number does not match the losing carrier's information.\n\n### Possible causes\n\nAn invalid or no PIN for this phone number was submitted as part of the port in request.\n\n### Possible solutions\n\nUpdate PIN in the port in request to one that matches the losing carrier's information.\n\nPINs are unique to a single phone numbers, so you should not need a new request to change the PIN for just this phone number. Instead update the port in request with the correct PIN.\n",
    "causes": "An invalid or no PIN for this phone number was submitted as part of the port in request.",
    "solutions": "Update PIN in the port in request to one that matches the losing carrier's information. PINs are unique to a single phone numbers, so you should not need a new request to change the PIN for just this phone number. Instead update the port in request with the correct PIN.",
    "description": "The PIN submitted in the port in request for this phone number does not match the losing carrier's information.",
    "date_created": "2024-04-22T23:05:08Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22156,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Invalid Account Number",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Account Number submitted in the port in request for this phone number does not match the losing carrier's information.\n\n### Possible causes\n\nThe Account Number submitted for the port in request does not match the losing carrier's information.\n\n### Possible solutions\n\nUpdate Account Number in the port in request to one that matches the losing carrier's information.\n\nNote if this is the only phone number in a port in request that got rejected you may need to start a new port in request with this phone number so that you can correct the account number as it may be different from the other phone numbers in this request.\n",
    "causes": "The Account Number submitted for the port in request does not match the losing carrier's information.",
    "solutions": "Update Account Number in the port in request to one that matches the losing carrier's information. Note if this is the only phone number in a port in request that got rejected you may need to start a new port in request with this phone number so that you can correct the account number as it may be different from the other phone numbers in this request.",
    "description": "The Account Number submitted in the port in request for this phone number does not match the losing carrier's information.",
    "date_created": "2024-04-22T23:05:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22157,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Invalid Subscription Right",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe subscription right provided as part of the porting request is invalid\n\n### Possible causes\n\nThe subscription right provided as part of the porting request was not accepted by NTT. Certain NTT plans only allow one subscription right, see the solution section for which one you should use.\n\n### Possible solutions\n\nSome NTT plans only allowed to request specific subscription rights.\n\nIf your current NTT plan is the \"Light Plan\", then only the Termination subscription right will be accepted by NTT.\n\nOtherwise you should request the subscription right \"Suspension\".\n",
    "causes": "The subscription right provided as part of the porting request was not accepted by NTT. Certain NTT plans only allow one subscription right, see the solution section for which one you should use.",
    "solutions": "Some NTT plans only allowed to request specific subscription rights. If your current NTT plan is the \"Light Plan\", then only the Termination subscription right will be accepted by NTT. Otherwise you should request the subscription right \"Suspension\".",
    "description": "The subscription right provided as part of the porting request is invalid",
    "date_created": "2024-08-29T18:13:23Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22158,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Port Date Rejected",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe requested target port date was rejected by the losing carrier\n\n### Possible causes\n\nThe requested target port date was rejected by the losing carrier. This can happen for a lot of reasons, some common ones include:\n\n- If the date is on a public holiday\n- If the date is on a scheduled maintenance window of the losing carrier\n\n### Possible solutions\n\nResubmit the port in request with a different target port date. Please review the new date to ensure it does not fall on a public holiday.\n\nContact support at porting@twilio.com if you need help selecting a target port date.\n",
    "causes": "The requested target port date was rejected by the losing carrier. This can happen for a lot of reasons, some common ones include: - If the date is on a public holiday\n- If the date is on a scheduled maintenance window of the losing carrier",
    "solutions": "Resubmit the port in request with a different target port date. Please review the new date to ensure it does not fall on a public holiday. Contact support at porting@twilio.com if you need help selecting a target port date.",
    "description": "The requested target port date was rejected by the losing carrier",
    "date_created": "2024-08-29T18:15:56Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22159,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Not Portable",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe losing carrier has rejected the port request for the number stating that the phone number cannot be ported.\n\n### Possible causes\n\nThe most likely case here is that the phone number uses services on the losing carrier that prevent it from being ported. For example, in Japan both rental phone numbers & public phone numbers cannot be ported.\n\nIn rare cases, the number may have been incorrectly typed by Twilio's Portability API and the requested number is not actually portable.\n\n### Possible solutions\n\nCheck with your current carrier to determine if you are using any services that would prevent the phone number from being ported to Twilio. If you can remove those services you may still be able to attempt a port.\n\nOtherwise, please reach out to Support at porting@twilio.com and they can help to troubleshoot the rejection further and find alternatives for you.\n",
    "causes": "The most likely case here is that the phone number uses services on the losing carrier that prevent it from being ported. For example, in Japan both rental phone numbers & public phone numbers cannot be ported. In rare cases, the number may have been incorrectly typed by Twilio's Portability API and the requested number is not actually portable.",
    "solutions": "Check with your current carrier to determine if you are using any services that would prevent the phone number from being ported to Twilio. If you can remove those services you may still be able to attempt a port. Otherwise, please reach out to Support at porting@twilio.com and they can help to troubleshoot the rejection further and find alternatives for you.",
    "description": "The losing carrier has rejected the port request for the number stating that the phone number cannot be ported.",
    "date_created": "2024-08-29T18:16:37Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22170,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Invalid Bundle",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nGiven Bundle SID does not exist for your account or is not approved.\n\n### Possible causes\n\nThe Bundle SID does not exist or is not approved yet.\n\n### Possible solutions\n\nUpdate the Bundle SID to one that exists or is approved.\n",
    "causes": "The Bundle SID does not exist or is not approved yet.",
    "solutions": "Update the Bundle SID to one that exists or is approved.",
    "description": "Given Bundle SID does not exist for your account or is not approved.",
    "date_created": "2024-05-03T16:58:30Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22171,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Missing required fields",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nMissing required fields, please review which fields are required for each country.\n\n### Possible causes\n\nThere are missing required fields for the country your phone numbers are related to.\n\n### Possible solutions\n\nCheck what fields are required for each country and update those fields with valid values.\n",
    "causes": "There are missing required fields for the country your phone numbers are related to.",
    "solutions": "Check what fields are required for each country and update those fields with valid values.",
    "description": "Missing required fields, please review which fields are required for each country.",
    "date_created": "2024-05-03T16:59:10Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22172,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Contains numbers for multiple countries",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nPort in request contains numbers for multiple countries or that are not in E.164 format.\n\n### Possible causes\n\nThere are phone numbers in the port in request from multiple countries.\n\nThere are phone numbers in the port in request that are not in E.164 format and so the country cannot be identified.\n\n### Possible solutions\n\nPlease review the list of phone numbers and submit one port in request for all numbers from each country. A port in request can only contain phone numbers from one country.\n\nAlso double check that all phone numbers are in E.164 format so that Twilio can correct identify the country code. https://www.twilio.com/docs/glossary/what-e164\n",
    "causes": "There are phone numbers in the port in request from multiple countries. There are phone numbers in the port in request that are not in E.164 format and so the country cannot be identified.",
    "solutions": "Please review the list of phone numbers and submit one port in request for all numbers from each country. A port in request can only contain phone numbers from one country. Also double check that all phone numbers are in E.164 format so that Twilio can correct identify the country code. https://www.twilio.com/docs/glossary/what-e164",
    "description": "Port in request contains numbers for multiple countries or that are not in E.164 format.",
    "date_created": "2024-05-03T17:00:10Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22173,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Port In Error - Invalid Address",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nGiven Address SID does not exist for your account or is invalid.\n\n### Possible causes\n\nGiven Address SID does not exist for your account or is invalid.\n\n### Possible solutions\n\nUpdate the Address SID to one that exists or check the account you are using.\n",
    "causes": "Given Address SID does not exist for your account or is invalid.",
    "solutions": "Update the Address SID to one that exists or check the account you are using.",
    "description": "Given Address SID does not exist for your account or is invalid.",
    "date_created": "2024-05-03T17:00:43Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22199,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Configuration Retrieval Error",
    "secondary_message": "The Phone Numbers Configuration is Missing",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Phone Numbers Configuration is Missing. Phone Numbers have a configuration for each region. This Error shows if you are attempting to perform an action that requires region specific configuration. Please create or add a configuration to this Phone Number for the Region in question.\n\n### Possible causes\n\nPerforming an Action that Requires a Configuration in Region in Question\n\n### Possible solutions\n\nDouble Check that the phone number has a configuration for each region you are working with.\n",
    "causes": "Performing an Action that Requires a Configuration in Region in Question",
    "solutions": "Double Check that the phone number has a configuration for each region you are working with.",
    "description": "The Phone Numbers Configuration is Missing. Phone Numbers have a configuration for each region. This Error shows if you are attempting to perform an action that requires region specific configuration. Please create or add a configuration to this Phone Number for the Region in question.",
    "date_created": "2022-04-26T14:15:12Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22200,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid End-User Type or Number Type",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nAn invalid End-User Type or Number Type is included in the request to create a Bundle.\n\n### Possible causes\n\nThe End-User Type or Number Type is malformed or is not an acceptable value.\n\n### Possible solutions\n\nEnsure that the End-User Type value or Number Type value is spelled correctly or is an acceptable value from the End-User Type LIST resource or Number Type LIST resource.\n",
    "causes": "The End-User Type or Number Type is malformed or is not an acceptable value.",
    "solutions": "Ensure that the End-User Type value or Number Type value is spelled correctly or is an acceptable value from the End-User Type LIST resource or Number Type LIST resource.",
    "description": "An invalid End-User Type or Number Type is included in the request to create a Bundle.",
    "date_created": "2019-12-24T18:39:44Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "No regulation sid found for the given number group",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nNo regulation sid found for the given number group\n\n### Possible causes\n\nThe regulation sid may be misspelled or belong to another account.\n\n### Possible solutions\n\nUse the Regulations LIST resource with filters to find the correct Number Group.\n",
    "causes": "The regulation sid may be misspelled or belong to another account.",
    "solutions": "Use the Regulations LIST resource with filters to find the correct Number Group.",
    "description": "No regulation sid found for the given number group",
    "date_created": "2019-12-24T18:40:58Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22202,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "No regulation sid or phone number country and type was provided",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nNo regulation sid or phone number country and type was provided\n\n### Possible causes\n\nThe regulation sid or phone number country and type are missing from the request.\n\n### Possible solutions\n\n- Please ensure you are passing a regulation sid or phone number country and type\n- If you need to know which regulation sid or phone number country and type to use, please refer to the Regulations REST API.\n",
    "causes": "The regulation sid or phone number country and type are missing from the request.",
    "solutions": "* Please ensure you are passing a regulation sid or phone number country and type\n* If you need to know which regulation sid or phone number country and type to use, please refer to the Regulations REST API.",
    "description": "No regulation sid or phone number country and type was provided",
    "date_created": "2019-12-24T18:41:59Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22203,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to parse bundle status",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nBundle Status provided by user didn't parse into the accepted enum valuesf\n\n### Possible causes\n\nBundle status is not a valid option from the enum values\n\n### Possible solutions\n\nRefer to the Bundle REST API status section for which statuses you are able to choose from.\n",
    "causes": "Bundle status is not a valid option from the enum values",
    "solutions": "Refer to the Bundle REST API status section for which statuses you are able to choose from.",
    "description": "Bundle Status provided by user didn't parse into the accepted enum valuesf",
    "date_created": "2019-12-24T18:42:45Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22204,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Bundle status and properties cannot be updated in the same request",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nBundle status and properties cannot be updated in the same request\n\n### Possible causes\n\nStatus update and a property update are in the same request\n\n### Possible solutions\n\nRemove the status update parameter or remove the property update(s) in the request.\n",
    "causes": "Status update and a property update are in the same request",
    "solutions": "Remove the status update parameter or remove the property update(s) in the request.",
    "description": "Bundle status and properties cannot be updated in the same request",
    "date_created": "2019-12-24T18:43:46Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22205,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attempting to assign invalid object_sid to Bundle",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou are attempting to add an invalid object\\_sid to the Bundle.\n\n### Possible causes\n\nThe object\\_sid may be malformed or belonging to a different account.\n\n### Possible solutions\n\nPlease refer to the Supporting Documents LIST or End-User LIST resources to find the correct Supporting Document SID or End-User SID to assign as an item to a Bundle.\n",
    "causes": "The object\\_sid may be malformed or belonging to a different account.",
    "solutions": "Please refer to the Supporting Documents LIST or End-User LIST resources to find the correct Supporting Document SID or End-User SID to assign as an item to a Bundle.",
    "description": "You are attempting to add an invalid object\\_sid to the Bundle.",
    "date_created": "2019-12-24T18:44:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22206,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attempting to add invalid object type to bundle",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe object\\_sid provided was not a Supporting Document Sid or an End-User Sid\n\n### Possible causes\n\nThe SID belongs to a different object group that is not allowed to be assigned as an item to a Bundle.\n\n### Possible solutions\n\nPlease refer to the Supporting Documents LIST or End-User LIST resources to find the correct Supporting Document SID or End-User SID to assign as an item to a Bundle.\n",
    "causes": "The SID belongs to a different object group that is not allowed to be assigned as an item to a Bundle.",
    "solutions": "Please refer to the Supporting Documents LIST or End-User LIST resources to find the correct Supporting Document SID or End-User SID to assign as an item to a Bundle.",
    "description": "The object\\_sid provided was not a Supporting Document Sid or an End-User Sid",
    "date_created": "2019-12-24T18:45:30Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22207,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to parse attributes JSON",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe attributes JSON string provided was not valid or parsing otherwise failed.\n\n### Possible causes\n\nThe JSON was invalid.\n\n### Possible solutions\n\nCheck to see if the JSON is valid and resend the request.\n",
    "causes": "The JSON was invalid.",
    "solutions": "Check to see if the JSON is valid and resend the request.",
    "description": "The attributes JSON string provided was not valid or parsing otherwise failed.",
    "date_created": "2019-12-24T18:46:11Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22208,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Supporting Document status and attributes cannot be updated in the same request",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nBoth the Supporting Documents status and the attributes were present in the update request.\n\n### Possible causes\n\nThe Supporting Documents status cannot have both the status and the attributes in the same update request.\n\n### Possible solutions\n\nSend the attributes in the update request followed with a status update in another request.\n",
    "causes": "The Supporting Documents status cannot have both the status and the attributes in the same update request.",
    "solutions": "Send the attributes in the update request followed with a status update in another request.",
    "description": "Both the Supporting Documents status and the attributes were present in the update request.",
    "date_created": "2019-12-24T18:46:52Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22209,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid status enum in Supporting Document update request",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nAn invalid status enum was sent in an update Supporting Document reques\n\n### Possible causes\n\nThe status enum may be malformed or incorrect.\n\n### Possible solutions\n\nPlease refer to the Supporting Documents REST Public API documentation for the update instance resource to pick from an allowed status enum list.\n",
    "causes": "The status enum may be malformed or incorrect.",
    "solutions": "Please refer to the Supporting Documents REST Public API documentation for the update instance resource to pick from an allowed status enum list.",
    "description": "An invalid status enum was sent in an update Supporting Document reques",
    "date_created": "2019-12-24T18:47:32Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22210,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot create a Supporting Document with no Type",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nA Supporting Document instance was requested to be created with no `Type` specified\n\n### Possible causes\n\nEither the Type string was malformed or the Supporting Document Type name does not exist.\n\n### Possible solutions\n\nRefer to the Supporting Document Types LIST resource to find the correct name type for your request.\n",
    "causes": "Either the Type string was malformed or the Supporting Document Type name does not exist.",
    "solutions": "Refer to the Supporting Document Types LIST resource to find the correct name type for your request.",
    "description": "A Supporting Document instance was requested to be created with no `Type` specified",
    "date_created": "2019-12-24T18:48:41Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22211,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot create a Supporting Document with no FriendlyName",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe request to create a new Supporting Document instance did not contain a FriendlyName\n\n### Possible causes\n\nThe FriendlyName is missing from the `POST` LIST request to create a new Supporting Document.\n\n### Possible solutions\n\nResend the request including the FriendlyName\n",
    "causes": "The FriendlyName is missing from the `POST` LIST request to create a new Supporting Document.",
    "solutions": "Resend the request including the FriendlyName",
    "description": "The request to create a new Supporting Document instance did not contain a FriendlyName",
    "date_created": "2019-12-24T18:49:40Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22212,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid End-User Type in request",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nAn invalid End-User Type is included in the request to filter the Regulations LIST resource.\n\n### Possible causes\n\nThe End-User Type is malformed or is not an acceptable value.\n\n### Possible solutions\n\nEnsure that the End-User Type value is spelled correctly or is present in the End-User Type LIST resource.\n",
    "causes": "The End-User Type is malformed or is not an acceptable value.",
    "solutions": "Ensure that the End-User Type value is spelled correctly or is present in the End-User Type LIST resource.",
    "description": "An invalid End-User Type is included in the request to filter the Regulations LIST resource.",
    "date_created": "2019-12-24T18:50:51Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22213,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Number Type in request",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nAn invalid End-User Type is included in the request to filter the Regulations LIST resource.\n\n### Possible causes\n\nThe Number Type is malformed or is not an acceptable value.\n\n### Possible solutions\n\nEnsure that the Number Type value is spelled correctly or is an acceptable Number Type in the Regulations LIST resource\n",
    "causes": "The Number Type is malformed or is not an acceptable value.",
    "solutions": "Ensure that the Number Type value is spelled correctly or is an acceptable Number Type in the Regulations LIST resource",
    "description": "An invalid End-User Type is included in the request to filter the Regulations LIST resource.",
    "date_created": "2019-12-24T18:51:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22214,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing End User",
    "secondary_message": "User is missing.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nAn End User is missing from the regulatory bundle\n\n### Possible causes\n\nThe Regulation requires an end-user which is missing from the regulatory bundle you are attempting to evaluate.\n\n### Possible solutions\n\nPlease refer to the Regulations API to ensure that the End User satisfying the requirement is in the regulatory bundle.\n",
    "causes": "The Regulation requires an end-user which is missing from the regulatory bundle you are attempting to evaluate.",
    "solutions": "Please refer to the Regulations API to ensure that the End User satisfying the requirement is in the regulatory bundle.",
    "description": "An End User is missing from the regulatory bundle",
    "date_created": "2020-04-23T21:53:57Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22215,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing End-User field",
    "secondary_message": "User information is missing.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nAn End-User field is missing from the Regulatory Bundle\n\n### Possible causes\n\nThe Regulation requires an End-User field which is missing from your Regulatory Bundle.\n\n### Possible solutions\n\nPlease refer to the Regulations API to ensure that all required fields are present in the End-User.\n",
    "causes": "The Regulation requires an End-User field which is missing from your Regulatory Bundle.",
    "solutions": "Please refer to the Regulations API to ensure that all required fields are present in the End-User.",
    "description": "An End-User field is missing from the Regulatory Bundle",
    "date_created": "2020-04-23T22:06:33Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22216,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing Supporting Document",
    "secondary_message": "A document is missing.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nA Supporting Document satisfying the requirement is missing from the regulatory bundle.\n\n### Possible causes\n\nThe Regulation requires a Supporting Document which is missing from your Regulatory Bundle.\n\n### Possible solutions\n\nPlease refer to the Regulations API resource to ensure that a Supporting Document satisfying the requirement is in the regulatory bundle.\n",
    "causes": "The Regulation requires a Supporting Document which is missing from your Regulatory Bundle.",
    "solutions": "Please refer to the Regulations API resource to ensure that a Supporting Document satisfying the requirement is in the regulatory bundle.",
    "description": "A Supporting Document satisfying the requirement is missing from the regulatory bundle.",
    "date_created": "2020-04-23T22:26:28Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22217,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing Supporting Document field",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Regulatory Bundle is missing a field required for one of its Supporting Documents. A Regulation defines the required End-User and Supporting Document values, and the Supporting Document Type resource returns the `fields` your document must include.\n\n### Possible causes\n\n- Your application created or updated a Supporting Document without all required `attributes` for the selected Supporting Document Type.\n- You relied on hardcoded field requirements instead of retrieving the current Regulation. Regulations can change, and the Regulation resource is designed to provide the values required for regulatory compliance.\n- The applicable Regulation requires one or more Supporting Document fields exposed through `fields` or `detailed_fields`, but your bundle omitted one of them.\n\n### Possible solutions\n\n- Fetch the applicable Regulation for the phone number country, number type, and end-user type. Set `includeConstraints=true` so you can review the required document fields before you create or update the bundle.\n- Retrieve the selected Supporting Document Type and provide every field listed in its `fields` array when you create the Supporting Document.\n- Update or recreate the Supporting Document with complete `attributes`, then add it to the Regulatory Bundle. If the Regulation requires document proof, upload a supported file type such as JPEG, PNG, or PDF up to 5 MB.\n\n#### Additional resources\n\n- [Regulation Resource](/docs/phone-numbers/regulatory/api/regulations)\n- [Supporting Document Types Resource](/docs/phone-numbers/regulatory/api/supporting-document-types)\n- [Supporting Documents Resource](/docs/phone-numbers/regulatory/api/supporting-documents)\n",
    "causes": "* Your application created or updated a Supporting Document without all required `attributes` for the selected Supporting Document Type.\n* You relied on hardcoded field requirements instead of retrieving the current Regulation. Regulations can change, and the Regulation resource is designed to provide the values required for regulatory compliance.\n* The applicable Regulation requires one or more Supporting Document fields exposed through `fields` or `detailed_fields`, but your bundle omitted one of them.",
    "solutions": "* Fetch the applicable Regulation for the phone number country, number type, and end-user type. Set `includeConstraints=true` so you can review the required document fields before you create or update the bundle.\n* Retrieve the selected Supporting Document Type and provide every field listed in its `fields` array when you create the Supporting Document.\n* Update or recreate the Supporting Document with complete `attributes`, then add it to the Regulatory Bundle. If the Regulation requires document proof, upload a supported file type such as JPEG, PNG, or PDF up to 5 MB.",
    "description": "This error occurs when your Regulatory Bundle is missing a field required for one of its Supporting Documents. A Regulation defines the required End-User and Supporting Document values, and the Supporting Document Type resource returns the `fields` your document must include.",
    "date_created": "2020-04-23T22:12:33Z",
    "last_updated": "2026-06-09T15:10:28+01:00"
  },
  {
    "code": 22218,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Supporting Document field does not match the field in the End-User",
    "secondary_message": "Document and user fields mismatch.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Supporting Document field does not match the field in the End-User.\n\n### Possible causes\n\nThe Regulation requires the fields on the Supporting Document and End-User to match.\n\n### Possible solutions\n\nPlease ensure that the field in the Supporting Document matches the field in the End-User.\n",
    "causes": "The Regulation requires the fields on the Supporting Document and End-User to match.",
    "solutions": "Please ensure that the field in the Supporting Document matches the field in the End-User.",
    "description": "The Supporting Document field does not match the field in the End-User.",
    "date_created": "2020-04-23T22:15:43Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22219,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "An Address is missing",
    "secondary_message": "An address is missing.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nAn Address is missing from the regulatory Bundle\n\n### Possible causes\n\nThe Regulation requires an Address to be assigned to a Supporting Document in the Regulatory Bundle.\n\n### Possible solutions\n\nPlease refer to the Regulations API to ensure that an AddressSid is assigned to a Supporting Document.\n",
    "causes": "The Regulation requires an Address to be assigned to a Supporting Document in the Regulatory Bundle.",
    "solutions": "Please refer to the Regulations API to ensure that an AddressSid is assigned to a Supporting Document.",
    "description": "An Address is missing from the regulatory Bundle",
    "date_created": "2020-04-23T22:18:30Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22221,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Emergency address is not registered",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe emergency address is missing when an emergency call is made. The emergency call might have an additional cost.\n\n### Possible causes\n\nFrom number does not have a registered emergency address when an emergency call is made.\n\n### Possible solutions\n\nPlease register an emergency address with the from number.\n",
    "causes": "From number does not have a registered emergency address when an emergency call is made.",
    "solutions": "Please register an emergency address with the from number.",
    "description": "The emergency address is missing when an emergency call is made. The emergency call might have an additional cost.",
    "date_created": "2021-03-24T09:14:19Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22222,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Emergency Status cannot be updated",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis warning appears when you send an update request for an IncomingPhoneNumber that includes `EmergencyStatus`. Twilio does not enable or disable emergency calling by updating `EmergencyStatus`. Instead, associate or remove an emergency address with `EmergencyAddressSid`, then check `emergencyAddressStatus` to confirm whether the address is `registered`, `unregistered`, or still pending.\n\n### Possible causes\n\n- Your `POST` request to update an IncomingPhoneNumber included the `EmergencyStatus` parameter.\n- Your application tried to activate or deactivate emergency calling by setting `EmergencyStatus` to `Active` or `Inactive`. Twilio ignores those changes for emergency calling configuration.\n- You intended to register or remove an emergency address, but updated `EmergencyStatus` instead of `EmergencyAddressSid`.\n\n### Possible solutions\n\n- Remove `EmergencyStatus` from the IncomingPhoneNumber update request.\n- To register emergency calling for a number, create and validate an emergency address if needed, then update the phone number with `EmergencyAddressSid`.\n- To remove an emergency address from a number, update `EmergencyAddressSid` to `null`. For `curl`, leave the value blank.\n- After you change the emergency address association, fetch the phone number and verify `emergencyAddressStatus`. A registered address is used when handling emergency calls from that number.\n- If you are replacing an emergency address, first disassociate the current address, confirm the number is `unregistered`, then associate the new address and confirm it becomes `registered`.\n\n#### Additional resources\n\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n- [Emergency Calling for SIP Interfaces API](/docs/voice/sip/api/emergency-calling-api)\n- [How to Unregister an Emergency Address from a Twilio Phone Number](https://help.twilio.com/articles/6020069097115-How-to-Unregister-an-Emergency-Address-from-a-Twilio-Phone-Number)\n",
    "causes": "* Your `POST` request to update an IncomingPhoneNumber included the `EmergencyStatus` parameter.\n* Your application tried to activate or deactivate emergency calling by setting `EmergencyStatus` to `Active` or `Inactive`. Twilio ignores those changes for emergency calling configuration.\n* You intended to register or remove an emergency address, but updated `EmergencyStatus` instead of `EmergencyAddressSid`.",
    "solutions": "* Remove `EmergencyStatus` from the IncomingPhoneNumber update request.\n* To register emergency calling for a number, create and validate an emergency address if needed, then update the phone number with `EmergencyAddressSid`.\n* To remove an emergency address from a number, update `EmergencyAddressSid` to `null`. For `curl`, leave the value blank.\n* After you change the emergency address association, fetch the phone number and verify `emergencyAddressStatus`. A registered address is used when handling emergency calls from that number.\n* If you are replacing an emergency address, first disassociate the current address, confirm the number is `unregistered`, then associate the new address and confirm it becomes `registered`.",
    "description": "This warning appears when you send an update request for an IncomingPhoneNumber that includes `EmergencyStatus`. Twilio does not enable or disable emergency calling by updating `EmergencyStatus`. Instead, associate or remove an emergency address with `EmergencyAddressSid`, then check `emergencyAddressStatus` to confirm whether the address is `registered`, `unregistered`, or still pending.",
    "date_created": "2022-02-04T22:11:01Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 22223,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Regulatory Bundle is not eligible to be Copied",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Regulatory Bundle requested is not eligible to be Copied.\n\n### Possible causes\n\nThe Regulatory Bundle is either in not in a twilio-approved status or does not have a valid\\_until date\n\n### Possible solutions\n\nSelect a Regulatory Bundle that is eligible to be Copied by filtering the Regulatory Bundle list with a valid\\_until date and in the twilio-approved status.\n",
    "causes": "The Regulatory Bundle is either in not in a twilio-approved status or does not have a valid\\_until date",
    "solutions": "Select a Regulatory Bundle that is eligible to be Copied by filtering the Regulatory Bundle list with a valid\\_until date and in the twilio-approved status.",
    "description": "The Regulatory Bundle requested is not eligible to be Copied.",
    "date_created": "2022-03-10T23:27:33Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22224,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Regulatory Bundle cannot transfer Item Assignments",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Regulatory Bundle cannot transfer the Item Assignments from the destination Bundle.\n\n### Possible causes\n\nThe status is either not eligible as all Bundles need to be in a twilio-approved state or the destination Bundle is not a Copy of the source Bundle.\n\n### Possible solutions\n\nEnsure both Bundles are in the correct twilio-approved status and that the destination Bundle is a Copy of the source Bundle.\n",
    "causes": "The status is either not eligible as all Bundles need to be in a twilio-approved state or the destination Bundle is not a Copy of the source Bundle.",
    "solutions": "Ensure both Bundles are in the correct twilio-approved status and that the destination Bundle is a Copy of the source Bundle.",
    "description": "The Regulatory Bundle cannot transfer the Item Assignments from the destination Bundle.",
    "date_created": "2022-03-10T23:30:48Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22225,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "From Bundle to Replace Items does not exist",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when you call the Replace Items endpoint with a `fromBundleSid` that Twilio cannot find. Replace Items uses `fromBundleSid` to copy item assignments from an existing source bundle into the destination bundle.\n\n### Possible causes\n\n- The `fromBundleSid` value is incorrect and does not match an existing Bundle SID.\n- You called Replace Items before creating a Bundle Copy to use as the source bundle.\n- The source Bundle Copy was deleted, or you are reusing an old SID that is no longer valid for your current compliance update workflow.\n- You passed the wrong BU SID, such as the destination bundle SID instead of the source Bundle Copy SID.\n\n### Possible solutions\n\n- Verify that `fromBundleSid` exactly matches an existing Bundle SID. Use the BU SID returned when you create the Bundle Copy.\n- List the available Bundle Copies for the destination bundle and confirm you are passing the correct source Bundle Copy SID.\n- If no Bundle Copy exists yet, create a Bundle Copy from the original bundle before calling Replace Items.\n- Update the Bundle Copy as needed, submit it for review, and wait until its status is `twilio-approved` before using that SID in `fromBundleSid`.\n- If you deleted the source Bundle Copy or need to repeat the workflow, create a new Bundle Copy and use the new SID. Replace Items is a one-time operation.\n\n#### Additional resources\n\n- [Bundle Replace Items Resource](/docs/phone-numbers/regulatory/api/replace-items-resource)\n- [Bundle Copies Resource](/docs/phone-numbers/regulatory/api/copies-resource)\n- [API Getting Started: Compliance Information Update](/docs/phone-numbers/regulatory/getting-started/api-getting-started-compliance-information-update)\n",
    "causes": "* The `fromBundleSid` value is incorrect and does not match an existing Bundle SID.\n* You called Replace Items before creating a Bundle Copy to use as the source bundle.\n* The source Bundle Copy was deleted, or you are reusing an old SID that is no longer valid for your current compliance update workflow.\n* You passed the wrong BU SID, such as the destination bundle SID instead of the source Bundle Copy SID.",
    "solutions": "* Verify that `fromBundleSid` exactly matches an existing Bundle SID. Use the BU SID returned when you create the Bundle Copy.\n* List the available Bundle Copies for the destination bundle and confirm you are passing the correct source Bundle Copy SID.\n* If no Bundle Copy exists yet, create a Bundle Copy from the original bundle before calling Replace Items.\n* Update the Bundle Copy as needed, submit it for review, and wait until its status is `twilio-approved` before using that SID in `fromBundleSid`.\n* If you deleted the source Bundle Copy or need to repeat the workflow, create a new Bundle Copy and use the new SID. Replace Items is a one-time operation.",
    "description": "This error occurs when you call the Replace Items endpoint with a `fromBundleSid` that Twilio cannot find. Replace Items uses `fromBundleSid` to copy item assignments from an existing source bundle into the destination bundle.",
    "date_created": "2022-03-10T23:34:59Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 22226,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot replace Items from Bundle to same Bundle",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nFrom FromBundleSid cannot be the same Bundle as in URI request.\n\n### Possible causes\n\nThe same FromBundleSid is being used in both the URI and the From Bundle.\n\n### Possible solutions\n\nPlease ensure From FromBundleSid is Copy of the provisioning Bundle.\n",
    "causes": "The same FromBundleSid is being used in both the URI and the From Bundle.",
    "solutions": "Please ensure From FromBundleSid is Copy of the provisioning Bundle.",
    "description": "From FromBundleSid cannot be the same Bundle as in URI request.",
    "date_created": "2022-03-10T23:37:53Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22228,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "From Bundle does not meet the latest Regulation requirements",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when the source bundle you pass as `fromBundleSid` does not satisfy the current Regulation requirements for the destination bundle. Regulations can change, and a Regulatory Bundle must contain the End-User and Supporting Document item assignments required by the active Regulation before you can use it successfully.\n\n### Possible causes\n\n- The source bundle was created or approved under an older version of the Regulation, and it no longer matches the latest requirements for the destination bundle.\n- The source bundle is missing one or more required End-User or Supporting Document item assignments for the current Regulation.\n- The bundle is now `noncompliant`, and an evaluation would return failure reasons for the attributes that no longer satisfy the Regulation.\n\n### Possible solutions\n\n- Retrieve the destination bundle's `regulationSid` and use the Regulation resource to confirm the current End-User and Supporting Document types that are required. Do not hardcode Regulation requirements in your application.\n- Create an Evaluation for the affected bundle and review the `results` array, including each `failure_reason` and invalid attribute, to identify exactly what must be corrected.\n- Create a Bundle Copy of the affected bundle, update that copy with the required items for the current Regulation, and submit the updated copy for review.\n- After the updated bundle copy is `twilio-approved`, call Replace Items again and pass the approved source bundle SID in `fromBundleSid`.\n- If you still cannot resolve the mismatch, contact support through the Help Center and include the destination `BundleSid` and `fromBundleSid` when you request help.\n\n#### Additional resources\n\n- [Bundle Copies Resource](/docs/phone-numbers/regulatory/api/copies-resource)\n- [Evaluations Resource](/docs/phone-numbers/regulatory/api/evaluations)\n- [Bundle Replace Items Resource](/docs/phone-numbers/regulatory/api/replace-items-resource)\n",
    "causes": "* The source bundle was created or approved under an older version of the Regulation, and it no longer matches the latest requirements for the destination bundle.\n* The source bundle is missing one or more required End-User or Supporting Document item assignments for the current Regulation.\n* The bundle is now `noncompliant`, and an evaluation would return failure reasons for the attributes that no longer satisfy the Regulation.",
    "solutions": "* Retrieve the destination bundle's `regulationSid` and use the Regulation resource to confirm the current End-User and Supporting Document types that are required. Do not hardcode Regulation requirements in your application.\n* Create an Evaluation for the affected bundle and review the `results` array, including each `failure_reason` and invalid attribute, to identify exactly what must be corrected.\n* Create a Bundle Copy of the affected bundle, update that copy with the required items for the current Regulation, and submit the updated copy for review.\n* After the updated bundle copy is `twilio-approved`, call Replace Items again and pass the approved source bundle SID in `fromBundleSid`.\n* If you still cannot resolve the mismatch, contact support through the Help Center and include the destination `BundleSid` and `fromBundleSid` when you request help.",
    "description": "This error occurs when the source bundle you pass as `fromBundleSid` does not satisfy the current Regulation requirements for the destination bundle. Regulations can change, and a Regulatory Bundle must contain the End-User and Supporting Document item assignments required by the active Regulation before you can use it successfully.",
    "date_created": "2022-03-10T23:40:53Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 22229,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Supporting Document Bundle Assignment cannot be removed",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe destination Bundle must have the same address as the Bundle Copy due to lack of feature support for Phone Number address assignment.\n\n### Possible causes\n\nThe Address in the Bundle Copy must be the same as in the destination Bundle and cannot be removed.\n\n### Possible solutions\n\nMetadata of the Supporting Document can be updated but the Address is immutable. Either a new Supporting Document that validates the same information can be supplied or a new Regulatory Bundle can be created.\n",
    "causes": "The Address in the Bundle Copy must be the same as in the destination Bundle and cannot be removed.",
    "solutions": "Metadata of the Supporting Document can be updated but the Address is immutable. Either a new Supporting Document that validates the same information can be supplied or a new Regulatory Bundle can be created.",
    "description": "The destination Bundle must have the same address as the Bundle Copy due to lack of feature support for Phone Number address assignment.",
    "date_created": "2022-03-10T23:50:41Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22230,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Regulatory Bundle cannot be copied due to a deleted Address",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Regulatory Bundle requested cannot be copied due to a deleted Address.\n\n### Possible causes\n\nThe Address linked to the Regulatory Bundle was deleted.\n\n### Possible solutions\n\nCreate a new Address on your Account or Sub-Account (if you don't already have one) and reach out to [Twilio Support](https://support.twilio.com/hc/en-us) to link it to the Regulatory Bundle that you wish to copy.\n",
    "causes": "The Address linked to the Regulatory Bundle was deleted.",
    "solutions": "Create a new Address on your Account or Sub-Account (if you don't already have one) and reach out to [Twilio Support](https://support.twilio.com/hc/en-us) to link it to the Regulatory Bundle that you wish to copy.",
    "description": "The Regulatory Bundle requested cannot be copied due to a deleted Address.",
    "date_created": "2024-08-12T07:12:30Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22300,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "This account is restricted from provisioning new long code phone numbers",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe account is temporarily restricted from provisioning new long code phone numbers.\n\n### Possible causes\n\nTwilio Compliance has temporarily restricted the account from provisioning new long code phone numbers.\n\n### Possible solutions\n\nPlease reach out to verifymyaccount@twilio.com to have this restriction lifted from your account. Be sure to include your Twilio Account SID, the name of your business or project, and a brief explanation of your use case.\n",
    "causes": "Twilio Compliance has temporarily restricted the account from provisioning new long code phone numbers.",
    "solutions": "Please reach out to verifymyaccount@twilio.com to have this restriction lifted from your account. Be sure to include your Twilio Account SID, the name of your business or project, and a brief explanation of your use case.",
    "description": "The account is temporarily restricted from provisioning new long code phone numbers.",
    "date_created": "2021-06-01T21:29:17Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22350,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Phone Number cannot be released because it is being ported out of Twilio",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe Phone Number cannot be released because it is being ported out of Twilio.\n\n### Possible causes\n\nThe Phone Number is being ported out of Twilio.\n\n### Possible solutions\n\nYou cannot release a Phone Number that is being ported out. Please, reach out to porting@twilio.com for assistance.\n",
    "causes": "The Phone Number is being ported out of Twilio.",
    "solutions": "You cannot release a Phone Number that is being ported out. Please, reach out to porting@twilio.com for assistance.",
    "description": "The Phone Number cannot be released because it is being ported out of Twilio.",
    "date_created": "2024-12-18T18:21:25Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22400,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Phone Number linked to Active Route Configuration",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nPhone Number linked to Active Route Configuration.\n\n### Possible causes\n\nPhone Number linked to Active Route Configuration.\n\n### Possible solutions\n\nPlease contact Twilio Support either via the [Console](https://console.twilio.com) or the [Help Center](https://support.twilio.com) to request assistance with deleting the Active Route Configuration for an inactive phone number reference.\n",
    "causes": "Phone Number linked to Active Route Configuration.",
    "solutions": "Please contact Twilio Support either via the [Console](https://console.twilio.com) or the [Help Center](https://support.twilio.com) to request assistance with deleting the Active Route Configuration for an inactive phone number reference.",
    "description": "Phone Number linked to Active Route Configuration.",
    "date_created": "2022-04-26T14:07:18Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22401,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone Number Instance fields are not supported within region",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe fields you are attempting to update are not supported within the region specified.\n\n### Possible causes\n\nThe feature is not supported within the region.\n\n### Possible solutions\n\nPlease refer to documentation to understand which fields are supported.\n",
    "causes": "The feature is not supported within the region.",
    "solutions": "Please refer to documentation to understand which fields are supported.",
    "description": "The fields you are attempting to update are not supported within the region specified.",
    "date_created": "2022-04-26T14:09:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22402,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone Number Operation not permitted within Region",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nPhone Number update operation is not permitted within the Region.\n\n### Possible causes\n\nCertain Phone Number operations are not permitted within this Region such as restore, transfer, emergency services, and release.\n\n### Possible solutions\n\nPlease refer to documentation to understand which operations are permitted within each region.\n",
    "causes": "Certain Phone Number operations are not permitted within this Region such as restore, transfer, emergency services, and release.",
    "solutions": "Please refer to documentation to understand which operations are permitted within each region.",
    "description": "Phone Number update operation is not permitted within the Region.",
    "date_created": "2022-04-26T14:11:17Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22403,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Phone Number Operation not permitted within Region",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nPhone Number update operation is not permitted within the Region.\n\n### Possible causes\n\nCertain Phone Number operations are not permitted within this Region emergency services\n\n### Possible solutions\n\nPlease refer to documentation to understand which operations are permitted within each region.\n",
    "causes": "Certain Phone Number operations are not permitted within this Region emergency services",
    "solutions": "Please refer to documentation to understand which operations are permitted within each region.",
    "description": "Phone Number update operation is not permitted within the Region.",
    "date_created": "2022-04-26T14:13:12Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22404,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Starter profile creation and updates are temporarily disabled",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nStarter profiles cannot be created or updated at this time. Contact support for help.\n\n### Possible causes\n\nThe profile you are trying to create/update is a Starter profile. See [New Requirements for A2P 10DLC Registrations](https://www.twilio.com/blog/new-requirements-for-a2p-10dlc-registrations) for more info.\n\n### Possible solutions\n\nContact Twilio support.\n\n### Additional resources\n\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "The profile you are trying to create/update is a Starter profile. See [New Requirements for A2P 10DLC Registrations](https://www.twilio.com/blog/new-requirements-for-a2p-10dlc-registrations) for more info.",
    "solutions": "Contact Twilio support.",
    "description": "Starter profiles cannot be created or updated at this time. Contact support for help.",
    "date_created": "2022-09-22T09:44:31Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 22500,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Twilio phone number using deprecated API version",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nPhone Numbers no longer supports 2008-08-01 API. The Twilio phone number is configured for the deprecated 2008-08-01 API, which is not compatible. Update the phone number API version to 2010-04-01\n\n### Possible causes\n\nThe Twilio phone number is configured for the 2008-08-01 API\n\n### Possible solutions\n\nUpdate the phone number API version to 2010-04-01 or later version\n",
    "causes": "The Twilio phone number is configured for the 2008-08-01 API",
    "solutions": "Update the phone number API version to 2010-04-01 or later version",
    "description": "Phone Numbers no longer supports 2008-08-01 API. The Twilio phone number is configured for the deprecated 2008-08-01 API, which is not compatible. Update the phone number API version to 2010-04-01",
    "date_created": "2023-04-18T20:58:09Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22600,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Regulatory changes necessitate new information",
    "secondary_message": "The information no longer matches the most current regulatory requirements. Please upgrade to the newest version or create a new submission.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe regulation used to create the bundle is out of date, preventing the bundle from being submittable.\n\n### Possible causes\n\nThe regulation initially used to create the bundle is archived or expired.\n\n### Possible solutions\n\nPlease upgrade to the newest version or create a new submission.\n",
    "causes": "The regulation initially used to create the bundle is archived or expired.",
    "solutions": "Please upgrade to the newest version or create a new submission.",
    "description": "The regulation used to create the bundle is out of date, preventing the bundle from being submittable.",
    "date_created": "2025-04-02T14:04:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22601,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rejected due to outdated regulatory information",
    "secondary_message": "The information has been rejected since it no longer matches the most current regulatory requirements. Your existing associated phone numbers will continue to work as normal. However, to purchase new phone numbers using this bundle, you must update and resubmit the rejected bundle with the latest regulatory information.",
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe information has been rejected since it no longer matches the most current regulatory requirements. Your existing associated phone numbers will continue to work as normal. However, to purchase new phone numbers using this bundle, you must update and resubmit the rejected bundle with the latest regulatory information.\n\n### Possible causes\n\nThe regulation initially used to create the bundle is out of date because the regulatory requirements have recently changed.\n\n### Possible solutions\n\nUpdate the rejected bundle with [current regulatory information](https://www.twilio.com/en-us/guidelines/regulatory) and resubmit it for approval. Alternatively, you may create a new submission that meets the latest requirements.\n",
    "causes": "The regulation initially used to create the bundle is out of date because the regulatory requirements have recently changed.",
    "solutions": "Update the rejected bundle with [current regulatory information](https://www.twilio.com/en-us/guidelines/regulatory) and resubmit it for approval. Alternatively, you may create a new submission that meets the latest requirements.",
    "description": "The information has been rejected since it no longer matches the most current regulatory requirements. Your existing associated phone numbers will continue to work as normal. However, to purchase new phone numbers using this bundle, you must update and resubmit the rejected bundle with the latest regulatory information.",
    "date_created": "2025-03-27T11:08:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 22602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Individual registration phone number limit reached",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour individual Regulatory Compliance (RC) registration has reached the maximum number of phone numbers allowed for this number type. You can't assign additional phone numbers to this registration.\n\n### Possible causes\n\n- You tried to add a phone number to a Regulatory Compliance (RC) registration, but the registration already contains the maximum number of phone numbers allowed for that number type.\n\n### Possible solutions\n\n- To purchase additional numbers, you'll need to register as a business by creating a new Regulatory Compliance registration and choosing 'business' as the end user type.\n- Review the [regulatory guidelines](https://www.twilio.com/en-us/guidelines/regulatory) for your country to understand the registration type requirements.\n- Contact [Twilio Support](https://help.twilio.com) if you believe your registration type is incorrect.\n\n#### Additional resources\n\n- [Regulatory guidelines](https://www.twilio.com/en-us/guidelines/regulatory)\n- [Submit RC registrations via API](/docs/phone-numbers/regulatory/getting-started/create-new-bundle-public-rest-apis)\n- [Submit RC registrations via Console](/docs/phone-numbers/regulatory/getting-started/console-create-new-bundle)\n",
    "causes": "* You tried to add a phone number to a Regulatory Compliance (RC) registration, but the registration already contains the maximum number of phone numbers allowed for that number type.",
    "solutions": "* To purchase additional numbers, you'll need to register as a business by creating a new Regulatory Compliance registration and choosing 'business' as the end user type.\n* Review the [regulatory guidelines](https://www.twilio.com/en-us/guidelines/regulatory) for your country to understand the registration type requirements.\n* Contact [Twilio Support](https://help.twilio.com) if you believe your registration type is incorrect.",
    "description": "Your individual Regulatory Compliance (RC) registration has reached the maximum number of phone numbers allowed for this number type. You can't assign additional phone numbers to this registration.",
    "date_created": "2026-06-12T09:42:05-06:00",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 23001,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Message Redaction Incompatible Configuration: Long code STOP filtering",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nPhone Number Redaction is enabled for your account. Twilio's default opt-out keyword handling (\"SMS STOP filtering\") is not compatible with Phone Number Redaction and should be disabled.\n\n### Possible causes\n\n- Twilio is currently set to handle opt-out keywords for long code numbers on your account. Twilio's opt-out handling requires Twilio to save non-redacted phone numbers of users who have opted out, and is incompatible with Phone Number Redaction.\n\n### Possible solutions\n\n- To resolve this issue, your application needs to be able to handle [opt-out keyword messages](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) from end users.\n- Users who reply STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT should be added to a blocklist in your application to ensure you do not send them any further messages, unless they opt-in again.\n- Users who reply HELP or INFO should be sent an informational message about your application or service.\n- Users who reply START, YES, or UNSTOP should be removed from your \"STOP\" blocklist so they can receive messages from you again.\n- Once you are ready to disable Twilio's built-in opt-out handling and process the above keywords in your own application, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) to disable Twilio's built-in opt-out keyword handling for your account.\n",
    "causes": "* Twilio is currently set to handle opt-out keywords for long code numbers on your account. Twilio's opt-out handling requires Twilio to save non-redacted phone numbers of users who have opted out, and is incompatible with Phone Number Redaction.",
    "solutions": "* To resolve this issue, your application needs to be able to handle [opt-out keyword messages](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) from end users.\n* Users who reply STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT should be added to a blocklist in your application to ensure you do not send them any further messages, unless they opt-in again.\n* Users who reply HELP or INFO should be sent an informational message about your application or service.\n* Users who reply START, YES, or UNSTOP should be removed from your \"STOP\" blocklist so they can receive messages from you again.\n* Once you are ready to disable Twilio's built-in opt-out handling and process the above keywords in your own application, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) to disable Twilio's built-in opt-out keyword handling for your account.",
    "description": "Phone Number Redaction is enabled for your account. Twilio's default opt-out keyword handling (\"SMS STOP filtering\") is not compatible with Phone Number Redaction and should be disabled.",
    "date_created": "2019-09-20T04:53:05Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 23002,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Message Redaction Incompatible Configuration: Short code \"STOP\" filtering",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nPhone Number Redaction is enabled for your account. Twilio's default opt-out keyword handling (\"SMS STOP filtering\") is not compatible with Phone Number Redaction and should be disabled.\n\n### Possible causes\n\n- Twilio is currently set to handle opt-out keywords for short code numbers on your account. Twilio's opt-out handling requires Twilio to save non-redacted phone numbers of users who have opted out, and is incompatible with Phone Number Redaction.\n\n### Possible solutions\n\n- To resolve this issue, your application needs to be able to handle [opt-out keyword messages](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) from end users.\n- Users who reply STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT should be added to a blocklist in your application to ensure you do not send them any further messages, unless they opt-in again.\n- Users who reply HELP or INFO should be sent an informational message about your application or service.\n- Users who reply START, YES, or UNSTOP should be removed from your \"STOP\" blocklist so they can receive messages from you again.\n- Once you are ready to disable Twilio's built-in opt-out handling and process the above keywords in your own application, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) to disable Twilio's built-in opt-out keyword handling for your account.\n",
    "causes": "* Twilio is currently set to handle opt-out keywords for short code numbers on your account. Twilio's opt-out handling requires Twilio to save non-redacted phone numbers of users who have opted out, and is incompatible with Phone Number Redaction.",
    "solutions": "* To resolve this issue, your application needs to be able to handle [opt-out keyword messages](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) from end users.\n* Users who reply STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT should be added to a blocklist in your application to ensure you do not send them any further messages, unless they opt-in again.\n* Users who reply HELP or INFO should be sent an informational message about your application or service.\n* Users who reply START, YES, or UNSTOP should be removed from your \"STOP\" blocklist so they can receive messages from you again.\n* Once you are ready to disable Twilio's built-in opt-out handling and process the above keywords in your own application, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) to disable Twilio's built-in opt-out keyword handling for your account.",
    "description": "Phone Number Redaction is enabled for your account. Twilio's default opt-out keyword handling (\"SMS STOP filtering\") is not compatible with Phone Number Redaction and should be disabled.",
    "date_created": "2019-11-21T19:18:52Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 23003,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Message Redaction Incompatible Configuration: Sticky Sender",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nPhone Number Redaction is enabled for your account. Sticky Sender is not compatible with Phone Number Redaction and should be disabled.\n\n### Possible causes\n\n- You have Sticky Sender enabled on your Messaging Service. Sticky Sender requires Twilio to save the non-redacted phone numbers of recipients, and is incompatible with Phone Number Redaction.\n\n### Possible solutions\n\n- Disable Sticky Sender on your Messaging Services using the [Twilio Console](https://www.twilio.com/console/sms/services) or the [REST API](/docs/messaging/api/service-resource).\n- If Sticky Sender functionality is needed, implement this functionality in your own application.\n",
    "causes": "* You have Sticky Sender enabled on your Messaging Service. Sticky Sender requires Twilio to save the non-redacted phone numbers of recipients, and is incompatible with Phone Number Redaction.",
    "solutions": "* Disable Sticky Sender on your Messaging Services using the [Twilio Console](https://www.twilio.com/console/sms/services) or the [REST API](/docs/messaging/api/service-resource).\n* If Sticky Sender functionality is needed, implement this functionality in your own application.",
    "description": "Phone Number Redaction is enabled for your account. Sticky Sender is not compatible with Phone Number Redaction and should be disabled.",
    "date_created": "2019-11-21T19:20:34Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 23004,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Message Redaction Incompatible Configuration: Advanced Opt-Out",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nPhone Number Redaction is enabled for your account. Advanced Opt-Out is not compatible with Phone Number Redaction and should be disabled.\n\n### Possible causes\n\n- You have Advanced Opt-Out enabled on your Messaging Service. Advanced Opt-Out requires Twilio to save non-redacted phone numbers of customers who have opted out, and is incompatible with Phone Number Redaction.\n\n### Possible solutions\n\n- To resolve this issue, your application needs to be able to handle [opt-out keyword messages](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) from end users.\n- Users who reply STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT should be added to a block list in your application to ensure you do not send them any further messages, unless they opt-in again.\n- Users who reply HELP or INFO should be sent an informational message about your application or service.\n- Users who reply START, YES, or UNSTOP should be removed from your \"STOP\" block list so they can receive messages from you again.\n- Once you are ready to disable Twilio's built-in opt-out handling and process the above keywords in your own application, please contact Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) to disable all Twilio keyword handling for your account, including Advanced Opt-Out.\n",
    "causes": "* You have Advanced Opt-Out enabled on your Messaging Service. Advanced Opt-Out requires Twilio to save non-redacted phone numbers of customers who have opted out, and is incompatible with Phone Number Redaction.",
    "solutions": "* To resolve this issue, your application needs to be able to handle [opt-out keyword messages](https://support.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering-) from end users.\n* Users who reply STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT should be added to a block list in your application to ensure you do not send them any further messages, unless they opt-in again.\n* Users who reply HELP or INFO should be sent an informational message about your application or service.\n* Users who reply START, YES, or UNSTOP should be removed from your \"STOP\" block list so they can receive messages from you again.\n* Once you are ready to disable Twilio's built-in opt-out handling and process the above keywords in your own application, please contact Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) to disable all Twilio keyword handling for your account, including Advanced Opt-Out.",
    "description": "Phone Number Redaction is enabled for your account. Advanced Opt-Out is not compatible with Phone Number Redaction and should be disabled.",
    "date_created": "2019-11-21T19:22:03Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 23005,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Phone Number Redaction Incompatible Configuration: Fallback to Long Code",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nPhone Number Redaction is enabled for your account. Fallback to Long Code is not compatible with Phone Number Redaction and should be disabled.\n\n### Possible causes\n\n- You have Fallback to Long Code enabled on your Messaging Service. Fallback to Long Code requires Twilio to retain non-redacted phone numbers of recipients, and is incompatible with Phone Number Redaction.\n\n### Possible solutions\n\n- Disable Fallback to Long Code on your Messaging Services using the [Twilio Console](https://www.twilio.com/console/sms/services) or the [REST API](/docs/messaging/api/service-resource).\n- If Fallback to Long Code functionality is needed, implement this functionality in your own application.\n",
    "causes": "* You have Fallback to Long Code enabled on your Messaging Service. Fallback to Long Code requires Twilio to retain non-redacted phone numbers of recipients, and is incompatible with Phone Number Redaction.",
    "solutions": "* Disable Fallback to Long Code on your Messaging Services using the [Twilio Console](https://www.twilio.com/console/sms/services) or the [REST API](/docs/messaging/api/service-resource).\n* If Fallback to Long Code functionality is needed, implement this functionality in your own application.",
    "description": "Phone Number Redaction is enabled for your account. Fallback to Long Code is not compatible with Phone Number Redaction and should be disabled.",
    "date_created": "2019-11-21T19:23:09Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 23006,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Message Redaction Incompatible Configuration: Inbound Webhook GET Requests",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning occurs when Message Redaction is enabled on your account and an incoming message webhook uses `GET`. To preserve Message Body Redaction or Phone Number Redaction, configure inbound message webhooks for Twilio phone numbers and Messaging Services to use `POST` instead. `GET` request parameters are logged for up to seven days.\n\n### Possible causes\n\n- A Twilio phone number is configured with `smsMethod` set to `GET` for its incoming message webhook.\n- A Messaging Service is configured with `inboundMethod` set to `GET`. If the service uses the phone number webhook for inbound handling, the sender's phone number configuration can also trigger this warning.\n- A fallback webhook for a Twilio phone number or Messaging Service uses `GET`. Message Redaction requires `POST` on both the primary and fallback webhook paths.\n\n### Possible solutions\n\n- Update each affected Twilio phone number to use `POST` for its incoming message webhook by setting `smsMethod` to `POST`.\n- Update each affected Messaging Service to use `POST` for `inboundMethod`.\n- If your Messaging Service defers inbound handling to sender webhooks, review every sender in the pool and change any incoming message webhook method from `GET` to `POST`.\n- Change the fallback webhook method to `POST` for both phone numbers and Messaging Services.\n- Verify the webhook method anywhere inbound message handling is configured, including the Phone Numbers, Messaging Services, and TwiML Apps sections of Console.\n\n#### Additional resources\n\n- [Message Redaction for Programmable Messaging](/docs/messaging/guides/privacy-message-redaction)\n- [Messaging Webhooks](/docs/usage/webhooks/messaging-webhooks)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* A Twilio phone number is configured with `smsMethod` set to `GET` for its incoming message webhook.\n* A Messaging Service is configured with `inboundMethod` set to `GET`. If the service uses the phone number webhook for inbound handling, the sender's phone number configuration can also trigger this warning.\n* A fallback webhook for a Twilio phone number or Messaging Service uses `GET`. Message Redaction requires `POST` on both the primary and fallback webhook paths.",
    "solutions": "* Update each affected Twilio phone number to use `POST` for its incoming message webhook by setting `smsMethod` to `POST`.\n* Update each affected Messaging Service to use `POST` for `inboundMethod`.\n* If your Messaging Service defers inbound handling to sender webhooks, review every sender in the pool and change any incoming message webhook method from `GET` to `POST`.\n* Change the fallback webhook method to `POST` for both phone numbers and Messaging Services.\n* Verify the webhook method anywhere inbound message handling is configured, including the Phone Numbers, Messaging Services, and TwiML Apps sections of Console.",
    "description": "This warning occurs when Message Redaction is enabled on your account and an incoming message webhook uses `GET`. To preserve Message Body Redaction or Phone Number Redaction, configure inbound message webhooks for Twilio phone numbers and Messaging Services to use `POST` instead. `GET` request parameters are logged for up to seven days.",
    "date_created": "2019-11-21T19:24:40Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 25001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The specified filter for listing organization users is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe specified filter for listing organization users is invalid.\n\n### Possible causes\n\nThe filter value is either unsupported or missing.\n\n### Possible solutions\n\nFiltering is only supported using the user's externalId or username. Only \"eq\" operator is supported. Ensure that the provided filter complies with these supported parameters.\n",
    "causes": "The filter value is either unsupported or missing.",
    "solutions": "Filtering is only supported using the user's externalId or username. Only \"eq\" operator is supported. Ensure that the provided filter complies with these supported parameters.",
    "description": "The specified filter for listing organization users is invalid.",
    "date_created": "2023-12-04T09:39:33Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The provided user's first name is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when the `name.givenName` value in a SCIM request for an organization-managed user is invalid. This can happen when you create a user with `POST /scim/v2/Users` or update a user with `PUT /scim/v2/Users/{id}` or `PATCH /scim/v2/Users/{id}`. The first name must be between 2 and 255 characters.\n\n### Possible causes\n\n- The value sent in `name.givenName` is fewer than 2 characters.\n- The value sent in `name.givenName` is longer than 255 characters.\n- Your identity provider or SCIM client sent an invalid first-name value while provisioning or updating a managed user.\n- A create request to `POST /scim/v2/Users` included an invalid `name.givenName` value.\n- An update request to `PUT /scim/v2/Users/{id}` or `PATCH /scim/v2/Users/{id}` included an invalid `name.givenName` value.\n\n### Possible solutions\n\n- Update `name.givenName` so it contains between 2 and 255 characters before you send the request.\n- Review the payload your SCIM client sends for `POST /scim/v2/Users`, `PUT /scim/v2/Users/{id}`, or `PATCH /scim/v2/Users/{id}` and correct the first-name value.\n- If you provision users from an identity provider such as Okta, review your provisioning configuration so the first name sent to Twilio is valid.\n- Send the request again after you correct the invalid first-name value.\n- When you update a managed user, make sure any change to `name.givenName` uses a valid value.\n\n#### Additional resources\n\n- [SCIM API overview](/docs/iam/scim)\n- [SCIM API reference](/docs/iam/scim/api-reference)\n- [Okta SCIM integration](/docs/iam/scim/okta-integration)\n",
    "causes": "* The value sent in `name.givenName` is fewer than 2 characters.\n* The value sent in `name.givenName` is longer than 255 characters.\n* Your identity provider or SCIM client sent an invalid first-name value while provisioning or updating a managed user.\n* A create request to `POST /scim/v2/Users` included an invalid `name.givenName` value.\n* An update request to `PUT /scim/v2/Users/{id}` or `PATCH /scim/v2/Users/{id}` included an invalid `name.givenName` value.",
    "solutions": "* Update `name.givenName` so it contains between 2 and 255 characters before you send the request.\n* Review the payload your SCIM client sends for `POST /scim/v2/Users`, `PUT /scim/v2/Users/{id}`, or `PATCH /scim/v2/Users/{id}` and correct the first-name value.\n* If you provision users from an identity provider such as Okta, review your provisioning configuration so the first name sent to Twilio is valid.\n* Send the request again after you correct the invalid first-name value.\n* When you update a managed user, make sure any change to `name.givenName` uses a valid value.",
    "description": "Twilio returns this error when the `name.givenName` value in a SCIM request for an organization-managed user is invalid. This can happen when you create a user with `POST /scim/v2/Users` or update a user with `PUT /scim/v2/Users/{id}` or `PATCH /scim/v2/Users/{id}`. The first name must be between 2 and 255 characters.",
    "date_created": "2023-12-04T09:42:10Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 25003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The provided user's last name is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you create or update an organization-managed user through the SCIM API and the value in `name.familyName` is not accepted. Twilio creates users with the SCIM core user schema, and `name.familyName` is a supported field for both `PUT` and `PATCH` updates.\n\n### Possible causes\n\n- Your `POST /scim/v2/Users` request includes an invalid value in `name.familyName`.\n- Your `PUT /scim/v2/Users/{id}` request replaces the user record and includes an invalid value for `name.familyName`.\n- Your `PATCH /scim/v2/Users/{id}` request uses `path: \"name.familyName\"` and supplies an invalid replacement value.\n\n### Possible solutions\n\n- Validate the value you send in `name.familyName` before submitting the request. If you are creating a user, format the request body as a valid SCIM core user object.\n- If you are updating an existing user, change the last name only through the supported SCIM field `name.familyName` in a `PUT` or `PATCH` request.\n- If you do not need to set a last name during user creation, omit the optional `name` object and send the required fields only, which are `userName` and `emails`.\n\n#### Additional resources\n\n- [SCIM API overview](/docs/iam/scim)\n- [SCIM API reference](/docs/iam/scim/api-reference)\n- [Organizations](/docs/iam/organizations)\n",
    "causes": "* Your `POST /scim/v2/Users` request includes an invalid value in `name.familyName`.\n* Your `PUT /scim/v2/Users/{id}` request replaces the user record and includes an invalid value for `name.familyName`.\n* Your `PATCH /scim/v2/Users/{id}` request uses `path: \"name.familyName\"` and supplies an invalid replacement value.",
    "solutions": "* Validate the value you send in `name.familyName` before submitting the request. If you are creating a user, format the request body as a valid SCIM core user object.\n* If you are updating an existing user, change the last name only through the supported SCIM field `name.familyName` in a `PUT` or `PATCH` request.\n* If you do not need to set a last name during user creation, omit the optional `name` object and send the required fields only, which are `userName` and `emails`.",
    "description": "This error occurs when you create or update an organization-managed user through the SCIM API and the value in `name.familyName` is not accepted. Twilio creates users with the SCIM core user schema, and `name.familyName` is a supported field for both `PUT` and `PATCH` updates.",
    "date_created": "2023-12-04T09:44:01Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 25004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The provided user's external ID is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you send a SCIM request to manage an organization user and the `externalId` value does not meet the allowed length requirements. Twilio accepts `externalId` as part of the SCIM user payload for managed user operations.\n\n### Possible causes\n\n- The `externalId` value is shorter than 2 characters.\n- The `externalId` value is longer than 255 characters.\n- Your SCIM client or identity provider sent an `externalId` value in the user payload that falls outside the supported length range.\n\n### Possible solutions\n\n- Set `externalId` to a value that is between 2 and 255 characters long, then retry the request.\n- Review the SCIM request body you send to `POST /scim/v2/Users` and confirm that the `externalId` field contains a valid value before you submit it.\n- If you provision users through an identity provider, review the attribute it sends for `externalId` and update the mapping so synced values stay within the supported length range.\n\n#### Additional resources\n\n- [SCIM API overview](/docs/iam/scim)\n- [SCIM API reference](/docs/iam/scim/api-reference)\n- [Okta SCIM integration](/docs/iam/scim/okta-integration)\n",
    "causes": "* The `externalId` value is shorter than 2 characters.\n* The `externalId` value is longer than 255 characters.\n* Your SCIM client or identity provider sent an `externalId` value in the user payload that falls outside the supported length range.",
    "solutions": "* Set `externalId` to a value that is between 2 and 255 characters long, then retry the request.\n* Review the SCIM request body you send to `POST /scim/v2/Users` and confirm that the `externalId` field contains a valid value before you submit it.\n* If you provision users through an identity provider, review the attribute it sends for `externalId` and update the mapping so synced values stay within the supported length range.",
    "description": "This error occurs when you send a SCIM request to manage an organization user and the `externalId` value does not meet the allowed length requirements. Twilio accepts `externalId` as part of the SCIM user payload for managed user operations.",
    "date_created": "2023-12-04T09:48:06Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 25005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The provided user's username is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your managed user request has a missing or invalid `userName`. A username is invalid when it is shorter than 2 characters or longer than 255 characters. Twilio also returns 25005 in the SCIM API when `userName` is not present in a user update request.\n\n### Possible causes\n\n- The request did not include `userName`.\n- The supplied username is fewer than 2 characters long.\n- The supplied username is longer than 255 characters.\n\n### Possible solutions\n\n- Include `userName` in the request body when you create or update a managed user. The SCIM API requires `userName` and `emails` when you create a user.\n- Keep `userName` between 2 and 255 characters.\n- For SCIM requests, make sure `userName` matches `emails[primary=true].value`.\n- Provision users through the Organizations SCIM endpoints only for organization-managed users.\n\n#### Additional resources\n\n- [SCIM API reference](/docs/iam/scim/api-reference)\n- [Managed users](/docs/iam/organizations/managed-users)\n- [Domains](/docs/iam/organizations/domains)\n",
    "causes": "* The request did not include `userName`.\n* The supplied username is fewer than 2 characters long.\n* The supplied username is longer than 255 characters.",
    "solutions": "* Include `userName` in the request body when you create or update a managed user. The SCIM API requires `userName` and `emails` when you create a user.\n* Keep `userName` between 2 and 255 characters.\n* For SCIM requests, make sure `userName` matches `emails[primary=true].value`.\n* Provision users through the Organizations SCIM endpoints only for organization-managed users.",
    "description": "This error occurs when your managed user request has a missing or invalid `userName`. A username is invalid when it is shorter than 2 characters or longer than 255 characters. Twilio also returns 25005 in the SCIM API when `userName` is not present in a user update request.",
    "date_created": "2023-12-04T09:50:06Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 25006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The SCIM schema syntax is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not process your SCIM request because the schema value is invalid. This error usually occurs when your request body uses an unsupported SCIM schema URN, includes a malformed schema entry, or does not match the expected SCIM format for the requested operation.\n\n### Possible causes\n\n- The request includes an invalid `schemas` value.\n- The `schemas` array is missing from a SCIM request that requires it.\n- The request uses a schema URN that does not match the SCIM resource or operation you are calling.\n- The request body is malformed JSON, which prevents Twilio from parsing the schema correctly.\n- The payload mixes attributes from different SCIM resource types in a way that does not match the declared schema.\n\n### Possible solutions\n\n- Verify that your request body is valid JSON and that the `schemas` field is formatted correctly.\n- Confirm that each schema URN in the `schemas` array is complete, correctly spelled, and appropriate for the SCIM resource you are creating or updating.\n- Make sure the schema you send matches the endpoint and operation you are using.\n- Remove unsupported or incorrectly nested attributes from the payload.\n- Validate your SCIM request against the SCIM 2.0 format you use in your identity provider before sending it to Twilio.\n- If you are provisioning users or groups through Single Sign-On, review your SCIM configuration in your identity provider and update any custom mappings that send invalid schema values.\n\n#### Additional resources\n\n- [Identity and Access Management docs](/docs/iam)\n- [Single Sign-On and user management overview](/docs/iam)\n",
    "causes": "* The request includes an invalid `schemas` value.\n* The `schemas` array is missing from a SCIM request that requires it.\n* The request uses a schema URN that does not match the SCIM resource or operation you are calling.\n* The request body is malformed JSON, which prevents Twilio from parsing the schema correctly.\n* The payload mixes attributes from different SCIM resource types in a way that does not match the declared schema.",
    "solutions": "* Verify that your request body is valid JSON and that the `schemas` field is formatted correctly.\n* Confirm that each schema URN in the `schemas` array is complete, correctly spelled, and appropriate for the SCIM resource you are creating or updating.\n* Make sure the schema you send matches the endpoint and operation you are using.\n* Remove unsupported or incorrectly nested attributes from the payload.\n* Validate your SCIM request against the SCIM 2.0 format you use in your identity provider before sending it to Twilio.\n* If you are provisioning users or groups through Single Sign-On, review your SCIM configuration in your identity provider and update any custom mappings that send invalid schema values.",
    "description": "Twilio could not process your SCIM request because the schema value is invalid. This error usually occurs when your request body uses an unsupported SCIM schema URN, includes a malformed schema entry, or does not match the expected SCIM format for the requested operation.",
    "date_created": "2023-12-04T09:51:35Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The organization has reached its limit for managed users",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe organization has reached its limit for managed users.\n\n### Possible causes\n\nThe maximum allowable number of users for the organization has been reached.\n\n### Possible solutions\n\nTo increase the limit of managed users for your organization, please get in touch with Twilio support.\n",
    "causes": "The maximum allowable number of users for the organization has been reached.",
    "solutions": "To increase the limit of managed users for your organization, please get in touch with Twilio support.",
    "description": "The organization has reached its limit for managed users.",
    "date_created": "2023-12-04T09:53:09Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The requested SCIM user was not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your SCIM request references a user that Twilio can't find. The SCIM API retrieves users by Twilio User SID, and SCIM endpoints support organization-managed users only.\n\n### Possible causes\n\n- The `id` in your SCIM request does not match an existing Twilio User SID. Twilio returns a `404 Not Found` response with code 25008 when the user is not found.\n- The user is not a managed user in your organization. SCIM endpoints are for organization-managed users only.\n- The user may have been removed from your organization or deleted. If the user was removed, they are no longer organization-managed and can't be retrieved through SCIM. If the user was deleted, they no longer exist in Twilio's system.\n\n### Possible solutions\n\n- Verify that the `id` you send in `GET /scim/v2/Users/{id}` is the correct Twilio User SID for the user you want to retrieve.\n- If you do not know the user SID, use `GET /scim/v2/Users` and filter by `userName` or `externalId` with the `eq` operator. Then retry the request with the `id` returned by the list response.\n- Confirm that the user belongs to your organization as a managed user. If the user is outside the organization, invite or import them into User management before you access them through SCIM.\n- If the user was deleted, create or invite the user again so they exist as a managed user, then retry the SCIM request.\n\n#### Additional resources\n\n- [SCIM API overview](/docs/iam/scim)\n- [SCIM API reference](/docs/iam/scim/api-reference)\n- [Managed users](/docs/iam/organizations/managed-users)\n",
    "causes": "* The `id` in your SCIM request does not match an existing Twilio User SID. Twilio returns a `404 Not Found` response with code 25008 when the user is not found.\n* The user is not a managed user in your organization. SCIM endpoints are for organization-managed users only.\n* The user may have been removed from your organization or deleted. If the user was removed, they are no longer organization-managed and can't be retrieved through SCIM. If the user was deleted, they no longer exist in Twilio's system.",
    "solutions": "* Verify that the `id` you send in `GET /scim/v2/Users/{id}` is the correct Twilio User SID for the user you want to retrieve.\n* If you do not know the user SID, use `GET /scim/v2/Users` and filter by `userName` or `externalId` with the `eq` operator. Then retry the request with the `id` returned by the list response.\n* Confirm that the user belongs to your organization as a managed user. If the user is outside the organization, invite or import them into User management before you access them through SCIM.\n* If the user was deleted, create or invite the user again so they exist as a managed user, then retry the SCIM request.",
    "description": "This error occurs when your SCIM request references a user that Twilio can't find. The SCIM API retrieves users by Twilio User SID, and SCIM endpoints support organization-managed users only.",
    "date_created": "2023-12-04T09:54:44Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The user's is in an unupdatable status.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you try to update a user that is currently in a status that does not allow changes. Complete the user lifecycle step that is already in progress or use a user record that is eligible for updates before sending the request again.\n\n### Possible causes\n\n- The user is in a terminal or otherwise restricted status that does not accept updates.\n- The user is in the middle of a verification, registration, or other account state transition.\n- Your application tried to update the user after the user was deleted, disabled, or otherwise locked from further changes.\n- Your request flow assumes the user is editable without first checking the current user status.\n\n### Possible solutions\n\n- Retrieve the latest user state before attempting an update and confirm that the user is in a status that supports changes.\n- Wait for any in-progress operation to complete, then submit the update again if the user becomes editable.\n- Review your application logic to make sure you only send update requests for users in valid, updatable states.\n- If the user is no longer meant to be updated, create or use the correct active user record instead of retrying the same request.\n- Check your Authy or Verify integration flow to make sure user creation, enrollment, verification, and update operations happen in the expected order.\n\n#### Additional resources\n\n- [Twilio Verify docs](/docs/verify)\n- [Authy documentation](/docs/authy)\n",
    "causes": "* The user is in a terminal or otherwise restricted status that does not accept updates.\n* The user is in the middle of a verification, registration, or other account state transition.\n* Your application tried to update the user after the user was deleted, disabled, or otherwise locked from further changes.\n* Your request flow assumes the user is editable without first checking the current user status.",
    "solutions": "* Retrieve the latest user state before attempting an update and confirm that the user is in a status that supports changes.\n* Wait for any in-progress operation to complete, then submit the update again if the user becomes editable.\n* Review your application logic to make sure you only send update requests for users in valid, updatable states.\n* If the user is no longer meant to be updated, create or use the correct active user record instead of retrying the same request.\n* Check your Authy or Verify integration flow to make sure user creation, enrollment, verification, and update operations happen in the expected order.",
    "description": "This error occurs when you try to update a user that is currently in a status that does not allow changes. Complete the user lifecycle step that is already in progress or use a user record that is eligible for updates before sending the request again.",
    "date_created": "2023-12-04T09:56:52Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The primary email address is missing for the user",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe primary email address is missing for the user.\n\n### Possible causes\n\n- The request doesn't contain email addresses\n- The request contains more than one email address and doesn't specify \"primary\" attribute\n\n### Possible solutions\n\nTo resolve this issue, mark one of the provided emails as the primary email address. Additionally, ensure that at least one of the email addresses matches the user's username. This alignment is necessary to fulfill the primary email address requirement.\n",
    "causes": "* The request doesn't contain email addresses\n* The request contains more than one email address and doesn't specify \"primary\" attribute",
    "solutions": "To resolve this issue, mark one of the provided emails as the primary email address. Additionally, ensure that at least one of the email addresses matches the user's username. This alignment is necessary to fulfill the primary email address requirement.",
    "description": "The primary email address is missing for the user.",
    "date_created": "2023-12-04T09:58:46Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25011,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The value for the primary email address is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe value for the primary email address is invalid.\n\n### Possible causes\n\nThe provided value for the email address is not valid.\n\n### Possible solutions\n\nDouble-check the email address value to ensure it adheres to the required format and standards.\n",
    "causes": "The provided value for the email address is not valid.",
    "solutions": "Double-check the email address value to ensure it adheres to the required format and standards.",
    "description": "The value for the primary email address is invalid.",
    "date_created": "2023-12-04T10:01:50Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25012,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Updating the email address is unsupported",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis error occurs when your request tries to change a managed user's primary email in a way that Twilio does not accept. For organization-managed users, the primary email and `userName` represent the same sign-in identity, and email changes must stay aligned with your organization's verified domains.\n\n### Possible causes\n- Your SCIM `PUT` or `PATCH` request attempts to change the primary email without preserving the required relationship between the primary email and `userName`.\n- The value in `emails[primary=true].value` does not match `userName`. Twilio rejects mismatched identity values for managed users.\n- The new email address uses a domain that your organization has not verified.\n\n### Possible solutions\n- Retry the update by using `PUT /scim/v2/Users/{id}` or `PATCH /scim/v2/Users/{id}` and keep `emails[primary=true].value` and `userName` set to the same value.\n- If you are changing the email in Console instead of through SCIM, update it from User Settings and complete the email verification step. After the change, the new email is also the username used to sign in. ([help.twilio.com](https://help.twilio.com/articles/223135787-How-can-I-change-my-email-address-))\n- Verify the target email domain on your organization before you retry the request. Twilio only allows managed-user email addresses from verified domains.\n- If you do not need to change the user's sign-in identity, leave the email unchanged and update only supported profile fields such as `displayName`, `name.givenName`, `name.familyName`, `locale`, `timezone`, or `active`.\n\n#### Additional resources\n- [SCIM API reference](/docs/iam/scim/api-reference)\n- [Managed users](/docs/iam/organizations/managed-users)\n- [Domains](/docs/iam/organizations/domains)\n",
    "causes": "* Your SCIM `PUT` or `PATCH` request attempts to change the primary email without preserving the required relationship between the primary email and `userName`.\n* The value in `emails[primary=true].value` does not match `userName`. Twilio rejects mismatched identity values for managed users.\n* The new email address uses a domain that your organization has not verified.",
    "solutions": "* Retry the update by using `PUT /scim/v2/Users/{id}` or `PATCH /scim/v2/Users/{id}` and keep `emails[primary=true].value` and `userName` set to the same value.\n* If you are changing the email in Console instead of through SCIM, update it from User Settings and complete the email verification step. After the change, the new email is also the username used to sign in. ([help.twilio.com](https://help.twilio.com/articles/223135787-How-can-I-change-my-email-address-))\n* Verify the target email domain on your organization before you retry the request. Twilio only allows managed-user email addresses from verified domains.\n* If you do not need to change the user's sign-in identity, leave the email unchanged and update only supported profile fields such as `displayName`, `name.givenName`, `name.familyName`, `locale`, `timezone`, or `active`.",
    "description": "This error occurs when your request tries to change a managed user's primary email in a way that Twilio does not accept. For organization-managed users, the primary email and `userName` represent the same sign-in identity, and email changes must stay aligned with your organization's verified domains.",
    "date_created": "2023-12-04T10:03:30Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 25013,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Updating the username is unsupported",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou attempted to update a username value on a resource that does not support username changes after creation. Use a different updatable field if you need to modify the user record.\n\n### Possible causes\n\n- Your request includes a username field in an update operation.\n- The resource supports creating a username but does not support changing it later.\n- Your application is reusing a create payload for an update request and includes immutable fields.\n\n### Possible solutions\n\n- Remove the username field from the update request and submit only fields that the resource allows you to change.\n- Review the update operation for the resource you are using and confirm which parameters are writable.\n- If you need a different username, create a new user or account record with the correct value and migrate your application to use that record.\n- Update your application logic to treat username values as immutable after creation.\n\n#### Additional resources\n\n- [Identity and Access Management overview](/docs/iam)\n",
    "causes": "* Your request includes a username field in an update operation.\n* The resource supports creating a username but does not support changing it later.\n* Your application is reusing a create payload for an update request and includes immutable fields.",
    "solutions": "* Remove the username field from the update request and submit only fields that the resource allows you to change.\n* Review the update operation for the resource you are using and confirm which parameters are writable.\n* If you need a different username, create a new user or account record with the correct value and migrate your application to use that record.\n* Update your application logic to treat username values as immutable after creation.",
    "description": "You attempted to update a username value on a resource that does not support username changes after creation. Use a different updatable field if you need to modify the user record.",
    "date_created": "2023-12-04T10:14:38Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25014,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The primary email address does not match the username",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe primary email address does not match the username.\n\n### Possible causes\n\nThe user's primary email address does not match with the specified username.\n\n### Possible solutions\n\nEnsure that the primary email address matches the user's username.\n",
    "causes": "The user's primary email address does not match with the specified username.",
    "solutions": "Ensure that the primary email address matches the user's username.",
    "description": "The primary email address does not match the username.",
    "date_created": "2023-12-04T10:17:51Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25015,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The SCIM PATCH request is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou receive this error when your request to `PATCH /scim/v2/Users/{id}` does not use the SCIM `PATCH` structure required by the SCIM API. Your request body must include the `urn:ietf:params:scim:api:messages:2.0:PatchOp` schema and an `Operations` array.\n\n### Possible causes\n\n- The JSON body does not follow the documented SCIM `PATCH` format for `PATCH /scim/v2/Users/{id}`.\n- The `schemas` array is missing `urn:ietf:params:scim:api:messages:2.0:PatchOp`.\n- The `Operations` array is missing, empty, or incorrectly structured.\n- The request attempts to patch attributes outside the supported set of fields for this endpoint, or uses unsupported field paths for the operation payload. `PATCH` support for `active`, `name.givenName`, `name.familyName`, `displayName`, `timezone`, `locale`, `emails`, and `userName`.\n\n### Possible solutions\n\n- Send the request to `PATCH /scim/v2/Users/{id}` with a SCIM `PATCH` body that includes `schemas` with `urn:ietf:params:scim:api:messages:2.0:PatchOp` and an `Operations` array containing each change.\n- Compare your request body against the documented `PATCH` example and keep the JSON property names and nesting for each operation consistent with that format.\n- Patch only supported fields for this endpoint: `active`, `name.givenName`, `name.familyName`, `displayName`, `timezone`, `locale`, `emails`, and `userName`.\n- If you update `emails` and `userName` in the same request, make sure the primary email value matches the username.\n\n#### Additional resources\n\n- [SCIM API overview](/docs/iam/scim)\n- [SCIM API reference](/docs/iam/scim/api-reference)\n- [Set up OAuth for SCIM](/docs/iam/scim/oauth-setup)\n",
    "causes": "* The JSON body does not follow the documented SCIM `PATCH` format for `PATCH /scim/v2/Users/{id}`.\n* The `schemas` array is missing `urn:ietf:params:scim:api:messages:2.0:PatchOp`.\n* The `Operations` array is missing, empty, or incorrectly structured.\n* The request attempts to patch attributes outside the supported set of fields for this endpoint, or uses unsupported field paths for the operation payload. `PATCH` support for `active`, `name.givenName`, `name.familyName`, `displayName`, `timezone`, `locale`, `emails`, and `userName`.",
    "solutions": "* Send the request to `PATCH /scim/v2/Users/{id}` with a SCIM `PATCH` body that includes `schemas` with `urn:ietf:params:scim:api:messages:2.0:PatchOp` and an `Operations` array containing each change.\n* Compare your request body against the documented `PATCH` example and keep the JSON property names and nesting for each operation consistent with that format.\n* Patch only supported fields for this endpoint: `active`, `name.givenName`, `name.familyName`, `displayName`, `timezone`, `locale`, `emails`, and `userName`.\n* If you update `emails` and `userName` in the same request, make sure the primary email value matches the username.",
    "description": "You receive this error when your request to `PATCH /scim/v2/Users/{id}` does not use the SCIM `PATCH` structure required by the SCIM API. Your request body must include the `urn:ietf:params:scim:api:messages:2.0:PatchOp` schema and an `Operations` array.",
    "date_created": "2023-12-04T10:32:07Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25016,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Updating the organization owner is not allowed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou cannot update the Organization Owner through a standard update request. Twilio treats the Organization Owner as a dedicated organization role, and there can be only one organization owner at a time. To transfer ownership, use the Change organization owner flow in Console instead of trying to modify the owner as part of a general update.\n\n### Possible causes\n\n- Your request is attempting to modify the organization owner as part of a normal update operation.\n- You're trying to transfer ownership outside the supported Change organization owner flow in Twilio Console.\n- The user you want to make the new owner is not already listed as a user in the organization. Twilio requires you to add the user to the organization before you can transfer ownership.\n- The change is being attempted by someone other than the current Organization Owner. Only the current Organization Owner can complete this update.\n\n### Possible solutions\n\n- Remove the organization owner change from your standard update request and retry only the supported organization updates.\n- In Twilio Console, go to Admin, open the Organization overview page, and use Change organization owner to transfer ownership.\n- Add the new owner to the organization before retrying the ownership transfer.\n- Sign in as the current Organization Owner before you attempt the change.\n- If you still cannot complete the ownership transfer, contact Twilio Support and include the account details and the new owner's email address.\n\n#### Additional resources\n\n- [Organizations](/docs/iam/organizations)\n- [FAQ: Twilio Organizations](https://help.twilio.com/articles/8963144762907-FAQ-Twilio-Organizations)\n- [Can I change the owner of a Twilio account?](https://help.twilio.com/articles/223183428)\n",
    "causes": "* Your request is attempting to modify the organization owner as part of a normal update operation.\n* You're trying to transfer ownership outside the supported Change organization owner flow in Twilio Console.\n* The user you want to make the new owner is not already listed as a user in the organization. Twilio requires you to add the user to the organization before you can transfer ownership.\n* The change is being attempted by someone other than the current Organization Owner. Only the current Organization Owner can complete this update.",
    "solutions": "* Remove the organization owner change from your standard update request and retry only the supported organization updates.\n* In Twilio Console, go to Admin, open the Organization overview page, and use Change organization owner to transfer ownership.\n* Add the new owner to the organization before retrying the ownership transfer.\n* Sign in as the current Organization Owner before you attempt the change.\n* If you still cannot complete the ownership transfer, contact Twilio Support and include the account details and the new owner's email address.",
    "description": "You cannot update the Organization Owner through a standard update request. Twilio treats the Organization Owner as a dedicated organization role, and there can be only one organization owner at a time. To transfer ownership, use the Change organization owner flow in Console instead of trying to modify the owner as part of a general update.",
    "date_created": "2023-12-04T10:38:57Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 25017,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The email domain is unverified",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you try to create or invite a user with an email address from a domain that your Twilio Organization has not verified. You must verify domain ownership before you can invite users from that domain, and you cannot add users while the domain is unverified or awaiting re-validation.\n\n### Possible causes\n\n- You tried to create or invite a managed user before verifying the domain that owns the user's email address in your organization.\n- The domain verification process has not finished yet. After you add the DNS record or HTML verification file, DNS propagation can take up to 72 hours and Twilio might not mark the domain as verified immediately.\n- The domain was previously verified, but Twilio's periodic ownership check could no longer validate it. Until the domain is re-validated, you cannot add users from that domain.\n- The email address uses a common domain such as Gmail or Hotmail. Common domains cannot be verified for Twilio Organizations user invitations.\n\n### Possible solutions\n\n- Add your company domain on the Domains page and verify it by using either the DNS method or the HTTPS method before you create or invite users from that domain.\n- If you use DNS verification, create the required `TXT` record with the `_twilio` name and the `twilio-domain-verification=<32-hexadecimal-characters>` value, then check verification again after DNS has propagated.\n- If the domain lost verification, restore the required DNS record or HTML verification file and complete domain verification again. Twilio re-checks ownership every 24 hours.\n- If the person is not part of your company and does not use a domain you own, invite them as an external user to the specific account instead of adding them as a managed user in the organization.\n- Use an email address from a company-owned domain that you can verify. Do not use a common consumer email domain for organization user invitations.\n\n#### Additional resources\n\n- [Organizations overview](/docs/iam/organizations)\n- [Domains](/docs/iam/organizations/domains)\n- [Managed users](/docs/iam/organizations/managed-users)\n",
    "causes": "* You tried to create or invite a managed user before verifying the domain that owns the user's email address in your organization.\n* The domain verification process has not finished yet. After you add the DNS record or HTML verification file, DNS propagation can take up to 72 hours and Twilio might not mark the domain as verified immediately.\n* The domain was previously verified, but Twilio's periodic ownership check could no longer validate it. Until the domain is re-validated, you cannot add users from that domain.\n* The email address uses a common domain such as Gmail or Hotmail. Common domains cannot be verified for Twilio Organizations user invitations.",
    "solutions": "* Add your company domain on the Domains page and verify it by using either the DNS method or the HTTPS method before you create or invite users from that domain.\n* If you use DNS verification, create the required `TXT` record with the `_twilio` name and the `twilio-domain-verification=<32-hexadecimal-characters>` value, then check verification again after DNS has propagated.\n* If the domain lost verification, restore the required DNS record or HTML verification file and complete domain verification again. Twilio re-checks ownership every 24 hours.\n* If the person is not part of your company and does not use a domain you own, invite them as an external user to the specific account instead of adding them as a managed user in the organization.\n* Use an email address from a company-owned domain that you can verify. Do not use a common consumer email domain for organization user invitations.",
    "description": "This error occurs when you try to create or invite a user with an email address from a domain that your Twilio Organization has not verified. You must verify domain ownership before you can invite users from that domain, and you cannot add users while the domain is unverified or awaiting re-validation.",
    "date_created": "2023-12-04T10:40:47Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 25018,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The request is not authorized",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this error because the request could not be authenticated or did not have permission to access the requested resource. This usually means the request included invalid credentials, used the wrong authentication method, or attempted an operation that the authenticated user is not allowed to perform.\n\n### Possible causes\n\n- The request used an incorrect Account SID or Auth Token.\n- The request used an invalid API Key SID or API Key Secret.\n- The request included credentials for a different Twilio account or subaccount than the target resource.\n- The request used a deleted, revoked, or inactive API Key.\n- The request sent a malformed or missing `Authorization` header.\n- The request used a restricted key or user that does not have permission to perform the operation.\n- The request attempted to access a resource owned by another account.\n\n### Possible solutions\n\n- Verify that you are sending the correct credentials for the account or subaccount that owns the resource.\n- If you use basic authentication, confirm that the Account SID and Auth Token are valid and active.\n- If you use API Keys, confirm that the API Key SID and API Key Secret are correct and that the key has not been revoked.\n- Make sure the `Authorization` header is present and properly encoded for the authentication method you are using.\n- Confirm that your request is targeting the correct Account SID and resource path.\n- If you use subaccounts, authenticate with credentials that belong to the same subaccount as the resource you want to access.\n- Review your API Key, account user, or role configuration to make sure it has permission to perform the requested action.\n- Regenerate credentials if you suspect they were copied incorrectly or have been rotated.\n\n#### Additional resources\n\n- [API authentication](/docs/usage/requests-to-twilio)\n- [API Keys](/docs/iam/api-keys)\n- [Identity and Access Management](/docs/iam)\n",
    "causes": "* The request used an incorrect Account SID or Auth Token.\n* The request used an invalid API Key SID or API Key Secret.\n* The request included credentials for a different Twilio account or subaccount than the target resource.\n* The request used a deleted, revoked, or inactive API Key.\n* The request sent a malformed or missing `Authorization` header.\n* The request used a restricted key or user that does not have permission to perform the operation.\n* The request attempted to access a resource owned by another account.",
    "solutions": "* Verify that you are sending the correct credentials for the account or subaccount that owns the resource.\n* If you use basic authentication, confirm that the Account SID and Auth Token are valid and active.\n* If you use API Keys, confirm that the API Key SID and API Key Secret are correct and that the key has not been revoked.\n* Make sure the `Authorization` header is present and properly encoded for the authentication method you are using.\n* Confirm that your request is targeting the correct Account SID and resource path.\n* If you use subaccounts, authenticate with credentials that belong to the same subaccount as the resource you want to access.\n* Review your API Key, account user, or role configuration to make sure it has permission to perform the requested action.\n* Regenerate credentials if you suspect they were copied incorrectly or have been rotated.",
    "description": "Twilio returned this error because the request could not be authenticated or did not have permission to access the requested resource. This usually means the request included invalid credentials, used the wrong authentication method, or attempted an operation that the authenticated user is not allowed to perform.",
    "date_created": "2023-12-04T10:42:44Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25019,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to complete request due to a business rule violations",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nFailed to complete request due to a business rule violations.\n\n### Possible causes\n\nThe resource to be modified has moved into a state that is no longer valid. Input on the request did not pass validation.\n\n### Possible solutions\n\nVerify if the resource to be modified exists and is in a valid state.\n",
    "causes": "The resource to be modified has moved into a state that is no longer valid. Input on the request did not pass validation.",
    "solutions": "Verify if the resource to be modified exists and is in a valid state.",
    "description": "Failed to complete request due to a business rule violations.",
    "date_created": "2023-12-04T10:44:18Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25020,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Version conflict in SCIM header",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when the SCIM version value you send in the request headers does not match the current version of the target SCIM resource. Twilio rejects the request to prevent you from overwriting a user or other SCIM entity with a stale version.\n\n### Possible causes\n\n- Your request includes a version or concurrency header value that was copied from an older version of the SCIM resource.\n- The SCIM resource was updated after you last retrieved it.\n- Multiple clients or processes attempted to update the same SCIM resource at nearly the same time.\n- Your application is reusing cached SCIM resource metadata instead of fetching the latest version before sending an update.\n- Your request manually sets a version-related header incorrectly.\n\n### Possible solutions\n\n- Retrieve the latest version of the SCIM resource before sending your update, then retry the request using the current version information.\n- Make sure your application does not use stale cached data when updating SCIM users or other SCIM objects.\n- If multiple systems can update the same resource, add retry logic that fetches the latest entity and reapplies your changes before sending another request.\n- Remove manually set version headers unless your integration specifically requires them and you are sure the value is current.\n- Review your SCIM integration to confirm that update requests follow your identity provider's expected concurrency and synchronization behavior.\n\n#### Additional resources\n\n- [Identity and Access Management documentation](/docs/iam)\n- [Single Sign-On and User Management overview](/docs/iam)\n",
    "causes": "* Your request includes a version or concurrency header value that was copied from an older version of the SCIM resource.\n* The SCIM resource was updated after you last retrieved it.\n* Multiple clients or processes attempted to update the same SCIM resource at nearly the same time.\n* Your application is reusing cached SCIM resource metadata instead of fetching the latest version before sending an update.\n* Your request manually sets a version-related header incorrectly.",
    "solutions": "* Retrieve the latest version of the SCIM resource before sending your update, then retry the request using the current version information.\n* Make sure your application does not use stale cached data when updating SCIM users or other SCIM objects.\n* If multiple systems can update the same resource, add retry logic that fetches the latest entity and reapplies your changes before sending another request.\n* Remove manually set version headers unless your integration specifically requires them and you are sure the value is current.\n* Review your SCIM integration to confirm that update requests follow your identity provider's expected concurrency and synchronization behavior.",
    "description": "This error occurs when the SCIM version value you send in the request headers does not match the current version of the target SCIM resource. Twilio rejects the request to prevent you from overwriting a user or other SCIM entity with a stale version.",
    "date_created": "2023-12-04T10:45:40Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rate limit exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio rejected the request because your application exceeded the allowed request rate for the Organization API. Reduce the request volume before retrying.\n\n### Possible causes\n\n- Your application sent too many Organization API requests in a short period.\n- Multiple services or workers are using the same credentials and collectively exceeded the rate limit.\n- A retry loop, polling pattern, or burst of concurrent requests caused a sudden spike in traffic.\n- Your application does not use backoff when it receives a rate limit response.\n\n### Possible solutions\n\n- Reduce how frequently your application calls the Organization API.\n- Add exponential backoff and retry logic so your application waits before sending another request after a rate limit response.\n- Smooth out traffic bursts by queueing or staggering requests instead of sending many requests at once.\n- Review your application logs for unexpected loops, duplicate jobs, or parallel workers that may be generating excess traffic.\n- If the request volume is expected for your use case, contact Support to discuss your current limits and options.\n\n#### Additional resources\n\n- [Twilio IAM documentation](/docs/iam)\n",
    "causes": "* Your application sent too many Organization API requests in a short period.\n* Multiple services or workers are using the same credentials and collectively exceeded the rate limit.\n* A retry loop, polling pattern, or burst of concurrent requests caused a sudden spike in traffic.\n* Your application does not use backoff when it receives a rate limit response.",
    "solutions": "* Reduce how frequently your application calls the Organization API.\n* Add exponential backoff and retry logic so your application waits before sending another request after a rate limit response.\n* Smooth out traffic bursts by queueing or staggering requests instead of sending many requests at once.\n* Review your application logs for unexpected loops, duplicate jobs, or parallel workers that may be generating excess traffic.\n* If the request volume is expected for your use case, contact Support to discuss your current limits and options.",
    "description": "Twilio rejected the request because your application exceeded the allowed request rate for the Organization API. Reduce the request volume before retrying.",
    "date_created": "2023-12-04T10:49:07Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25022,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Duplicate username or externalId",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this error because the `username` or `externalId` you provided already belongs to an existing user. Each user must have a unique `username` and, when provided, a unique `externalId`.\n\n### Possible causes\n\n- You attempted to create a new user with a `username` that is already assigned to another user.\n- You attempted to create a new user with an `externalId` that is already assigned to another user.\n- Your application retried a user creation request and sent the same identity values more than once.\n- Your integration does not check for existing users before creating a new one.\n\n### Possible solutions\n\n- Update the request so the `username` is unique for the user you want to create.\n- Update the request so the `externalId` is unique if your integration uses that field.\n- Check whether the user already exists before sending a create request.\n- If you intended to modify an existing user, update that user instead of creating a new one.\n- Review your application's retry and provisioning logic to prevent duplicate user creation requests.\n\n#### Additional resources\n\n- [Identity and Access Management docs](/docs/iam)\n- [Manage users with Twilio Identity and Access Management](/docs/iam)\n",
    "causes": "* You attempted to create a new user with a `username` that is already assigned to another user.\n* You attempted to create a new user with an `externalId` that is already assigned to another user.\n* Your application retried a user creation request and sent the same identity values more than once.\n* Your integration does not check for existing users before creating a new one.",
    "solutions": "* Update the request so the `username` is unique for the user you want to create.\n* Update the request so the `externalId` is unique if your integration uses that field.\n* Check whether the user already exists before sending a create request.\n* If you intended to modify an existing user, update that user instead of creating a new one.\n* Review your application's retry and provisioning logic to prevent duplicate user creation requests.",
    "description": "Twilio returned this error because the `username` or `externalId` you provided already belongs to an existing user. Each user must have a unique `username` and, when provided, a unique `externalId`.",
    "date_created": "2023-12-04T10:51:12Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid page token",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when a request to list organization users includes an invalid page token. Use the token from the most recent list response without changing it.\n\n### Possible causes\n\n- The page token was edited, truncated, or otherwise malformed before the request was sent.\n- The token did not come directly from a previous list response.\n- The token came from an older response and has expired.\n\n### Possible solutions\n\n- Send the page token exactly as it was returned in the previous list response.\n- Start again with a fresh list request, then use the new page token from the latest response.\n- Store and replay page tokens exactly as returned. Do not generate, decode, or modify them in your application.\n\n#### Additional resources\n\n- [Organizations](/docs/iam/organizations)\n- [Managed users](/docs/iam/organizations/managed-users)\n- [Twilio API responses](/docs/usage/twilios-response)\n",
    "causes": "* The page token was edited, truncated, or otherwise malformed before the request was sent.\n* The token did not come directly from a previous list response.\n* The token came from an older response and has expired.",
    "solutions": "* Send the page token exactly as it was returned in the previous list response.\n* Start again with a fresh list request, then use the new page token from the latest response.\n* Store and replay page tokens exactly as returned. Do not generate, decode, or modify them in your application.",
    "description": "Twilio returns this error when a request to list organization users includes an invalid page token. Use the token from the most recent list response without changing it.",
    "date_created": "2023-12-04T10:55:34Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 25100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The organization was not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when the Organization SID in your request does not match an existing organization. An organization is the container Twilio uses to manage your accounts, users, and organization-level security settings.\n\n### Possible causes\n\n- The request included an Organization SID that does not exist.\n- The Organization SID was copied incorrectly or references a different organization than the one you intended to use.\n- The organization no longer exists as a standalone resource because it was merged into another organization.\n- The organization was deleted and is no longer available.\n\n### Possible solutions\n\n- Copy the Organization SID again from Twilio Admin and retry the request.\n- Confirm that you are using an Organization SID for the correct organization, not a different resource SID.\n- Open Twilio Admin and verify that the organization still exists and contains the expected accounts or users.\n- If you recently merged organizations, update your request to use the SID of the remaining organization.\n- If the organization was deleted, create or identify the replacement organization before retrying the request.\n\n#### Additional resources\n\n- [Organizations](/docs/iam/organizations)\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n- [Introduction to Twilio Organizations](https://help.twilio.com/articles/8963038518299-Introduction-to-Twilio-Organizations)\n",
    "causes": "* The request included an Organization SID that does not exist.\n* The Organization SID was copied incorrectly or references a different organization than the one you intended to use.\n* The organization no longer exists as a standalone resource because it was merged into another organization.\n* The organization was deleted and is no longer available.",
    "solutions": "* Copy the Organization SID again from Twilio Admin and retry the request.\n* Confirm that you are using an Organization SID for the correct organization, not a different resource SID.\n* Open Twilio Admin and verify that the organization still exists and contains the expected accounts or users.\n* If you recently merged organizations, update your request to use the SID of the remaining organization.\n* If the organization was deleted, create or identify the replacement organization before retrying the request.",
    "description": "This error occurs when the Organization SID in your request does not match an existing organization. An organization is the container Twilio uses to manage your accounts, users, and organization-level security settings.",
    "date_created": "2023-12-04T10:57:16Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The organization's account was not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe organization's account was not found.\n\n### Possible causes\n\n- Requested account doesn't exist\n- Requested account is not a managed account\n\n### Possible solutions\n\nVerify the Organization Sid and the Account Sid. Ensure that the Organization Sid corresponds to your organization and the Account is a managed account.\n",
    "causes": "* Requested account doesn't exist\n* Requested account is not a managed account",
    "solutions": "Verify the Organization Sid and the Account Sid. Ensure that the Organization Sid corresponds to your organization and the Account is a managed account.",
    "description": "The organization's account was not found.",
    "date_created": "2023-12-04T11:14:32Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The organization's account limit has been reached",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you try to create or import another managed account after your organization has reached its maximum number of managed accounts. In Twilio Organizations, managed accounts are the accounts your organization owns and controls.\n\n### Possible causes\n\n- You tried to create a new account in your organization after reaching the maximum number of managed accounts.\n- You tried to add an existing account to your organization, which would make it a managed account, after reaching that same limit.\n\n### Possible solutions\n\n- Go to Settings > Organization settings > Accounts in Console and review the managed accounts that already belong to your organization before retrying the request.\n- If you still need to create or import another managed account, contact Support to request an increase to your organization's account limit.\n- If you are creating new managed accounts and need specific terms, invoicing, or feature configuration applied to them, include those requirements when you contact Support.\n\n#### Additional resources\n\n- [Organizations](/docs/iam/organizations)\n- [Managed accounts](/docs/iam/organizations/managed-accounts)\n- [Introduction to Twilio Organizations](https://help.twilio.com/articles/8963038518299-Introduction-to-Twilio-Organizations)\n",
    "causes": "* You tried to create a new account in your organization after reaching the maximum number of managed accounts.\n* You tried to add an existing account to your organization, which would make it a managed account, after reaching that same limit.",
    "solutions": "* Go to Settings > Organization settings > Accounts in Console and review the managed accounts that already belong to your organization before retrying the request.\n* If you still need to create or import another managed account, contact Support to request an increase to your organization's account limit.\n* If you are creating new managed accounts and need specific terms, invoicing, or feature configuration applied to them, include those requirements when you contact Support.",
    "description": "This error occurs when you try to create or import another managed account after your organization has reached its maximum number of managed accounts. In Twilio Organizations, managed accounts are the accounts your organization owns and controls.",
    "date_created": "2023-12-04T11:16:34Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 25103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The organization's account owner is not a managed user",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe organization's account owner is not a managed user.\n\n### Possible causes\n\n- An independent user has been set as the organization's account owner\n- A non-managed user has been set as the organization's account owner\n- User doesn't exist\n\n### Possible solutions\n\nOnly managed users can be designated as an organization's account owner.\n",
    "causes": "* An independent user has been set as the organization's account owner\n* A non-managed user has been set as the organization's account owner\n* User doesn't exist",
    "solutions": "Only managed users can be designated as an organization's account owner.",
    "description": "The organization's account owner is not a managed user.",
    "date_created": "2023-12-04T11:21:26Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25104,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The organization's account owner was not set during creation",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe organization's account owner was not set during creation.\n\n### Possible causes\n\nThe organization's account creation request does not specify an owner, and the organization does not currently have an owner assigned.\n\n### Possible solutions\n\n- Set the account's owner in the request\n- To set an organization's owner, please contact Twilio support\n",
    "causes": "The organization's account creation request does not specify an owner, and the organization does not currently have an owner assigned.",
    "solutions": "* Set the account's owner in the request\n* To set an organization's owner, please contact Twilio support",
    "description": "The organization's account owner was not set during creation.",
    "date_created": "2023-12-04T11:23:31Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25105,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The request is not authorized",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when Twilio receives authentication for a request, but the authenticated credentials or user do not have access to the requested resource. Authenticate Twilio API requests with HTTP Basic authentication. For production requests, use an API key as the username and the API key secret as the password.\n\n### Possible causes\n\n- The request used incorrect credentials.\n- The credentials are valid, but they do not belong to the account or organization that owns the resource you are trying to access.\n- The authenticated user does not have the required organization access to manage the requested resource.\n- The authenticated user is a standard organization user and does not have permission to perform organization administration tasks.\n\n### Possible solutions\n\n- Verify the username and password in your HTTP Basic authentication header. For production, use the correct API key and API key secret.\n- If you are testing locally, verify that the Account SID and Auth Token pair are correct and belong to the account you expect to use.\n- Confirm that the request is targeting a resource that belongs to the same account or organization as the credentials you are sending.\n- Review the user's organization role and role assignments in Twilio Admin. Grant Organization Owner, Organization Admin, or another appropriate role before retrying the request.\n- If you use restricted access for users or credentials, update the assigned permissions so the request can access the required resource.\n\n#### Additional resources\n\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [Organizations](/docs/iam/organizations)\n- [Access Control](/docs/iam/access-control/overview)\n",
    "causes": "* The request used incorrect credentials.\n* The credentials are valid, but they do not belong to the account or organization that owns the resource you are trying to access.\n* The authenticated user does not have the required organization access to manage the requested resource.\n* The authenticated user is a standard organization user and does not have permission to perform organization administration tasks.",
    "solutions": "* Verify the username and password in your HTTP Basic authentication header. For production, use the correct API key and API key secret.\n* If you are testing locally, verify that the Account SID and Auth Token pair are correct and belong to the account you expect to use.\n* Confirm that the request is targeting a resource that belongs to the same account or organization as the credentials you are sending.\n* Review the user's organization role and role assignments in Twilio Admin. Grant Organization Owner, Organization Admin, or another appropriate role before retrying the request.\n* If you use restricted access for users or credentials, update the assigned permissions so the request can access the required resource.",
    "description": "This error occurs when Twilio receives authentication for a request, but the authenticated credentials or user do not have access to the requested resource. Authenticate Twilio API requests with HTTP Basic authentication. For production requests, use an API key as the username and the API key secret as the password.",
    "date_created": "2023-12-04T11:30:59Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25106,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to complete request due to a bad request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nFailed to complete request due to a bad request\n\n### Possible causes\n\n- The resource to be modified has moved into a state that is no longer valid.\n- Input on the request did not pass validation.\n\n### Possible solutions\n\n- Retry the request after confirming the request is valid.\n- Verify if the resource to be modified exists and is in a valid state.\n",
    "causes": "* The resource to be modified has moved into a state that is no longer valid.\n* Input on the request did not pass validation.",
    "solutions": "* Retry the request after confirming the request is valid.\n* Verify if the resource to be modified exists and is in a valid state.",
    "description": "Failed to complete request due to a bad request",
    "date_created": "2023-12-04T11:33:41Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25107,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Request does not contain any authorization information",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request does not contain any authorization information (most cases: credentials) or the credentials and the resource have no relation.\n\n### Possible causes\n\n- When omitting the Auth header from HTTP request\n- Passing an Auth header to access a resource that belongs to some other organization.\n\n### Possible solutions\n\nVerify correctness of Auth header.\n",
    "causes": "* When omitting the Auth header from HTTP request\n* Passing an Auth header to access a resource that belongs to some other organization.",
    "solutions": "Verify correctness of Auth header.",
    "description": "The Request does not contain any authorization information (most cases: credentials) or the credentials and the resource have no relation.",
    "date_created": "2023-12-04T11:41:43Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25109,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Request is rate limited",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio rejected the request because your application exceeded the allowed request rate for this operation. This error helps protect the Verify service from bursts of traffic that can affect performance or indicate an unexpected retry pattern.\n\n### Possible causes\n\n- Your application sent too many Verify API requests in a short period of time.\n- Your integration retried requests too aggressively after a timeout or non-success response.\n- Multiple application instances or workers sent requests concurrently without rate limiting.\n- A bug or traffic spike caused an unexpected increase in verification requests.\n- You exceeded a service limit associated with your Verify use case.\n\n### Possible solutions\n\n- Reduce the rate of requests from your application and retry with backoff instead of sending requests continuously.\n- Review your retry logic and make sure you do not immediately resend failed requests in a tight loop.\n- Add client-side rate limiting, request queuing, or throttling across all workers and services that call Verify.\n- Confirm that the traffic pattern is expected and that your application is not generating duplicate verification requests.\n- If the traffic is valid for your use case, review your Verify implementation and contact Support to discuss your request pattern and applicable limits.\n\n#### Additional resources\n\n- [Verify documentation](/docs/verify)\n- [Verify API](/docs/verify/api)\n",
    "causes": "* Your application sent too many Verify API requests in a short period of time.\n* Your integration retried requests too aggressively after a timeout or non-success response.\n* Multiple application instances or workers sent requests concurrently without rate limiting.\n* A bug or traffic spike caused an unexpected increase in verification requests.\n* You exceeded a service limit associated with your Verify use case.",
    "solutions": "* Reduce the rate of requests from your application and retry with backoff instead of sending requests continuously.\n* Review your retry logic and make sure you do not immediately resend failed requests in a tight loop.\n* Add client-side rate limiting, request queuing, or throttling across all workers and services that call Verify.\n* Confirm that the traffic pattern is expected and that your application is not generating duplicate verification requests.\n* If the traffic is valid for your use case, review your Verify implementation and contact Support to discuss your request pattern and applicable limits.",
    "description": "Twilio rejected the request because your application exceeded the allowed request rate for this operation. This error helps protect the Verify service from bursts of traffic that can affect performance or indicate an unexpected retry pattern.",
    "date_created": "2023-12-04T11:46:48Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 25200,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The scope for role assignments must be a managed account",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe scope for role assignments must be a managed account.\n\n### Possible causes\n\nThe role assignments scope was set to \"organization\".\n\n### Possible solutions\n\nVerify the role assignments scope is a managed account.\n",
    "causes": "The role assignments scope was set to \"organization\".",
    "solutions": "Verify the role assignments scope is a managed account.",
    "description": "The scope for role assignments must be a managed account.",
    "date_created": "2023-12-04T11:49:12Z",
    "last_updated": "2026-07-14T21:57:59+01:00"
  },
  {
    "code": 25201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The identity for role assignments must be a managed user",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe identity for role assignments must be a managed user.\n\n### Possible causes\n\nThe role assignments identity was set for an independent user.\n\n### Possible solutions\n\nVerify the role assignments identity is a managed user.\n",
    "causes": "The role assignments identity was set for an independent user.",
    "solutions": "Verify the role assignments identity is a managed user.",
    "description": "The identity for role assignments must be a managed user.",
    "date_created": "2023-12-04T11:51:12Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25202,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The role assignment has an invalid role",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe role assignment has an invalid role.\n\n### Possible causes\n\nThe role assignment creation specifies an invalid role.\n\n### Possible solutions\n\nValidate that the role provided is valid. Acceptable roles are:\n\n- Admin: IX00000000000000000000000000000102\n- Developer: IX00000000000000000000000000000103\n- Billing: IX00000000000000000000000000000104\n- Support: IX00000000000000000000000000000105\n",
    "causes": "The role assignment creation specifies an invalid role.",
    "solutions": "Validate that the role provided is valid. Acceptable roles are: - Admin: IX00000000000000000000000000000102\n- Developer: IX00000000000000000000000000000103\n- Billing: IX00000000000000000000000000000104\n- Support: IX00000000000000000000000000000105",
    "description": "The role assignment has an invalid role.",
    "date_created": "2023-12-04T12:00:38Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 25203,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Listing role assignments requires query parameters",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you call the Organizations API to list role assignments without including any query parameters. To list role assignments, include at least one filter in the request. Use `identity`, `scope`, or both.\n\n### Possible causes\n\n- The request did not include `identity`.\n- The request did not include `scope`.\n- The request was sent without any query parameters.\n\n### Possible solutions\n\n- Add `identity` to list role assignments for a specific managed user.\n- Add `scope` to list role assignments for a specific scope in your organization.\n- Add both `identity` and `scope` when you need to narrow the results to a specific user within a specific scope.\n\n#### Additional resources\n\n- [Access Control overview](/docs/iam/access-control/overview)\n- [Managed users](/docs/iam/organizations/managed-users)\n- [Managed accounts](/docs/iam/organizations/managed-accounts)\n",
    "causes": "* The request did not include `identity`.\n* The request did not include `scope`.\n* The request was sent without any query parameters.",
    "solutions": "* Add `identity` to list role assignments for a specific managed user.\n* Add `scope` to list role assignments for a specific scope in your organization.\n* Add both `identity` and `scope` when you need to narrow the results to a specific user within a specific scope.",
    "description": "This error occurs when you call the Organizations API to list role assignments without including any query parameters. To list role assignments, include at least one filter in the request. Use `identity`, `scope`, or both.",
    "date_created": "2023-12-04T12:04:15Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 30001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Queue overflow",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio queues messages based on the sending rate of a sender or an account. For example a US long code number can send one message [segment](https://www.twilio.com/blog/what-the-heck-is-a-segment.html) per second, and a short code may send over 100 message segments per second.\n\nMessages can only be queued for 10 hours and then they automatically fail. This queue length limit can be reduced by setting a lower [Validity Period](https://www.twilio.com/blog/take-more-control-of-outbound-messages-using-validity-period-html) within your Messaging Service settings or in your API requests to send messages.\n\nYou can monitor the length on your queue via the [Queue Insights dashboard](https://www.twilio.com/console/sms/insights/queue).\n\nFor more information please view this [FAQ](https://support.twilio.com/hc/en-us/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues).\n\n### Possible causes\n\n- You tried to send too many messages too quickly and your message queue overflowed.\n- You tried sending all your messages from a single Sender with an insufficient send rate limit (Message Segments per Second) for that volume, and you need additional throughput to handle the volume.\n- There are Messages Per Second (MPS) limits applied for your Senders, Messaging Services, and Accounts that you may be encountering.\n\n### Possible solutions\n\n- **Recommended** Try using a [Messaging Service](/docs/messaging/services) with multiple senders and it will load balance for you.\n- Try adding more senders into your [Messaging Service](/docs/messaging/services).\n- If you are messaging in the US or Canada, talk to Twilio Sales about getting a [Toll Free](https://www.twilio.com/en-us/messaging/channels/sms) or [Short Code](https://support.twilio.com/hc/en-us/articles/223182068-What-is-a-Messaging-Short-Code-) number that allows you to send more messages per second.\n- Try sending your message again after waiting for some time.\n- If you have set a lower Validity Period than the default and maximum value of 36000 seconds (10 hours), try setting a higher Validity Period for your messages.\n",
    "causes": "* You tried to send too many messages too quickly and your message queue overflowed.\n* You tried sending all your messages from a single Sender with an insufficient send rate limit (Message Segments per Second) for that volume, and you need additional throughput to handle the volume.\n* There are Messages Per Second (MPS) limits applied for your Senders, Messaging Services, and Accounts that you may be encountering.",
    "solutions": "* **Recommended** Try using a [Messaging Service](/docs/messaging/services) with multiple senders and it will load balance for you.\n* Try adding more senders into your [Messaging Service](/docs/messaging/services).\n* If you are messaging in the US or Canada, talk to Twilio Sales about getting a [Toll Free](https://www.twilio.com/en-us/messaging/channels/sms) or [Short Code](https://support.twilio.com/hc/en-us/articles/223182068-What-is-a-Messaging-Short-Code-) number that allows you to send more messages per second.\n* Try sending your message again after waiting for some time.\n* If you have set a lower Validity Period than the default and maximum value of 36000 seconds (10 hours), try setting a higher Validity Period for your messages.",
    "description": "Twilio queues messages based on the sending rate of a sender or an account. For example a US long code number can send one message [segment](https://www.twilio.com/blog/what-the-heck-is-a-segment.html) per second, and a short code may send over 100 message segments per second. Messages can only be queued for 10 hours and then they automatically fail. This queue length limit can be reduced by setting a lower [Validity Period](https://www.twilio.com/blog/take-more-control-of-outbound-messages-using-validity-period-html) within your Messaging Service settings or in your API requests to send messages. You can monitor the length on your queue via the [Queue Insights dashboard](https://www.twilio.com/console/sms/insights/queue). For more information please view this [FAQ](https://support.twilio.com/hc/en-us/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues).",
    "date_created": "2016-03-31T17:14:33Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Account suspended",
    "secondary_message": "Your account was suspended between the time of message send and delivery. Please contact Twilio.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means Twilio accepted the message for queueing, but your account was suspended before Twilio could send it. You can also see this error in Messaging status callbacks, the Message resource `ErrorCode`, and Twilio Console error logs.\n\n### Possible causes\n\n- Your account balance became negative, you had overdue payments, or auto-recharge wasn't available, which caused the account to be suspended before delivery.\n- Twilio suspended the account after detecting activity that violates the Acceptable Use Policy, such as spam, fraudulent traffic, or other prohibited use.\n- Twilio suspended the account because it detected suspected fraud, abuse, unusual traffic spikes, or a possible account compromise.\n\n### Possible solutions\n\n- Check recent email notices from Twilio and follow any remediation steps in the suspension notice before retrying messages. If you received a Support notification email, reply directly to that email to speed up review and reactivation.\n- Review your billing status. If the account has a negative balance or failed recharge, add funds, resolve overdue payments, or enable or update auto-recharge so the account can return to an active state.\n- If the suspension is related to policy, fraud, or abuse review, stop any traffic that could violate the Acceptable Use Policy, and prepare details about your use case and recent traffic for Support.\n- Contact Support and include the affected Message SID values so Twilio can review the suspension and confirm next steps for reactivation.\n\n#### Additional resources\n\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [Fraud Response Guide: Contact Support](/docs/usage/fraud-response-guide/engage)\n- [Restricted SMS message types using Twilio](https://help.twilio.com/articles/223181808-Restricted-SMS-message-types-using-Twilio)\n",
    "causes": "* Your account balance became negative, you had overdue payments, or auto-recharge wasn't available, which caused the account to be suspended before delivery.\n* Twilio suspended the account after detecting activity that violates the Acceptable Use Policy, such as spam, fraudulent traffic, or other prohibited use.\n* Twilio suspended the account because it detected suspected fraud, abuse, unusual traffic spikes, or a possible account compromise.",
    "solutions": "* Check recent email notices from Twilio and follow any remediation steps in the suspension notice before retrying messages. If you received a Support notification email, reply directly to that email to speed up review and reactivation.\n* Review your billing status. If the account has a negative balance or failed recharge, add funds, resolve overdue payments, or enable or update auto-recharge so the account can return to an active state.\n* If the suspension is related to policy, fraud, or abuse review, stop any traffic that could violate the Acceptable Use Policy, and prepare details about your use case and recent traffic for Support.\n* Contact Support and include the affected Message SID values so Twilio can review the suspension and confirm next steps for reactivation.",
    "description": "This error means Twilio accepted the message for queueing, but your account was suspended before Twilio could send it. You can also see this error in Messaging status callbacks, the Message resource `ErrorCode`, and Twilio Console error logs.",
    "date_created": "2016-03-31T17:14:33Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30003,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Unreachable destination handset",
    "secondary_message": "The destination handset you are trying to reach is switched off or otherwise unavailable.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the destination handset is unavailable on the carrier network. This usually happens when the device is powered off, has no service, cannot receive SMS, or is otherwise temporarily unreachable.\n\n### Possible causes\n\n- The recipient device is powered off or otherwise unavailable.\n- The device has insufficient signal or is roaming off-network, so the carrier cannot reach it.\n- The destination number cannot receive SMS, such as a landline or another unsupported line type.\n- A downstream carrier or mobile network issue is preventing delivery to the handset.\n- If you send from a short code, the recipient's wireless plan may not support short code messaging.\n- If you send from a long code or toll-free number, repeated failures can also indicate carrier-side filtering or blocking.\n\n### Possible solutions\n\n- Retry the message with another test send through the REST API. A one-time downstream issue can cause a transient delivery failure.\n- Confirm that the destination device is powered on and has usable signal. If signal is weak, have the recipient reconnect to the network and try again.\n- Confirm that the device is connected to its home carrier network. Twilio cannot guarantee delivery to devices roaming off-network or internationally.\n- Ask the recipient to test whether the device can receive non-Twilio SMS. This helps confirm whether the handset can receive messages from other senders.\n- Ask the recipient to test messages from another Twilio number or with a shorter one-segment body. This can help isolate sender type or content-related delivery issues.\n- Verify that the destination number is SMS-capable before sending. Use Lookup Line Type Intelligence to filter out landlines and other unsupported line types.\n- For repeated short code failures, confirm that the recipient's wireless plan supports short code messaging. If it does not, the recipient may need to contact their carrier.\n- For repeated long code or toll-free failures, review your sender type, use case, and content for filtering risk. Approved sender types and compliant traffic can improve delivery in supported markets.\n- If the issue continues, collect at least three recent Message SIDs that failed with 30003 and contact support for investigation.\n\n#### Additional resources\n\n- [Troubleshooting Undelivered Messages](https://help.twilio.com/hc/en-us/articles/223181868-Troubleshooting-Undelivered-Twilio-SMS-Messages)\n- [Line Type Intelligence](/docs/lookup/v2-api/line-type-intelligence)\n- [How do I prevent my Twilio messages from being filtered (blocked)?](https://help.twilio.com/articles/1260803966670-How-do-I-prevent-my-Twilio-messages-from-being-filtered-blocked-)\n",
    "causes": "* The recipient device is powered off or otherwise unavailable.\n* The device has insufficient signal or is roaming off-network, so the carrier cannot reach it.\n* The destination number cannot receive SMS, such as a landline or another unsupported line type.\n* A downstream carrier or mobile network issue is preventing delivery to the handset.\n* If you send from a short code, the recipient's wireless plan may not support short code messaging.\n* If you send from a long code or toll-free number, repeated failures can also indicate carrier-side filtering or blocking.",
    "solutions": "* Retry the message with another test send through the REST API. A one-time downstream issue can cause a transient delivery failure.\n* Confirm that the destination device is powered on and has usable signal. If signal is weak, have the recipient reconnect to the network and try again.\n* Confirm that the device is connected to its home carrier network. Twilio cannot guarantee delivery to devices roaming off-network or internationally.\n* Ask the recipient to test whether the device can receive non-Twilio SMS. This helps confirm whether the handset can receive messages from other senders.\n* Ask the recipient to test messages from another Twilio number or with a shorter one-segment body. This can help isolate sender type or content-related delivery issues.\n* Verify that the destination number is SMS-capable before sending. Use Lookup Line Type Intelligence to filter out landlines and other unsupported line types.\n* For repeated short code failures, confirm that the recipient's wireless plan supports short code messaging. If it does not, the recipient may need to contact their carrier.\n* For repeated long code or toll-free failures, review your sender type, use case, and content for filtering risk. Approved sender types and compliant traffic can improve delivery in supported markets.\n* If the issue continues, collect at least three recent Message SIDs that failed with 30003 and contact support for investigation.",
    "description": "This error means the destination handset is unavailable on the carrier network. This usually happens when the device is powered off, has no service, cannot receive SMS, or is otherwise temporarily unreachable.",
    "date_created": "2016-03-31T17:14:34Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30004,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Message blocked",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nError 30004 indicates the destination number is blocked from receiving the message. You see an `ErrorCode` value of `30004` when a message transitions to a failed or undelivered state in the Programmable Messaging logs or status callbacks.\n\n### Possible causes\n\n- The destination number is blocked from receiving messages, resulting in a `Message blocked` status.\n- The recipient's device is turned off or out of coverage, which can cause the message to return `30004`.\n- The destination number cannot receive SMS (for example, a landline). For India, Do Not Disturb (DND) and domestic Distributed Ledger Technology (DLT) regulations can also block delivery.\n- Carrier or compliance filtering blocked the content or sender, or Twilio applied internal filtering aligned with industry norms. These scenarios can result in repeated messages that fail with `30004`.\n\n### Possible solutions\n\n- Reproduce and baseline the issue by sending a fresh test via the API. Check the recipient device for power and coverage, try a shorter single‑segment body, and test from a different Twilio sender instead of an Alphanumeric Sender ID.\n- If the recipient previously opted out, ask them to opt back in by sending `START` or `UNSTOP` to your sender, and then retry. Attempts to message an unsubscribed recipient from your account fail with error `21610` until they opt back in.\n- If filtering is suspected, adjust content to comply with Twilio's Messaging Policy and avoid prohibited or high‑risk content patterns.\n- For delivery to India, make sure your approach follows the India SMS guidelines. International traffic may bypass DND, whereas domestic routes require DLT registration and are subject to DND. Select the appropriate route and confirm that the required registrations are complete.\n- If the issue persists, collect recent Message SIDs that return `30004` and contact Twilio Support for further investigation.\n\n#### Additional resources\n\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [Customize users' opt-in and opt-out experience with Advanced Opt-Out](/docs/messaging/tutorials/advanced-opt-out)\n- [India: SMS Guidelines](https://www.twilio.com/en-us/guidelines/in/sms)\n",
    "causes": "* The destination number is blocked from receiving messages, resulting in a `Message blocked` status.\n* The recipient's device is turned off or out of coverage, which can cause the message to return `30004`.\n* The destination number cannot receive SMS (for example, a landline). For India, Do Not Disturb (DND) and domestic Distributed Ledger Technology (DLT) regulations can also block delivery.\n* Carrier or compliance filtering blocked the content or sender, or Twilio applied internal filtering aligned with industry norms. These scenarios can result in repeated messages that fail with `30004`.",
    "solutions": "* Reproduce and baseline the issue by sending a fresh test via the API. Check the recipient device for power and coverage, try a shorter single‑segment body, and test from a different Twilio sender instead of an Alphanumeric Sender ID.\n* If the recipient previously opted out, ask them to opt back in by sending `START` or `UNSTOP` to your sender, and then retry. Attempts to message an unsubscribed recipient from your account fail with error `21610` until they opt back in.\n* If filtering is suspected, adjust content to comply with Twilio's Messaging Policy and avoid prohibited or high‑risk content patterns.\n* For delivery to India, make sure your approach follows the India SMS guidelines. International traffic may bypass DND, whereas domestic routes require DLT registration and are subject to DND. Select the appropriate route and confirm that the required registrations are complete.\n* If the issue persists, collect recent Message SIDs that return `30004` and contact Twilio Support for further investigation.",
    "description": "Error 30004 indicates the destination number is blocked from receiving the message. You see an `ErrorCode` value of `30004` when a message transitions to a failed or undelivered state in the Programmable Messaging logs or status callbacks.",
    "date_created": "2016-03-31T17:14:34Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30005,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Unknown destination handset",
    "secondary_message": "The destination number you are trying to reach is unknown and may no longer exist.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis delivery error indicates that the destination number is unknown and may no longer exist. Twilio receives this status from carrier partners and returns it to you.\n\n### Possible causes\n\n- The destination number is unknown and may no longer exist.\n- The device is powered off or has insufficient signal.\n- The destination number cannot receive SMS messages, such as when the number is a landline.\n- An issue at the mobile carrier is preventing delivery.\n\n### Possible solutions\n\n- Send another test message with a REST API request to confirm whether the error persists.\n- Verify the destination number is in proper E.164 format with the correct country code and subscriber number.\n- Check the recipient's device and network conditions, such as power, signal strength, and whether the device is on its home network (not roaming).\n- Test whether the recipient can receive non‑Twilio SMS and whether another Twilio number or a shorter one‑segment message is received.\n- If the issue persists, collect at least three recent Message SIDs that show error 30005, then open a support ticket with Twilio.\n\n#### Additional resources\n\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n- [What is E.164?](/docs/glossary/what-e164)\n",
    "causes": "* The destination number is unknown and may no longer exist.\n* The device is powered off or has insufficient signal.\n* The destination number cannot receive SMS messages, such as when the number is a landline.\n* An issue at the mobile carrier is preventing delivery.",
    "solutions": "* Send another test message with a REST API request to confirm whether the error persists.\n* Verify the destination number is in proper E.164 format with the correct country code and subscriber number.\n* Check the recipient's device and network conditions, such as power, signal strength, and whether the device is on its home network (not roaming).\n* Test whether the recipient can receive non‑Twilio SMS and whether another Twilio number or a shorter one‑segment message is received.\n* If the issue persists, collect at least three recent Message SIDs that show error 30005, then open a support ticket with Twilio.",
    "description": "This delivery error indicates that the destination number is unknown and may no longer exist. Twilio receives this status from carrier partners and returns it to you.",
    "date_created": "2016-03-31T17:14:34Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30006,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Landline or unreachable carrier",
    "secondary_message": "The destination number is unable to receive this message. Potential reasons could include trying to reach a landline or, in the case of short codes, an unreachable carrier.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis delivery error means the destination number cannot receive your message. Twilio returns 30006 when the destination is a landline or when a short code cannot reach the destination carrier. You can see this error in Messaging logs, in the Message resource `ErrorCode`, and in `StatusCallback` requests.\n\n### Possible causes\n\n- The destination number is a `landline` number, which generally cannot receive SMS messages.\n- You sent the message with a short code and the destination carrier could not be reached with that sender.\n- The destination number is valid, but its line type is not appropriate for your SMS use case. Lookup can return line types such as `landline`, `mobile`, `fixedVoip`, and `nonFixedVoip`.\n\n### Possible solutions\n\n- Use Lookup Line Type Intelligence before sending. Make a `GET /v2/PhoneNumbers/{PhoneNumber}` request with `Fields=line_type_intelligence` and inspect `line_type_intelligence.type`.\n- If Lookup returns `landline`, do not retry the same SMS to that destination. Send to a mobile number instead.\n- If you send with a short code, add alternative senders to a Messaging Service so Twilio can fall back to a long code when the short code cannot be used to reach the user.\n- Review the `ErrorCode` in Messaging logs and in your `StatusCallback` handler so you can identify recurring 30006 failures and remove incompatible destinations from future sends.\n\n#### Additional resources\n\n- [Line Type Intelligence](/docs/lookup/v2-api/line-type-intelligence)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n- [Debugging Common Issues with SMS](/docs/messaging/guides/debugging-common-issues)\n",
    "causes": "* The destination number is a `landline` number, which generally cannot receive SMS messages.\n* You sent the message with a short code and the destination carrier could not be reached with that sender.\n* The destination number is valid, but its line type is not appropriate for your SMS use case. Lookup can return line types such as `landline`, `mobile`, `fixedVoip`, and `nonFixedVoip`.",
    "solutions": "* Use Lookup Line Type Intelligence before sending. Make a `GET /v2/PhoneNumbers/{PhoneNumber}` request with `Fields=line_type_intelligence` and inspect `line_type_intelligence.type`.\n* If Lookup returns `landline`, do not retry the same SMS to that destination. Send to a mobile number instead.\n* If you send with a short code, add alternative senders to a Messaging Service so Twilio can fall back to a long code when the short code cannot be used to reach the user.\n* Review the `ErrorCode` in Messaging logs and in your `StatusCallback` handler so you can identify recurring 30006 failures and remove incompatible destinations from future sends.",
    "description": "This delivery error means the destination number cannot receive your message. Twilio returns 30006 when the destination is a landline or when a short code cannot reach the destination carrier. You can see this error in Messaging logs, in the Message resource `ErrorCode`, and in `StatusCallback` requests.",
    "date_created": "2016-03-31T17:14:34Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30007,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Message filtered",
    "secondary_message": "Your message content was flagged as going against carrier guidelines.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour message was filtered (blocked) by Twilio or by the carrier. This may be done by Twilio for violating Twilio's [Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy) or [Acceptable Use Policy](https://www.twilio.com/en-us/legal/aup), or by a wireless carrier for violating carrier rules or regulations.\n\nExamples of messaging that would be blocked by Twilio are spam, phishing, and fraud. Twilio's filtering system is in place to protect mobile subscribers from spam or other forms of malicious or unwanted messages.\n\nWireless carriers have filtering systems in place as well. These carrier filters are used to block abusive traffic, as well as to enforce rules or regulations about what types of messaging are allowed to that country or mobile network.\n\nLearn more about how message filtering works and how to avoid it: [How Does Message Filtering Work?](https://support.twilio.com/hc/en-us/articles/223181848-How-Does-Carrier-Filtering-Work-)\n\nFor a detailed explanation of carrier filtering in the United States and Canada, please see [SMS Carrier Filtering in the United States and Canada](https://support.twilio.com/hc/en-us/articles/360022449893-SMS-Carrier-Filtering-in-the-United-States-and-Canada).\n\n### Possible causes\n\n- Your message was identified as spam or unwanted messaging by Twilio's message filtering system\n- Your message was flagged as objectionable and blocked by a wireless carrier\n\n### Possible solutions\n\n- Ensure your messaging use case complies with Twilio's [Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy) and [Acceptable Use Policy](https://www.twilio.com/en-us/legal/aup)\n- Review the information in [How Does Message Filtering Work?](https://support.twilio.com/hc/en-us/articles/223181848-How-Does-Carrier-Filtering-Work-) to understand what causes filtering.\n- See [How do I prevent my Twilio messages from being filtered (blocked)?](https://support.twilio.com/hc/en-us/articles/1260803966670-How-do-I-prevent-my-Twilio-messages-from-being-filtered-blocked-) for specific tips on avoiding message filtering.\n- If you believe your messages are compliant with Twilio and carrier policies, please collect 3 or more examples of Message SIDs that have the \"undelivered\" status with error 30007, and then [contact our Support team](https://www.twilio.com/console/support/tickets/create). We can help review your messaging and determine if an error was made, and put you in touch with our Compliance team if needed.\n",
    "causes": "* Your message was identified as spam or unwanted messaging by Twilio's message filtering system\n* Your message was flagged as objectionable and blocked by a wireless carrier",
    "solutions": "* Ensure your messaging use case complies with Twilio's [Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy) and [Acceptable Use Policy](https://www.twilio.com/en-us/legal/aup)\n* Review the information in [How Does Message Filtering Work?](https://support.twilio.com/hc/en-us/articles/223181848-How-Does-Carrier-Filtering-Work-) to understand what causes filtering.\n* See [How do I prevent my Twilio messages from being filtered (blocked)?](https://support.twilio.com/hc/en-us/articles/1260803966670-How-do-I-prevent-my-Twilio-messages-from-being-filtered-blocked-) for specific tips on avoiding message filtering.\n* If you believe your messages are compliant with Twilio and carrier policies, please collect 3 or more examples of Message SIDs that have the \"undelivered\" status with error 30007, and then [contact our Support team](https://www.twilio.com/console/support/tickets/create). We can help review your messaging and determine if an error was made, and put you in touch with our Compliance team if needed.",
    "description": "Your message was filtered (blocked) by Twilio or by the carrier. This may be done by Twilio for violating Twilio's [Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy) or [Acceptable Use Policy](https://www.twilio.com/en-us/legal/aup), or by a wireless carrier for violating carrier rules or regulations. Examples of messaging that would be blocked by Twilio are spam, phishing, and fraud. Twilio's filtering system is in place to protect mobile subscribers from spam or other forms of malicious or unwanted messages. Wireless carriers have filtering systems in place as well. These carrier filters are used to block abusive traffic, as well as to enforce rules or regulations about what types of messaging are allowed to that country or mobile network. Learn more about how message filtering works and how to avoid it: [How Does Message Filtering Work?](https://support.twilio.com/hc/en-us/articles/223181848-How-Does-Carrier-Filtering-Work-) For a detailed explanation of carrier filtering in the United States and Canada, please see [SMS Carrier Filtering in the United States and Canada](https://support.twilio.com/hc/en-us/articles/360022449893-SMS-Carrier-Filtering-in-the-United-States-and-Canada).",
    "date_created": "2016-03-31T17:14:35Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30008,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Unknown error",
    "secondary_message": null,
    "product": "Branded Comms, Lookup",
    "products_used": [
      "messaging",
      "lookup"
    ],
    "docs": "\n## Description\nThis error means we received a generic delivery failure from a carrier or downstream provider and did not receive enough detail to classify the failure more specifically. You can see 30008 in Messaging logs, in the Message resource `error_code`, and in `StatusCallback` requests when a message transitions to `failed` or `undelivered`.\n\n### Possible causes\n- The destination handset is off, unavailable, or otherwise unable to receive SMS at the time of delivery.\n- The destination device is roaming or temporarily off network.\n- The issue is isolated to a specific handset or carrier path, even if other destinations continue to receive messages successfully.\n- The destination network does not accept the sender you used, especially when you send with an alphanumeric sender ID. Some countries require supported or registered sender IDs, and some networks may still block them.\n- Message length, concatenation, or character encoding contributes to the carrier failure.\n\n### Possible solutions\n- Review the message in Messaging logs and inspect the delivery events, `ErrorCode`, and request details so you can confirm whether the message ended in `failed` or `undelivered`.\n- Confirm that the destination phone is powered on and can receive SMS from non-Twilio senders.\n- Ask the recipient to disable roaming or reconnect to their home network, then retry the message.\n- Send test messages to other mobile numbers on the same carrier. If those messages succeed, restart the destination device or ask the recipient to contact their mobile carrier. Use Lookup to identify the carrier if you need to confirm the destination network.\n- If you are using an alphanumeric sender ID, retry with a Twilio phone number or confirm that the destination country supports that sender type and any required registration has been completed.\n- Retry with a shorter message body and simple characters to help rule out segmenting or encoding issues.\n- If the problem persists, open a support request and include at least 3 recent Message SIDs that returned 30008. Provide examples that are no older than 48 hours.\n\n#### Additional resources\n- [Debugging Common Issues with SMS](/docs/messaging/guides/debugging-common-issues)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n- [Lookup](/docs/lookup)\n",
    "causes": "* The destination handset is off, unavailable, or otherwise unable to receive SMS at the time of delivery.\n* The destination device is roaming or temporarily off network.\n* The issue is isolated to a specific handset or carrier path, even if other destinations continue to receive messages successfully.\n* The destination network does not accept the sender you used, especially when you send with an alphanumeric sender ID. Some countries require supported or registered sender IDs, and some networks may still block them.\n* Message length, concatenation, or character encoding contributes to the carrier failure.",
    "solutions": "* Review the message in Messaging logs and inspect the delivery events, `ErrorCode`, and request details so you can confirm whether the message ended in `failed` or `undelivered`.\n* Confirm that the destination phone is powered on and can receive SMS from non-Twilio senders.\n* Ask the recipient to disable roaming or reconnect to their home network, then retry the message.\n* Send test messages to other mobile numbers on the same carrier. If those messages succeed, restart the destination device or ask the recipient to contact their mobile carrier. Use Lookup to identify the carrier if you need to confirm the destination network.\n* If you are using an alphanumeric sender ID, retry with a Twilio phone number or confirm that the destination country supports that sender type and any required registration has been completed.\n* Retry with a shorter message body and simple characters to help rule out segmenting or encoding issues.\n* If the problem persists, open a support request and include at least 3 recent Message SIDs that returned 30008. Provide examples that are no older than 48 hours.",
    "description": "This error means we received a generic delivery failure from a carrier or downstream provider and did not receive enough detail to classify the failure more specifically. You can see 30008 in Messaging logs, in the Message resource `error_code`, and in `StatusCallback` requests when a message transitions to `failed` or `undelivered`.",
    "date_created": "2016-03-31T17:14:35Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 30009,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Missing inbound segment",
    "secondary_message": "One or more segments associated with your multi-part inbound message was not received.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when not every segment of a multi-part inbound message is received. Long SMS messages are sent as multiple segments, and inbound Message records expose the total segment count in `num_segments`.\n\n### Possible causes\n\n- The mobile network or carrier didn't successfully send the entire message to Twilio.\n- The sender's handset didn't successfully send all segments.\n- The sender was in poor network coverage, which caused an incomplete message to be sent.\n\n### Possible solutions\n\n- Ask the sender to try sending the message again from an area with stronger network coverage.\n- If the sender is sending a long SMS, ask them to shorten the message or send it as multiple separate messages. SMS messages longer than a single segment are concatenated into multiple segments, so reducing the number of segments can reduce the chance that one segment is missed.\n- If this issue occurs repeatedly for multiple users, collect the affected Message SIDs and contact Support for investigation.\n\n#### Additional resources\n\n- [Receive and Reply to Incoming Messages](/docs/messaging/tutorials/how-to-receive-and-reply)\n- [Message resource](/docs/messaging/api/message-resource)\n- [How long can a message be?](/docs/glossary/what-sms-character-limit)\n",
    "causes": "* The mobile network or carrier didn't successfully send the entire message to Twilio.\n* The sender's handset didn't successfully send all segments.\n* The sender was in poor network coverage, which caused an incomplete message to be sent.",
    "solutions": "* Ask the sender to try sending the message again from an area with stronger network coverage.\n* If the sender is sending a long SMS, ask them to shorten the message or send it as multiple separate messages. SMS messages longer than a single segment are concatenated into multiple segments, so reducing the number of segments can reduce the chance that one segment is missed.\n* If this issue occurs repeatedly for multiple users, collect the affected Message SIDs and contact Support for investigation.",
    "description": "This error occurs when not every segment of a multi-part inbound message is received. Long SMS messages are sent as multiple segments, and inbound Message records expose the total segment count in `num_segments`.",
    "date_created": "2016-03-31T17:14:35Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message price exceeds max price",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe error code is obsolete. Find more information in the [changelog](https://www.twilio.com/en-us/changelog/end-of-life--eol--of-twilio-messaging-maxprice-api-parameter).\n\nYou provided the [MaxPrice parameter](https://support.twilio.com/hc/en-us/articles/360014170533-Using-MaxPrice-with-Twilio-SMS) in your API request. MaxPrice will prevent a message from sending if it exceeds the price you specified.\n\nPlease note that SMS pricing is per-segment. SMS messages longer than 160 characters (or longer than 70 characters, if emojis or special characters are used) will require multiple segments. For a detailed explanation of message segmentation and encoding, see [What the Heck is a Segment?](https://www.twilio.com/blog/what-the-heck-is-a-segment.html).\n\n### Possible causes\n\n- The message price exceeded the MaxPrice you specified in your API request.\n\n### Possible solutions\n\n- Increase the MaxPrice parameter value in your API requests.\n- Remove the MaxPrice parameter from your API requests.\n- Check your message body for any Unicode-only characters such as emojis, glyphs, or curly apostrophes or quotation marks which could cause the message to require additional segments.\n- Consider using the [Smart Encoding](/docs/messaging/services#smart-encoding) feature of [Messaging Services](/docs/messaging/services) to automatically replace [certain Unicode-only characters](/docs/messaging/services/smart-encoding-char-list) with standard GSM equivalents.\n",
    "causes": "* The message price exceeded the MaxPrice you specified in your API request.",
    "solutions": "* Increase the MaxPrice parameter value in your API requests.\n* Remove the MaxPrice parameter from your API requests.\n* Check your message body for any Unicode-only characters such as emojis, glyphs, or curly apostrophes or quotation marks which could cause the message to require additional segments.\n* Consider using the [Smart Encoding](/docs/messaging/services#smart-encoding) feature of [Messaging Services](/docs/messaging/services) to automatically replace [certain Unicode-only characters](/docs/messaging/services/smart-encoding-char-list) with standard GSM equivalents.",
    "description": "The error code is obsolete. Find more information in the [changelog](https://www.twilio.com/en-us/changelog/end-of-life--eol--of-twilio-messaging-maxprice-api-parameter). You provided the [MaxPrice parameter](https://support.twilio.com/hc/en-us/articles/360014170533-Using-MaxPrice-with-Twilio-SMS) in your API request. MaxPrice will prevent a message from sending if it exceeds the price you specified. Please note that SMS pricing is per-segment. SMS messages longer than 160 characters (or longer than 70 characters, if emojis or special characters are used) will require multiple segments. For a detailed explanation of message segmentation and encoding, see [What the Heck is a Segment?](https://www.twilio.com/blog/what-the-heck-is-a-segment.html).",
    "date_created": "2016-03-31T17:14:36Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30011,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "MMS not supported by the receiving phone number in this region",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n### MMS not supported by the receiving phone number\n\n### Possible causes\n\nIf you received this error code on an inbound message, there was a failure attempting to receive an incoming MMS, as your Twilio phone number was sent an MMS in a region where Twilio does not support incoming MMS.\n\nIf you received this error code on an outbound message, the destination handset either doesn't support MMS, or MMS is not enabled on the device.\n\n### Possible solutions\n\nFor Inbound, it is recommended that you respond to the user sending the MMS to let them know that you cannot receive MMS in this region.\n",
    "causes": "If you received this error code on an inbound message, there was a failure attempting to receive an incoming MMS, as your Twilio phone number was sent an MMS in a region where Twilio does not support incoming MMS. If you received this error code on an outbound message, the destination handset either doesn't support MMS, or MMS is not enabled on the device.",
    "solutions": "For Inbound, it is recommended that you respond to the user sending the MMS to let them know that you cannot receive MMS in this region.",
    "description": "",
    "date_created": "2017-03-30T21:11:14Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 30012,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TTL is too small",
    "secondary_message": "Message Time To Live is too small",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this error because the `ValidityPeriod` you provided for the message is below the minimum supported value. `ValidityPeriod` controls how long Twilio attempts to deliver an outbound message before the message expires.\n\n### Possible causes\n\n- The request includes a `ValidityPeriod` value that is lower than the minimum allowed value for Programmable Messaging.\n- Your application is passing an incorrectly calculated TTL value when creating a message.\n- A unit conversion issue caused your application to send a value in the wrong format or range.\n\n### Possible solutions\n\n- Update your request to use a larger `ValidityPeriod` value.\n- Check how your application calculates TTL and confirm it sends the correct value in seconds.\n- Review your message creation logic and validate outbound request parameters before sending them to Twilio.\n- If you do not need a custom TTL, remove the `ValidityPeriod` parameter and let Twilio use the default behavior.\n\n#### Additional resources\n\n- [Programmable Messaging API overview](/docs/messaging/api)\n- [Message resource](/docs/messaging/api/message-resource)\n- [Manage queueing and latency for SMS messages](/docs/messaging/guides/scaling-queueing-latency)\n",
    "causes": "* The request includes a `ValidityPeriod` value that is lower than the minimum allowed value for Programmable Messaging.\n* Your application is passing an incorrectly calculated TTL value when creating a message.\n* A unit conversion issue caused your application to send a value in the wrong format or range.",
    "solutions": "* Update your request to use a larger `ValidityPeriod` value.\n* Check how your application calculates TTL and confirm it sends the correct value in seconds.\n* Review your message creation logic and validate outbound request parameters before sending them to Twilio.\n* If you do not need a custom TTL, remove the `ValidityPeriod` parameter and let Twilio use the default behavior.",
    "description": "Twilio returned this error because the `ValidityPeriod` you provided for the message is below the minimum supported value. `ValidityPeriod` controls how long Twilio attempts to deliver an outbound message before the message expires.",
    "date_created": "2019-01-22T10:39:38Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 30013,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TTL is too big",
    "secondary_message": "Message Time To Live is too big",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this error because the `ValidityPeriod` value you provided for the message is larger than the maximum allowed value. `ValidityPeriod` sets how long Twilio should continue trying to deliver an outbound message before it expires.\n\n### Possible causes\n\n- The request included a `ValidityPeriod` value greater than the supported maximum.\n- Your application passed a value in the wrong unit or converted the value incorrectly before sending the request.\n- A default retry or queue configuration in your application set `ValidityPeriod` higher than intended.\n\n### Possible solutions\n\n- Update your request to use a smaller `ValidityPeriod` value.\n- Review the code that sets `ValidityPeriod` and confirm it sends the value in seconds.\n- Remove the custom `ValidityPeriod` value if you do not need to override the default message validity window.\n- Test your application with a known valid `ValidityPeriod` value before sending messages in production.\n\n#### Additional resources\n\n- [Programmable Messaging API reference](/docs/messaging/api)\n- [Manage queueing and latency with `ValidityPeriod`](/docs/messaging/guides/scaling-queueing-latency)\n- [Message resource reference](/docs/messaging/api/message-resource)\n",
    "causes": "* The request included a `ValidityPeriod` value greater than the supported maximum.\n* Your application passed a value in the wrong unit or converted the value incorrectly before sending the request.\n* A default retry or queue configuration in your application set `ValidityPeriod` higher than intended.",
    "solutions": "* Update your request to use a smaller `ValidityPeriod` value.\n* Review the code that sets `ValidityPeriod` and confirm it sends the value in seconds.\n* Remove the custom `ValidityPeriod` value if you do not need to override the default message validity window.\n* Test your application with a known valid `ValidityPeriod` value before sending messages in production.",
    "description": "Twilio returned this error because the `ValidityPeriod` value you provided for the message is larger than the maximum allowed value. `ValidityPeriod` sets how long Twilio should continue trying to deliver an outbound message before it expires.",
    "date_created": "2019-01-22T10:42:13Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 30014,
    "log_level": "ERROR",
    "log_type": null,
    "message": "'To' attributes are Invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe To attribute list is invalid or empty\n\n### Possible causes\n\n- empty list\n- to long list\n\n### Possible solutions\n\n- Check the number of To attributes\n",
    "causes": "* empty list\n* to long list",
    "solutions": "* Check the number of To attributes",
    "description": "The To attribute list is invalid or empty",
    "date_created": "2019-01-30T16:36:24Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30015,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Non-supported channel type is used",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe To or From attributes have an unsupported prefix for channel\n\n### Possible causes\n\n- empty channel prefix for an attribute that requires a prefix\n- non-existing prefix for an attribute that requires a prefix\n\n### Possible solutions\n\n- Check the To/From attributes channel prefix\n",
    "causes": "* empty channel prefix for an attribute that requires a prefix\n* non-existing prefix for an attribute that requires a prefix",
    "solutions": "* Check the To/From attributes channel prefix",
    "description": "The To or From attributes have an unsupported prefix for channel",
    "date_created": "2019-01-30T16:40:47Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30016,
    "log_level": "ERROR",
    "log_type": null,
    "message": "'To' and 'From' channel types are incompatible",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe To or From attributes have channel prefixes what are incompatible\n\n### Possible causes\n\n- Attempt to send a message to one channel but use 'From' address for another channel\n\n### Possible solutions\n\n- Check the To and From attributes channel prefixes\n",
    "causes": "* Attempt to send a message to one channel but use 'From' address for another channel",
    "solutions": "* Check the To and From attributes channel prefixes",
    "description": "The To or From attributes have channel prefixes what are incompatible",
    "date_created": "2019-02-07T13:07:42Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30017,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Carrier network congestion",
    "secondary_message": "Message request was rejected because the carrier has high traffic.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error indicates that the downstream carrier is experiencing high MMS traffic and isn't accepting the message request. The request is retried during temporary carrier congestion and `30017` is returned if the carrier still doesn't accept it.\n\n### Possible causes\n\n- The downstream carrier is experiencing congestion in MMS traffic.\n- Your application is sending MMS traffic in bursts during a period when carrier MMS capacity is constrained.\n\n### Possible solutions\n\n- Send messages over a longer period of time instead of sending large bursts.\n- If the traffic isn't time-sensitive, schedule messages with `ScheduleType` and `SendAt` to spread delivery more evenly.\n- Review your MMS throughput and queueing strategy for the account and sender types you use so peak traffic doesn't add avoidable burst pressure.\n- If you send high-volume messaging traffic, consider Traffic Shaping to prioritize critical messages and reduce sender-level congestion inside your messaging flow.\n\n#### Additional resources\n\n- [Account Based Throughput Overview](/docs/messaging/guides/account-based-throughput-overview)\n- [Traffic Shaping](/docs/messaging/features/traffic-shaping)\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n",
    "causes": "* The downstream carrier is experiencing congestion in MMS traffic.\n* Your application is sending MMS traffic in bursts during a period when carrier MMS capacity is constrained.",
    "solutions": "* Send messages over a longer period of time instead of sending large bursts.\n* If the traffic isn't time-sensitive, schedule messages with `ScheduleType` and `SendAt` to spread delivery more evenly.\n* Review your MMS throughput and queueing strategy for the account and sender types you use so peak traffic doesn't add avoidable burst pressure.\n* If you send high-volume messaging traffic, consider Traffic Shaping to prioritize critical messages and reduce sender-level congestion inside your messaging flow.",
    "description": "This error indicates that the downstream carrier is experiencing high MMS traffic and isn't accepting the message request. The request is retried during temporary carrier congestion and `30017` is returned if the carrier still doesn't accept it.",
    "date_created": "2019-09-04T18:03:23Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30018,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Destination carrier requires sender ID pre-registration",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou sent a message (message SID: SMXXXXX) to a mobile number in a country that requires Alphanumeric Sender ID pre-registration. Our records indicate that you do not have a registered Alphanumeric Sender ID for this country. This can result in lower delivery quality.\n\nIf you are sending transactional SMS (like OTP/auth codes, account-related alerts) you should pre-register for the best possible delivery quality.\n\n### Possible causes\n\n- The recipient you are sending a message to is on a network that requires alphanumeric sender ID pre-registration, and our records indicate that your sender ID is not registered.\n\n### Possible solutions\n\n- If your message is marked \"undelivered,\" your message was likely rejected by the mobile network and you will need to register an Alpha Sender ID to improve delivery to that network.\n- If your message is marked \"delivered,\" it may have been delivered successfully. However, it is still strongly recommended to register an Alpha Sender ID for the destination country if possible.\n- Learn more about Alpha Sender ID registration requirements [here](https://help.twilio.com/articles/223133767-International-support-for-Alphanumeric-Sender-ID).\n- Use [this form](https://console.twilio.com/us1/develop/sms/senders/sender-ids/applications/create) to register a Sender ID for the destination country.\n- If you are sending OTP/2FA codes consider using [Twilio Verify](https://www.twilio.com/en-us/trusted-activation/verify) which will automatically take care of all applicable registrations.\n",
    "causes": "* The recipient you are sending a message to is on a network that requires alphanumeric sender ID pre-registration, and our records indicate that your sender ID is not registered.",
    "solutions": "* If your message is marked \"undelivered,\" your message was likely rejected by the mobile network and you will need to register an Alpha Sender ID to improve delivery to that network.\n* If your message is marked \"delivered,\" it may have been delivered successfully. However, it is still strongly recommended to register an Alpha Sender ID for the destination country if possible.\n* Learn more about Alpha Sender ID registration requirements [here](https://help.twilio.com/articles/223133767-International-support-for-Alphanumeric-Sender-ID).\n* Use [this form](https://console.twilio.com/us1/develop/sms/senders/sender-ids/applications/create) to register a Sender ID for the destination country.\n* If you are sending OTP/2FA codes consider using [Twilio Verify](https://www.twilio.com/en-us/trusted-activation/verify) which will automatically take care of all applicable registrations.",
    "description": "You sent a message (message SID: SMXXXXX) to a mobile number in a country that requires Alphanumeric Sender ID pre-registration. Our records indicate that you do not have a registered Alphanumeric Sender ID for this country. This can result in lower delivery quality. If you are sending transactional SMS (like OTP/auth codes, account-related alerts) you should pre-register for the best possible delivery quality.",
    "date_created": "2019-12-31T18:59:36Z",
    "last_updated": "2026-03-25T16:35:39-05:00"
  },
  {
    "code": 30019,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Content size exceeds carrier limit",
    "secondary_message": "Message failed because the size of the content associated with the message exceeded carrier limit",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nMessage failed because the size of the content associated with the message exceeded carrier limit\n\n### Possible causes\n\nContent size exceeded carrier limit could be caused by too many characters or bytes in the message. UCS-2 encoded messages could have different limitations than GSM encoded messages.\n\n### Possible solutions\n\nContent size should be within [carrier limits](https://help.twilio.com/articles/360018832773-Twilio-Programmable-SMS-Supported-File-Types-and-Size-Limits-for-MMS-Media-Messages).\n\nMessage size should be within the [carrier limits](https://help.twilio.com/articles/360033806753-Maximum-Message-Length-with-Twilio-Programmable-Messaging-).\n",
    "causes": "Content size exceeded carrier limit could be caused by too many characters or bytes in the message. UCS-2 encoded messages could have different limitations than GSM encoded messages.",
    "solutions": "Content size should be within [carrier limits](https://help.twilio.com/articles/360018832773-Twilio-Programmable-SMS-Supported-File-Types-and-Size-Limits-for-MMS-Media-Messages). Message size should be within the [carrier limits](https://help.twilio.com/articles/360033806753-Maximum-Message-Length-with-Twilio-Programmable-Messaging-).",
    "description": "Message failed because the size of the content associated with the message exceeded carrier limit",
    "date_created": "2019-09-05T22:28:53Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 30020,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Failure with Message Scheduling",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nAn internal error has occurred with Message Scheduling that prevented Twilio from processing your request.\n\n### Possible causes\n\n- Twilio experienced an internal failure while processing the scheduled message.\n\n### Possible solutions\n\n- If the error persists, contact Twilio Support to help figure out what happened and how to fix it.\n- Note the time of the error and what you were trying to do when it occurred.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Message Scheduling FAQs and Limitations](https://help.twilio.com/hc/en-us/articles/4412165297947-Message-Scheduling-FAQs-and-Limitations)\n- [Troubleshooting](/docs/comms/troubleshooting)\n",
    "causes": "* Twilio experienced an internal failure while processing the scheduled message.",
    "solutions": "* If the error persists, contact Twilio Support to help figure out what happened and how to fix it.\n* Note the time of the error and what you were trying to do when it occurred.",
    "description": "An internal error has occurred with Message Scheduling that prevented Twilio from processing your request.",
    "date_created": "2020-07-21T22:11:07Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 30021,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Failure with messaging service orchestrator",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error indicates that an internal failure occurred in the messaging service orchestrator while Twilio was processing your response.\n\n### Possible causes\n\n- Twilio's messaging service orchestrator encountered an internal error while processing the message.\n\n### Possible solutions\n\n- Contact support if the error persists so the issue can be investigated further.\n\n#### Additional resources\n\n- [Troubleshooting](/docs/comms/troubleshooting)\n- [Messaging Services](/docs/messaging/services)\n- [Service resource](/docs/messaging/api/service-resource)\n",
    "causes": "* Twilio's messaging service orchestrator encountered an internal error while processing the message.",
    "solutions": "* Contact support if the error persists so the issue can be investigated further.",
    "description": "This error indicates that an internal failure occurred in the messaging service orchestrator while Twilio was processing your response.",
    "date_created": "2020-09-18T19:09:19Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 30022,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "US A2P 10DLC - Rate Limits Exceeded",
    "secondary_message": "Your messages to this particular carrier has exceeded the maximum allowable limits for your phone number and/or campaign.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a downstream carrier rejects your US A2P 10DLC message because your traffic exceeded the rate allowed for your registered campaign. In rare cases, you can also receive this error when you send too many messages to the same destination number in a short period.\n\n### Possible causes\n\n- Your application is sending messages faster than the carrier allows for your campaign type.\n- Combined traffic across the phone numbers assigned to the same campaign exceeded the campaign's allowed throughput.\n- You sent too many messages to the same phone number in a short timeframe.\n\n### Possible solutions\n\n- Reduce your sending rate so it stays within the throughput assigned to your campaign.\n- Queue or spread message bursts over time instead of sending them all at once.\n- Reduce rapid repeat sends to the same recipient.\n- Review your approved campaign type and throughput if your use case needs more MPS than your current campaign allows.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Message throughput (MPS) and Trust Scores for A2P 10DLC in the US](https://help.twilio.com/articles/1260803225669-Message-throughput-MPS-and-Trust-Scores-for-A2P-10DLC-in-the-US)\n- [Understanding Twilio Rate Limits and Message Queues](https://help.twilio.com/articles/115002943027)\n",
    "causes": "* Your application is sending messages faster than the carrier allows for your campaign type.\n* Combined traffic across the phone numbers assigned to the same campaign exceeded the campaign's allowed throughput.\n* You sent too many messages to the same phone number in a short timeframe.",
    "solutions": "* Reduce your sending rate so it stays within the throughput assigned to your campaign.\n* Queue or spread message bursts over time instead of sending them all at once.\n* Reduce rapid repeat sends to the same recipient.\n* Review your approved campaign type and throughput if your use case needs more MPS than your current campaign allows.",
    "description": "This error occurs when a downstream carrier rejects your US A2P 10DLC message because your traffic exceeded the rate allowed for your registered campaign. In rare cases, you can also receive this error when you send too many messages to the same destination number in a short period.",
    "date_created": "2021-03-08T21:07:12Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "US A2P 10DLC - Daily Message Cap Reached",
    "secondary_message": "Your messages to this particular carrier has exceeded the maximum allowable messages for the day.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou have sent the maximum allowable daily messages for your Brand to the carrier.\n\nDaily limits are based on your Brand Trust Score. You can check both your Trust Score and your daily Limit in the [console](https://console.twilio.com/us1/develop/sms/regulatory-compliance/brands).\n\nNote: That the daily limit applies to the Brand (per EIN) and is based on the total number of outbound SMS segments and MMS messages sent to T-Mobile (including Sprint and MetroPCS) across any messaging platform you have registered your Brand with.\n\nPlease refer to our documentation on [T-Mobile daily message limits for long code messaging with A2P 10DLC](https://support.twilio.com/hc/en-us/articles/1260804800549-T-Mobile-daily-message-limits-for-long-code-messaging-with-A2P-10DLC). For more info about A2P 10DLC, refer to our [US A2P 10DLC Documentation](https://support.twilio.com/hc/en-us/articles/1260800720410-What-is-A2P-10DLC-).\n\n### Possible causes\n\n- You have sent the maximum amount of message [segments](/docs/glossary/what-is-gsm-7-character-encoding#:~:text=Additionally%2C%20for%20long,characters%20per%20segment) for the day on a given Brand.\n- You have sent the maximum amount of message [segments](/docs/glossary/what-is-gsm-7-character-encoding#:~:text=Additionally%2C%20for%20long,characters%20per%20segment) for the day across multiple Brands associated with your EIN, which could include Brands associated with other Twilio accounts or providers.\n\n### Possible solutions\n\n- You must wait till the next calendar day to resume message sending. The day resets at 00:00 Pacific Time (US). Pacific time is affected by Daylight Savings Time and Standard Time switches.\n- To avoid exceeding your daily limit, monitor your daily T-Mobile usage using the Messaging Insights tool.\n- Error codes [30025](/docs/api/errors/30025), [30026](/docs/api/errors/30026), and [30027](/docs/api/errors/30027) ('Daily Traffic Used' and 'Daily Traffic Exceeded' warnings) have been deprecated and are no longer generated. To monitor your daily T-Mobile usage, use the [Messaging Insights](https://1console.twilio.com/us1/monitor/insights/sms?frameUrl=%2Fconsole%2Fsms%2Finsights%2Fdelivery%3Fx-target-region%3Dus1\\&q=tabKey%3Doverview) tool.\n- For A2P registered customers, view your daily T-Mobile message limit by visiting [Trust Hub - A2P Messaging](https://console.twilio.com/us1/account/trust-hub/a2p?frameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%3Fx-target-region%3Dus1), selecting your US A2P brand and viewing the details of your TCR trust score.\n",
    "causes": "* You have sent the maximum amount of message [segments](/docs/glossary/what-is-gsm-7-character-encoding#:~:text=Additionally%2C%20for%20long,characters%20per%20segment) for the day on a given Brand.\n* You have sent the maximum amount of message [segments](/docs/glossary/what-is-gsm-7-character-encoding#:~:text=Additionally%2C%20for%20long,characters%20per%20segment) for the day across multiple Brands associated with your EIN, which could include Brands associated with other Twilio accounts or providers.",
    "solutions": "* You must wait till the next calendar day to resume message sending. The day resets at 00:00 Pacific Time (US). Pacific time is affected by Daylight Savings Time and Standard Time switches.\n* To avoid exceeding your daily limit, monitor your daily T-Mobile usage using the Messaging Insights tool.\n* Error codes [30025](/docs/api/errors/30025), [30026](/docs/api/errors/30026), and [30027](/docs/api/errors/30027) ('Daily Traffic Used' and 'Daily Traffic Exceeded' warnings) have been deprecated and are no longer generated. To monitor your daily T-Mobile usage, use the [Messaging Insights](https://1console.twilio.com/us1/monitor/insights/sms?frameUrl=%2Fconsole%2Fsms%2Finsights%2Fdelivery%3Fx-target-region%3Dus1\\&q=tabKey%3Doverview) tool.\n* For A2P registered customers, view your daily T-Mobile message limit by visiting [Trust Hub - A2P Messaging](https://console.twilio.com/us1/account/trust-hub/a2p?frameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%3Fx-target-region%3Dus1), selecting your US A2P brand and viewing the details of your TCR trust score.",
    "description": "You have sent the maximum allowable daily messages for your Brand to the carrier. Daily limits are based on your Brand Trust Score. You can check both your Trust Score and your daily Limit in the [console](https://console.twilio.com/us1/develop/sms/regulatory-compliance/brands). Note: That the daily limit applies to the Brand (per EIN) and is based on the total number of outbound SMS segments and MMS messages sent to T-Mobile (including Sprint and MetroPCS) across any messaging platform you have registered your Brand with. Please refer to our documentation on [T-Mobile daily message limits for long code messaging with A2P 10DLC](https://support.twilio.com/hc/en-us/articles/1260804800549-T-Mobile-daily-message-limits-for-long-code-messaging-with-A2P-10DLC). For more info about A2P 10DLC, refer to our [US A2P 10DLC Documentation](https://support.twilio.com/hc/en-us/articles/1260800720410-What-is-A2P-10DLC-).",
    "date_created": "2021-03-08T21:11:55Z",
    "last_updated": "2026-05-08T11:50:40+01:00"
  },
  {
    "code": 30024,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Numeric Sender ID Not Provisioned on Carrier",
    "secondary_message": "Provisioning Issue with Carrier",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the destination carrier requires a pre-registered numeric sender and the sender you used isn't provisioned on that carrier. You can also see this error while a newly registered sender is still being provisioned for production traffic.\n\n### Possible causes\n\n- The numeric sender hasn't finished carrier provisioning.\n- You recently registered a US A2P 10DLC number and carrier provisioning for the associated Campaign is still in progress.\n- Your short code isn't fully provisioned for production traffic, or the carrier disabled it because of cancellation or compliance issues.\n- The destination number recently ported to a new carrier and routing updates haven't fully completed.\n- Your toll-free number isn't fully provisioned for production traffic, or toll-free verification hasn't been completed and approved for US or Canada messaging.\n- The destination number isn't provisioned to receive SMS messages.\n\n### Possible solutions\n\n- Confirm which sender type you are using for that destination and complete any required registration or verification before sending production traffic.\n- If you are sending with a US 10DLC number, verify that your Brand and Campaign registration are complete and allow time for carrier provisioning to finish.\n- If you are sending with a toll-free number to the United States or Canada, complete toll-free verification and wait until the number shows `Verified` before sending production traffic.\n- If you are sending with a short code, confirm that the short code is fully provisioned and approved for your intended use case. See [Short Code Setup and Provisioning](https://help.twilio.com/articles/223182028) for details.\n- If you send to destinations that require registered senders, configure a default Sender ID so Twilio can replace a non-matching `From` value with a compliant registered sender.\n- If the destination number recently ported to a new carrier, retry after the port completes and carrier routing updates settle.\n- If you continue to see 30024, collect at least three Message SIDs with `undelivered` status and contact Support for a provisioning review.\n\n#### Additional resources\n\n- [Prepare your sender strategy](/docs/messaging/onboarding/prepare-your-sender-strategy)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Troubleshooting A2P Phone Number registration issues](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-a2p-phone-number-registration-issues)\n",
    "causes": "* The numeric sender hasn't finished carrier provisioning.\n* You recently registered a US A2P 10DLC number and carrier provisioning for the associated Campaign is still in progress.\n* Your short code isn't fully provisioned for production traffic, or the carrier disabled it because of cancellation or compliance issues.\n* The destination number recently ported to a new carrier and routing updates haven't fully completed.\n* Your toll-free number isn't fully provisioned for production traffic, or toll-free verification hasn't been completed and approved for US or Canada messaging.\n* The destination number isn't provisioned to receive SMS messages.",
    "solutions": "* Confirm which sender type you are using for that destination and complete any required registration or verification before sending production traffic.\n* If you are sending with a US 10DLC number, verify that your Brand and Campaign registration are complete and allow time for carrier provisioning to finish.\n* If you are sending with a toll-free number to the United States or Canada, complete toll-free verification and wait until the number shows `Verified` before sending production traffic.\n* If you are sending with a short code, confirm that the short code is fully provisioned and approved for your intended use case. See [Short Code Setup and Provisioning](https://help.twilio.com/articles/223182028) for details.\n* If you send to destinations that require registered senders, configure a default Sender ID so Twilio can replace a non-matching `From` value with a compliant registered sender.\n* If the destination number recently ported to a new carrier, retry after the port completes and carrier routing updates settle.\n* If you continue to see 30024, collect at least three Message SIDs with `undelivered` status and contact Support for a provisioning review.",
    "description": "This error means the destination carrier requires a pre-registered numeric sender and the sender you used isn't provisioned on that carrier. You can also see this error while a newly registered sender is still being provisioned for production traffic.",
    "date_created": "2021-08-02T17:24:37Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30025,
    "log_level": "WARNING",
    "log_type": "CARRIER",
    "message": "US A2P 10DLC - 50% T-Mobile Daily Message Limit Consumed",
    "secondary_message": "As part of the US A2P 10DLC initiative, T-Mobile has instituted a daily message limit. We're sending you this warning to let you know that you have consumed 50% of your T-Mobile daily limit.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated. You will no longer receive this warning. To monitor your daily T-Mobile usage, use the [Messaging Insights](https://1console.twilio.com/us1/monitor/insights/sms?frameUrl=%2Fconsole%2Fsms%2Finsights%2Fdelivery%3Fx-target-region%3Dus1\\&q=tabKey%3Doverview) tool.\n</Warning>\n\n## Description\n\nPlease note that this daily limit is based on the sum of SMS segments and MMS messages you send to T-Mobile subscribers on a 24-hour basis, and is reset daily at midnight PT. When you hit 100% of your daily message limit, you will start to receive error code 30023 for each subsequent message you send to T-Mobile. Those messages will not be delivered, and you must wait until midnight PT to resume message sending.\n\nFor more information on T-Mobile daily limit, please refer to [T-Mobile daily message limits for long code messaging with A2P 10DLC](https://support.twilio.com/hc/en-us/articles/1260804800549-T-Mobile-daily-message-limits-for-long-code-messaging-with-A2P-10DLC). For more information on US A2P 10DLC, please refer to [US A2P 10DLC Documentation](https://support.twilio.com/hc/en-us/articles/1260800720410-What-is-A2P-10DLC-).\n\nPlease disregard this warning if you have been approved for the unlimited tier via the [T-Mobile Special Business Review process](https://support.twilio.com/hc/en-us/articles/4403550579739-T-Mobile-Special-Business-Review-for-A2P-10DLC).\n\nPlease note that if you have multiple providers sending registered SMS or MMS to T-Mobile on your behalf, this warning might not be accurate.\n\n### Possible causes\n\n- You have consumed 50% of your T-Mobile daily message limit for the day.\n\n### Possible solutions\n\n- No action is required from you.\n- To view the warning and errors in the debugger, please visit the [Debugger](https://1console.twilio.com/go?to=/account/__account__/us1/debugger/event-logs).\n- To view your daily T-Mobile message limit, please visit [Trust Hub - A2P Messaging](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/a2p-brands/brands), select your US A2P brand, and view the details of your TCR trust score (registered customers only).\n- To view your daily T-Mobile usage, please use the Messaging Insights tool.\n",
    "causes": "* You have consumed 50% of your T-Mobile daily message limit for the day.",
    "solutions": "* No action is required from you.\n* To view the warning and errors in the debugger, please visit the [Debugger](https://1console.twilio.com/go?to=/account/__account__/us1/debugger/event-logs).\n* To view your daily T-Mobile message limit, please visit [Trust Hub - A2P Messaging](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/a2p-brands/brands), select your US A2P brand, and view the details of your TCR trust score (registered customers only).\n* To view your daily T-Mobile usage, please use the Messaging Insights tool.",
    "description": "Please note that this daily limit is based on the sum of SMS segments and MMS messages you send to T-Mobile subscribers on a 24-hour basis, and is reset daily at midnight PT. When you hit 100% of your daily message limit, you will start to receive error code 30023 for each subsequent message you send to T-Mobile. Those messages will not be delivered, and you must wait until midnight PT to resume message sending. For more information on T-Mobile daily limit, please refer to [T-Mobile daily message limits for long code messaging with A2P 10DLC](https://support.twilio.com/hc/en-us/articles/1260804800549-T-Mobile-daily-message-limits-for-long-code-messaging-with-A2P-10DLC). For more information on US A2P 10DLC, please refer to [US A2P 10DLC Documentation](https://support.twilio.com/hc/en-us/articles/1260800720410-What-is-A2P-10DLC-). Please disregard this warning if you have been approved for the unlimited tier via the [T-Mobile Special Business Review process](https://support.twilio.com/hc/en-us/articles/4403550579739-T-Mobile-Special-Business-Review-for-A2P-10DLC). Please note that if you have multiple providers sending registered SMS or MMS to T-Mobile on your behalf, this warning might not be accurate.",
    "date_created": "2021-10-18T19:31:07Z",
    "last_updated": "2026-09-25T12:46:24-07:00"
  },
  {
    "code": 30026,
    "log_level": "WARNING",
    "log_type": "CARRIER",
    "message": "US A2P 10DLC - 70% T-Mobile Daily Message Limit Consumed",
    "secondary_message": "As part of the US A2P 10DLC initiative, T-Mobile has instituted a daily message limit. We're sending you this warning to let you know that you have consumed 70% of your T-Mobile daily limit.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated. You will no longer receive this warning. To monitor your daily T-Mobile usage, use the [Messaging Insights](https://1console.twilio.com/us1/monitor/insights/sms?frameUrl=%2Fconsole%2Fsms%2Finsights%2Fdelivery%3Fx-target-region%3Dus1\\&q=tabKey%3Doverview) tool.\n</Warning>\n\n## Description\n\nPlease note that this daily limit is based on the sum of SMS segments and MMS messages you send to T-Mobile subscribers on a 24-hour basis, and is reset daily at midnight PT. When you hit 100% of your daily message limit, you will start to receive error code 30023 for each subsequent message you send to T-Mobile. Those messages will not be delivered, and you must wait until midnight PT to resume message sending.\n\nFor more information on T-Mobile daily limit, please refer to [T-Mobile daily message limits for long code messaging with A2P 10DLC](https://support.twilio.com/hc/en-us/articles/1260804800549-T-Mobile-daily-message-limits-for-long-code-messaging-with-A2P-10DLC). For more information on US A2P 10DLC, please refer to [US A2P 10DLC Documentation](https://support.twilio.com/hc/en-us/articles/1260800720410-What-is-A2P-10DLC-).\n\nPlease disregard this warning if you have been approved for the unlimited tier via the [T-Mobile Special Business Review process](https://support.twilio.com/hc/en-us/articles/4403550579739-T-Mobile-Special-Business-Review-for-A2P-10DLC).\n\nPlease note that if you have multiple providers sending registered SMS or MMS to T-Mobile on your behalf, this warning might not be accurate.\n\n### Possible causes\n\n- You have consumed 70% of your T-Mobile daily message limit for the day.\n\n### Possible solutions\n\n- No action is required from you.\n- To view the warning and errors in the debugger, please visit [here](https://console.twilio.com/us1/monitor/logs/debugger/events?frameUrl=%2Fconsole%2Fdebugger%3F__override_layout__%3Dembed%26quickDate%3D24%26x-target-region%3Dus1%26bifrost%3Dtrue\\&currentFrameUrl=%2Fconsole%2Fdebugger%3F__override_layout__%3Dembed%26bifrost%3Dtrue%26quickDate%3D24%26x-target-region%3Dus1).\n- To view your daily T-Mobile message limit, please visit [Trust Hub - A2P Messaging](https://console.twilio.com/us1/account/trust-hub/a2p?frameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%3Fx-target-region%3Dus1), select your US A2P brand, and view the details of your TCR trust score (registered customers only).\n- To view your daily T-Mobile usage, please use the Messaging Insights tool.\n",
    "causes": "* You have consumed 70% of your T-Mobile daily message limit for the day.",
    "solutions": "* No action is required from you.\n* To view the warning and errors in the debugger, please visit [here](https://console.twilio.com/us1/monitor/logs/debugger/events?frameUrl=%2Fconsole%2Fdebugger%3F__override_layout__%3Dembed%26quickDate%3D24%26x-target-region%3Dus1%26bifrost%3Dtrue\\&currentFrameUrl=%2Fconsole%2Fdebugger%3F__override_layout__%3Dembed%26bifrost%3Dtrue%26quickDate%3D24%26x-target-region%3Dus1).\n* To view your daily T-Mobile message limit, please visit [Trust Hub - A2P Messaging](https://console.twilio.com/us1/account/trust-hub/a2p?frameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%3Fx-target-region%3Dus1), select your US A2P brand, and view the details of your TCR trust score (registered customers only).\n* To view your daily T-Mobile usage, please use the Messaging Insights tool.",
    "description": "Please note that this daily limit is based on the sum of SMS segments and MMS messages you send to T-Mobile subscribers on a 24-hour basis, and is reset daily at midnight PT. When you hit 100% of your daily message limit, you will start to receive error code 30023 for each subsequent message you send to T-Mobile. Those messages will not be delivered, and you must wait until midnight PT to resume message sending. For more information on T-Mobile daily limit, please refer to [T-Mobile daily message limits for long code messaging with A2P 10DLC](https://support.twilio.com/hc/en-us/articles/1260804800549-T-Mobile-daily-message-limits-for-long-code-messaging-with-A2P-10DLC). For more information on US A2P 10DLC, please refer to [US A2P 10DLC Documentation](https://support.twilio.com/hc/en-us/articles/1260800720410-What-is-A2P-10DLC-). Please disregard this warning if you have been approved for the unlimited tier via the [T-Mobile Special Business Review process](https://support.twilio.com/hc/en-us/articles/4403550579739-T-Mobile-Special-Business-Review-for-A2P-10DLC). Please note that if you have multiple providers sending registered SMS or MMS to T-Mobile on your behalf, this warning might not be accurate.",
    "date_created": "2021-10-18T19:26:58Z",
    "last_updated": "2026-05-08T11:50:40+01:00"
  },
  {
    "code": 30027,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "US A2P 10DLC - T-Mobile Daily Message Limit Reached",
    "secondary_message": "As part of the US A2P 10DLC initiative, T-Mobile has instituted a daily message limit. You are receiving this error code because you have reached this limit.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated. You will no longer receive this error. To monitor your daily T-Mobile usage, use the [Messaging Insights](https://1console.twilio.com/us1/monitor/insights/sms?frameUrl=%2Fconsole%2Fsms%2Finsights%2Fdelivery%3Fx-target-region%3Dus1\\&q=tabKey%3Doverview) tool.\n</Warning>\n\n## Description\n\nPlease note that this daily limit is based on the sum of SMS segments and MMS messages you send to T-Mobile subscribers on a 24-hour basis, and is reset daily at midnight PT. As you have consumed 100% of your limit, subsequent messages you send to T-Mobile are likely to be filtered. When filtering happens, you will start to receive 30023 error codes and must wait until midnight PT to resume message sending.\n\nFor more information on T-Mobile daily limit, please refer to [T-Mobile daily message limits for long code messaging with A2P 10DLC](https://support.twilio.com/hc/en-us/articles/1260804800549-T-Mobile-daily-message-limits-for-long-code-messaging-with-A2P-10DLC). For more information on US A2P 10DLC, please refer to [US A2P 10DLC Documentation](https://support.twilio.com/hc/en-us/articles/1260800720410-What-is-A2P-10DLC-).\n\nNote: this error may not be accurate for certain customers such as those who have been approved of the unlimited tier via the [T-Mobile Special Business Review process](https://support.twilio.com/hc/en-us/articles/4403550579739-T-Mobile-Special-Business-Review-for-A2P-10DLC), those who run non-profit campaigns, and others.\n\n### Possible causes\n\n- You have consumed 100% of your T-Mobile daily message limit for the day.\n\n### Possible solutions\n\n- If you infrequently exceed your T-Mobile daily message limit, you can consider prioritizing messages (e.g., OTP codes over marketing materials).\n- If you frequently exceed your T-Mobile daily message limit, you may be able to increase your daily limit:\n  - For unregistered customers, please consider registering in the [Twilio Console - Trust Hub](https://console.twilio.com/us1/account/trust-hub/a2p?frameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%2Fwizard%3Fx-target-region%3Dus1\\&currentFrameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%2Fwizard%3F__override_layout__%3Dembed%26x-target-region%3Dus1%26activeStep%3DbusinessProfile%253AbusinessProfile%253AcreateBusinessProfileAddress%26bifrost%3Dtrue).\n- For registered customers, if you need to send more than 200,000 message segments to T-Mobile per day, please consider submitting a [Special Business Review](https://support.twilio.com/hc/en-us/articles/4403550579739-T-Mobile-Special-Business-Review-for-A2P-10DLC).\n- Other useful links:\n- To view the warning and errors, please visit the [debugger](https://console.twilio.com/us1/monitor/logs/debugger/events?frameUrl=%2Fconsole%2Fdebugger%3F__override_layout__%3Dembed%26quickDate%3D24%26x-target-region%3Dus1%26bifrost%3Dtrue\\&currentFrameUrl=%2Fconsole%2Fdebugger%3F__override_layout__%3Dembed%26bifrost%3Dtrue%26quickDate%3D24%26x-target-region%3Dus1).\n- To view your daily T-Mobile message limit, please visit [Trust Hub - A2P Messaging](https://console.twilio.com/us1/account/trust-hub/a2p?frameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%3Fx-target-region%3Dus1).\n- To view your daily T-Mobile usage, please use the Messaging Insights tool.\n",
    "causes": "* You have consumed 100% of your T-Mobile daily message limit for the day.",
    "solutions": "* If you infrequently exceed your T-Mobile daily message limit, you can consider prioritizing messages (e.g., OTP codes over marketing materials).\n* If you frequently exceed your T-Mobile daily message limit, you may be able to increase your daily limit:\n  * For unregistered customers, please consider registering in the [Twilio Console - Trust Hub](https://console.twilio.com/us1/account/trust-hub/a2p?frameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%2Fwizard%3Fx-target-region%3Dus1\\&currentFrameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%2Fwizard%3F__override_layout__%3Dembed%26x-target-region%3Dus1%26activeStep%3DbusinessProfile%253AbusinessProfile%253AcreateBusinessProfileAddress%26bifrost%3Dtrue).\n* For registered customers, if you need to send more than 200,000 message segments to T-Mobile per day, please consider submitting a [Special Business Review](https://support.twilio.com/hc/en-us/articles/4403550579739-T-Mobile-Special-Business-Review-for-A2P-10DLC).\n* Other useful links:\n* To view the warning and errors, please visit the [debugger](https://console.twilio.com/us1/monitor/logs/debugger/events?frameUrl=%2Fconsole%2Fdebugger%3F__override_layout__%3Dembed%26quickDate%3D24%26x-target-region%3Dus1%26bifrost%3Dtrue\\&currentFrameUrl=%2Fconsole%2Fdebugger%3F__override_layout__%3Dembed%26bifrost%3Dtrue%26quickDate%3D24%26x-target-region%3Dus1).\n* To view your daily T-Mobile message limit, please visit [Trust Hub - A2P Messaging](https://console.twilio.com/us1/account/trust-hub/a2p?frameUrl=%2Fconsole%2Ftrust-hub%2Fa2p-messaging%3Fx-target-region%3Dus1).\n* To view your daily T-Mobile usage, please use the Messaging Insights tool.",
    "description": "Please note that this daily limit is based on the sum of SMS segments and MMS messages you send to T-Mobile subscribers on a 24-hour basis, and is reset daily at midnight PT. As you have consumed 100% of your limit, subsequent messages you send to T-Mobile are likely to be filtered. When filtering happens, you will start to receive 30023 error codes and must wait until midnight PT to resume message sending. For more information on T-Mobile daily limit, please refer to [T-Mobile daily message limits for long code messaging with A2P 10DLC](https://support.twilio.com/hc/en-us/articles/1260804800549-T-Mobile-daily-message-limits-for-long-code-messaging-with-A2P-10DLC). For more information on US A2P 10DLC, please refer to [US A2P 10DLC Documentation](https://support.twilio.com/hc/en-us/articles/1260800720410-What-is-A2P-10DLC-). Note: this error may not be accurate for certain customers such as those who have been approved of the unlimited tier via the [T-Mobile Special Business Review process](https://support.twilio.com/hc/en-us/articles/4403550579739-T-Mobile-Special-Business-Review-for-A2P-10DLC), those who run non-profit campaigns, and others.",
    "date_created": "2021-10-18T21:12:48Z",
    "last_updated": "2026-05-08T11:50:40+01:00"
  },
  {
    "code": 30028,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid API version",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you send a request with an invalid API version. Use a supported version for the endpoint you are calling. For Messaging message resources, send requests to the `2010-04-01` API base URL.\n\n### Possible causes\n\n- The request does not specify an API version.\n- The request uses a version other than `2008-08-01` or `2010-04-01`.\n- The request URL targets a Messaging endpoint with an unsupported or mistyped version segment instead of `2010-04-01`.\n\n### Possible solutions\n\n- Update the request to use the API version supported by the endpoint you are calling. For Messaging message resources, use `2010-04-01`.\n- If you are setting an `ApiVersion` value on a TwiML Application or another resource that accepts it, use `2008-08-01` or `2010-04-01`.\n- Review any hardcoded request URLs or client configuration in your application and correct the version value so it matches the endpoint requirements exactly.\n- Check the failed request in Console error logs or Programmable Messaging logs to confirm which endpoint and version Twilio received.\n\n#### Additional resources\n- [Messaging API overview](/docs/messaging/api)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The request does not specify an API version.\n* The request uses a version other than `2008-08-01` or `2010-04-01`.\n* The request URL targets a Messaging endpoint with an unsupported or mistyped version segment instead of `2010-04-01`.",
    "solutions": "* Update the request to use the API version supported by the endpoint you are calling. For Messaging message resources, use `2010-04-01`.\n* If you are setting an `ApiVersion` value on a TwiML Application or another resource that accepts it, use `2008-08-01` or `2010-04-01`.\n* Review any hardcoded request URLs or client configuration in your application and correct the version value so it matches the endpoint requirements exactly.\n* Check the failed request in Console error logs or Programmable Messaging logs to confirm which endpoint and version Twilio received.",
    "description": "This error occurs when you send a request with an invalid API version. Use a supported version for the endpoint you are calling. For Messaging message resources, send requests to the `2010-04-01` API base URL.",
    "date_created": "2022-01-26T11:34:03Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 30029,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid ContentRetention",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `ContentRetention` value in a Message create request is not valid for the request, or when the request depends on Message Privacy settings that are not enabled and configured for your account. The Messages resource documents `retain` and `discard` as supported `ContentRetention` values.\n\n### Possible causes\n\n- The request includes an unsupported or misspelled `ContentRetention` value. `retain` and `discard` as supported values for the Messages resource.\n- The request uses Message Privacy behavior on an account that is not enabled or configured for Message Redaction. Twilio requires you to configure Message Privacy features on the account before using those controls.\n- The request tries to override account-level privacy behavior without the required Message Redaction setup being enabled in Console.\n\n### Possible solutions\n\n- Update the request so `ContentRetention` uses a supported value. Use `retain` or `discard` based on the behavior you want for that message.\n- If Message Redaction is enabled on your account and you need to keep message content for a specific message, set `ContentRetention` to `retain`.\n- If Message Redaction is disabled on your account and you need to redact content for a specific message, set `ContentRetention` to `discard`.\n- If your use case depends on Message Privacy features, request access to Message Redaction, configure the account for Message Privacy, and enable the appropriate redaction settings in Console before sending the request again.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Message Redaction for Programmable Messaging](/docs/messaging/guides/privacy-message-redaction)\n",
    "causes": "* The request includes an unsupported or misspelled `ContentRetention` value. `retain` and `discard` as supported values for the Messages resource.\n* The request uses Message Privacy behavior on an account that is not enabled or configured for Message Redaction. Twilio requires you to configure Message Privacy features on the account before using those controls.\n* The request tries to override account-level privacy behavior without the required Message Redaction setup being enabled in Console.",
    "solutions": "* Update the request so `ContentRetention` uses a supported value. Use `retain` or `discard` based on the behavior you want for that message.\n* If Message Redaction is enabled on your account and you need to keep message content for a specific message, set `ContentRetention` to `retain`.\n* If Message Redaction is disabled on your account and you need to redact content for a specific message, set `ContentRetention` to `discard`.\n* If your use case depends on Message Privacy features, request access to Message Redaction, configure the account for Message Privacy, and enable the appropriate redaction settings in Console before sending the request again.",
    "description": "Twilio returns this error when the `ContentRetention` value in a Message create request is not valid for the request, or when the request depends on Message Privacy settings that are not enabled and configured for your account. The Messages resource documents `retain` and `discard` as supported `ContentRetention` values.",
    "date_created": "2022-01-26T11:54:26Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 30030,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid AddressRetention",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the `AddressRetention` value in your message request is invalid. Use this parameter only to control whether Twilio stores or obfuscates the address for a message. Supported values are `retain` and `obfuscate`.\n\n### Possible causes\n\n- You passed a value for `AddressRetention` other than `retain` or `obfuscate`.\n- Your account is not enabled or configured for Message Privacy features.\n\n### Possible solutions\n\n- Update your request to use a supported `AddressRetention` value. Use `retain` to keep the address available, or use `obfuscate` to redact it.\n- If you need message privacy controls on your account, enable and configure Message Redaction before sending requests with privacy overrides.\n- If you use a Messaging Service with phone number redaction, review your Message Redaction configuration and make sure the service is set up to support privacy features.\n\n#### Additional resources\n\n- [Message resource API reference](/docs/messaging/api/message-resource)\n- [Message Redaction for Programmable Messaging](/docs/messaging/guides/privacy-message-redaction)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* You passed a value for `AddressRetention` other than `retain` or `obfuscate`.\n* Your account is not enabled or configured for Message Privacy features.",
    "solutions": "* Update your request to use a supported `AddressRetention` value. Use `retain` to keep the address available, or use `obfuscate` to redact it.\n* If you need message privacy controls on your account, enable and configure Message Redaction before sending requests with privacy overrides.\n* If you use a Messaging Service with phone number redaction, review your Message Redaction configuration and make sure the service is set up to support privacy features.",
    "description": "This error means the `AddressRetention` value in your message request is invalid. Use this parameter only to control whether Twilio stores or obfuscates the address for a message. Supported values are `retain` and `obfuscate`.",
    "date_created": "2022-01-26T11:59:11Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30031,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid MaxRate",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n`MaxRate` must be a valid `float`. Twilio returns this error when the value you provide is not a valid floating-point number.\n\n### Possible causes\n\n- You provided a nonnumeric value for `MaxRate`.\n- You set `MaxRate` to `0` or a negative number.\n\n### Possible solutions\n\n- Set `MaxRate` to a positive `float` value.\n- If you are configuring Messaging throughput, choose a rate that matches the sending capacity you need. Twilio measures throughput in messages per second and queues requests that exceed available capacity.\n\n#### Additional resources\n\n- [Account Based Throughput Overview](/docs/messaging/guides/account-based-throughput-overview)\n- [Build to scale: queueing and latency on Twilio](/docs/messaging/guides/scaling-queueing-latency)\n",
    "causes": "* You provided a nonnumeric value for `MaxRate`.\n* You set `MaxRate` to `0` or a negative number.",
    "solutions": "* Set `MaxRate` to a positive `float` value.\n* If you are configuring Messaging throughput, choose a rate that matches the sending capacity you need. Twilio measures throughput in messages per second and queues requests that exceed available capacity.",
    "description": "`MaxRate` must be a valid `float`. Twilio returns this error when the value you provide is not a valid floating-point number.",
    "date_created": "2022-01-26T14:42:35Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30032,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Toll-Free Number Has Not Been Verified",
    "secondary_message": "Toll-Free Verification Required.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error is returned when you send a message from a Toll-Free number to a mobile subscriber in the United States or Canada before Toll-Free Verification is approved. As of January 31, 2024, traffic from unverified Toll-Free numbers in `Restricted` or `Pending` status is blocked and returns 30032. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n\n### Possible causes\n\n- The Toll-Free number has not been submitted for verification and remains `Restricted` or `Not verified`. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n- The verification request is still in review, so the number is `Pending` or `Verification in progress`. Pending Toll-Free traffic to the United States and Canada is blocked until approval. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n- The verification request was rejected, so the number is not approved for messaging traffic.\n\n### Possible solutions\n\n- Open Console, go to Phone Numbers > Manage > Active numbers, select the Toll-Free number, and review the status in the Regulatory Information tab. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n- If the number is not verified, submit a Toll-Free Verification request in Console or through the Messaging Compliance API. Do not send traffic from the number until the verification status is approved.\n- If the verification was rejected and the request is eligible for edits, correct the rejected information and resubmit it before the `edit_expiration` deadline. Twilio sets this edit window to seven days from the initial request.\n- If the rejected request is not eligible for resubmission, review the rejection details, correct the underlying business or use case information, and submit a new verification request for the number.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The Toll-Free number has not been submitted for verification and remains `Restricted` or `Not verified`. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n* The verification request is still in review, so the number is `Pending` or `Verification in progress`. Pending Toll-Free traffic to the United States and Canada is blocked until approval. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n* The verification request was rejected, so the number is not approved for messaging traffic.",
    "solutions": "* Open Console, go to Phone Numbers > Manage > Active numbers, select the Toll-Free number, and review the status in the Regulatory Information tab. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n* If the number is not verified, submit a Toll-Free Verification request in Console or through the Messaging Compliance API. Do not send traffic from the number until the verification status is approved.\n* If the verification was rejected and the request is eligible for edits, correct the rejected information and resubmit it before the `edit_expiration` deadline. Twilio sets this edit window to seven days from the initial request.\n* If the rejected request is not eligible for resubmission, review the rejection details, correct the underlying business or use case information, and submit a new verification request for the number.",
    "description": "This error is returned when you send a message from a Toll-Free number to a mobile subscriber in the United States or Canada before Toll-Free Verification is approved. As of January 31, 2024, traffic from unverified Toll-Free numbers in `Restricted` or `Pending` status is blocked and returns 30032. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))",
    "date_created": "2022-05-09T19:02:25Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30033,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "US A2P 10DLC - Campaign Suspended",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour message could not be sent because the sending campaign is suspended. A campaign can be suspended on its own or because the associated Brand is suspended.\n\n### Possible causes\n\n- The campaign was suspended after a carrier or ecosystem review found a campaign-to-traffic mismatch, spam, controlled substances, phishing, excessive complaints, illicit content, fraudulent messages, affiliate marketing, promotional gambling, missing age gating, illegal sweepstakes, or another policy violation.\n- The associated Brand is suspended, which also suspends every campaign attached to that Brand.\n\n### Possible solutions\n\n- Check your email and the Twilio Support Center for the suspension notice and the next steps to resolve it. Twilio Support should contact you with guidance on how to fix the suspended campaign.\n- Fix the underlying compliance issue before sending again. If the Brand is suspended, resolve the Brand suspension first because all associated campaigns remain suspended until the Brand issue is addressed.\n- Do not try to send similar traffic through another existing or new campaign while the suspension is under review. That can create a serious violation and may lead to account suspension or termination.\n\n#### Additional resources\n\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The campaign was suspended after a carrier or ecosystem review found a campaign-to-traffic mismatch, spam, controlled substances, phishing, excessive complaints, illicit content, fraudulent messages, affiliate marketing, promotional gambling, missing age gating, illegal sweepstakes, or another policy violation.\n* The associated Brand is suspended, which also suspends every campaign attached to that Brand.",
    "solutions": "* Check your email and the Twilio Support Center for the suspension notice and the next steps to resolve it. Twilio Support should contact you with guidance on how to fix the suspended campaign.\n* Fix the underlying compliance issue before sending again. If the Brand is suspended, resolve the Brand suspension first because all associated campaigns remain suspended until the Brand issue is addressed.\n* Do not try to send similar traffic through another existing or new campaign while the suspension is under review. That can create a serious violation and may lead to account suspension or termination.",
    "description": "Your message could not be sent because the sending campaign is suspended. A campaign can be suspended on its own or because the associated Brand is suspended.",
    "date_created": "2023-01-30T19:30:01Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 30034,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "US A2P 10DLC - Message from an Unregistered Number",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio blocks messages to U.S. numbers when you send from a +1 10DLC number that is not associated with an approved A2P 10DLC Campaign. To send application-to-person traffic over a U.S. long code, complete A2P 10DLC registration and make sure the number is attached to the Messaging Service associated with your approved Campaign.\n\n### Possible causes\n\n- You sent a message to a U.S. number from a +1 10DLC number that is not associated with an approved A2P 10DLC Campaign.\n- Your Brand or Campaign registration is not complete, so the number is still unregistered for U.S.-bound 10DLC traffic.\n- The phone number is not in the Sender Pool of the Messaging Service linked to your approved Campaign.\n- You added multiple +1 10DLC numbers to a Sole Proprietor Campaign. Only one 10DLC number can be registered for that Campaign. Additional numbers remain unregistered.\n\n### Possible solutions\n\n- Complete A2P 10DLC registration for your Brand and Campaign before sending messages to U.S. numbers from a +1 10DLC number.\n- Add the phone number to the Sender Pool of the Messaging Service associated with your approved Campaign.\n- Verify the number's A2P registration status. If the number is still unregistered, update the Messaging Service and Campaign association so the number is linked to a verified Campaign.\n- If you use a Sole Proprietor Campaign, keep only the single +1 10DLC number you want to use in that Messaging Service.\n- If you need to send before 10DLC registration is complete, use a sender type that is not part of A2P 10DLC, such as a Toll-Free number, short code, or Twilio Verify for verification use cases.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [Troubleshooting A2P Phone Number registration issues](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-a2p-phone-number-registration-issues)\n",
    "causes": "* You sent a message to a U.S. number from a +1 10DLC number that is not associated with an approved A2P 10DLC Campaign.\n* Your Brand or Campaign registration is not complete, so the number is still unregistered for U.S.-bound 10DLC traffic.\n* The phone number is not in the Sender Pool of the Messaging Service linked to your approved Campaign.\n* You added multiple +1 10DLC numbers to a Sole Proprietor Campaign. Only one 10DLC number can be registered for that Campaign. Additional numbers remain unregistered.",
    "solutions": "* Complete A2P 10DLC registration for your Brand and Campaign before sending messages to U.S. numbers from a +1 10DLC number.\n* Add the phone number to the Sender Pool of the Messaging Service associated with your approved Campaign.\n* Verify the number's A2P registration status. If the number is still unregistered, update the Messaging Service and Campaign association so the number is linked to a verified Campaign.\n* If you use a Sole Proprietor Campaign, keep only the single +1 10DLC number you want to use in that Messaging Service.\n* If you need to send before 10DLC registration is complete, use a sender type that is not part of A2P 10DLC, such as a Toll-Free number, short code, or Twilio Verify for verification use cases.",
    "description": "Twilio blocks messages to U.S. numbers when you send from a +1 10DLC number that is not associated with an approved A2P 10DLC Campaign. To send application-to-person traffic over a U.S. long code, complete A2P 10DLC registration and make sure the number is attached to the Messaging Service associated with your approved Campaign.",
    "date_created": "2023-04-28T05:33:55Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30035,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "US A2P 10DLC - Message from a number still being configured",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio could not send your message because the sending number is still being configured for US A2P 10DLC. This happens when Twilio has received a request to register or deregister the number for an approved campaign, but the required Number Registration steps with ecosystem partners have not finished yet. You can send on A2P routes only after the number reaches the `REGISTERED` status.\n\n### Possible causes\n\n- The number is in `PENDING_REGISTRATION` while Twilio completes Number Registration with ecosystem partners.\n- The number is in `PENDING_DEREGISTRATION` after you removed it from a Messaging Service, moved it between campaigns, or made another change that triggered deregistration.\n- You recently added, removed, or reassigned the number in a Messaging Service associated with a US A2P 10DLC campaign.\n- You sent traffic before the number finished registration after campaign approval.\n- You made repeated number assignment changes, which restarted Number Registration and extended processing time.\n\n### Possible solutions\n\n- Check the number's A2P registration status in Console and wait until the status is `REGISTERED`.\n- Allow up to 24 hours for Number Registration or deregistration to complete. Processing time can vary based on registration volume across ecosystem partners.\n- Do not remove and re-add the number to the Messaging Service in response to this error. That starts the registration process again and can delay activation further.\n- Avoid moving numbers between Messaging Services, campaigns, or accounts unless the change is required. Each change can trigger a new deregistration or registration workflow.\n- If the number has remained in a pending state for more than 24 hours, contact Support.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting A2P phone number registration issues](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-a2p-phone-number-registration-issues)\n- [A2P 10DLC Number Registration Best Practices](https://help.twilio.com/articles/19622397178139-A2P-10DLC-Number-Registration-Best-Practices)\n",
    "causes": "* The number is in `PENDING_REGISTRATION` while Twilio completes Number Registration with ecosystem partners.\n* The number is in `PENDING_DEREGISTRATION` after you removed it from a Messaging Service, moved it between campaigns, or made another change that triggered deregistration.\n* You recently added, removed, or reassigned the number in a Messaging Service associated with a US A2P 10DLC campaign.\n* You sent traffic before the number finished registration after campaign approval.\n* You made repeated number assignment changes, which restarted Number Registration and extended processing time.",
    "solutions": "* Check the number's A2P registration status in Console and wait until the status is `REGISTERED`.\n* Allow up to 24 hours for Number Registration or deregistration to complete. Processing time can vary based on registration volume across ecosystem partners.\n* Do not remove and re-add the number to the Messaging Service in response to this error. That starts the registration process again and can delay activation further.\n* Avoid moving numbers between Messaging Services, campaigns, or accounts unless the change is required. Each change can trigger a new deregistration or registration workflow.\n* If the number has remained in a pending state for more than 24 hours, contact Support.",
    "description": "Twilio could not send your message because the sending number is still being configured for US A2P 10DLC. This happens when Twilio has received a request to register or deregister the number for an approved campaign, but the required Number Registration steps with ecosystem partners have not finished yet. You can send on A2P routes only after the number reaches the `REGISTERED` status.",
    "date_created": "2023-05-01T05:25:09Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30036,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Validity Period Expired",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when your outbound message stays in Twilio's queue longer than the configured `ValidityPeriod`. When the time elapsed since the message was submitted exceeds `ValidityPeriod`, Twilio does not send the message.\n\n### Possible causes\n\n- You set `ValidityPeriod` too low for the message use case.\n- The message waited in the queue longer than expected because you submitted a high volume of messages in a short period of time.\n- Your sender throughput or messaging rate limits caused messages to queue longer than the configured `ValidityPeriod`.\n- A `ValidityPeriod` configured on the message or on the Messaging Service was shorter than the time required for the message to leave Twilio's platform.\n\n### Possible solutions\n\n- Retry the message with a longer `ValidityPeriod`.\n- Set `ValidityPeriod` to a value that matches how time-sensitive the message is and allows enough time for normal queueing.\n- If you send with a Messaging Service, review the Messaging Service validity period setting in the Console and increase it if needed.\n- If you set `ValidityPeriod` on individual API requests, confirm the value is appropriate for your traffic pattern and sender throughput.\n- Reduce queue buildup by sending smaller batches or pacing traffic so your send rate is closer to your available throughput.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n- [Understanding Twilio Rate Limits and Message Queues](https://help.twilio.com/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues)\n",
    "causes": "* You set `ValidityPeriod` too low for the message use case.\n* The message waited in the queue longer than expected because you submitted a high volume of messages in a short period of time.\n* Your sender throughput or messaging rate limits caused messages to queue longer than the configured `ValidityPeriod`.\n* A `ValidityPeriod` configured on the message or on the Messaging Service was shorter than the time required for the message to leave Twilio's platform.",
    "solutions": "* Retry the message with a longer `ValidityPeriod`.\n* Set `ValidityPeriod` to a value that matches how time-sensitive the message is and allows enough time for normal queueing.\n* If you send with a Messaging Service, review the Messaging Service validity period setting in the Console and increase it if needed.\n* If you set `ValidityPeriod` on individual API requests, confirm the value is appropriate for your traffic pattern and sender throughput.\n* Reduce queue buildup by sending smaller batches or pacing traffic so your send rate is closer to your available throughput.",
    "description": "This error occurs when your outbound message stays in Twilio's queue longer than the configured `ValidityPeriod`. When the time elapsed since the message was submitted exceeds `ValidityPeriod`, Twilio does not send the message.",
    "date_created": "2023-09-06T10:50:11Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30037,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outbound Messaging Disabled",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou receive this error when the account that submitted the message request is not allowed to send outbound messages. Review the account or subaccount that owns the request before you retry.\n\n### Possible causes\n\n- Outbound messaging is disabled for the account that submitted the request.\n- You sent the request with credentials for a different account or subaccount than the one you intended to use.\n- A suspended account or subaccount is blocking outbound SMS. Suspended main accounts also suspend their subaccounts.\n\n### Possible solutions\n\n- Verify which account or subaccount is making the request. If you send from a subaccount, use that subaccount's Account SID and Auth Token.\n- Check the status of the affected account or subaccount. If you suspended a subaccount, update its `Status` to `active` to restore service.\n- If you did not intend to disable outbound messaging, or if the main account is suspended, contact Twilio Support from the affected account to review the restriction and restore service.\n- Review the failed message in Messaging Logs or Error Logs so you can confirm which account generated the error before you retry the request or open a support ticket.\n\n#### Additional resources\n\n- [Programmable Messaging Logs](/docs/messaging/features/messaging-logs)\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n- [Contacting Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support)\n",
    "causes": "* Outbound messaging is disabled for the account that submitted the request.\n* You sent the request with credentials for a different account or subaccount than the one you intended to use.\n* A suspended account or subaccount is blocking outbound SMS. Suspended main accounts also suspend their subaccounts.",
    "solutions": "* Verify which account or subaccount is making the request. If you send from a subaccount, use that subaccount's Account SID and Auth Token.\n* Check the status of the affected account or subaccount. If you suspended a subaccount, update its `Status` to `active` to restore service.\n* If you did not intend to disable outbound messaging, or if the main account is suspended, contact Twilio Support from the affected account to review the restriction and restore service.\n* Review the failed message in Messaging Logs or Error Logs so you can confirm which account generated the error before you retry the request or open a support ticket.",
    "description": "You receive this error when the account that submitted the message request is not allowed to send outbound messages. Review the account or subaccount that owns the request before you retry.",
    "date_created": "2023-06-02T15:29:31Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30038,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "OTP Message Body Filtered",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio detected an OTP in the inbound message body. Twilio redacts the passcode and marks the message failed to help prevent abuse of Twilio numbers.\n\n### Possible causes\n\n- The incoming message contains a one-time passcode or similar verification code.\n\n### Possible solutions\n\n- If you are using a Trial account and need to receive inbound OTP messages, upgrade your account.\n- Use a different message template while you stay on Trial.\n- Contact Support if you need additional help.\n\n#### Additional resources\n\n- [Programmable Messaging](/docs/messaging)\n- [Verify SMS overview](/docs/verify/sms)\n- [Preventing Fraud in Programmable Messaging](/docs/messaging/guides/preventing-messaging-fraud)\n",
    "causes": "* The incoming message contains a one-time passcode or similar verification code.",
    "solutions": "* If you are using a Trial account and need to receive inbound OTP messages, upgrade your account.\n* Use a different message template while you stay on Trial.\n* Contact Support if you need additional help.",
    "description": "Twilio detected an OTP in the inbound message body. Twilio redacts the passcode and marks the message failed to help prevent abuse of Twilio numbers.",
    "date_created": "2023-09-05T07:39:45Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 30039,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Filtered to Prevent Message Loops",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning means an inbound message appears to be machine generated. To prevent endless messaging loops, Twilio marks the message as failed with this error code and does not `POST` the inbound request to your number's configured TwiML URLs.\n\n### Possible causes\n\n- The inbound message appears to be machine generated.\n- The message likely came from an automated sender or autoresponder, and replying programmatically could create a loop.\n- Your application is set up to automatically react to inbound messages with TwiML or another automated reply path.\n\n### Possible solutions\n\n- Do not rely on your incoming message webhook for this traffic. When Twilio applies this warning, Twilio does not send the inbound request to your configured TwiML URLs.\n- Configure a `StatusCallback` URL and monitor failed message callbacks so you can detect this error code in your application.\n- If you need to respond to these messages programmatically, handle the failed callback for this error and send the reply with the Messages resource through the REST API.\n- Review any webhook or autoresponder logic that replies to every inbound message. Limit automatic replies to expected end-user traffic only.\n\n#### Additional resources\n\n- [Messaging Webhooks](/docs/usage/webhooks/messaging-webhooks)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* The inbound message appears to be machine generated.\n* The message likely came from an automated sender or autoresponder, and replying programmatically could create a loop.\n* Your application is set up to automatically react to inbound messages with TwiML or another automated reply path.",
    "solutions": "* Do not rely on your incoming message webhook for this traffic. When Twilio applies this warning, Twilio does not send the inbound request to your configured TwiML URLs.\n* Configure a `StatusCallback` URL and monitor failed message callbacks so you can detect this error code in your application.\n* If you need to respond to these messages programmatically, handle the failed callback for this error and send the reply with the Messages resource through the REST API.\n* Review any webhook or autoresponder logic that replies to every inbound message. Limit automatic replies to expected end-user traffic only.",
    "description": "This warning means an inbound message appears to be machine generated. To prevent endless messaging loops, Twilio marks the message as failed with this error code and does not `POST` the inbound request to your number's configured TwiML URLs.",
    "date_created": "2023-09-05T07:37:47Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30040,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Destination carrier requires Sender ID pre-registration",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou sent a message (message SID: SMXXXXX) to a mobile number in a country that requires Alphanumeric Sender ID pre-registration, and the Sender ID you used is not registered to your account.\n\n### Possible causes\n\n- The recipient you are sending a message to is on a network that requires Alphanumeric Sender ID pre-registration, and our records indicate that your Sender ID is not registered.\n- You may have previously received a WARNING 30018 \"Destination carrier requires Sender ID pre-registration\" code. This is the corresponding ERROR version of that code when a block is indeed happening.\n\n### Possible solutions\n\n- Learn more about Alpha Sender ID registration requirements [here](https://help.twilio.com/articles/223133767-International-support-for-Alphanumeric-Sender-ID).\n- Use [this form](https://console.twilio.com/us1/develop/sms/senders/sender-ids/applications/create) to register a Sender ID for the destination country.\n",
    "causes": "* The recipient you are sending a message to is on a network that requires Alphanumeric Sender ID pre-registration, and our records indicate that your Sender ID is not registered.\n* You may have previously received a WARNING 30018 \"Destination carrier requires Sender ID pre-registration\" code. This is the corresponding ERROR version of that code when a block is indeed happening.",
    "solutions": "* Learn more about Alpha Sender ID registration requirements [here](https://help.twilio.com/articles/223133767-International-support-for-Alphanumeric-Sender-ID).\n* Use [this form](https://console.twilio.com/us1/develop/sms/senders/sender-ids/applications/create) to register a Sender ID for the destination country.",
    "description": "You sent a message (message SID: SMXXXXX) to a mobile number in a country that requires Alphanumeric Sender ID pre-registration, and the Sender ID you used is not registered to your account.",
    "date_created": "2023-05-25T14:50:33Z",
    "last_updated": "2026-03-25T16:35:39-05:00"
  },
  {
    "code": 30041,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sender is restricted or unregistered in a country requiring registration",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a message to a destination that requires Alphanumeric Sender ID registration and the sender you provided is not registered or authorized for your account in that country.\n\n### Possible causes\n\n- The destination country requires Alphanumeric Sender ID registration or authorization before you can send traffic.\n- The `From` value does not match a Sender ID that is registered for your account in the destination country.\n- The Sender ID is restricted in that country and your account is not yet authorized to use it there.\n- You are sending to a country that requires registration and you have not configured a Default Sender ID for that destination, so a non-matching `From` value cannot be replaced with a compliant registered sender.\n\n### Possible solutions\n\n- Confirm that the destination country supports Alphanumeric Sender ID and whether registration is required before you send messages.\n- Register or request authorization for the Alphanumeric Sender ID in Twilio Console before sending to that country.\n- Make sure the `From` value exactly matches one of your registered Sender IDs for the destination country. Matching is case sensitive.\n- If you use multiple senders, configure a Default Sender ID for the destination country so Twilio can apply a compliant registered sender when the provided `From` value does not match.\n\n#### Additional resources\n\n- [Alphanumeric Sender IDs in Messaging Services](/docs/messaging/services/alphanumeric-sender-ids-in-messaging-services)\n- [Configure your default Sender ID](/docs/phone-numbers/default-sender-id)\n- [International support for Alphanumeric Sender ID](https://help.twilio.com/articles/223133767)\n",
    "causes": "* The destination country requires Alphanumeric Sender ID registration or authorization before you can send traffic.\n* The `From` value does not match a Sender ID that is registered for your account in the destination country.\n* The Sender ID is restricted in that country and your account is not yet authorized to use it there.\n* You are sending to a country that requires registration and you have not configured a Default Sender ID for that destination, so a non-matching `From` value cannot be replaced with a compliant registered sender.",
    "solutions": "* Confirm that the destination country supports Alphanumeric Sender ID and whether registration is required before you send messages.\n* Register or request authorization for the Alphanumeric Sender ID in Twilio Console before sending to that country.\n* Make sure the `From` value exactly matches one of your registered Sender IDs for the destination country. Matching is case sensitive.\n* If you use multiple senders, configure a Default Sender ID for the destination country so Twilio can apply a compliant registered sender when the provided `From` value does not match.",
    "description": "This error occurs when you send a message to a destination that requires Alphanumeric Sender ID registration and the sender you provided is not registered or authorized for your account in that country.",
    "date_created": "2023-07-14T08:24:27Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30042,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Alphanumeric Sender ID is generic or unauthorized for this account",
    "secondary_message": "Compliance issue in destination",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a message with an Alphanumeric Sender ID that is blocked for the destination because it is generic, suspicious, or not approved for use on your account. In countries where Sender ID registration is required, Twilio checks whether the sender is allowed before the message is sent.\n\n### Possible causes\n\n- The `From` value uses a generic Alphanumeric Sender ID that operators or local rules block for that destination.\n- The Alphanumeric Sender ID has not been registered or authorized for the destination country on this account.\n- The `From` value does not exactly match one of your registered Sender IDs for that country, which can leave you sending with a sender that is not authorized there.\n\n### Possible solutions\n\n- Use an Alphanumeric Sender ID that is specific to your brand instead of a generic term.\n- Register the Sender ID or request authorization for the destination country before you send traffic there.\n- Set a default Sender ID for countries that require registration so Twilio can replace a non-matching `From` value with a compliant registered sender.\n- Review the destination SMS guidelines and confirm that your Sender ID follows the local registration and compliance requirements.\n\n#### Additional resources\n\n- [Alphanumeric Sender IDs in Messaging Services](/docs/messaging/services/alphanumeric-sender-ids-in-messaging-services)\n- [Configure your default Sender ID](/docs/phone-numbers/default-sender-id)\n- [International support for Alphanumeric Sender ID](https://help.twilio.com/articles/223133767-International-support-for-Alphanumeric-Sender-ID)\n",
    "causes": "* The `From` value uses a generic Alphanumeric Sender ID that operators or local rules block for that destination.\n* The Alphanumeric Sender ID has not been registered or authorized for the destination country on this account.\n* The `From` value does not exactly match one of your registered Sender IDs for that country, which can leave you sending with a sender that is not authorized there.",
    "solutions": "* Use an Alphanumeric Sender ID that is specific to your brand instead of a generic term.\n* Register the Sender ID or request authorization for the destination country before you send traffic there.\n* Set a default Sender ID for countries that require registration so Twilio can replace a non-matching `From` value with a compliant registered sender.\n* Review the destination SMS guidelines and confirm that your Sender ID follows the local registration and compliance requirements.",
    "description": "This error occurs when you send a message with an Alphanumeric Sender ID that is blocked for the destination because it is generic, suspicious, or not approved for use on your account. In countries where Sender ID registration is required, Twilio checks whether the sender is allowed before the message is sent.",
    "date_created": "2023-09-14T15:58:03Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30043,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "International SMS via Domestic Gateway",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the destination mobile operator flagged the SMS as international traffic that was sent through a domestic gateway. The message was misrouted as domestic.\n\n### Possible causes\n\n- The destination mobile operator identified the message as international SMS traffic sent through a domestic gateway.\n- The message was routed over a domestic route when the destination required an international route.\n\n### Possible solutions\n\n- Review the SMS Guidelines for the destination country and check for restrictions on domestic or international traffic.\n- If the message is genuinely domestic, open a support request and provide evidence to clarify the routing.\n- If the message is international, open a support ticket and request that the messages be moved to the appropriate international gateways.\n- Make sure your sender has global SMS capability and that international messaging is enabled for the countries you want to reach. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/223133947-What-is-Global-SMS-and-how-does-it-work))\n\n#### Additional resources\n\n- [What to know before sending international SMS messages](/docs/messaging/guides/sending-international-sms-guide)\n- [What is Global SMS and how does it work?](https://help.twilio.com/hc/en-us/articles/223133947-What-is-Global-SMS-and-how-does-it-work)\n- [Debugging Common Issues with SMS](/docs/messaging/guides/debugging-common-issues)\n",
    "causes": "* The destination mobile operator identified the message as international SMS traffic sent through a domestic gateway.\n* The message was routed over a domestic route when the destination required an international route.",
    "solutions": "* Review the SMS Guidelines for the destination country and check for restrictions on domestic or international traffic.\n* If the message is genuinely domestic, open a support request and provide evidence to clarify the routing.\n* If the message is international, open a support ticket and request that the messages be moved to the appropriate international gateways.\n* Make sure your sender has global SMS capability and that international messaging is enabled for the countries you want to reach. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/223133947-What-is-Global-SMS-and-how-does-it-work))",
    "description": "This error means the destination mobile operator flagged the SMS as international traffic that was sent through a domestic gateway. The message was misrouted as domestic.",
    "date_created": "2024-02-08T20:45:17Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 30044,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trial Message Length Exceeded",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou see this error when you send a message from a Trial account and the message exceeds the segment limit enforced for Trial accounts. SMS messages longer than 160 GSM-7 characters or 70 UCS-2 characters are split into multiple segments, and Trial accounts are subject to a limited number of message segments per message.\n\n### Possible causes\n\n- The message `Body` is long enough to be split into multiple SMS segments.\n- The message includes non-GSM-7 characters, which causes UCS-2 encoding and reduces the number of characters available in each segment.\n- You are sending from a Trial account, which has stricter message segment limits than an upgraded account. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))\n\n### Possible solutions\n\n- Shorten the message so it uses fewer SMS segments while you are on a Trial account.\n- Remove or replace non-GSM-7 characters when possible so the message can stay within GSM-7 segment limits.\n- If you send through a Messaging Service, turn on Smart Encoding to replace certain hidden Unicode characters with similar GSM-encoded characters.\n- Upgrade your account if you need to send longer messages or remove Trial messaging restrictions. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))\n\n#### Additional resources\n\n- [Twilio Free Trial Limitations](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations)\n- [How long can a message be?](/docs/glossary/what-sms-character-limit)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The message `Body` is long enough to be split into multiple SMS segments.\n* The message includes non-GSM-7 characters, which causes UCS-2 encoding and reduces the number of characters available in each segment.\n* You are sending from a Trial account, which has stricter message segment limits than an upgraded account. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))",
    "solutions": "* Shorten the message so it uses fewer SMS segments while you are on a Trial account.\n* Remove or replace non-GSM-7 characters when possible so the message can stay within GSM-7 segment limits.\n* If you send through a Messaging Service, turn on Smart Encoding to replace certain hidden Unicode characters with similar GSM-encoded characters.\n* Upgrade your account if you need to send longer messages or remove Trial messaging restrictions. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))",
    "description": "You see this error when you send a message from a Trial account and the message exceeds the segment limit enforced for Trial accounts. SMS messages longer than 160 GSM-7 characters or 70 UCS-2 characters are split into multiple segments, and Trial accounts are subject to a limited number of message segments per message.",
    "date_created": "2025-03-02T17:16:57Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30045,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Validity Period is less than zero or greater than maximum allowed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nSet the Validity Period to a supported value before you send the message. This warning appears when the value provided in your API request or inherited from a Messaging Service is outside the allowed range. the maximum Validity Period for outbound messages as 36,000 seconds, or 10 hours.\n\n### Possible causes\n\n- You set `ValidityPeriod` on the message request to a value outside the supported range for outbound messages. Twilio accepts integer values in seconds and documents a maximum of 36,000 seconds.\n- You send the message with a Messaging Service, and the service-level `validityPeriod` is configured outside the supported range.\n- You provided the value in a format other than an integer number of seconds.\n\n### Possible solutions\n\n- Update `ValidityPeriod` in your API request to an integer number of seconds within the supported range and no higher than 36,000 seconds.\n- If you send through a Messaging Service, review the service configuration and set `validityPeriod` to an integer from 1 to 36,000 seconds.\n- Remove the custom value to use the default Validity Period of 36,000 seconds when that fits your use case.\n\n#### Additional resources\n\n- [Message resource API reference](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n- [Service resource API reference](/docs/messaging/api/service-resource)\n",
    "causes": "* You set `ValidityPeriod` on the message request to a value outside the supported range for outbound messages. Twilio accepts integer values in seconds and documents a maximum of 36,000 seconds.\n* You send the message with a Messaging Service, and the service-level `validityPeriod` is configured outside the supported range.\n* You provided the value in a format other than an integer number of seconds.",
    "solutions": "* Update `ValidityPeriod` in your API request to an integer number of seconds within the supported range and no higher than 36,000 seconds.\n* If you send through a Messaging Service, review the service configuration and set `validityPeriod` to an integer from 1 to 36,000 seconds.\n* Remove the custom value to use the default Validity Period of 36,000 seconds when that fits your use case.",
    "description": "Set the Validity Period to a supported value before you send the message. This warning appears when the value provided in your API request or inherited from a Messaging Service is outside the allowed range. the maximum Validity Period for outbound messages as 36,000 seconds, or 10 hours.",
    "date_created": "2025-03-31T15:46:10Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30046,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Message delivery not confirmed",
    "secondary_message": null,
    "product": "Branded Comms, Rcs",
    "products_used": [
      "messaging",
      "rcs"
    ],
    "docs": "\n## Description\n\nThe recipient's device did not confirm message delivery to the provider or carrier.\n\n### Possible causes\n\n- The recipient's device was switched off or out of coverage.\n- The recipient's device didn't have an internet connection.\n- The provider or carrier attempted delivery but the device was unable to confirm receipt.\n- The recipient's device couldn't accept the message.\n\n### Possible solutions\n\n- Make sure the recipient's device can receive messages using this channel.\n- Retry the message at a later time. \n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n- [Send and receive RCS messages](/docs/rcs/send-an-rcs-message)\n",
    "causes": "* The recipient's device was switched off or out of coverage.\n* The recipient's device didn't have an internet connection.\n* The provider or carrier attempted delivery but the device was unable to confirm receipt.\n* The recipient's device couldn't accept the message.",
    "solutions": "* Make sure the recipient's device can receive messages using this channel.\n* Retry the message at a later time.",
    "description": "The recipient's device did not confirm message delivery to the provider or carrier.",
    "date_created": "2026-06-16T04:28:53-07:00",
    "last_updated": "2026-06-16T04:28:53-07:00"
  },
  {
    "code": 30047,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to schedule message for a compliant time window",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error applies to messages sent by accounts that have [Compliance Toolkit](/docs/messaging/features/compliance-toolkit) enabled. When Compliance Toolkit determines that a message would be sent outside an allowed (compliant) time window, it reschedules the message for the next compliant time window instead of sending it immediately. This error occurs when that rescheduling step fails.\n\nWhen this happens, the message is neither queued for later delivery nor sent.\n\n### Possible causes\n\n- An internal failure occurred while Compliance Toolkit was rescheduling the message for the next compliant time window.\n\n### Possible solutions\n\n- Retry sending the message. If the condition was transient, Compliance Toolkit will reschedule the message for the next compliant time window on a subsequent attempt.\n- If the error persists, note the time of the error and the affected Message SID, and contact Twilio Support so the scheduling failure can be investigated.\n\n### Additional resources\n\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Troubleshooting](/docs/bulk-messaging/troubleshooting)\n",
    "causes": "* An internal failure occurred while Compliance Toolkit was rescheduling the message for the next compliant time window.",
    "solutions": "* Retry sending the message. If the condition was transient, Compliance Toolkit will reschedule the message for the next compliant time window on a subsequent attempt.\n* If the error persists, note the time of the error and the affected Message SID, and contact Twilio Support so the scheduling failure can be investigated.",
    "description": "This error applies to messages sent by accounts that have [Compliance Toolkit](/docs/messaging/features/compliance-toolkit) enabled. When Compliance Toolkit determines that a message would be sent outside an allowed (compliant) time window, it reschedules the message for the next compliant time window instead of sending it immediately. This error occurs when that rescheduling step fails. When this happens, the message is neither queued for later delivery nor sent.",
    "date_created": "2026-07-07T15:29:56-05:00",
    "last_updated": "2026-07-13T12:50:50-05:00"
  },
  {
    "code": 30100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Domain SID is invalid",
    "secondary_message": "The Domain SID included in your request is not a valid Domain for your Twilio Organization.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the Domain SID in your request does not identify a valid domain in your Twilio Organization. When you configure Link Shortening, get the Domain SID from Twilio Admin > Domains and use that value when you associate the domain with a Messaging Service.\n\n### Possible causes\n\n- The Domain SID belongs to a different Twilio Organization.\n- You copied the wrong value into the request. For example, you used your branded URL or company domain name instead of the Domain SID.\n- The Messaging Service you are configuring does not belong to an account in the same Twilio Organization as the Link Shortening domain.\n\n### Possible solutions\n\n- In Twilio Admin, open **Domains**, select the domain you want to use, and copy the Domain SID from the domain details page. Then use that SID in your request.\n- If you use the API, place the correct Domain SID and Messaging Service SID in the Link Shortening domain's Messaging Services subresource request.\n- Confirm that the domain and the Messaging Service both belong to the same Twilio Organization before you save the configuration or send the request.\n- If your company uses more than one Twilio Organization, verify that you are working in the correct Organization for that domain. Twilio can also support multi-verified domains for eligible Organization setups.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Domains](/docs/iam/organizations/domains)\n",
    "causes": "* The Domain SID belongs to a different Twilio Organization.\n* You copied the wrong value into the request. For example, you used your branded URL or company domain name instead of the Domain SID.\n* The Messaging Service you are configuring does not belong to an account in the same Twilio Organization as the Link Shortening domain.",
    "solutions": "* In Twilio Admin, open **Domains**, select the domain you want to use, and copy the Domain SID from the domain details page. Then use that SID in your request.\n* If you use the API, place the correct Domain SID and Messaging Service SID in the Link Shortening domain's Messaging Services subresource request.\n* Confirm that the domain and the Messaging Service both belong to the same Twilio Organization before you save the configuration or send the request.\n* If your company uses more than one Twilio Organization, verify that you are working in the correct Organization for that domain. Twilio can also support multi-verified domains for eligible Organization setups.",
    "description": "This error means the Domain SID in your request does not identify a valid domain in your Twilio Organization. When you configure Link Shortening, get the Domain SID from Twilio Admin > Domains and use that value when you associate the domain with a Messaging Service.",
    "date_created": "2020-04-22T20:23:16Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Domain is unverified",
    "secondary_message": "The domain has not been verified to work with Twilio Link Shortening.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to use a Link Shortening domain that has not been verified in your Twilio Organization. Before you can use a domain or subdomain for Link Shortening, you must own it, add it to your Organization, and complete domain verification in Twilio Admin. The Twilio Account and Messaging Service that use the domain must also belong to that same Organization.\n\n### Possible causes\n\n- You added the domain to your Organization, but you have not completed domain verification in Twilio Admin.\n- You started DNS or HTML verification, but the verification record or file is missing, incorrect, or not yet reachable. If you use DNS verification, propagation can take up to 72 hours before the domain is marked verified.\n- The request uses the wrong Domain SID, or it references a domain that is not the verified Link Shortening domain you intended to use.\n- The Messaging Service or Twilio Account you are using is not in the same Twilio Organization as the verified Link Shortening domain.\n\n### Possible solutions\n\n- Open Twilio Admin, add the domain to your Organization, and complete verification before using it with Link Shortening. You can verify the domain by DNS or by uploading the verification HTML file.\n- If you use DNS verification, confirm that the verification record is published correctly, then allow time for DNS propagation and verify the domain again.\n- Confirm that the Domain SID in your request matches the verified domain you want to use for Link Shortening. Then re-associate that domain with the correct Messaging Service if needed.\n- Make sure the Twilio Account that owns your Messaging Service has been added to the same Twilio Organization as the verified domain. If it has not, add the Account to the Organization or use a domain that is verified in that Organization.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Domains](/docs/iam/organizations/domains)\n",
    "causes": "* You added the domain to your Organization, but you have not completed domain verification in Twilio Admin.\n* You started DNS or HTML verification, but the verification record or file is missing, incorrect, or not yet reachable. If you use DNS verification, propagation can take up to 72 hours before the domain is marked verified.\n* The request uses the wrong Domain SID, or it references a domain that is not the verified Link Shortening domain you intended to use.\n* The Messaging Service or Twilio Account you are using is not in the same Twilio Organization as the verified Link Shortening domain.",
    "solutions": "* Open Twilio Admin, add the domain to your Organization, and complete verification before using it with Link Shortening. You can verify the domain by DNS or by uploading the verification HTML file.\n* If you use DNS verification, confirm that the verification record is published correctly, then allow time for DNS propagation and verify the domain again.\n* Confirm that the Domain SID in your request matches the verified domain you want to use for Link Shortening. Then re-associate that domain with the correct Messaging Service if needed.\n* Make sure the Twilio Account that owns your Messaging Service has been added to the same Twilio Organization as the verified domain. If it has not, add the Account to the Organization or use a domain that is verified in that Organization.",
    "description": "This error occurs when you try to use a Link Shortening domain that has not been verified in your Twilio Organization. Before you can use a domain or subdomain for Link Shortening, you must own it, add it to your Organization, and complete domain verification in Twilio Admin. The Twilio Account and Messaging Service that use the domain must also belong to that same Organization.",
    "date_created": "2020-04-22T20:23:26Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TLS certificate for your Domain has expired.",
    "secondary_message": "TLS certificate associated with the Domain is expired.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the TLS certificate for your Twilio Link Shortening domain has expired. When the certificate expires, link shortening can fail, links can break, and Twilio can fall back to sending the original long links if `ContinueOnFailure` is enabled for the domain.\n\n### Possible causes\n\n- You are using a bring-your-own certificate for the Link Shortening domain, and the certificate reached its expiration date before you uploaded a replacement.\n- You are managing certificates manually, and the replacement certificate or private key was not uploaded through the Console or the domain's Certificate subresource before the old certificate expired.\n- If you use a Twilio-managed certificate, your DNS uses CAA records that do not allow `letsencrypt.org`, which can prevent certificate requests and renewals. This is an inference based on Twilio's stated certificate renewal requirement.\n\n### Possible solutions\n\n- Replace the expired certificate. In the Console, upload a new certificate and private key for the Link Shortening domain. If you use the API, send a `POST` request to the domain's Certificate subresource with `TlsCert` set to the concatenated certificate and private key.\n- If you want Twilio to handle certificate requests and renewals, switch to a Twilio-managed certificate by using Certificate Manager or the Link Shortening `RequestManagedCert` subresource. This is the preferred setup.\n- If you continue to use your own certificate, make sure the certificate and private key are in PEM format, include the full certificate chain, and use the required `-----BEGIN CERTIFICATE-----` and `-----BEGIN PRIVATE KEY-----` boundaries.\n- After you upload a new certificate, allow up to five minutes for validation, then check the certificate status with a `GET` request to the domain's Certificate subresource.\n- To reduce the chance of future outages, create an Alarm for 30131 so you receive a warning before the certificate expires.\n- If you need messages to continue sending when Link Shortening fails, review the domain setting for `ContinueOnFailure`. When enabled, Twilio sends the original long links, which can increase message segments and costs.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Alarms](/docs/usage/troubleshooting/alarms)\n",
    "causes": "* You are using a bring-your-own certificate for the Link Shortening domain, and the certificate reached its expiration date before you uploaded a replacement.\n* You are managing certificates manually, and the replacement certificate or private key was not uploaded through the Console or the domain's Certificate subresource before the old certificate expired.\n* If you use a Twilio-managed certificate, your DNS uses CAA records that do not allow `letsencrypt.org`, which can prevent certificate requests and renewals. This is an inference based on Twilio's stated certificate renewal requirement.",
    "solutions": "* Replace the expired certificate. In the Console, upload a new certificate and private key for the Link Shortening domain. If you use the API, send a `POST` request to the domain's Certificate subresource with `TlsCert` set to the concatenated certificate and private key.\n* If you want Twilio to handle certificate requests and renewals, switch to a Twilio-managed certificate by using Certificate Manager or the Link Shortening `RequestManagedCert` subresource. This is the preferred setup.\n* If you continue to use your own certificate, make sure the certificate and private key are in PEM format, include the full certificate chain, and use the required `-----BEGIN CERTIFICATE-----` and `-----BEGIN PRIVATE KEY-----` boundaries.\n* After you upload a new certificate, allow up to five minutes for validation, then check the certificate status with a `GET` request to the domain's Certificate subresource.\n* To reduce the chance of future outages, create an Alarm for 30131 so you receive a warning before the certificate expires.\n* If you need messages to continue sending when Link Shortening fails, review the domain setting for `ContinueOnFailure`. When enabled, Twilio sends the original long links, which can increase message segments and costs.",
    "description": "This error occurs when the TLS certificate for your Twilio Link Shortening domain has expired. When the certificate expires, link shortening can fail, links can break, and Twilio can fall back to sending the original long links if `ContinueOnFailure` is enabled for the domain.",
    "date_created": "2020-04-22T20:23:25Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30103,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Links not shortened due to application failure.",
    "secondary_message": "Twilio was unable to shorten the links included in your message due to an application error in the Twilio Link Shortening service.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio couldn't shorten the links in your message because the Link Shortening service encountered an application failure.\n\n### Possible causes\n\n- A temporary interruption or outage affected Twilio Link Shortening.\n\n### Possible solutions\n\n- File a support ticket and include the `Message SID`.\n- If you want Twilio to send the message with the original long links when link shortening fails, set `ContinueOnFailure` to `true` for the Link Shortening domain.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n",
    "causes": "* A temporary interruption or outage affected Twilio Link Shortening.",
    "solutions": "* File a support ticket and include the `Message SID`.\n* If you want Twilio to send the message with the original long links when link shortening fails, set `ContinueOnFailure` to `true` for the Link Shortening domain.",
    "description": "Twilio couldn't shorten the links in your message because the Link Shortening service encountered an application failure.",
    "date_created": "2020-04-23T21:13:38Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 30104,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Shortened link not found. Click redirected to fallback Url",
    "secondary_message": "Twilio was unable to find a record of the shortened link that this request was sent to.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning occurs when a request is received for a Click Tracking domain you registered, but no record is found for the shortened URL. When this happens, the request is redirected to your domain's `FallbackUrl`.\n\n### Possible causes\n\n- The shortened link expired. Shortened link associations are stored for 90 days.\n- The request was sent to a URL that wasn't generated for your Link Shortening domain.\n\n### Possible solutions\n\n- If the shortened link is older than 90 days, send a new message with `ShortenUrls` enabled so Twilio generates a new shortened link.\n- Verify that the shortened link you shared matches the exact URL Twilio generated for your Link Shortening domain.\n- Review your Link Shortening domain configuration and confirm `FallbackUrl` points to a valid destination for expired links.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Message resource](/docs/messaging/api/message-resource)\n",
    "causes": "* The shortened link expired. Shortened link associations are stored for 90 days.\n* The request was sent to a URL that wasn't generated for your Link Shortening domain.",
    "solutions": "* If the shortened link is older than 90 days, send a new message with `ShortenUrls` enabled so Twilio generates a new shortened link.\n* Verify that the shortened link you shared matches the exact URL Twilio generated for your Link Shortening domain.\n* Review your Link Shortening domain configuration and confirm `FallbackUrl` points to a valid destination for expired links.",
    "description": "This warning occurs when a request is received for a Click Tracking domain you registered, but no record is found for the shortened URL. When this happens, the request is redirected to your domain's `FallbackUrl`.",
    "date_created": "2020-04-23T21:16:26Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30105,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Shortened link not found and no fallback URL found",
    "secondary_message": "We returned a 404 to this user action as we could not find a valid url or fallback url to redirect them to.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning occurs when a request is received for a Link Shortening domain on your account, but the shortened path can't be matched to a stored shortened link and no `FallbackUrl` is configured for the domain. The association between the shortened link and the original link is stored for 90 days. After that period, the shortened link expires and requests can only be redirected to the configured fallback URL.\n\n### Possible causes\n\n- The shortened link expired after 90 days.\n- A request was sent to a path that wasn't generated by Link Shortening for your domain.\n- The Link Shortening domain configuration doesn't include `FallbackUrl`.\n\n### Possible solutions\n\n- Open the Link Shortening domain configuration in Console, set a Domain fallback URL, and save the change. Domain default settings are configured on the domain and apply to every Messaging Service that uses that domain.\n- If you use the API, update the Link Shortening domain's Config subresource with `FallbackUrl`. If you also use click tracking, include `CallbackUrl` in the same update.\n- When you send messages with shortened links, include `ShortenUrls` set to `true` and the `MessagingServiceSid` for the Messaging Service associated with your Link Shortening domain so Twilio generates a valid shortened link for that domain.\n- If you need a longer retention period for shortened links, contact support or your account team.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Message resource](/docs/messaging/api/message-resource)\n",
    "causes": "* The shortened link expired after 90 days.\n* A request was sent to a path that wasn't generated by Link Shortening for your domain.\n* The Link Shortening domain configuration doesn't include `FallbackUrl`.",
    "solutions": "* Open the Link Shortening domain configuration in Console, set a Domain fallback URL, and save the change. Domain default settings are configured on the domain and apply to every Messaging Service that uses that domain.\n* If you use the API, update the Link Shortening domain's Config subresource with `FallbackUrl`. If you also use click tracking, include `CallbackUrl` in the same update.\n* When you send messages with shortened links, include `ShortenUrls` set to `true` and the `MessagingServiceSid` for the Messaging Service associated with your Link Shortening domain so Twilio generates a valid shortened link for that domain.\n* If you need a longer retention period for shortened links, contact support or your account team.",
    "description": "This warning occurs when a request is received for a Link Shortening domain on your account, but the shortened path can't be matched to a stored shortened link and no `FallbackUrl` is configured for the domain. The association between the shortened link and the original link is stored for 90 days. After that period, the shortened link expires and requests can only be redirected to the configured fallback URL.",
    "date_created": "2020-04-28T15:18:14Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30106,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Domain has not been set up for this account",
    "secondary_message": "Domain has not been set up for this account",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means you tried to use Link Shortening click tracking before the domain was set up for the account. Complete the Link Shortening onboarding steps, including adding and verifying the domain in a Twilio Organization, before you use it with Messaging Services.\n\n### Possible causes\n\n- You have not completed Link Shortening onboarding for the account, so the domain is not set up yet.\n- You have not added and verified the domain in the Twilio Organization that owns the Link Shortening domain.\n- The Twilio account you are using has not been added to the Organization, or the Messaging Service is not associated with the Link Shortening domain.\n\n### Possible solutions\n\n- Complete Link Shortening onboarding: use a domain or subdomain you own, create or use a Twilio Organization, add and verify the domain, add the Twilio account to the Organization, and make sure the account has a Messaging Service with at least one sender.\n- Associate the Messaging Service with your Link Shortening domain from Messaging > Messaging Services, or use the Link Shortening domain's Messaging Services subresource in the API.\n- If you are still setting up the domain, update the DNS records for the domain and allow time for propagation before retrying.\n\n#### Additional resources\n\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n",
    "causes": "* You have not completed Link Shortening onboarding for the account, so the domain is not set up yet.\n* You have not added and verified the domain in the Twilio Organization that owns the Link Shortening domain.\n* The Twilio account you are using has not been added to the Organization, or the Messaging Service is not associated with the Link Shortening domain.",
    "solutions": "* Complete Link Shortening onboarding: use a domain or subdomain you own, create or use a Twilio Organization, add and verify the domain, add the Twilio account to the Organization, and make sure the account has a Messaging Service with at least one sender.\n* Associate the Messaging Service with your Link Shortening domain from Messaging > Messaging Services, or use the Link Shortening domain's Messaging Services subresource in the API.\n* If you are still setting up the domain, update the DNS records for the domain and allow time for propagation before retrying.",
    "description": "This error means you tried to use Link Shortening click tracking before the domain was set up for the account. Complete the Link Shortening onboarding steps, including adding and verifying the domain in a Twilio Organization, before you use it with Messaging Services.",
    "date_created": "2020-05-01T20:10:04Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 30107,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Domain private certificate has not been uploaded",
    "secondary_message": "The private certificate required for Twilio to process shortening requests through this domain has not been uploaded",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Link Shortening domain is configured to serve shortened HTTPS links, but the certificate management step is not complete for that domain. If you use Bring Your Own Certificate, Twilio must have the domain's TLS certificate and private key before it can process shortened links over HTTPS.\n\n### Possible causes\n\n- You selected Bring Your Own Certificate for the Link Shortening domain, but you did not upload a TLS certificate and private key.\n- The certificate upload step for the domain was not completed in the Console or through the Link Shortening Certificate subresource.\n- The domain is associated with your Twilio Organization, but certificate management for that Organization-level domain was never finished.\n\n### Possible solutions\n\n- Open the Link Shortening domain configuration in the Console and complete certificate management for the domain. If you use Bring Your Own Certificate, upload both the TLS certificate and the private key.\n- If you use the API, send a `POST` request to the Link Shortening domain's Certificate subresource and provide the certificate and private key together in the `TlsCert` parameter.\n- Make sure the certificate and key are in PEM format, that the certificate matches the domain or subdomain you use for Link Shortening, and that you include the full certificate chain.\n- Verify that the private key uses a supported format and includes the expected header and footer lines, such as `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----`.\n- Wait up to five minutes for certificate validation to complete, then confirm the certificate status before retrying your shortened message request.\n- If you do not want to manage certificates yourself, switch the domain to a Twilio-managed certificate, which is the preferred option for Link Shortening.\n\n#### Additional resources\n\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Domains](/docs/iam/organizations/domains)\n",
    "causes": "* You selected Bring Your Own Certificate for the Link Shortening domain, but you did not upload a TLS certificate and private key.\n* The certificate upload step for the domain was not completed in the Console or through the Link Shortening Certificate subresource.\n* The domain is associated with your Twilio Organization, but certificate management for that Organization-level domain was never finished.",
    "solutions": "* Open the Link Shortening domain configuration in the Console and complete certificate management for the domain. If you use Bring Your Own Certificate, upload both the TLS certificate and the private key.\n* If you use the API, send a `POST` request to the Link Shortening domain's Certificate subresource and provide the certificate and private key together in the `TlsCert` parameter.\n* Make sure the certificate and key are in PEM format, that the certificate matches the domain or subdomain you use for Link Shortening, and that you include the full certificate chain.\n* Verify that the private key uses a supported format and includes the expected header and footer lines, such as `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----`.\n* Wait up to five minutes for certificate validation to complete, then confirm the certificate status before retrying your shortened message request.\n* If you do not want to manage certificates yourself, switch the domain to a Twilio-managed certificate, which is the preferred option for Link Shortening.",
    "description": "Twilio returns this error when your Link Shortening domain is configured to serve shortened HTTPS links, but the certificate management step is not complete for that domain. If you use Bring Your Own Certificate, Twilio must have the domain's TLS certificate and private key before it can process shortened links over HTTPS.",
    "date_created": "2020-05-05T19:13:32Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30108,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Twilio account does not belong to an organization",
    "secondary_message": "Domains are managed at the Organization level. Please attach this account to an organization and proceed with setup for Click Tracking prior to use.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to use Click Tracking with an account that is not attached to a Twilio Organization. Domains are managed at the Organization level, and click tracking can send tracked links through either Twilio SendGrid servers or your branded link domain.\n\n### Possible causes\n\n- The account was created outside your Organization and has not been imported into the Organization from Twilio Admin > Accounts.\n- Your Organization does not have a verified domain that lets you add the account. To add an existing account, the account owner must have signed up through one of your Organization's verified domains.\n- Link branding setup is incomplete. Click tracking with branded links requires you to create the branded link and add and verify the required DNS `CNAME` records.\n- Secure click tracking setup is incomplete. For authenticated domains, SSL click and open tracking require additional SSL configuration before support can activate the feature.\n\n### Possible solutions\n\n- Create a Twilio Organization in Twilio Admin if you do not already have one.\n- Add the affected account to your Organization as a managed account from Twilio Admin > Accounts. If the account already exists, import it as an existing account.\n- Verify the Organization domain that matches the account owner's email address before you try to add the account.\n- Complete link branding setup in the Twilio SendGrid console. Add the required `CNAME` records with your DNS provider, wait for DNS propagation if needed, and verify the branded link after the records are in place.\n- If you need secure click tracking, configure SSL for the branded domain and then contact Twilio SendGrid Support to activate SSL click and open tracking.\n\n#### Additional resources\n\n- [How to set up link branding](/docs/sendgrid/ui/account-and-settings/how-to-set-up-link-branding)\n- [Set up secure click tracking](/docs/sendgrid/ui/analytics-and-reporting/click-tracking-ssl)\n- [Managed Accounts](/docs/iam/organizations/managed-accounts)\n",
    "causes": "* The account was created outside your Organization and has not been imported into the Organization from Twilio Admin > Accounts.\n* Your Organization does not have a verified domain that lets you add the account. To add an existing account, the account owner must have signed up through one of your Organization's verified domains.\n* Link branding setup is incomplete. Click tracking with branded links requires you to create the branded link and add and verify the required DNS `CNAME` records.\n* Secure click tracking setup is incomplete. For authenticated domains, SSL click and open tracking require additional SSL configuration before support can activate the feature.",
    "solutions": "* Create a Twilio Organization in Twilio Admin if you do not already have one.\n* Add the affected account to your Organization as a managed account from Twilio Admin > Accounts. If the account already exists, import it as an existing account.\n* Verify the Organization domain that matches the account owner's email address before you try to add the account.\n* Complete link branding setup in the Twilio SendGrid console. Add the required `CNAME` records with your DNS provider, wait for DNS propagation if needed, and verify the branded link after the records are in place.\n* If you need secure click tracking, configure SSL for the branded domain and then contact Twilio SendGrid Support to activate SSL click and open tracking.",
    "description": "This error occurs when you try to use Click Tracking with an account that is not attached to a Twilio Organization. Domains are managed at the Organization level, and click tracking can send tracked links through either Twilio SendGrid servers or your branded link domain.",
    "date_created": "2020-05-05T19:13:34Z",
    "last_updated": "2026-07-14T21:57:59+01:00"
  },
  {
    "code": 30109,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Callback URL is invalid",
    "secondary_message": "The URL specified in your API request for callback is invalid",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `CallbackUrl` in your Link Shortening domain configuration isn't a valid URL. Click event data is sent to this callback URL after a recipient clicks a shortened link.\n\n### Possible causes\n\n- The `CallbackUrl` is missing a protocol such as `http://` or `https://`.\n- The hostname is invalid, incomplete, or malformed.\n- The path or query string contains characters that aren't properly URL-encoded.\n- You entered an invalid **Click tracking callback URL** in the Console, or sent an invalid `CallbackUrl` parameter in the request.\n\n### Possible solutions\n\n- Submit a fully qualified `CallbackUrl` that includes the protocol, hostname, and any required path.\n- If you configure Link Shortening in the Console, update the **Click tracking callback URL** and save the domain configuration again.\n- If you configure Link Shortening with the API, send a corrected `CallbackUrl` in a `POST` request to the Link Shortening domain's Config subresource.\n- URL-encode special characters in the path and query string before you save or submit the callback URL.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Webhooks (HTTP callbacks): Connection Overrides](/docs/usage/webhooks/webhooks-connection-overrides)\n",
    "causes": "* The `CallbackUrl` is missing a protocol such as `http://` or `https://`.\n* The hostname is invalid, incomplete, or malformed.\n* The path or query string contains characters that aren't properly URL-encoded.\n* You entered an invalid **Click tracking callback URL** in the Console, or sent an invalid `CallbackUrl` parameter in the request.",
    "solutions": "* Submit a fully qualified `CallbackUrl` that includes the protocol, hostname, and any required path.\n* If you configure Link Shortening in the Console, update the **Click tracking callback URL** and save the domain configuration again.\n* If you configure Link Shortening with the API, send a corrected `CallbackUrl` in a `POST` request to the Link Shortening domain's Config subresource.\n* URL-encode special characters in the path and query string before you save or submit the callback URL.",
    "description": "This error occurs when the `CallbackUrl` in your Link Shortening domain configuration isn't a valid URL. Click event data is sent to this callback URL after a recipient clicks a shortened link.",
    "date_created": "2020-05-05T19:14:31Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30110,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Domain is blocked",
    "secondary_message": "The provided URL to resolve this link to is on a blocked domain.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the URL used to resolve a link is on a blocked domain. This error is listed under Programmable SMS and is reported as an error.\n\n### Possible causes\n\n- Twilio has detected fraudulent activity on the domain.\n- The domain owner has asked Twilio not to link to the site.\n\n### Possible solutions\n\n- Reach out to Twilio support and ask for help reviewing the blocked domain.\n- If you control the URL, replace it with a different destination that is not blocked before you resend the message.\n\n#### Additional resources\n\n- [Programmable Messaging](/docs/messaging)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Twilio has detected fraudulent activity on the domain.\n* The domain owner has asked Twilio not to link to the site.",
    "solutions": "* Reach out to Twilio support and ask for help reviewing the blocked domain.\n* If you control the URL, replace it with a different destination that is not blocked before you resend the message.",
    "description": "Twilio returns this error when the URL used to resolve a link is on a blocked domain. This error is listed under Programmable SMS and is reported as an error.",
    "date_created": "2020-05-05T19:14:34Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 30111,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Url is on a deny list",
    "secondary_message": "The URL provided is blocked.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this Messaging error when the URL you provide is blocked because it appears on a deny list.\n\n### Possible causes\n\n- Twilio detected fraudulent activity associated with the URL.\n- The domain owner asked Twilio not to link to the site.\n\n### Possible solutions\n\n- Contact Twilio support to request a review of the blocked URL.\n\n#### Additional resources\n\n- [30110: Domain is blocked](/docs/api/errors/30110)\n- [Messaging API Overview](/docs/messaging/api)\n",
    "causes": "* Twilio detected fraudulent activity associated with the URL.\n* The domain owner asked Twilio not to link to the site.",
    "solutions": "* Contact Twilio support to request a review of the blocked URL.",
    "description": "Twilio returns this Messaging error when the URL you provide is blocked because it appears on a deny list.",
    "date_created": "2020-05-05T20:42:51Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30112,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account is not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n30112 indicates that the Account SID or related account identifier in your request does not match an existing Twilio account that Twilio can access. This error usually occurs when you provide an incorrect account value, use the wrong account context for the request, or send a request with credentials that do not belong to the account you referenced.\n\n### Possible causes\n\n- The request includes an invalid Account SID\n- The Account SID contains a typo or is malformed\n- The request uses a subaccount SID where the operation requires the parent account, or the reverse\n- The credentials used to authenticate the request do not belong to the account in the request URL or parameters\n- The account was closed or is no longer available\n- The request was sent to the correct resource path with the wrong account context\n\n### Possible solutions\n\n- Verify that the Account SID in your request exactly matches the account you want to access\n- Confirm that the Account SID starts with `AC` and is copied completely without extra characters or missing characters\n- Make sure the Account SID in the request matches the credentials you use for authentication\n- If you are working with subaccounts, confirm whether the request should use the parent account or a specific subaccount\n- Check your application configuration, environment variables, and secrets management to make sure you are not mixing test and production credentials\n- If you recently closed the account or suspect the account is no longer active, sign in to the Twilio Console and verify the account status before retrying the request\n\n#### Additional resources\n\n- [Twilio IAM documentation](/docs/iam)\n- [Create and manage subaccounts](/docs/iam/api/subaccounts)\n",
    "causes": "* The request includes an invalid Account SID\n* The Account SID contains a typo or is malformed\n* The request uses a subaccount SID where the operation requires the parent account, or the reverse\n* The credentials used to authenticate the request do not belong to the account in the request URL or parameters\n* The account was closed or is no longer available\n* The request was sent to the correct resource path with the wrong account context",
    "solutions": "* Verify that the Account SID in your request exactly matches the account you want to access\n* Confirm that the Account SID starts with `AC` and is copied completely without extra characters or missing characters\n* Make sure the Account SID in the request matches the credentials you use for authentication\n* If you are working with subaccounts, confirm whether the request should use the parent account or a specific subaccount\n* Check your application configuration, environment variables, and secrets management to make sure you are not mixing test and production credentials\n* If you recently closed the account or suspect the account is no longer active, sign in to the Twilio Console and verify the account status before retrying the request",
    "description": "30112 indicates that the Account SID or related account identifier in your request does not match an existing Twilio account that Twilio can access. This error usually occurs when you provide an incorrect account value, use the wrong account context for the request, or send a request with credentials that do not belong to the account you referenced.",
    "date_created": "2020-05-07T17:05:01Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 30113,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Specified date is too old",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when you request a Deactivations report for a date earlier than `2020-08-27`. Deactivations data is only available from August 27, 2020 onward for the Deactivations resource.\n\n### Possible causes\n\n- The `Date` parameter is earlier than `2020-08-27`.\n- Your application is backfilling deactivation data beyond the earliest date Twilio stores.\n- A default value, timezone conversion, or date calculation in your application produced an older date than intended.\n\n### Possible solutions\n\n- Update the `Date` parameter to `2020-08-27` or later.\n- Validate request dates in your application before calling the Deactivations resource.\n- If you are running a historical import, limit requests to the available reporting window and skip dates before `2020-08-27`.\n- Verify that your application sends the expected calendar date in `YYYY-MM-DD` format.\n\n#### Additional resources\n\n- [Deactivations resource](/docs/messaging/api/deactivations-resource)\n- [Handling Deactivated Phone Numbers](https://help.twilio.com/hc/en-us/articles/360042744973-Handling-Deactivated-Phone-Numbers)\n- [Programmable Messaging API overview](/docs/messaging/api)\n",
    "causes": "* The `Date` parameter is earlier than `2020-08-27`.\n* Your application is backfilling deactivation data beyond the earliest date Twilio stores.\n* A default value, timezone conversion, or date calculation in your application produced an older date than intended.",
    "solutions": "* Update the `Date` parameter to `2020-08-27` or later.\n* Validate request dates in your application before calling the Deactivations resource.\n* If you are running a historical import, limit requests to the available reporting window and skip dates before `2020-08-27`.\n* Verify that your application sends the expected calendar date in `YYYY-MM-DD` format.",
    "description": "Twilio returns this error when you request a Deactivations report for a date earlier than `2020-08-27`. Deactivations data is only available from August 27, 2020 onward for the Deactivations resource.",
    "date_created": "2020-08-27T19:49:16Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30114,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Specified date is not available yet",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you request a Deactivations report for a date that is not available yet. Twilio updates Deactivations reports daily, so requests for a future date or for the current date before processing is complete can return this error.\n\n### Possible causes\n\n- You requested a date in the future.\n- You requested the current date before Twilio finished processing that day's Deactivations data.\n\n### Possible solutions\n\n- Request an earlier date that is already available.\n- If you requested the current date, wait until Twilio finishes processing the daily Deactivations report and try again.\n- If you automate requests to the Deactivations resource, schedule them after the daily report is published so your job does not request unavailable data.\n\n#### Additional resources\n\n- [Deactivations resource](/docs/messaging/api/deactivations-resource)\n- [Messaging API Overview](/docs/messaging/api)\n- [Handling Deactivated Phone Numbers](https://help.twilio.com/articles/360042744973-Handling-Deactivated-Phone-Numbers)\n",
    "causes": "* You requested a date in the future.\n* You requested the current date before Twilio finished processing that day's Deactivations data.",
    "solutions": "* Request an earlier date that is already available.\n* If you requested the current date, wait until Twilio finishes processing the daily Deactivations report and try again.\n* If you automate requests to the Deactivations resource, schedule them after the daily report is published so your job does not request unavailable data.",
    "description": "This error occurs when you request a Deactivations report for a date that is not available yet. Twilio updates Deactivations reports daily, so requests for a future date or for the current date before processing is complete can return this error.",
    "date_created": "2020-08-27T19:49:17Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30115,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Date format is incorrect",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `Date` field in your Messaging request does not use the required `YYYY-MM-DD` format. Twilio expects a calendar date only for this field.\n\n### Possible causes\n\n- You included a timestamp, time, or timezone in the `Date` field instead of sending only a date.\n- You used a two-digit year such as `YY` instead of a four-digit year such as `YYYY`.\n- The value does not match the required `YYYY-MM-DD` pattern for the `Date` field.\n\n### Possible solutions\n\n- Send the `Date` field in `YYYY-MM-DD` format, for example `2023-08-13`.\n- Remove any time portion, timestamp, or timezone offset so the value contains only year, month, and day.\n- Use a four-digit year and verify the full date is formatted correctly before you submit the request.\n\n#### Additional resources\n\n- [Deactivations resource](/docs/messaging/api/deactivations-resource)\n- [Message resource](/docs/messaging/api/message-resource)\n- [Handling Deactivated Phone Numbers](https://help.twilio.com/hc/en-us/articles/360042744973-Handling-Deactivated-Phone-Numbers)\n",
    "causes": "* You included a timestamp, time, or timezone in the `Date` field instead of sending only a date.\n* You used a two-digit year such as `YY` instead of a four-digit year such as `YYYY`.\n* The value does not match the required `YYYY-MM-DD` pattern for the `Date` field.",
    "solutions": "* Send the `Date` field in `YYYY-MM-DD` format, for example `2023-08-13`.\n* Remove any time portion, timestamp, or timezone offset so the value contains only year, month, and day.\n* Use a four-digit year and verify the full date is formatted correctly before you submit the request.",
    "description": "This error occurs when the `Date` field in your Messaging request does not use the required `YYYY-MM-DD` format. Twilio expects a calendar date only for this field.",
    "date_created": "2020-08-27T19:49:18Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30116,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Certificate or private key or both are missing",
    "secondary_message": "Please use PEM format for uploaded certificates",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you upload a TLS certificate for a Link Shortening domain and the upload doesn't include the certificate, the private key, or both. Upload the certificate and key in PEM format. If you use the REST API, the `TlsCert` value must contain the concatenated certificate and private key.\n\n### Possible causes\n\n- The upload includes only the certificate or only the private key.\n- The certificate or private key isn't in PEM format.\n- The uploaded content is missing the required PEM boundaries, such as `-----BEGIN CERTIFICATE-----`, `-----END CERTIFICATE-----`, `-----BEGIN PRIVATE KEY-----`, or `-----END PRIVATE KEY-----`.\n- In Console, one of the upload fields was left empty. In the REST API, the `TlsCert` value doesn't include both items in a single payload.\n\n### Possible solutions\n\n- If you use Console, paste the TLS certificate into the certificate field and paste the private key into the private key field.\n- If you use the REST API, set `TlsCert` to the concatenated certificate and private key.\n- Confirm the certificate starts with `-----BEGIN CERTIFICATE-----` and ends with `-----END CERTIFICATE-----`. For the private key, verify it starts with `-----BEGIN PRIVATE KEY-----` and ends with `-----END PRIVATE KEY-----`, or upload a key in `PKCS #8` format.\n- Remove extra newline characters at the beginning or end of the certificate and private key, then upload them again.\n\n#### Additional resources\n\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Alarms](/docs/usage/troubleshooting/alarms)\n",
    "causes": "* The upload includes only the certificate or only the private key.\n* The certificate or private key isn't in PEM format.\n* The uploaded content is missing the required PEM boundaries, such as `-----BEGIN CERTIFICATE-----`, `-----END CERTIFICATE-----`, `-----BEGIN PRIVATE KEY-----`, or `-----END PRIVATE KEY-----`.\n* In Console, one of the upload fields was left empty. In the REST API, the `TlsCert` value doesn't include both items in a single payload.",
    "solutions": "* If you use Console, paste the TLS certificate into the certificate field and paste the private key into the private key field.\n* If you use the REST API, set `TlsCert` to the concatenated certificate and private key.\n* Confirm the certificate starts with `-----BEGIN CERTIFICATE-----` and ends with `-----END CERTIFICATE-----`. For the private key, verify it starts with `-----BEGIN PRIVATE KEY-----` and ends with `-----END PRIVATE KEY-----`, or upload a key in `PKCS #8` format.\n* Remove extra newline characters at the beginning or end of the certificate and private key, then upload them again.",
    "description": "This error occurs when you upload a TLS certificate for a Link Shortening domain and the upload doesn't include the certificate, the private key, or both. Upload the certificate and key in PEM format. If you use the REST API, the `TlsCert` value must contain the concatenated certificate and private key.",
    "date_created": "2020-09-01T18:08:20Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30117,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Certificate cannot be parsed",
    "secondary_message": "Certificate cannot be parsed",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when it can't parse the certificate you uploaded for a Link Shortening domain. Upload the certificate in PEM format and make sure the certificate content uses the expected PEM block structure.\n\n### Possible causes\n\n- The uploaded certificate data is corrupted, incomplete, or missing required content.\n- The certificate is not in PEM format.\n- The certificate does not start with `-----BEGIN CERTIFICATE-----` and end with `-----END CERTIFICATE-----`.\n- The uploaded certificate includes extra newline characters at the beginning or end.\n- If you use the API, the `TlsCert` value is not formatted correctly for the certificate upload request.\n\n### Possible solutions\n\n- Re-export or regenerate the certificate in PEM format, then upload it again.\n- Confirm the certificate begins with `-----BEGIN CERTIFICATE-----` and ends with `-----END CERTIFICATE-----`.\n- Remove any extra newline characters before the first line or after the last line of the certificate.\n- If you upload the certificate through the API, send the `TlsCert` parameter in the required format. Include the concatenated certificate and private key value exactly as shown in the Link Shortening onboarding flow.\n- If the upload still fails, generate a new certificate and private key pair and verify that the private key is also in the expected PEM format before retrying.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n",
    "causes": "* The uploaded certificate data is corrupted, incomplete, or missing required content.\n* The certificate is not in PEM format.\n* The certificate does not start with `-----BEGIN CERTIFICATE-----` and end with `-----END CERTIFICATE-----`.\n* The uploaded certificate includes extra newline characters at the beginning or end.\n* If you use the API, the `TlsCert` value is not formatted correctly for the certificate upload request.",
    "solutions": "* Re-export or regenerate the certificate in PEM format, then upload it again.\n* Confirm the certificate begins with `-----BEGIN CERTIFICATE-----` and ends with `-----END CERTIFICATE-----`.\n* Remove any extra newline characters before the first line or after the last line of the certificate.\n* If you upload the certificate through the API, send the `TlsCert` parameter in the required format. Include the concatenated certificate and private key value exactly as shown in the Link Shortening onboarding flow.\n* If the upload still fails, generate a new certificate and private key pair and verify that the private key is also in the expected PEM format before retrying.",
    "description": "Twilio returns this error when it can't parse the certificate you uploaded for a Link Shortening domain. Upload the certificate in PEM format and make sure the certificate content uses the expected PEM block structure.",
    "date_created": "2020-09-01T18:49:12Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30118,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Private key is invalid",
    "secondary_message": "Unable to parse private key",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the private key uploaded for Link Shortening cannot be parsed. Provide the key in PEM format or in `PKCS #8` format, and make sure it starts with `-----BEGIN PRIVATE KEY-----` and ends with `-----END PRIVATE KEY-----`. Remove any extra newline characters at the beginning or end before you upload the key.\n\n### Possible causes\n\n- The private key is not in `PEM` format or `PKCS #8` format.\n- The private key does not start with `-----BEGIN PRIVATE KEY-----` or end with `-----END PRIVATE KEY-----`.\n- The private key includes extra newline characters at the beginning or end.\n\n### Possible solutions\n\n- Re-upload a private key in `PEM` or `PKCS #8` format with the required begin and end lines.\n- Remove any leading or trailing newline characters before you submit the key.\n- In the Console, paste the private key into the Private key input box. When using the API, send the certificate and private key in the `TlsCert` parameter to the Link Shortening domain Certificate subresource.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening onboarding guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Messaging API Overview](/docs/messaging/api)\n",
    "causes": "* The private key is not in `PEM` format or `PKCS #8` format.\n* The private key does not start with `-----BEGIN PRIVATE KEY-----` or end with `-----END PRIVATE KEY-----`.\n* The private key includes extra newline characters at the beginning or end.",
    "solutions": "* Re-upload a private key in `PEM` or `PKCS #8` format with the required begin and end lines.\n* Remove any leading or trailing newline characters before you submit the key.\n* In the Console, paste the private key into the Private key input box. When using the API, send the certificate and private key in the `TlsCert` parameter to the Link Shortening domain Certificate subresource.",
    "description": "Twilio returns this error when the private key uploaded for Link Shortening cannot be parsed. Provide the key in PEM format or in `PKCS #8` format, and make sure it starts with `-----BEGIN PRIVATE KEY-----` and ends with `-----END PRIVATE KEY-----`. Remove any extra newline characters at the beginning or end before you upload the key.",
    "date_created": "2020-09-03T19:43:06Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 30119,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Certificate and private key pair is invalid",
    "secondary_message": "Private key and certificate mismatch",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the private key and certificate you upload are individually valid, but they do not match as a pair for your Link Shortening domain. Twilio validates uploaded certificates and keys when you upload a certificate for Link Shortening.\n\n### Possible causes\n\n- The certificate and private key are for different domains, or they do not belong to the same certificate and key pair.\n- If you configured Link Shortening on a subdomain, the certificate and private key were not generated for that subdomain.\n\n### Possible solutions\n\n- Regenerate the certificate and private key as a matching pair for the domain or subdomain you configured for Link Shortening, then upload the new files.\n- Upload the certificate in PEM format. Make sure the certificate begins with `-----BEGIN CERTIFICATE-----` and ends with `-----END CERTIFICATE-----`, and that the private key begins with `-----BEGIN PRIVATE KEY-----` and ends with `-----END PRIVATE KEY-----` or is in PKCS #8 format.\n- Include the full certificate chain when you upload the certificate.\n- If you use the REST API, set `TlsCert` to the concatenated certificate and private key. After you upload the file, check the certificate validation status because validation can take up to five minutes.\n\n#### Additional resources\n\n- [Link Shortening onboarding guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Security](/docs/usage/security)\n",
    "causes": "* The certificate and private key are for different domains, or they do not belong to the same certificate and key pair.\n* If you configured Link Shortening on a subdomain, the certificate and private key were not generated for that subdomain.",
    "solutions": "* Regenerate the certificate and private key as a matching pair for the domain or subdomain you configured for Link Shortening, then upload the new files.\n* Upload the certificate in PEM format. Make sure the certificate begins with `-----BEGIN CERTIFICATE-----` and ends with `-----END CERTIFICATE-----`, and that the private key begins with `-----BEGIN PRIVATE KEY-----` and ends with `-----END PRIVATE KEY-----` or is in PKCS #8 format.\n* Include the full certificate chain when you upload the certificate.\n* If you use the REST API, set `TlsCert` to the concatenated certificate and private key. After you upload the file, check the certificate validation status because validation can take up to five minutes.",
    "description": "This error occurs when the private key and certificate you upload are individually valid, but they do not match as a pair for your Link Shortening domain. Twilio validates uploaded certificates and keys when you upload a certificate for Link Shortening.",
    "date_created": "2020-09-03T19:45:14Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30120,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": " Domain certificate and private key are not uploaded",
    "secondary_message": "Given Domain is not onboarded, please upload cert for domain first",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this when a Link Shortening domain has not had its TLS certificate and private key uploaded yet. Upload the certificate material before you use the domain for link shortening.\n\n### Possible causes\n\n- You haven't uploaded a TLS certificate/private key pair for the Link Shortening domain.\n- You haven't completed the certificate upload step for the domain, so Twilio can't validate it yet.\n\n### Possible solutions\n\n- Upload the TLS certificate and private key in Console under Upload certificate, then click Upload. Make sure the certificate starts with `-----BEGIN CERTIFICATE-----` and the private key starts with `-----BEGIN PRIVATE KEY-----`.\n- If you use the API, `POST` the concatenated certificate and private key to the domain's Certificate subresource in `TlsCert`.\n- Wait for validation to complete before retrying. Certificate validation can take up to five minutes, and Twilio returns a pending `cert_in_validation.status` while validation is in progress.\n\n#### Additional resources\n\n- [Link Shortening onboarding guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* You haven't uploaded a TLS certificate/private key pair for the Link Shortening domain.\n* You haven't completed the certificate upload step for the domain, so Twilio can't validate it yet.",
    "solutions": "* Upload the TLS certificate and private key in Console under Upload certificate, then click Upload. Make sure the certificate starts with `-----BEGIN CERTIFICATE-----` and the private key starts with `-----BEGIN PRIVATE KEY-----`.\n* If you use the API, `POST` the concatenated certificate and private key to the domain's Certificate subresource in `TlsCert`.\n* Wait for validation to complete before retrying. Certificate validation can take up to five minutes, and Twilio returns a pending `cert_in_validation.status` while validation is in progress.",
    "description": "Twilio returns this when a Link Shortening domain has not had its TLS certificate and private key uploaded yet. Upload the certificate material before you use the domain for link shortening.",
    "date_created": "2022-02-09T19:25:00Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30121,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Fallback URL is missing",
    "secondary_message": "Fallback URL is missing, please add an URL.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the Link Shortening domain configuration does not include a `FallbackUrl`. Link Shortening domain defaults are set on the domain, and Twilio applies them to any Messaging Service that uses that domain.\n\n### Possible causes\n\n- You left the Domain fallback URL field blank in the Console when configuring Link Shortening for the domain.\n- You sent a `POST` request to the Link Shortening domain's Config subresource without the `FallbackUrl` parameter.\n- You associated a Messaging Service with a Link Shortening domain, but you did not complete the domain default configuration.\n\n### Possible solutions\n\n- Open the Link Shortening domain configuration in the Console, then fill in Domain fallback URL and save the changes.\n- If you use the API, send `FallbackUrl` in a `POST` request to the Link Shortening domain's Config subresource.\n- If you also need click tracking, provide `CallbackUrl` in the same request so the domain default configuration is complete.\n\n#### Additional resources\n\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Messaging Service resource](/docs/messaging/api/service-resource)\n",
    "causes": "* You left the Domain fallback URL field blank in the Console when configuring Link Shortening for the domain.\n* You sent a `POST` request to the Link Shortening domain's Config subresource without the `FallbackUrl` parameter.\n* You associated a Messaging Service with a Link Shortening domain, but you did not complete the domain default configuration.",
    "solutions": "* Open the Link Shortening domain configuration in the Console, then fill in Domain fallback URL and save the changes.\n* If you use the API, send `FallbackUrl` in a `POST` request to the Link Shortening domain's Config subresource.\n* If you also need click tracking, provide `CallbackUrl` in the same request so the domain default configuration is complete.",
    "description": "Twilio returns this error when the Link Shortening domain configuration does not include a `FallbackUrl`. Link Shortening domain defaults are set on the domain, and Twilio applies them to any Messaging Service that uses that domain.",
    "date_created": "2022-02-09T19:28:28Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30122,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Fallback URL is invalid",
    "secondary_message": "Fallback URL is invalid, please check the format of the URL parameter",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the fallback URL configured for a Messaging Service or incoming phone number is not a valid URL. Twilio requests the fallback URL when it can't retrieve or execute TwiML from the primary inbound request URL, and the fallback URL must be valid.\n\n### Possible causes\n\n- The `fallbackUrl` value is malformed or cannot be parsed as a valid URL. Twilio expects a valid URL for this setting.\n\n### Possible solutions\n\n- Replace `fallbackUrl` with a valid URL and save the Messaging Service or phone number configuration again. Twilio accepts any valid URL for this field.\n- If you want to use a Twilio-hosted destination, point the fallback URL to a Studio Flow, TwiML Bin, or Twilio Function webhook URL.\n- Set the fallback URL in the Messaging Service `fallbackUrl` field or in the phone number's Messaging Configuration, depending on where you manage inbound routing.\n\n#### Additional resources\n\n- [Services resource](/docs/messaging/api/service-resource)\n- [Availability and Reliability](/docs/usage/security/availability-reliability)\n",
    "causes": "* The `fallbackUrl` value is malformed or cannot be parsed as a valid URL. Twilio expects a valid URL for this setting.",
    "solutions": "* Replace `fallbackUrl` with a valid URL and save the Messaging Service or phone number configuration again. Twilio accepts any valid URL for this field.\n* If you want to use a Twilio-hosted destination, point the fallback URL to a Studio Flow, TwiML Bin, or Twilio Function webhook URL.\n* Set the fallback URL in the Messaging Service `fallbackUrl` field or in the phone number's Messaging Configuration, depending on where you manage inbound routing.",
    "description": "This error occurs when the fallback URL configured for a Messaging Service or incoming phone number is not a valid URL. Twilio requests the fallback URL when it can't retrieve or execute TwiML from the primary inbound request URL, and the fallback URL must be valid.",
    "date_created": "2022-02-09T19:30:08Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30123,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Callback URL is missing",
    "secondary_message": "Callback URL is missing, please add an URL.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Messaging configuration or request does not include the required `callbackUrl` value. In Messaging Link Shortening, the `Callback URL` is the URL Twilio uses to send click event data after a recipient clicks a shortened link.\n\n### Possible causes\n\n- You did not include the `callbackUrl` field in the request.\n- You left the `CallbackUrl` value out of the Link Shortening domain configuration that Twilio uses for Messaging.\n\n### Possible solutions\n\n- Add a `CallbackUrl` value when you create or update the Link Shortening domain configuration. Twilio accepts `CallbackUrl` in the domain Config subresource.\n- In the Console, open the domain configuration and fill in the Click tracking callback URL field, then save your changes.\n- If you are using the REST API, include `CallbackUrl` in the request payload instead of leaving it blank.\n\n#### Additional resources\n\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Services resource](/docs/messaging/api/service-resource)\n",
    "causes": "* You did not include the `callbackUrl` field in the request.\n* You left the `CallbackUrl` value out of the Link Shortening domain configuration that Twilio uses for Messaging.",
    "solutions": "* Add a `CallbackUrl` value when you create or update the Link Shortening domain configuration. Twilio accepts `CallbackUrl` in the domain Config subresource.\n* In the Console, open the domain configuration and fill in the Click tracking callback URL field, then save your changes.\n* If you are using the REST API, include `CallbackUrl` in the request payload instead of leaving it blank.",
    "description": "This error occurs when a Messaging configuration or request does not include the required `callbackUrl` value. In Messaging Link Shortening, the `Callback URL` is the URL Twilio uses to send click event data after a recipient clicks a shortened link.",
    "date_created": "2022-02-23T21:44:00Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30124,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "MessagingServiceSID cannot be empty or null",
    "secondary_message": "MessagingServiceSID is missing",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a message create request does not include a usable `messagingServiceSid` value. When you send a message with a Messaging Service, Twilio uses that SID to select a sender from the service's Sender Pool.\n\n### Possible causes\n\n- The request omitted the `messagingServiceSid` field.\n- The request included `messagingServiceSid`, but the value was empty, null, or not a valid Messaging Service SID. Twilio expects an SID that matches the `MG` pattern.\n\n### Possible solutions\n\n- Pass a valid `messagingServiceSid` value that matches the Messaging Service SID format (`MG` followed by 32 hexadecimal characters).\n- If you are not using a Messaging Service, provide a valid `from` sender instead. The `from` parameter is required when `MessagingServiceSid` is not passed.\n- If you are using a Messaging Service, omit `from` or set it to a sender from that service's Sender Pool.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The request omitted the `messagingServiceSid` field.\n* The request included `messagingServiceSid`, but the value was empty, null, or not a valid Messaging Service SID. Twilio expects an SID that matches the `MG` pattern.",
    "solutions": "* Pass a valid `messagingServiceSid` value that matches the Messaging Service SID format (`MG` followed by 32 hexadecimal characters).\n* If you are not using a Messaging Service, provide a valid `from` sender instead. The `from` parameter is required when `MessagingServiceSid` is not passed.\n* If you are using a Messaging Service, omit `from` or set it to a sender from that service's Sender Pool.",
    "description": "This error occurs when a message create request does not include a usable `messagingServiceSid` value. When you send a message with a Messaging Service, Twilio uses that SID to select a sender from the service's Sender Pool.",
    "date_created": "2022-03-08T00:31:33Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30125,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Your phone number could not be registered with US A2P 10DLC",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning appears when you try to add a phone number to a Messaging Service that is associated with a US A2P 10DLC Sole Proprietor campaign that already has a registered sender. Sole Proprietor brands are limited to one campaign, and Sole Proprietor campaigns can use only one phone number. If you send SMS or MMS messages to recipients in the US from this phone number before it is registered to an approved campaign, that traffic is treated as unregistered and additional fees may apply.\n\n### Possible causes\n\n- Your Sole Proprietor campaign already has one phone number registered.\n- You tried to add a second phone number to a Messaging Service that is linked to a Sole Proprietor campaign.\n- Your US messaging use case requires more than one sender, which is not supported for Sole Proprietor registration.\n\n### Possible solutions\n\n- Keep the currently registered phone number on the Sole Proprietor campaign if you only need one sender for US messaging.\n- If you want to use a different phone number, remove the existing sender from the Messaging Service associated with the Sole Proprietor campaign, then add the replacement number and allow registration to complete before sending to US recipients.\n- If you need to keep multiple phone numbers or need more scale, register a Standard or Low-Volume Standard brand and campaign, then move your Messaging Service or sender to the newly approved campaign.\n- If you do not need to send messages to recipients in the US with this phone number, continue using it for supported non-US messaging traffic.\n\n#### Additional resources\n\n- [US A2P 10DLC Overview](/docs/messaging/compliance/a2p-10dlc)\n- [Direct Sole Proprietor Registration Overview](/docs/messaging/compliance/a2p-10dlc/direct-sole-proprietor-registration-overview)\n- [Transition from a Sole Proprietor to a Standard Brand](/docs/messaging/compliance/a2p-10dlc/transition-sole-proprietor-to-standard-brand)\n- [Troubleshooting A2P Phone Number registration issues](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-a2p-phone-number-registration-issues)\n",
    "causes": "* Your Sole Proprietor campaign already has one phone number registered.\n* You tried to add a second phone number to a Messaging Service that is linked to a Sole Proprietor campaign.\n* Your US messaging use case requires more than one sender, which is not supported for Sole Proprietor registration.",
    "solutions": "* Keep the currently registered phone number on the Sole Proprietor campaign if you only need one sender for US messaging.\n* If you want to use a different phone number, remove the existing sender from the Messaging Service associated with the Sole Proprietor campaign, then add the replacement number and allow registration to complete before sending to US recipients.\n* If you need to keep multiple phone numbers or need more scale, register a Standard or Low-Volume Standard brand and campaign, then move your Messaging Service or sender to the newly approved campaign.\n* If you do not need to send messages to recipients in the US with this phone number, continue using it for supported non-US messaging traffic.",
    "description": "This warning appears when you try to add a phone number to a Messaging Service that is associated with a US A2P 10DLC Sole Proprietor campaign that already has a registered sender. Sole Proprietor brands are limited to one campaign, and Sole Proprietor campaigns can use only one phone number. If you send SMS or MMS messages to recipients in the US from this phone number before it is registered to an approved campaign, that traffic is treated as unregistered and additional fees may apply.",
    "date_created": "2022-04-12T16:43:11Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30126,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Your 10DLC number failed to be registered ",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means Twilio could not complete the backend registration or deregistration of your US A2P 10DLC phone number. Number registration starts when you add or remove a number from a Messaging Service that is associated with an approved US A2P campaign. If the number reaches `FAILURE`, an unexpected error occurred during configuration with ecosystem partners.\n\n### Possible causes\n\n- The number registration or deregistration request reached the `FAILURE` status during backend configuration with ecosystem partners.\n- The number was added to or removed from a Messaging Service associated with an approved campaign, which triggered a new number registration cycle that did not complete successfully. ([help.twilio.com](https://help.twilio.com/articles/19622397178139-A2P-10DLC-Number-Registration-Best-Practices))\n- Repeatedly removing, re-adding, or moving 10DLC numbers between Messaging Services or accounts can trigger additional registration and deregistration cycles and lead to delays or errors. ([help.twilio.com](https://help.twilio.com/articles/19622397178139-A2P-10DLC-Number-Registration-Best-Practices))\n\n### Possible solutions\n\n- Request the A2P registration status CSV report in Console and verify whether the number is `FAILURE`, `PENDING_REGISTRATION`, `PENDING_DEREGISTRATION`, or `UNREGISTERED`. The report includes the phone number, Campaign SID, and Messaging Service SID so you can confirm the current state before taking action.\n- If the number is `UNREGISTERED`, add it to a Messaging Service that is associated with a verified A2P campaign, then wait for number registration to finish.\n- Avoid removing, re-adding, or moving the number while registration is being processed. Each change starts another provisioning cycle and can add more time or create additional errors. ([help.twilio.com](https://help.twilio.com/articles/19622397178139-A2P-10DLC-Number-Registration-Best-Practices))\n- If the number remains in `FAILURE`, contact Support for investigation.\n\n#### Additional resources\n\n- [A2P 10DLC registration application quickstart](/docs/messaging/compliance/a2p-10dlc/quickstart)\n- [Troubleshooting A2P phone number registration issues](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-a2p-phone-number-registration-issues)\n- [A2P 10DLC Number Registration Best Practices](https://help.twilio.com/articles/19622397178139-A2P-10DLC-Number-Registration-Best-Practices)\n",
    "causes": "* The number registration or deregistration request reached the `FAILURE` status during backend configuration with ecosystem partners.\n* The number was added to or removed from a Messaging Service associated with an approved campaign, which triggered a new number registration cycle that did not complete successfully. ([help.twilio.com](https://help.twilio.com/articles/19622397178139-A2P-10DLC-Number-Registration-Best-Practices))\n* Repeatedly removing, re-adding, or moving 10DLC numbers between Messaging Services or accounts can trigger additional registration and deregistration cycles and lead to delays or errors. ([help.twilio.com](https://help.twilio.com/articles/19622397178139-A2P-10DLC-Number-Registration-Best-Practices))",
    "solutions": "* Request the A2P registration status CSV report in Console and verify whether the number is `FAILURE`, `PENDING_REGISTRATION`, `PENDING_DEREGISTRATION`, or `UNREGISTERED`. The report includes the phone number, Campaign SID, and Messaging Service SID so you can confirm the current state before taking action.\n* If the number is `UNREGISTERED`, add it to a Messaging Service that is associated with a verified A2P campaign, then wait for number registration to finish.\n* Avoid removing, re-adding, or moving the number while registration is being processed. Each change starts another provisioning cycle and can add more time or create additional errors. ([help.twilio.com](https://help.twilio.com/articles/19622397178139-A2P-10DLC-Number-Registration-Best-Practices))\n* If the number remains in `FAILURE`, contact Support for investigation.",
    "description": "This error means Twilio could not complete the backend registration or deregistration of your US A2P 10DLC phone number. Number registration starts when you add or remove a number from a Messaging Service that is associated with an approved US A2P campaign. If the number reaches `FAILURE`, an unexpected error occurred during configuration with ecosystem partners.",
    "date_created": "2024-02-16T19:09:26Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30127,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "MessagingServiceSID is invalid.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n`MessagingServiceSID` is invalid when the value you provide does not match a valid Messaging Service SID. Messaging Service SIDs are 34-character identifiers that start with `MG`.\n\n### Possible causes\n\n- You passed a `MessagingServiceSID` value that does not use the `MG` prefix or does not contain 32 hexadecimal characters after the prefix.\n- The SID does not identify a Messaging Service resource.\n- You copied the SID from the wrong account or from an unrelated resource. This is an inference based on how Twilio uses SIDs to identify specific resources.\n\n### Possible solutions\n\n- Replace the value with a valid Messaging Service SID from the Services resource or Console. Use a SID that matches `^MG[0-9a-fA-F]{32}$`.\n- If you are creating a message, send the SID in the `MessagingServiceSid` parameter. Twilio lets you send a message with `MessagingServiceSid` instead of `From`.\n- Make sure the Messaging Service exists and belongs to the account making the request. Twilio identifies Messaging Service resources with SIDs, and the Messages resource requires the sender to belong to the creating account.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Services resource](/docs/messaging/api/service-resource)\n",
    "causes": "* You passed a `MessagingServiceSID` value that does not use the `MG` prefix or does not contain 32 hexadecimal characters after the prefix.\n* The SID does not identify a Messaging Service resource.\n* You copied the SID from the wrong account or from an unrelated resource. This is an inference based on how Twilio uses SIDs to identify specific resources.",
    "solutions": "* Replace the value with a valid Messaging Service SID from the Services resource or Console. Use a SID that matches `^MG[0-9a-fA-F]{32}$`.\n* If you are creating a message, send the SID in the `MessagingServiceSid` parameter. Twilio lets you send a message with `MessagingServiceSid` instead of `From`.\n* Make sure the Messaging Service exists and belongs to the account making the request. Twilio identifies Messaging Service resources with SIDs, and the Messages resource requires the sender to belong to the creating account.",
    "description": "`MessagingServiceSID` is invalid when the value you provide does not match a valid Messaging Service SID. Messaging Service SIDs are 34-character identifiers that start with `MG`.",
    "date_created": "2022-07-11T18:41:16Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30128,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "MessagingServiceSidsAction is invalid",
    "secondary_message": "MessagingServiceSidsAction is invalid, please check for valid action types",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when `MessagingServiceSidAction` uses an unsupported value. Use only `ADD`, `DELETE`, or `REPLACE`.\n\n### Possible causes\n\n- The request includes a `MessagingServiceSidAction` value that is not `ADD`, `DELETE`, or `REPLACE`.\n\n### Possible solutions\n\n- Update `MessagingServiceSidAction` to a supported value: `ADD`, `DELETE`, or `REPLACE`.\n- Check the request payload for typos or an unexpected action value before you send the request.\n\n#### Additional resources\n\n- [Services resource](/docs/messaging/api/service-resource)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The request includes a `MessagingServiceSidAction` value that is not `ADD`, `DELETE`, or `REPLACE`.",
    "solutions": "* Update `MessagingServiceSidAction` to a supported value: `ADD`, `DELETE`, or `REPLACE`.\n* Check the request payload for typos or an unexpected action value before you send the request.",
    "description": "This error occurs when `MessagingServiceSidAction` uses an unsupported value. Use only `ADD`, `DELETE`, or `REPLACE`.",
    "date_created": "2022-07-08T12:03:04Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30129,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Certificate is self signed",
    "secondary_message": "Please use a certificate with valid signature",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns 30129 when the TLS certificate used for a Messaging Service Link Shortening domain is self-signed, which Twilio won't accept for HTTPS connections. Link Shortening serves redirects over HTTPS, and Twilio requires a certificate that it can validate.\n\n### Possible causes\n\n- You uploaded a self-signed TLS certificate instead of a certificate signed by a trusted certificate authority.\n- The Link Shortening domain is using certificate material that Twilio cannot validate for HTTPS redirects.\n\n### Possible solutions\n\n- Replace the self-signed certificate with a certificate from a trusted certificate authority, such as Let's Encrypt.\n- For Link Shortening, use the Twilio-managed certificate option or upload a valid PEM-formatted certificate and private key. Make sure the certificate starts with `-----BEGIN CERTIFICATE-----` and the private key starts with `-----BEGIN PRIVATE KEY-----`.\n- Provide the full certificate chain when you upload your certificate so Twilio can establish trust for HTTPS redirects.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Security](/docs/usage/security)\n",
    "causes": "* You uploaded a self-signed TLS certificate instead of a certificate signed by a trusted certificate authority.\n* The Link Shortening domain is using certificate material that Twilio cannot validate for HTTPS redirects.",
    "solutions": "* Replace the self-signed certificate with a certificate from a trusted certificate authority, such as Let's Encrypt.\n* For Link Shortening, use the Twilio-managed certificate option or upload a valid PEM-formatted certificate and private key. Make sure the certificate starts with `-----BEGIN CERTIFICATE-----` and the private key starts with `-----BEGIN PRIVATE KEY-----`.\n* Provide the full certificate chain when you upload your certificate so Twilio can establish trust for HTTPS redirects.",
    "description": "Twilio returns 30129 when the TLS certificate used for a Messaging Service Link Shortening domain is self-signed, which Twilio won't accept for HTTPS connections. Link Shortening serves redirects over HTTPS, and Twilio requires a certificate that it can validate.",
    "date_created": "2022-07-15T00:15:20Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30130,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Messaging Service SID already belongs in another domain configuration.",
    "secondary_message": "Messaging Service SID is already associated with a domain configuration in the account",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to associate a `MessagingServiceSid` with a Link Shortening domain configuration, but that Messaging Service is already associated with another domain configuration in your account. Link Shortening works with Messaging Services, and the `MessagingServiceSid` you use must be associated with the correct Link Shortening domain.\n\n### Possible causes\n\n- The `MessagingServiceSid` in your request is already associated with a different Link Shortening domain configuration.\n- You selected a Messaging Service in Console that is already configured for Link Shortening under another domain.\n- Your API request used the wrong `MessagingServiceSid` when you sent a `POST` request to the Link Shortening domain's Messaging Services subresource.\n\n### Possible solutions\n\n- Open Console, go to Messaging > Messaging Services, select the Messaging Service, and review the Link Shortening domain assigned to it. If the Messaging Service is already attached to another domain, keep that association or choose a different Messaging Service.\n- If you want to use this Messaging Service with a different Link Shortening domain, remove the existing domain association first, then associate the Messaging Service with the correct domain.\n- If you use the API, verify the `MessagingServiceSid` before sending the request. If needed, retrieve the current domain configuration for that Messaging Service so you can confirm which domain already owns the association.\n- If you need multiple domains for different use cases, create separate Messaging Services and associate each one with the appropriate Link Shortening domain.\n\n#### Additional resources\n\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The `MessagingServiceSid` in your request is already associated with a different Link Shortening domain configuration.\n* You selected a Messaging Service in Console that is already configured for Link Shortening under another domain.\n* Your API request used the wrong `MessagingServiceSid` when you sent a `POST` request to the Link Shortening domain's Messaging Services subresource.",
    "solutions": "* Open Console, go to Messaging > Messaging Services, select the Messaging Service, and review the Link Shortening domain assigned to it. If the Messaging Service is already attached to another domain, keep that association or choose a different Messaging Service.\n* If you want to use this Messaging Service with a different Link Shortening domain, remove the existing domain association first, then associate the Messaging Service with the correct domain.\n* If you use the API, verify the `MessagingServiceSid` before sending the request. If needed, retrieve the current domain configuration for that Messaging Service so you can confirm which domain already owns the association.\n* If you need multiple domains for different use cases, create separate Messaging Services and associate each one with the appropriate Link Shortening domain.",
    "description": "This error occurs when you try to associate a `MessagingServiceSid` with a Link Shortening domain configuration, but that Messaging Service is already associated with another domain configuration in your account. Link Shortening works with Messaging Services, and the `MessagingServiceSid` you use must be associated with the correct Link Shortening domain.",
    "date_created": "2022-08-02T00:33:45Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30131,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Domain's certificate will expire soon",
    "secondary_message": "A TLS certificate associated with one of your domains will expire soon.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning appears when the TLS certificate on your Link Shortening domain is approaching expiration. Renew or replace the certificate before it expires. If the certificate expires, Link Shortening can fail, shortened links can stop working, and messages may be sent with the original long links if `ContinueOnFailure` is enabled.\n\n### Possible causes\n\n- You use a customer-managed certificate and have not uploaded a replacement certificate for the domain.\n- The certificate currently associated with the domain is close to its expiration date.\n- You use a Twilio-managed certificate, but your DNS CAA records do not allow letsencrypt.org to request or renew the certificate.\n- Your certificate rotation process did not renew the certificate before the current one neared expiration.\n\n### Possible solutions\n\n- Use a Twilio-managed certificate when possible. This is the preferred certificate management option for Link Shortening.\n- If you bring your own certificate, generate a new certificate and private key for the exact domain or subdomain you use with Link Shortening, then upload the replacement certificate before the current one expires.\n- Make sure the certificate and private key are in PEM format. The certificate must begin with `-----BEGIN CERTIFICATE-----` and end with `-----END CERTIFICATE-----`. The private key must begin with `-----BEGIN PRIVATE KEY-----` and end with `-----END PRIVATE KEY-----`, or use PKCS #8 format.\n- Upload the full certificate chain as a single file. Include the server certificate, all intermediate CA certificates, and the root CA certificate.\n- If you use the API, send a `POST` request to the domain's Certificate subresource and provide the concatenated certificate and private key in `TlsCert`.\n- After uploading a replacement certificate, check validation status with a `GET` request to the Certificate subresource until `cert_in_validation` is `null`.\n- If you use CAA records with a Twilio-managed certificate, add letsencrypt.org to your CAA configuration so certificate requests and renewals can succeed.\n- Review your Link Shortening domain configuration for `ContinueOnFailure`. If this setting is enabled, Twilio can continue sending messages with long links during a certificate problem, which can increase message segments and costs.\n- Set up an Alarm for 30131 so you receive notice before the certificate expires.\n\n#### Additional resources\n\n- [Link Shortening onboarding guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Alarms](/docs/usage/troubleshooting/alarms)\n",
    "causes": "* You use a customer-managed certificate and have not uploaded a replacement certificate for the domain.\n* The certificate currently associated with the domain is close to its expiration date.\n* You use a Twilio-managed certificate, but your DNS CAA records do not allow letsencrypt.org to request or renew the certificate.\n* Your certificate rotation process did not renew the certificate before the current one neared expiration.",
    "solutions": "* Use a Twilio-managed certificate when possible. This is the preferred certificate management option for Link Shortening.\n* If you bring your own certificate, generate a new certificate and private key for the exact domain or subdomain you use with Link Shortening, then upload the replacement certificate before the current one expires.\n* Make sure the certificate and private key are in PEM format. The certificate must begin with `-----BEGIN CERTIFICATE-----` and end with `-----END CERTIFICATE-----`. The private key must begin with `-----BEGIN PRIVATE KEY-----` and end with `-----END PRIVATE KEY-----`, or use PKCS #8 format.\n* Upload the full certificate chain as a single file. Include the server certificate, all intermediate CA certificates, and the root CA certificate.\n* If you use the API, send a `POST` request to the domain's Certificate subresource and provide the concatenated certificate and private key in `TlsCert`.\n* After uploading a replacement certificate, check validation status with a `GET` request to the Certificate subresource until `cert_in_validation` is `null`.\n* If you use CAA records with a Twilio-managed certificate, add letsencrypt.org to your CAA configuration so certificate requests and renewals can succeed.\n* Review your Link Shortening domain configuration for `ContinueOnFailure`. If this setting is enabled, Twilio can continue sending messages with long links during a certificate problem, which can increase message segments and costs.\n* Set up an Alarm for 30131 so you receive notice before the certificate expires.",
    "description": "This warning appears when the TLS certificate on your Link Shortening domain is approaching expiration. Renew or replace the certificate before it expires. If the certificate expires, Link Shortening can fail, shortened links can stop working, and messages may be sent with the original long links if `ContinueOnFailure` is enabled.",
    "date_created": "2022-08-02T23:00:17Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30132,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Certificate cannot be validated. ",
    "secondary_message": "We were not able to validate your certificate for your domain.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio can't validate the TLS certificate you uploaded for a Link Shortening domain. For Link Shortening, the certificate and private key must be in `PEM` format, use the required `BEGIN` and `END` lines, and match the correct domain or subdomain. Provide the full chain of trust when you encrypt the connection.\n\n### Possible causes\n\n- The certificate was uploaded in the wrong format or does not start and end with the required `PEM` boundaries.\n- The private key is missing, malformed, or not in `PEM` or `PKCS #8` format.\n- The certificate and key were generated for a different domain or subdomain.\n- The full chain of trust was not provided with the upload.\n\n### Possible solutions\n\n- Upload a certificate and private key in `PEM` format, and confirm the certificate starts with `-----BEGIN CERTIFICATE-----` and ends with `-----END CERTIFICATE-----`.\n- Confirm the private key starts with `-----BEGIN PRIVATE KEY-----` and ends with `-----END PRIVATE KEY-----`, or use `PKCS #8` format.\n- If you use a subdomain, generate the certificate and key for that subdomain.\n- Upload the full chain of trust as a single file, including the server certificate, intermediate `CA` certificates, and root `CA` certificate.\n- Upload the certificate again in the Console or send the `POST` request to the Link Shortening domain's Certificate subresource, then check the validation status after up to five minutes.\n\n#### Additional resources\n\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n",
    "causes": "* The certificate was uploaded in the wrong format or does not start and end with the required `PEM` boundaries.\n* The private key is missing, malformed, or not in `PEM` or `PKCS #8` format.\n* The certificate and key were generated for a different domain or subdomain.\n* The full chain of trust was not provided with the upload.",
    "solutions": "* Upload a certificate and private key in `PEM` format, and confirm the certificate starts with `-----BEGIN CERTIFICATE-----` and ends with `-----END CERTIFICATE-----`.\n* Confirm the private key starts with `-----BEGIN PRIVATE KEY-----` and ends with `-----END PRIVATE KEY-----`, or use `PKCS #8` format.\n* If you use a subdomain, generate the certificate and key for that subdomain.\n* Upload the full chain of trust as a single file, including the server certificate, intermediate `CA` certificates, and root `CA` certificate.\n* Upload the certificate again in the Console or send the `POST` request to the Link Shortening domain's Certificate subresource, then check the validation status after up to five minutes.",
    "description": "Twilio can't validate the TLS certificate you uploaded for a Link Shortening domain. For Link Shortening, the certificate and private key must be in `PEM` format, use the required `BEGIN` and `END` lines, and match the correct domain or subdomain. Provide the full chain of trust when you encrypt the connection.",
    "date_created": "2022-08-25T17:18:02Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 30133,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The certificate could not be uploaded.",
    "secondary_message": "The certificate could not be uploaded due to invalid system state.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a certificate upload for a Link Shortening domain cannot be completed because the current domain state is invalid.\n\n### Possible causes\n\n- The associated Link Shortening domain resource was deleted and recreated after the previous certificate upload.\n- The certificate upload request is using a stale domain state instead of the current Link Shortening domain configuration.\n\n### Possible solutions\n\n- Wait a few minutes, then try the upload again. Link Shortening certificate validation can take up to five minutes.\n- Confirm that you are uploading the certificate to the current Link Shortening domain. If you deleted and recreated the domain, retry from the current domain in Console or use the current Domain SID in your API request.\n- If you use the API, resend the certificate upload to the Link Shortening domain's Certificate subresource after the domain has finished processing.\n\n#### Additional resources\n\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Messaging Service resource](/docs/messaging/api/service-resource)\n",
    "causes": "* The associated Link Shortening domain resource was deleted and recreated after the previous certificate upload.\n* The certificate upload request is using a stale domain state instead of the current Link Shortening domain configuration.",
    "solutions": "* Wait a few minutes, then try the upload again. Link Shortening certificate validation can take up to five minutes.\n* Confirm that you are uploading the certificate to the current Link Shortening domain. If you deleted and recreated the domain, retry from the current domain in Console or use the current Domain SID in your API request.\n* If you use the API, resend the certificate upload to the Link Shortening domain's Certificate subresource after the domain has finished processing.",
    "description": "Twilio returns this error when a certificate upload for a Link Shortening domain cannot be completed because the current domain state is invalid.",
    "date_created": "2022-10-13T00:06:22Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30134,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Dns Setup for Link shortening",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error indicates that the DNS configuration for your Link Shortening domain does not match the setup required for Twilio Link Shortening. Link Shortening works only after you complete onboarding for a domain or subdomain that you own and use with a Messaging Service.\n\n### Possible causes\n\n- The domain or subdomain you configured for Link Shortening does not have the required DNS record in place.\n- You are using a subdomain, but its CNAME record does not point to lsct.ashburn.us1.twilio.com.\n- You are using a root domain, but it is not configured with CNAME Flattening, ALIAS, or ANAME to the required target.\n- You are using the A record fallback for a root domain, but the record values do not match the current IPs provided by Twilio Support.\n- Your DNS changes were saved recently and have not finished propagating yet.\n- The domain or subdomain is not dedicated to Link Shortening, which can prevent the required DNS configuration from being applied cleanly.\n\n### Possible solutions\n\n- Use a domain or subdomain that you own and reserve only for Link Shortening. Verify that it is added to your Twilio Organization and associated with the Messaging Service you want to use.\n- If you are using a subdomain, create or update its CNAME record so it points to lsct.ashburn.us1.twilio.com.\n- If you are using a root domain, use CNAME Flattening, ALIAS, or ANAME when your DNS provider supports it.\n- If your DNS provider does not support CNAME Flattening for a root domain, contact Twilio Support and update the root domain A record with the current IPs they provide.\n- After updating DNS, allow time for propagation and then try the request again.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The domain or subdomain you configured for Link Shortening does not have the required DNS record in place.\n* You are using a subdomain, but its CNAME record does not point to lsct.ashburn.us1.twilio.com.\n* You are using a root domain, but it is not configured with CNAME Flattening, ALIAS, or ANAME to the required target.\n* You are using the A record fallback for a root domain, but the record values do not match the current IPs provided by Twilio Support.\n* Your DNS changes were saved recently and have not finished propagating yet.\n* The domain or subdomain is not dedicated to Link Shortening, which can prevent the required DNS configuration from being applied cleanly.",
    "solutions": "* Use a domain or subdomain that you own and reserve only for Link Shortening. Verify that it is added to your Twilio Organization and associated with the Messaging Service you want to use.\n* If you are using a subdomain, create or update its CNAME record so it points to lsct.ashburn.us1.twilio.com.\n* If you are using a root domain, use CNAME Flattening, ALIAS, or ANAME when your DNS provider supports it.\n* If your DNS provider does not support CNAME Flattening for a root domain, contact Twilio Support and update the root domain A record with the current IPs they provide.\n* After updating DNS, allow time for propagation and then try the request again.",
    "description": "This error indicates that the DNS configuration for your Link Shortening domain does not match the setup required for Twilio Link Shortening. Link Shortening works only after you complete onboarding for a domain or subdomain that you own and use with a Messaging Service.",
    "date_created": "2024-06-11T22:28:33Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30135,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Unable to issue certificate",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nDomain DNS setup is not completed. There is an issue with the certificate authority\n\n### Possible solutions\n\nVerify your Domain DNS setup. If you continue seeing this error, contact the Support team.\n",
    "causes": "Domain DNS setup is not completed. There is an issue with the certificate authority",
    "solutions": "Verify your Domain DNS setup. If you continue seeing this error, contact the Support team.",
    "description": "",
    "date_created": "2024-06-27T15:37:13Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 30136,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Unable to renew certificate",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nDomain DNS setup is not completed. There is an issue with the certificate authority\n\n### Possible solutions\n\nVerify your Domain DNS setup. If you continue seeing this error, contact the Support team.\n",
    "causes": "Domain DNS setup is not completed. There is an issue with the certificate authority",
    "solutions": "Verify your Domain DNS setup. If you continue seeing this error, contact the Support team.",
    "description": "",
    "date_created": "2024-06-27T15:37:11Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 30137,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Domain messaging service mapping not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when attempting to perform operations on a messaging service that is not associated with any domain in the system.\n\n### Possible causes\n\nThe error can be triggered when trying to delete or access a messaging service mapping that doesn't exist in the database, or when attempting to perform operations on a messaging service that hasn't been properly associated with a domain.\n\n### Possible solutions\n\nEnsure the messaging service is properly associated with a domain before performing operations, verify the messaging service SID is valid and exists in your account, and check that the domain-messaging service mapping was successfully created in the database.\n",
    "causes": "The error can be triggered when trying to delete or access a messaging service mapping that doesn't exist in the database, or when attempting to perform operations on a messaging service that hasn't been properly associated with a domain.",
    "solutions": "Ensure the messaging service is properly associated with a domain before performing operations, verify the messaging service SID is valid and exists in your account, and check that the domain-messaging service mapping was successfully created in the database.",
    "description": "This error occurs when attempting to perform operations on a messaging service that is not associated with any domain in the system.",
    "date_created": "2025-06-03T20:41:05.394Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30139,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "URL not valid for link shortening",
    "secondary_message": "The URL in the message does not comply with the RFC 3986 standard.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a message with link shortening enabled and one or more URLs in the message body are not valid. To shorten a URL, Twilio requires a valid URL with properly encoded special characters.\n\n### Possible causes\n\n- A URL in the message body contains special characters that were not percent-encoded.\n- A URL includes a raw `%` character that is not followed by two hexadecimal digits.\n- A path or query string contains non-ASCII or reserved characters such as `ñ` or `=` without encoding.\n- A URL is missing a valid scheme or host.\n\n### Possible solutions\n\n- Percent-encode special characters in each URL before you send the message.\n- Confirm that every URL includes a valid scheme and host, such as `https://example.com`.\n- Encode non-ASCII characters in the path. For example, change `https://example.com/hola/mañana` to `https://example.com/hola/ma%C3%B1ana`.\n- Encode reserved query characters when they are part of a parameter value. For example, change `https://example.com/callback?token=abc123==` to `https://example.com/callback?token=abc123%3D%3D`.\n- Encode a literal `%` as `%25`. For example, change `https://example.com/path%test` to `https://example.com/path%25test`.\n- Test the final message body with link shortening enabled before you send at scale.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* A URL in the message body contains special characters that were not percent-encoded.\n* A URL includes a raw `%` character that is not followed by two hexadecimal digits.\n* A path or query string contains non-ASCII or reserved characters such as `ñ` or `=` without encoding.\n* A URL is missing a valid scheme or host.",
    "solutions": "* Percent-encode special characters in each URL before you send the message.\n* Confirm that every URL includes a valid scheme and host, such as `https://example.com`.\n* Encode non-ASCII characters in the path. For example, change `https://example.com/hola/mañana` to `https://example.com/hola/ma%C3%B1ana`.\n* Encode reserved query characters when they are part of a parameter value. For example, change `https://example.com/callback?token=abc123==` to `https://example.com/callback?token=abc123%3D%3D`.\n* Encode a literal `%` as `%25`. For example, change `https://example.com/path%test` to `https://example.com/path%25test`.\n* Test the final message body with link shortening enabled before you send at scale.",
    "description": "This error occurs when you send a message with link shortening enabled and one or more URLs in the message body are not valid. To shorten a URL, Twilio requires a valid URL with properly encoded special characters.",
    "date_created": "2025-09-11T20:37:54.371Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30140,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Certificates with OCSP required are not supported",
    "secondary_message": "TLS certificates with the MUST\\_STAPLE attribute are not supported by the link shortener",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you upload a TLS certificate for Link Shortening that requires OCSP stapling through the `MUST_STAPLE` attribute. Link Shortening does not support certificates that require OCSP stapling.\n\n### Possible causes\n\n- Your Bring Your Own Certificate for a Link Shortening domain was generated with the `MUST_STAPLE` attribute.\n- The certificate requires OCSP stapling, which Link Shortening does not support.\n\n### Possible solutions\n\n- Generate a new PEM-formatted certificate and private key without the `MUST_STAPLE` attribute.\n- Upload the replacement certificate to your Link Shortening domain. Allow up to five minutes for certificate validation to complete.\n- Use a Twilio-managed certificate instead of uploading your own certificate. If your DNS uses CAA records, include `letsencrypt.org` so Twilio can request and renew the certificate.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Link Shortening Onboarding Guide](/docs/messaging/features/link-shortening/onboarding-guide)\n",
    "causes": "* Your Bring Your Own Certificate for a Link Shortening domain was generated with the `MUST_STAPLE` attribute.\n* The certificate requires OCSP stapling, which Link Shortening does not support.",
    "solutions": "* Generate a new PEM-formatted certificate and private key without the `MUST_STAPLE` attribute.\n* Upload the replacement certificate to your Link Shortening domain. Allow up to five minutes for certificate validation to complete.\n* Use a Twilio-managed certificate instead of uploading your own certificate. If your DNS uses CAA records, include `letsencrypt.org` so Twilio can request and renew the certificate.",
    "description": "This error occurs when you upload a TLS certificate for Link Shortening that requires OCSP stapling through the `MUST_STAPLE` attribute. Link Shortening does not support certificates that require OCSP stapling.",
    "date_created": "2025-12-03T19:48:54.859Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30400,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Parameters are not valid ",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThere is an issue with the request body.\n\n### Possible causes\n\n- `POST` body is missing parameters Body or Status.\n- Attempted to cancel the message and redact the message body at the same time.\n- Value for Status is invalid.\n- Message body redaction request does not have empty Body parameter.\n\n### Possible solutions\n\n- To cancel the message, include Status: canceled.\n- To redact the message body, ensure Body is empty. More details [here](https://support.twilio.com/hc/en-us/articles/223133687-Deleting-messages-message-media-or-message-bodies).\n- If you want to cancel and redact the message body: First, request the message to be canceled. Then, request for message body redaction. More details [here](https://support.twilio.com/hc/en-us/articles/223133687-Deleting-messages-message-media-or-message-bodies).\n",
    "causes": "* `POST` body is missing parameters Body or Status.\n* Attempted to cancel the message and redact the message body at the same time.\n* Value for Status is invalid.\n* Message body redaction request does not have empty Body parameter.",
    "solutions": "* To cancel the message, include Status: canceled.\n* To redact the message body, ensure Body is empty. More details [here](https://support.twilio.com/hc/en-us/articles/223133687-Deleting-messages-message-media-or-message-bodies).\n* If you want to cancel and redact the message body: First, request the message to be canceled. Then, request for message body redaction. More details [here](https://support.twilio.com/hc/en-us/articles/223133687-Deleting-messages-message-media-or-message-bodies).",
    "description": "There is an issue with the request body.",
    "date_created": "2021-08-06T22:33:36Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30404,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Found",
    "secondary_message": "The resource was not found.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe resource was not found. Here are some examples of cases that may trigger a 404 error.\n\n### Possible causes\n\nUsing a base URL that is not `api.twilio.com`. For example, making requests to `twilio.com` or `www.twilio.com` will not work.\n\n### Possible solutions\n\nConfirm that the AccountSid and MessagingServiceSid is correct\n",
    "causes": "Using a base URL that is not `api.twilio.com`. For example, making requests to `twilio.com` or `www.twilio.com` will not work.",
    "solutions": "Confirm that the AccountSid and MessagingServiceSid is correct",
    "description": "The resource was not found. Here are some examples of cases that may trigger a 404 error.",
    "date_created": "2022-10-27T18:45:37Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 30409,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "This message cannot be canceled",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to cancel a message that is no longer in the `scheduled` state. Twilio lets you cancel a scheduled message by updating the `Message` resource and setting `Status` to `canceled`. The `canceled` status applies only to messages scheduled with a Messaging Service.\n\n### Possible causes\n\n- You attempted to cancel the message after it had already moved past `scheduled`. Cancellation applies only to scheduled messages, so this is the only point at which cancellation is available.\n- The message was not created as a scheduled message with a Messaging Service. The `canceled` status is only available for scheduled messages sent with a Messaging Service.\n- The message had already reached a later lifecycle state such as `queued`, `sending`, `sent`, `delivered`, `failed`, or `undelivered`. In that case, canceling it through the `Message` resource is no longer available.\n\n### Possible solutions\n\n- Cancel the message while it is still `scheduled` by updating the `Message` resource and setting `Status` to `canceled`.\n- Check the current `Status` of the `Message` resource before sending the cancellation request. If the status is no longer `scheduled`, create a new message instead of trying to cancel the existing one.\n- Use Messaging Service scheduled messages when you need cancellation support, since the documented cancellation flow applies to that message type.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Message resource](/docs/messaging/api/message-resource)\n- [Debugging Common Issues with SMS](/docs/messaging/guides/debugging-common-issues)\n",
    "causes": "* You attempted to cancel the message after it had already moved past `scheduled`. Cancellation applies only to scheduled messages, so this is the only point at which cancellation is available.\n* The message was not created as a scheduled message with a Messaging Service. The `canceled` status is only available for scheduled messages sent with a Messaging Service.\n* The message had already reached a later lifecycle state such as `queued`, `sending`, `sent`, `delivered`, `failed`, or `undelivered`. In that case, canceling it through the `Message` resource is no longer available.",
    "solutions": "* Cancel the message while it is still `scheduled` by updating the `Message` resource and setting `Status` to `canceled`.\n* Check the current `Status` of the `Message` resource before sending the cancellation request. If the status is no longer `scheduled`, create a new message instead of trying to cancel the existing one.\n* Use Messaging Service scheduled messages when you need cancellation support, since the documented cancellation flow applies to that message type.",
    "description": "This error occurs when you try to cancel a message that is no longer in the `scheduled` state. Twilio lets you cancel a scheduled message by updating the `Message` resource and setting `Status` to `canceled`. The `canceled` status applies only to messages scheduled with a Messaging Service.",
    "date_created": "2021-08-06T22:34:55Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 30410,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Provider Timeout Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis Messaging error indicates that the provider used may be experiencing disruptions that result in errors or request timeouts. The message fails and is not retried to avoid duplicate delivery.\n\n### Possible causes\n\n- The provider is experiencing a service disruption or a request timeout.\n\n### Possible solutions\n\n- Try sending the message again later.\n- Use the Console Debugger in the Twilio Console to review message delivery errors before you resend.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Troubleshooting](/docs/comms/troubleshooting)\n",
    "causes": "* The provider is experiencing a service disruption or a request timeout.",
    "solutions": "* Try sending the message again later.\n* Use the Console Debugger in the Twilio Console to review message delivery errors before you resend.",
    "description": "This Messaging error indicates that the provider used may be experiencing disruptions that result in errors or request timeouts. The message fails and is not retried to avoid duplicate delivery.",
    "date_created": "2022-04-28T22:33:09Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 30436,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Phone Number SID",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `tollfreePhoneNumberSid` value in a toll-free verification request isn't a valid phone number SID for your account. Use the `PN` SID of the toll-free IncomingPhoneNumber resource associated with the verification request.\n\n### Possible causes\n\n- The phone number SID doesn't exist or doesn't belong to your account.\n- The phone number SID isn't a 34-character string with the `PN` prefix.\n- The request uses a SID that isn't the phone number resource linked to the toll-free verification submission.\n\n### Possible solutions\n\n- Set `tollfreePhoneNumberSid` to the SID of a toll-free number you own in the same account that submits the verification request.\n- Confirm that the SID starts with `PN` and contains 34 characters before you submit the request.\n- Fetch or list your IncomingPhoneNumber resources, copy the correct `sid` value for the toll-free number, and retry the request with that SID.\n\n#### Additional resources\n\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n",
    "causes": "* The phone number SID doesn't exist or doesn't belong to your account.\n* The phone number SID isn't a 34-character string with the `PN` prefix.\n* The request uses a SID that isn't the phone number resource linked to the toll-free verification submission.",
    "solutions": "* Set `tollfreePhoneNumberSid` to the SID of a toll-free number you own in the same account that submits the verification request.\n* Confirm that the SID starts with `PN` and contains 34 characters before you submit the request.\n* Fetch or list your IncomingPhoneNumber resources, copy the correct `sid` value for the toll-free number, and retry the request with that SID.",
    "description": "This error occurs when the `tollfreePhoneNumberSid` value in a toll-free verification request isn't a valid phone number SID for your account. Use the `PN` SID of the toll-free IncomingPhoneNumber resource associated with the verification request.",
    "date_created": "2023-05-08T22:36:15Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 30437,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Edit time expired",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a rejected toll-free verification is not corrected and resubmitted within the seven-day edit window. After that window expires, the toll-free number remains `Restricted`. A later resubmission is handled like a new verification instead of a priority resubmission.\n\nAs of January 31, 2024, unverified Toll-Free numbers are blocked from sending messages to the United States and Canada until verification is approved. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n\n### Possible causes\n\n- You did not update and resubmit the rejected verification within seven days of the rejection.\n- The `editExpiration` timestamp for the rejected verification passed before you completed your corrections.\n- You waited until after the priority resubmission window expired to submit corrected business or compliance information.\n\n### Possible solutions\n\n- Review the rejection details for the toll-free number in Console under Regulatory Information before you resubmit.\n- If you use the API, check `edit_allowed`, `edit_expiration`, and `rejection_reasons` on the verification record so you can determine whether to edit the existing request or create a new one.\n- Correct the rejected verification details and resubmit the request with complete and accurate business, website, use case, opt-in, and sample message information.\n- If the seven-day window has already expired, submit the corrected verification anyway. It will be processed in the standard queue instead of the priority queue. If the request is no longer editable through the API, create a new verification request.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n",
    "causes": "* You did not update and resubmit the rejected verification within seven days of the rejection.\n* The `editExpiration` timestamp for the rejected verification passed before you completed your corrections.\n* You waited until after the priority resubmission window expired to submit corrected business or compliance information.",
    "solutions": "* Review the rejection details for the toll-free number in Console under Regulatory Information before you resubmit.\n* If you use the API, check `edit_allowed`, `edit_expiration`, and `rejection_reasons` on the verification record so you can determine whether to edit the existing request or create a new one.\n* Correct the rejected verification details and resubmit the request with complete and accurate business, website, use case, opt-in, and sample message information.\n* If the seven-day window has already expired, submit the corrected verification anyway. It will be processed in the standard queue instead of the priority queue. If the request is no longer editable through the API, create a new verification request.",
    "description": "This error occurs when a rejected toll-free verification is not corrected and resubmitted within the seven-day edit window. After that window expires, the toll-free number remains `Restricted`. A later resubmission is handled like a new verification instead of a priority resubmission. As of January 31, 2024, unverified Toll-Free numbers are blocked from sending messages to the United States and Canada until verification is approved. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))",
    "date_created": "2023-05-18T18:16:32Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30440,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Unknown Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe toll-free phone number cannot be verified because Twilio returned an unknown error during the verification review. Messaging traffic on this Toll-Free phone number is blocked.\n\n### Possible causes\n\n- Twilio could not determine a specific rejection reason for the toll-free verification request.\n\n### Possible solutions\n\n- Contact Twilio Customer Support to investigate the rejection and determine the next step.\n- Review Toll-Free best practices before you submit a new verification request.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Buying a toll free number with Twilio](https://help.twilio.com/articles/223183168-Buying-a-toll-free-number-with-Twilio)\n",
    "causes": "* Twilio could not determine a specific rejection reason for the toll-free verification request.",
    "solutions": "* Contact Twilio Customer Support to investigate the rejection and determine the next step.\n* Review Toll-Free best practices before you submit a new verification request.",
    "description": "The toll-free phone number cannot be verified because Twilio returned an unknown error during the verification review. Messaging traffic on this Toll-Free phone number is blocked.",
    "date_created": "2022-09-30T17:06:03Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 30441,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free phone number verification rejection - Disallowed: SHAFT - Sex",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nWe rejected this Toll-Free verification request because the submission was associated with the SHAFT sex category. Sex-related use cases are forbidden for SMS and MMS in the United States and Canada. As of January 31, 2024, only fully verified Toll-Free numbers can send messages to the United States and Canada, so messaging on this number remains blocked until the number is verified.\n\n### Possible causes\n\n- The business, campaign, or messaging use case described in the verification request is sex-related.\n- The website, opt-in flow, or production message samples in the submission contain adult or sexual content, or make the use case appear to be sex-related.\n- The verification request does not meet Toll-Free verification requirements because the stated use case conflicts with forbidden message category rules for SMS and MMS in the United States and Canada.\n\n### Possible solutions\n\n- If your business or messaging program is sex-related, do not use this Toll-Free number for SMS or MMS traffic to the United States or Canada. This use case cannot be approved for Toll-Free verification.\n- If the rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business, opt-in method, website, and representative message samples.\n- Review the submitted use case summary, website, and message samples before making changes. Make sure they accurately describe your business and do not contain content that could be interpreted as a forbidden sex-related use case.\n- If you still need to reach recipients for a use case that cannot be approved for Toll-Free SMS or MMS, evaluate another channel such as SendGrid Email API or Programmable Voice if it fits your compliance requirements.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The business, campaign, or messaging use case described in the verification request is sex-related.\n* The website, opt-in flow, or production message samples in the submission contain adult or sexual content, or make the use case appear to be sex-related.\n* The verification request does not meet Toll-Free verification requirements because the stated use case conflicts with forbidden message category rules for SMS and MMS in the United States and Canada.",
    "solutions": "* If your business or messaging program is sex-related, do not use this Toll-Free number for SMS or MMS traffic to the United States or Canada. This use case cannot be approved for Toll-Free verification.\n* If the rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business, opt-in method, website, and representative message samples.\n* Review the submitted use case summary, website, and message samples before making changes. Make sure they accurately describe your business and do not contain content that could be interpreted as a forbidden sex-related use case.\n* If you still need to reach recipients for a use case that cannot be approved for Toll-Free SMS or MMS, evaluate another channel such as SendGrid Email API or Programmable Voice if it fits your compliance requirements.",
    "description": "We rejected this Toll-Free verification request because the submission was associated with the SHAFT sex category. Sex-related use cases are forbidden for SMS and MMS in the United States and Canada. As of January 31, 2024, only fully verified Toll-Free numbers can send messages to the United States and Canada, so messaging on this number remains blocked until the number is verified.",
    "date_created": "2022-09-30T17:07:20Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30442,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free phone number verification rejection - Disallowed: Spam",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Toll-Free verification submission was reviewed and rejected because the business or message content appears to be associated with spam. As of January 31, 2024, unverified Toll-Free numbers cannot send messages to the United States or Canada until verification is approved. Toll-Free review considers the sending business, the stated use case, sample messages, web presence, opt-in and consent flow, and related terms and privacy policies.\n\n### Possible causes\n\n- The business appears to be associated with a known spam or fraudulent campaign.\n- The submitted use case, sample messages, or message content appear to match spam-like or otherwise prohibited messaging activity.\n\n### Possible solutions\n\n- Review your business type, use case, sample messages, and opt-in flow against the forbidden message categories for SMS and MMS in the United States and Canada. If your traffic falls into a disallowed category, do not resubmit the same use case for Toll-Free verification.\n- If you believe the rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business, your opt-in flow, and the messages you plan to send.\n- If the rejected submission is eligible for correction, update the verification details in Console or through the Toll-Free Verification API and resubmit it as soon as possible. Resubmissions made within seven days receive priority review.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The business appears to be associated with a known spam or fraudulent campaign.\n* The submitted use case, sample messages, or message content appear to match spam-like or otherwise prohibited messaging activity.",
    "solutions": "* Review your business type, use case, sample messages, and opt-in flow against the forbidden message categories for SMS and MMS in the United States and Canada. If your traffic falls into a disallowed category, do not resubmit the same use case for Toll-Free verification.\n* If you believe the rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business, your opt-in flow, and the messages you plan to send.\n* If the rejected submission is eligible for correction, update the verification details in Console or through the Toll-Free Verification API and resubmit it as soon as possible. Resubmissions made within seven days receive priority review.",
    "description": "Your Toll-Free verification submission was reviewed and rejected because the business or message content appears to be associated with spam. As of January 31, 2024, unverified Toll-Free numbers cannot send messages to the United States or Canada until verification is approved. Toll-Free review considers the sending business, the stated use case, sample messages, web presence, opt-in and consent flow, and related terms and privacy policies.",
    "date_created": "2022-09-30T17:09:07Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30443,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free verification rejection - Disallowed: Loan Marketing",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your toll-free verification submission was rejected because the business, sample messages, website, or consent materials indicate a disallowed loan marketing use case. Toll-free verification reviews the business sending the messages, the stated use case, sample content, web presence, opt-in flow, and related privacy or terms pages. As of January 31, 2024, messages from unverified or pending toll-free numbers to the United States and Canada are blocked until the number is approved.\n\n### Possible causes\n\n- Your submission describes new loan solicitation or other high-risk financial services, including payday loans, short-term high-interest loans, third-party loans, or student loans. These categories are disallowed for SMS and MMS in the United States and Canada.\n- Your sample messages, website, or use case show promotional loan marketing instead of first-party, non-promotional loan servicing traffic. First-party loan content is allowed only when it is not promotional messaging.\n- Your privacy policy or terms indicate that consumer data or opt-in information is shared or sold. That makes the submission noncompliant.\n\n### Possible solutions\n\n- Do not resubmit the same loan marketing use case for toll-free verification. Rejections for content or Messaging Policy violations are not eligible for resubmission. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n- If your messages are actually first-party and non-promotional, update the submission so your business description, sample messages, website, and opt-in details clearly show that approved use case. Resubmit only if the rejection is eligible for resubmission. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- If you believe the rejection is incorrect, contact Support and provide additional information that explains your use case and shows that the business sending the messages collects consent directly from the end user.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* Your submission describes new loan solicitation or other high-risk financial services, including payday loans, short-term high-interest loans, third-party loans, or student loans. These categories are disallowed for SMS and MMS in the United States and Canada.\n* Your sample messages, website, or use case show promotional loan marketing instead of first-party, non-promotional loan servicing traffic. First-party loan content is allowed only when it is not promotional messaging.\n* Your privacy policy or terms indicate that consumer data or opt-in information is shared or sold. That makes the submission noncompliant.",
    "solutions": "* Do not resubmit the same loan marketing use case for toll-free verification. Rejections for content or Messaging Policy violations are not eligible for resubmission. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n* If your messages are actually first-party and non-promotional, update the submission so your business description, sample messages, website, and opt-in details clearly show that approved use case. Resubmit only if the rejection is eligible for resubmission. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* If you believe the rejection is incorrect, contact Support and provide additional information that explains your use case and shows that the business sending the messages collects consent directly from the end user.",
    "description": "This error means your toll-free verification submission was rejected because the business, sample messages, website, or consent materials indicate a disallowed loan marketing use case. Toll-free verification reviews the business sending the messages, the stated use case, sample content, web presence, opt-in flow, and related privacy or terms pages. As of January 31, 2024, messages from unverified or pending toll-free numbers to the United States and Canada are blocked until the number is approved.",
    "date_created": "2022-09-30T17:10:59Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30444,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Fraud",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Toll-Free verification submission was rejected because the business or messaging program was associated with fraud or deceptive messaging. Messaging traffic on the Toll-Free number is blocked until the number is successfully verified for messaging to the United States and Canada.\n\n### Possible causes\n\n- The business, messaging program, or sample content in the submission was identified as associated with fraud, scams, or deceptive messaging.\n- The review raised compliance concerns after evaluating your business, stated use case, sample messages, web presence, opt-in or consent flow, and associated terms or privacy information.\n- The submission included a use case or message content that is not allowed for Toll-Free messaging under Twilio's messaging compliance requirements.\n- The details in the verification request did not accurately represent how the Toll-Free number will be used.\n\n### Possible solutions\n\n- If you believe this rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business and messaging use case.\n- Review the rejected verification in Console under the number's `Regulatory Information` tab so you can confirm the rejection details and whether the request can be corrected and resubmitted.\n- Verify that your submission accurately reflects your business and messaging program, including fields such as `BusinessWebsite`, `UseCaseSummary`, `ProductionMessageSample`, `OptInType`, and any supporting opt-in evidence or additional information.\n- Remove any content, workflows, or sample messages that could appear deceptive, misleading, or inconsistent with your stated use case before you resubmit, if resubmission is allowed.\n- Make sure your messaging program complies with the Messaging Policy and the prohibited use case guidance for Toll-Free messaging.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The business, messaging program, or sample content in the submission was identified as associated with fraud, scams, or deceptive messaging.\n* The review raised compliance concerns after evaluating your business, stated use case, sample messages, web presence, opt-in or consent flow, and associated terms or privacy information.\n* The submission included a use case or message content that is not allowed for Toll-Free messaging under Twilio's messaging compliance requirements.\n* The details in the verification request did not accurately represent how the Toll-Free number will be used.",
    "solutions": "* If you believe this rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business and messaging use case.\n* Review the rejected verification in Console under the number's `Regulatory Information` tab so you can confirm the rejection details and whether the request can be corrected and resubmitted.\n* Verify that your submission accurately reflects your business and messaging program, including fields such as `BusinessWebsite`, `UseCaseSummary`, `ProductionMessageSample`, `OptInType`, and any supporting opt-in evidence or additional information.\n* Remove any content, workflows, or sample messages that could appear deceptive, misleading, or inconsistent with your stated use case before you resubmit, if resubmission is allowed.\n* Make sure your messaging program complies with the Messaging Policy and the prohibited use case guidance for Toll-Free messaging.",
    "description": "Your Toll-Free verification submission was rejected because the business or messaging program was associated with fraud or deceptive messaging. Messaging traffic on the Toll-Free number is blocked until the number is successfully verified for messaging to the United States and Canada.",
    "date_created": "2022-09-30T17:12:16Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30445,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Could not validate business information",
    "secondary_message": "The Toll-Free phone number cannot be verified because of invalid information. Please check and confirm that all the business information submitted accurately represent the business that the end consumer has opted in to receive messages from. Please make necessary edits and resubmit.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error means your toll-free verification submission was rejected because the business information in the request could not be validated. As of January 31, 2024, messaging traffic on an unverified toll-free number is blocked until the number is verified.\n\n### Possible causes\n\n- The business name or business address in the submission could not be confirmed.\n- The `BusinessWebsite` value is not reviewable because the URL is not live, is inaccessible, requires a login, points to an aggregator or ISV site, or uses a placeholder or generic page.\n- The submission includes ISV details instead of the end-user business information for the business that the consumer is actually engaging with.\n- Required business contact or address fields are incomplete, use placeholder values such as `N/A`, or do not represent the end business's physical location and contact details. ([help.twilio.com](https://help.twilio.com/articles/13264118705051))\n\n### Possible solutions\n\n- Review and correct the business information so it accurately represents the business that collects consent and sends messages to the consumer. Confirm `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, and `BusinessWebsite`.\n- Submit the end-user business information, not the ISV's information, unless the ISV is the sole content creator and the messaging is clearly branded as the ISV. ([help.twilio.com](https://help.twilio.com/articles/13264118705051))\n- Use a live, public website or public social media page that matches the business name and branding. Do not submit URLs that are behind a login, not yet published, or unrelated to the end business. ([help.twilio.com](https://help.twilio.com/articles/13264118705051))\n- Edit the rejected toll-free verification and resubmit it from Console after you correct the invalid business details. If the rejection is eligible for resubmission, submit the correction within seven days to keep priority review.\n\n#### Additional resources\n\n- [Toll-free verification console onboarding guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Required Information for Toll-Free Verification](https://help.twilio.com/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n",
    "causes": "* The business name or business address in the submission could not be confirmed.\n* The `BusinessWebsite` value is not reviewable because the URL is not live, is inaccessible, requires a login, points to an aggregator or ISV site, or uses a placeholder or generic page.\n* The submission includes ISV details instead of the end-user business information for the business that the consumer is actually engaging with.\n* Required business contact or address fields are incomplete, use placeholder values such as `N/A`, or do not represent the end business's physical location and contact details. ([help.twilio.com](https://help.twilio.com/articles/13264118705051))",
    "solutions": "* Review and correct the business information so it accurately represents the business that collects consent and sends messages to the consumer. Confirm `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, and `BusinessWebsite`.\n* Submit the end-user business information, not the ISV's information, unless the ISV is the sole content creator and the messaging is clearly branded as the ISV. ([help.twilio.com](https://help.twilio.com/articles/13264118705051))\n* Use a live, public website or public social media page that matches the business name and branding. Do not submit URLs that are behind a login, not yet published, or unrelated to the end business. ([help.twilio.com](https://help.twilio.com/articles/13264118705051))\n* Edit the rejected toll-free verification and resubmit it from Console after you correct the invalid business details. If the rejection is eligible for resubmission, submit the correction within seven days to keep priority review.",
    "description": "This error means your toll-free verification submission was rejected because the business information in the request could not be validated. As of January 31, 2024, messaging traffic on an unverified toll-free number is blocked until the number is verified.",
    "date_created": "2022-09-30T17:13:15Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 30446,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-in not sufficient: express consent required",
    "secondary_message": "The Toll-Free phone number cannot be verified because the marketing opt-in does not demonstrate express written consent. Each recipient must clearly agree in writing to receive marketing messages from the identified business. Verbal consent alone is not sufficient for marketing messages. Listing SMS in your Terms of Service or Privacy Policy is not express written consent.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Effective Jan 31st, 2024, messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe Opt-in workflow provided in the toll-free verification is not sufficient. Express Consent is required. Express Consent is more than collecting a phone number - it is a voluntary, informed end user choice for a specific purpose - it requires upfront disclosure and intentional action. Explicit opt-in leaves no ambiguity for why the customer gave the phone number, and for how they expect the company will communicate with them. Every end business must have consent from each recipient they send a message to. For marketing messages, consumers must give express written consent, for example by text, on a written form, or through a website. Verbal consent alone is not sufficient for marketing messages. Listing \"SMS\" in your Terms of Service or Privacy Policy is not Express Consent.\n\nNote: If there is promotional messaging on this toll-free phone number, it requires express written consent.\n\nOpt-in refers to the process of getting a consumer's permission to send them text messages. For the marketing use case covered by this rejection, the submission must demonstrate express written consent before promotional messages are sent. NonConsumer (A2P) Message Senders should:\n\n- Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages;\n- Ensure that Consumers have the ability to revoke consent\n\n### Possible solutions\n\n- Correct your marketing opt-in process to collect express written consent from each recipient, provide evidence of that consent, and resubmit the Toll-Free verification.\n- Note: An opt-in call-to-action (CTA) with a checkbox must be unchecked by default\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n- [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n",
    "causes": "The Opt-in workflow provided in the toll-free verification is not sufficient. Express Consent is required. Express Consent is more than collecting a phone number - it is a voluntary, informed end user choice for a specific purpose - it requires upfront disclosure and intentional action. Explicit opt-in leaves no ambiguity for why the customer gave the phone number, and for how they expect the company will communicate with them. Every end business must have consent from each recipient they send a message to. For marketing messages, consumers must give express written consent, for example by text, on a written form, or through a website. Verbal consent alone is not sufficient for marketing messages. Listing \"SMS\" in your Terms of Service or Privacy Policy is not Express Consent. Note: If there is promotional messaging on this toll-free phone number, it requires express written consent. Opt-in refers to the process of getting a consumer's permission to send them text messages. For the marketing use case covered by this rejection, the submission must demonstrate express written consent before promotional messages are sent. NonConsumer (A2P) Message Senders should: - Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages;\n- Ensure that Consumers have the ability to revoke consent",
    "solutions": "* Correct your marketing opt-in process to collect express written consent from each recipient, provide evidence of that consent, and resubmit the Toll-Free verification.\n* Note: An opt-in call-to-action (CTA) with a checkbox must be unchecked by default",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Effective Jan 31st, 2024, messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2022-09-30T17:14:40Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30447,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - phone number not provisioned to Twilio",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Effective Jan 31st, 2024, messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\n- The toll-free verification was submitted before the toll-free phone number completed porting to Twilio.\n- The toll-free phone number is not provisioned to Twilio.\n\n### Possible solutions\n\n- If the number is/was with another messaging provider at the time of verification, please ensure the porting or hosting process has been initiated and is complete. Then Delete the rejected toll-free verification and submit a new request after the port completes.\n- If it's not a porting scenario, contact Twilio Support.\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n",
    "causes": "* The toll-free verification was submitted before the toll-free phone number completed porting to Twilio.\n* The toll-free phone number is not provisioned to Twilio.",
    "solutions": "* If the number is/was with another messaging provider at the time of verification, please ensure the porting or hosting process has been initiated and is complete. Then Delete the rejected toll-free verification and submit a new request after the port completes.\n* If it's not a porting scenario, contact Twilio Support. [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada) [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Effective Jan 31st, 2024, messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2022-09-30T17:16:10Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 30448,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free verification rejection - Age-gated program not identified",
    "secondary_message": "The Toll-Free verification submission does not correctly identify the program as age restricted. Select the age-restricted classification and set AgeGatedContent correctly when submitting through the API.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error identifies an age-restricted program that is not correctly declared in the Toll-Free verification submission. A compliant age gate does not replace the required declaration.\n\n### Possible causes\n\n- The program includes age-restricted content, but the age-restricted classification is missing or incorrect.\n- The `AgeGatedContent` field does not correctly identify the content when the request is submitted through the API.\n\n### Possible solutions\n\n- Select the correct age-restricted classification and update `AgeGatedContent` when using the API.\n- Resubmit the corrected declaration with evidence appropriate to the use case.\n- A missing or inadequate age gate is a separate failure described by [30512](/docs/api/errors/30512). Alcohol-specific gate failures are described by [30529](/docs/api/errors/30529).\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n",
    "causes": "* The program includes age-restricted content, but the age-restricted classification is missing or incorrect.\n* The `AgeGatedContent` field does not correctly identify the content when the request is submitted through the API.",
    "solutions": "* Select the correct age-restricted classification and update `AgeGatedContent` when using the API.\n* Resubmit the corrected declaration with evidence appropriate to the use case.\n* A missing or inadequate age gate is a separate failure described by [30512](/docs/api/errors/30512). Alcohol-specific gate failures are described by [30529](/docs/api/errors/30529).",
    "description": "This error identifies an age-restricted program that is not correctly declared in the Toll-Free verification submission. A compliant age gate does not replace the required declaration.",
    "date_created": "2022-09-30T17:17:08Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30449,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - URL issues in sample message",
    "secondary_message": "The Toll-Free phone number cannot be verified because of one or more issues related to the website URL in sample messages: 1. Links to websites embedded within a message cannot conceal or obscure the Message Sender's identity and are not intended to cause harm or deceive Consumers; 2. Public URL shortener cannot be used. A website URL used in messaging must be a dedicated custom domain that belongs to your business; 3. The domain must align with the message sender identified in the text message itself. Web addresses contained in messages as well as any websites to which they redirect should unambiguously identify the website owner and include contact information, such as an address. Please replace edit your sample message to include a branded URL and resubmit the toll free verification.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour toll-free verification was rejected because the URL in your sample message does not meet toll-free messaging requirements. Toll-free numbers must be verified before they can send messages to the United States and Canada. As of January 31, 2024, messaging traffic from unverified or pending toll-free numbers is blocked until verification is approved.\n\n### Possible causes\n\n- Your sample message includes a shared public URL shortener instead of a branded domain your business owns.\n- Your sample message includes a non-secure URL.\n- The URL in the message, or a redirect from that URL, conceals or obscures your business identity.\n- The domain in the sample message does not align with the sender identified in the message.\n- The website linked in the message does not clearly identify the business owner or does not include contact information such as a mailing address.\n\n### Possible solutions\n\n- Replace the URL in your sample message with a branded URL on a domain your business controls.\n- Use a secure HTTPS URL in the sample message.\n- Remove public URL shorteners from your sample message and from any redirects behind the submitted URL.\n- Make sure the sender name in the message, the domain in the URL, and the landing page all identify the same business.\n- Update the landing page so it clearly identifies your business and includes contact information.\n- If you need shortened links, use Twilio Link Shortening with your own branded domain.\n- Edit the rejected verification and resubmit it with an updated sample message.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/hc/en-us/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* Your sample message includes a shared public URL shortener instead of a branded domain your business owns.\n* Your sample message includes a non-secure URL.\n* The URL in the message, or a redirect from that URL, conceals or obscures your business identity.\n* The domain in the sample message does not align with the sender identified in the message.\n* The website linked in the message does not clearly identify the business owner or does not include contact information such as a mailing address.",
    "solutions": "* Replace the URL in your sample message with a branded URL on a domain your business controls.\n* Use a secure HTTPS URL in the sample message.\n* Remove public URL shorteners from your sample message and from any redirects behind the submitted URL.\n* Make sure the sender name in the message, the domain in the URL, and the landing page all identify the same business.\n* Update the landing page so it clearly identifies your business and includes contact information.\n* If you need shortened links, use Twilio Link Shortening with your own branded domain.\n* Edit the rejected verification and resubmit it with an updated sample message.",
    "description": "Your toll-free verification was rejected because the URL in your sample message does not meet toll-free messaging requirements. Toll-free numbers must be verified before they can send messages to the United States and Canada. As of January 31, 2024, messaging traffic from unverified or pending toll-free numbers is blocked until verification is approved.",
    "date_created": "2022-09-30T17:18:36Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30450,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message delivery blocked",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio blocked delivery to the destination number because SMS Pumping Protection identified the message request as suspicious. This block is temporary and helps reduce SMS pumping fraud.\n\n### Possible causes\n\n- SMS Pumping Protection detected unusual traffic patterns for the destination number, region, country, or locale.\n- The destination matched a pattern associated with known malicious activity or SMS pumping fraud.\n- The destination number is still within a temporary block window, which is typically 15 to 30 minutes.\n- Additional suspicious activity was detected after an earlier block, so the temporary block was extended or repeated.\n\n### Possible solutions\n\n- Wait for the temporary block window to expire, then retry the message. Delivery usually resumes after 15 to 30 minutes, but it can take longer if suspicious activity continues.\n- Review the traffic pattern that triggered the block. Check whether your application is sending OTP, verification, or other high-volume traffic to destinations you do not normally message.\n- Keep `RiskCheck` enabled for OTP or authentication traffic so SMS Pumping Protection can continue to protect those message flows.\n- For legitimate traffic that should bypass this protection, create the Message resource with `RiskCheck` set to `disable`.\n- Add known legitimate phone numbers or 1k prefixes to the Global Safe List so future messages to those destinations are not blocked by fraud checks.\n- If legitimate traffic continues to be blocked, collect at least three recent Message SIDs that show This error and open a support request through the Console or Help Center.\n\n#### Additional resources\n\n- [SMS Pumping Protection for Programmable Messaging](/docs/messaging/features/sms-pumping-protection-programmable-messaging)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Global Safe List](/docs/usage/global-safe-list)\n",
    "causes": "* SMS Pumping Protection detected unusual traffic patterns for the destination number, region, country, or locale.\n* The destination matched a pattern associated with known malicious activity or SMS pumping fraud.\n* The destination number is still within a temporary block window, which is typically 15 to 30 minutes.\n* Additional suspicious activity was detected after an earlier block, so the temporary block was extended or repeated.",
    "solutions": "* Wait for the temporary block window to expire, then retry the message. Delivery usually resumes after 15 to 30 minutes, but it can take longer if suspicious activity continues.\n* Review the traffic pattern that triggered the block. Check whether your application is sending OTP, verification, or other high-volume traffic to destinations you do not normally message.\n* Keep `RiskCheck` enabled for OTP or authentication traffic so SMS Pumping Protection can continue to protect those message flows.\n* For legitimate traffic that should bypass this protection, create the Message resource with `RiskCheck` set to `disable`.\n* Add known legitimate phone numbers or 1k prefixes to the Global Safe List so future messages to those destinations are not blocked by fraud checks.\n* If legitimate traffic continues to be blocked, collect at least three recent Message SIDs that show This error and open a support request through the Console or Help Center.",
    "description": "Twilio blocked delivery to the destination number because SMS Pumping Protection identified the message request as suspicious. This block is temporary and helps reduce SMS pumping fraud.",
    "date_created": "2023-04-05T02:54:53Z",
    "last_updated": "2026-09-10T15:26:24-07:00"
  },
  {
    "code": 30451,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free phone number verification unable to process - address invalid",
    "secondary_message": "The Toll-Free phone number cannot be verified because the address is invalid. The address must be a valid address in US or Canada. Please edit the address fields and resubmit.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio could not process your Toll-Free Verification request because the business address in the submission could not be validated. Twilio could not submit the request for verification review.\n\n### Possible causes\n\n- The business address is not a valid address in the United States or Canada.\n- The state or province is invalid or does not match the rest of the address.\n- The country value is invalid.\n- The street address, house number, or unit information is invalid or incomplete.\n- The city or postal code is invalid or does not match the address provided.\n- More than one address field contains invalid data.\n\n### Possible solutions\n\n- Review the business location in Console or in your API request and make sure you entered a complete, valid business address in the United States or Canada before you resubmit.\n- Correct the address fields so the street address, unit or suite, city, state or province, postal code, and country all describe the same valid location.\n- If you submit through the Toll-Free Verification API, update the business address fields such as `businessStreetAddress`, `businessStreetAddress2`, `businessCity`, `businessStateProvinceRegion`, `businessPostalCode`, and `businessCountry`, then resubmit the verification request.\n- If the rejected request is eligible for editing, use the resubmit flow in Console or the API and submit the corrected address within the allowed edit window.\n- Do not delete the verification request just to fix an address validation issue when an edit and resubmission is available. Only delete and recreate the request if the verification is not eligible for resubmission.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The business address is not a valid address in the United States or Canada.\n* The state or province is invalid or does not match the rest of the address.\n* The country value is invalid.\n* The street address, house number, or unit information is invalid or incomplete.\n* The city or postal code is invalid or does not match the address provided.\n* More than one address field contains invalid data.",
    "solutions": "* Review the business location in Console or in your API request and make sure you entered a complete, valid business address in the United States or Canada before you resubmit.\n* Correct the address fields so the street address, unit or suite, city, state or province, postal code, and country all describe the same valid location.\n* If you submit through the Toll-Free Verification API, update the business address fields such as `businessStreetAddress`, `businessStreetAddress2`, `businessCity`, `businessStateProvinceRegion`, `businessPostalCode`, and `businessCountry`, then resubmit the verification request.\n* If the rejected request is eligible for editing, use the resubmit flow in Console or the API and submit the corrected address within the allowed edit window.\n* Do not delete the verification request just to fix an address validation issue when an edit and resubmission is available. Only delete and recreate the request if the verification is not eligible for resubmission.",
    "description": "Twilio could not process your Toll-Free Verification request because the business address in the submission could not be validated. Twilio could not submit the request for verification review.",
    "date_created": "2023-08-14T19:27:51Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30452,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free phone number verification unable to process - email invalid",
    "secondary_message": "\"The Toll-Free phone number cannot be verified because the email address is invalid. It could be due to: 1. Incorrectly formatted email address; 2. Unknown email domain; 3. Email is a suspected disposable address; 4. Email is invalid. Please correct the email address and resubmit. \"",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio can't process your Toll-Free Verification request because the business contact email address in the submission failed validation. As a result, the request can't be submitted for verification review.\n\n### Possible causes\n\n- The email address provided in `BusinessContactEmail` is incorrectly formatted.\n- The email domain is unknown or can't be validated.\n- The email address appears to be a disposable or temporary address.\n- The email address is otherwise invalid.\n\n### Possible solutions\n\n- Update `BusinessContactEmail` to a valid email address for the business or organization using the toll-free number.\n- Check the email address for formatting mistakes such as missing characters, extra spaces, or an invalid domain.\n- Use a business contact email address from a valid, reachable domain instead of a disposable or temporary email address.\n- Resubmit the verification in Console or through the Messaging Compliance API after you correct the email address.\n- If your rejected request is eligible for resubmission, use the resubmit flow instead of deleting and recreating the verification. Deleting and resubmitting places the request in the same queue as a new submission.\n\n#### Additional resources\n\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The email address provided in `BusinessContactEmail` is incorrectly formatted.\n* The email domain is unknown or can't be validated.\n* The email address appears to be a disposable or temporary address.\n* The email address is otherwise invalid.",
    "solutions": "* Update `BusinessContactEmail` to a valid email address for the business or organization using the toll-free number.\n* Check the email address for formatting mistakes such as missing characters, extra spaces, or an invalid domain.\n* Use a business contact email address from a valid, reachable domain instead of a disposable or temporary email address.\n* Resubmit the verification in Console or through the Messaging Compliance API after you correct the email address.\n* If your rejected request is eligible for resubmission, use the resubmit flow instead of deleting and recreating the verification. Deleting and resubmitting places the request in the same queue as a new submission.",
    "description": "Twilio can't process your Toll-Free Verification request because the business contact email address in the submission failed validation. As a result, the request can't be submitted for verification review.",
    "date_created": "2023-08-14T19:31:17Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30453,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message couldn't be delivered",
    "secondary_message": "Message delivery blocked",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nDelivery to this destination has been temporarily restricted as the built-in fraud detection platform flagged the traffic to this number as suspicious.\n\n### Possible causes\n\n- The Twilio fraud detection platform detected unusual traffic patterns for this destination or matched the traffic to system-known malicious activity.\n- Twilio temporarily blocked SMS traffic to the destination number while the fraud check remained active.\n- A legitimate recipient was flagged by mistake. False positives are possible, although Twilio works to keep them low.\n\n### Possible solutions\n\n- Wait a few hours and try the message again. In many cases, the block is temporary and clears if Twilio does not detect additional suspicious activity.\n- If the traffic is legitimate and the issue continues, collect at least three affected Message SIDs from the last 24 hours in your SMS logs and open a support request for investigation.\n- If you need to send a known legitimate message without applying this risk check, set `RiskCheck` to `disable` when you create the Message resource.\n- Add trusted destination phone numbers or eligible 1k prefixes to the Global Safe List. This prevents the Twilio fraud detection platform from blocking them later.\n\n#### Additional resources\n\n- [Create a Message resource](/docs/messaging/api/message-resource#create-a-message-resource)\n- [Global Safe List](/docs/usage/global-safe-list)\n",
    "causes": "* The Twilio fraud detection platform detected unusual traffic patterns for this destination or matched the traffic to system-known malicious activity.\n* Twilio temporarily blocked SMS traffic to the destination number while the fraud check remained active.\n* A legitimate recipient was flagged by mistake. False positives are possible, although Twilio works to keep them low.",
    "solutions": "* Wait a few hours and try the message again. In many cases, the block is temporary and clears if Twilio does not detect additional suspicious activity.\n* If the traffic is legitimate and the issue continues, collect at least three affected Message SIDs from the last 24 hours in your SMS logs and open a support request for investigation.\n* If you need to send a known legitimate message without applying this risk check, set `RiskCheck` to `disable` when you create the Message resource.\n* Add trusted destination phone numbers or eligible 1k prefixes to the Global Safe List. This prevents the Twilio fraud detection platform from blocking them later.",
    "description": "Delivery to this destination has been temporarily restricted as the built-in fraud detection platform flagged the traffic to this number as suspicious.",
    "date_created": "2023-10-13T10:51:13Z",
    "last_updated": "2026-09-10T15:26:24-07:00"
  },
  {
    "code": 30454,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account exceeded the messages limit",
    "secondary_message": "Account exceeded the messages limit",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour account tried to send more messages than your current limits allow. This error usually appears when a trial account reaches its allowed messaging volume or there are destination-specific limits.\n\n### Possible causes\n\n- The messaging traffic for a specific destination has exceeded Twilio-defined limits.\n- Your trial account exceeded the maximum number of messages allowed for trial messaging.\n- Twilio applied additional messaging restrictions based on recent sending patterns.\n\n### Possible solutions\n\n- If you are using a trial account: Upgrade your account to remove trial messaging restrictions. After you upgrade, allow 3 to 4 hours for the change to propagate through Twilio systems, then retry your request.\n- If you are not on a trial account: This is a temporary block due to destination-specific limits. Please wait a couple of hours and then retry your request.\n- Reduce the volume of messages being sent to the destination experiencing the block.\n- Review your account restrictions to confirm that your current sending volume aligns with allowed limits.\n\n#### Additional resources\n\n- [Get started with your Twilio free trial account](/docs/usage/tutorials/how-to-use-your-free-trial-account)\n- [Send SMS and MMS messages](/docs/messaging/tutorials/how-to-send-sms-messages)\n- [Twilio Free Trial Limitations](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations)\n",
    "causes": "* The messaging traffic for a specific destination has exceeded Twilio-defined limits.\n* Your trial account exceeded the maximum number of messages allowed for trial messaging.\n* Twilio applied additional messaging restrictions based on recent sending patterns.",
    "solutions": "* If you are using a trial account: Upgrade your account to remove trial messaging restrictions. After you upgrade, allow 3 to 4 hours for the change to propagate through Twilio systems, then retry your request.\n* If you are not on a trial account: This is a temporary block due to destination-specific limits. Please wait a couple of hours and then retry your request.\n* Reduce the volume of messages being sent to the destination experiencing the block.\n* Review your account restrictions to confirm that your current sending volume aligns with allowed limits.",
    "description": "Your account tried to send more messages than your current limits allow. This error usually appears when a trial account reaches its allowed messaging volume or there are destination-specific limits.",
    "date_created": "2023-10-17T09:52:21Z",
    "last_updated": "2026-07-10T21:52:14+05:30"
  },
  {
    "code": 30455,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free phone number verification rejection - Disallowed: SHAFT - Hate",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your Toll-Free Verification request because the submission indicates a forbidden SHAFT category related to hate. Toll-Free verification review considers your business, use case, sample messages, web presence, opt-in flow, and related terms and privacy disclosures. As of January 31, 2024, messaging traffic from unverified Toll-Free numbers is blocked until the number is verified.\n\n### Possible causes\n\n- Your submission describes a business or messaging program associated with hate speech, abusive communications, or communications connected to a hate group.\n- Your website, sample messages, opt-in flow, or supporting business information suggests a hate-related use case during the Toll-Free verification review.\n- Your messaging use case falls into a forbidden message category for SMS and MMS in the United States or Canada.\n\n### Possible solutions\n\n- Stop using this Toll-Free number for any hate-related or otherwise forbidden messaging. If your use case falls into a forbidden category, it is not eligible for Toll-Free approval.\n- Review your verification submission and remove any business description, website content, sample message, or consent flow that could make the use case appear to support hate-related communications. Make sure your submission accurately reflects a compliant messaging program.\n- If you believe this rejection is incorrect and your business does not fit a forbidden category, contact Twilio Support and provide additional information that clearly explains your use case.\n- Do not resubmit the same request without correcting the underlying compliance issue. Rejections for content or Messaging Policy violations are ineligible for resubmission.\n\n#### Additional resources\n\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-Message-Categories-in-the-US-and-Canada-Short-Code-Toll-Free-and-Long-Code)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* Your submission describes a business or messaging program associated with hate speech, abusive communications, or communications connected to a hate group.\n* Your website, sample messages, opt-in flow, or supporting business information suggests a hate-related use case during the Toll-Free verification review.\n* Your messaging use case falls into a forbidden message category for SMS and MMS in the United States or Canada.",
    "solutions": "* Stop using this Toll-Free number for any hate-related or otherwise forbidden messaging. If your use case falls into a forbidden category, it is not eligible for Toll-Free approval.\n* Review your verification submission and remove any business description, website content, sample message, or consent flow that could make the use case appear to support hate-related communications. Make sure your submission accurately reflects a compliant messaging program.\n* If you believe this rejection is incorrect and your business does not fit a forbidden category, contact Twilio Support and provide additional information that clearly explains your use case.\n* Do not resubmit the same request without correcting the underlying compliance issue. Rejections for content or Messaging Policy violations are ineligible for resubmission.",
    "description": "Twilio rejected your Toll-Free Verification request because the submission indicates a forbidden SHAFT category related to hate. Toll-Free verification review considers your business, use case, sample messages, web presence, opt-in flow, and related terms and privacy disclosures. As of January 31, 2024, messaging traffic from unverified Toll-Free numbers is blocked until the number is verified.",
    "date_created": "2024-02-21T19:45:22Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30456,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: SHAFT - Alcohol",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your toll-free verification submission was rejected because the business or messaging program was identified as alcohol-related and the submission does not meet toll-free verification requirements. As of January 31, 2024, messaging traffic from unverified toll-free numbers to the United States and Canada is blocked until the number is verified.\n\nDuring review, Twilio evaluates the business that is sending the messages, the stated use case, sample messages, web presence, opt-in or consent flow, and related terms and privacy policy.\n\n### Possible causes\n\n- Your submission identifies the business, website, or messaging program as alcohol-related.\n- Your website or opt-in flow does not use an acceptable age-verification process for alcohol-related messaging.\n- Your age gate relies on a simple yes or no confirmation instead of collecting the user's full date of birth.\n- Your website or landing page makes alcohol-related content available before the user passes the age gate.\n- Your verification submission does not clearly show how your website, opt-in flow, and sample messages enforce age restrictions.\n- You send, or plan to send, age-gated alcohol traffic to Canada without the required carrier exemption.\n\n### Possible solutions\n\n- Add a 21+ age gate to your website and opt-in flow before users can access alcohol-related content or enroll in messaging.\n- Require users to enter their full date of birth in `MM/DD/YYYY` format, or use a third-party age-verification service.\n- Remove any flow that exposes alcohol-related content before age verification is completed.\n- Update your verification submission so it clearly documents the age gate, opt-in flow, consent collection, and sample messages.\n- If you send messages to Canada, block age-gated alcohol traffic unless you have the required carrier exemption.\n- If the rejection is eligible for resubmission, correct the issue and resubmit from the toll-free number's Regulatory Information section in Console.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/hc/en-us/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your submission identifies the business, website, or messaging program as alcohol-related.\n* Your website or opt-in flow does not use an acceptable age-verification process for alcohol-related messaging.\n* Your age gate relies on a simple yes or no confirmation instead of collecting the user's full date of birth.\n* Your website or landing page makes alcohol-related content available before the user passes the age gate.\n* Your verification submission does not clearly show how your website, opt-in flow, and sample messages enforce age restrictions.\n* You send, or plan to send, age-gated alcohol traffic to Canada without the required carrier exemption.",
    "solutions": "* Add a 21+ age gate to your website and opt-in flow before users can access alcohol-related content or enroll in messaging.\n* Require users to enter their full date of birth in `MM/DD/YYYY` format, or use a third-party age-verification service.\n* Remove any flow that exposes alcohol-related content before age verification is completed.\n* Update your verification submission so it clearly documents the age gate, opt-in flow, consent collection, and sample messages.\n* If you send messages to Canada, block age-gated alcohol traffic unless you have the required carrier exemption.\n* If the rejection is eligible for resubmission, correct the issue and resubmit from the toll-free number's Regulatory Information section in Console.",
    "description": "This error means your toll-free verification submission was rejected because the business or messaging program was identified as alcohol-related and the submission does not meet toll-free verification requirements. As of January 31, 2024, messaging traffic from unverified toll-free numbers to the United States and Canada is blocked until the number is verified. During review, Twilio evaluates the business that is sending the messages, the stated use case, sample messages, web presence, opt-in or consent flow, and related terms and privacy policy.",
    "date_created": "2024-02-22T01:02:12Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30457,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: SHAFT - Firearms",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nTwilio rejected your Toll-Free Verification request because the submission indicates a firearms-related business or messaging use case. Firearms and accessories are not allowed on Toll-Free, Short Code, or Long Code messaging regardless of age gating. This rejection is ineligible for the standard resubmission flow. If your toll-free number remains unverified, messaging to the United States and Canada is blocked and Twilio returns error 30032. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n\n### Possible causes\n\n- Your `useCaseSummary`, `productionMessageSample`, `businessWebsite`, or other verification details indicate the sale, promotion, facilitation, or support of firearms or firearm accessories.\n- Your end-user business was identified as belonging to a forbidden firearms category. Twilio evaluates both the message use case and the business type during Toll-Free Verification. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- Your submission was interpreted as firearms-related when it actually describes a different use case. For example, gun advocacy messaging is not treated as a firearms use case. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n### Possible solutions\n\n- Do not use Toll-Free SMS for firearms or firearm accessory traffic. This category is not eligible for Toll-Free messaging approval. If you need to contact recipients for a use case that cannot be sent over Toll-Free SMS, use a different approved Twilio product or a different permitted messaging use case. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n- If the rejection was caused by inaccurate or incomplete submission details, delete the rejected verification record in Console or with the API only after you confirm what needs to change. Then submit a new verification request with corrected business details, use case information, opt-in proof, and message samples. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n- If you disagree with the rejection, contact Twilio Support to request an appeal. Include the original ticket number if available, the details of your appeal, and the subject line \"Toll-Free Verification Rejection Appeal for (your business name or number).\" ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n- If your business is not firearms-related, make sure your submission clearly explains the actual use case and that your website, opt-in flow, and sample messages consistently support that explanation.\n\n#### Additional resources\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your `useCaseSummary`, `productionMessageSample`, `businessWebsite`, or other verification details indicate the sale, promotion, facilitation, or support of firearms or firearm accessories.\n* Your end-user business was identified as belonging to a forbidden firearms category. Twilio evaluates both the message use case and the business type during Toll-Free Verification. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* Your submission was interpreted as firearms-related when it actually describes a different use case. For example, gun advocacy messaging is not treated as a firearms use case. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "solutions": "* Do not use Toll-Free SMS for firearms or firearm accessory traffic. This category is not eligible for Toll-Free messaging approval. If you need to contact recipients for a use case that cannot be sent over Toll-Free SMS, use a different approved Twilio product or a different permitted messaging use case. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n* If the rejection was caused by inaccurate or incomplete submission details, delete the rejected verification record in Console or with the API only after you confirm what needs to change. Then submit a new verification request with corrected business details, use case information, opt-in proof, and message samples. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n* If you disagree with the rejection, contact Twilio Support to request an appeal. Include the original ticket number if available, the details of your appeal, and the subject line \"Toll-Free Verification Rejection Appeal for (your business name or number).\" ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n* If your business is not firearms-related, make sure your submission clearly explains the actual use case and that your website, opt-in flow, and sample messages consistently support that explanation.",
    "description": "Twilio rejected your Toll-Free Verification request because the submission indicates a firearms-related business or messaging use case. Firearms and accessories are not allowed on Toll-Free, Short Code, or Long Code messaging regardless of age gating. This rejection is ineligible for the standard resubmission flow. If your toll-free number remains unverified, messaging to the United States and Canada is blocked and Twilio returns error 30032. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))",
    "date_created": "2024-02-22T01:08:53Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 30458,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: SHAFT - Tobacco / Vape",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your Toll-Free Verification request because the submission indicates a forbidden SHAFT use case involving tobacco, vape, or e-cigarettes. Toll-Free messaging does not support these categories. As of January 31, 2024, unverified Toll-Free numbers are blocked from sending messages to the United States and Canada until verification is approved.\n\n### Possible causes\n\n- Your business description or stated use case indicates tobacco, vape, or e-cigarette messaging.\n- Your website, sample messages, opt-in details, or other verification data caused the request to be categorized as a forbidden SHAFT use case.\n- Your use case relies on age gating, but tobacco, vape, and e-cigarette traffic is not allowed on Toll-Free messaging regardless of age gating.\n\n### Possible solutions\n\n- Remove tobacco, vape, and e-cigarette traffic from the Toll-Free messaging use case. These categories are not supported on Toll-Free messaging.\n- If the rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n- Check the verification record in the API or Console. If `edit_allowed` is `true`, update the request and resubmit it before `edit_expiration`. If the rejection is for content or Messaging Policy violations, the request is not eligible for resubmission.\n\n#### Additional resources\n\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/hc/en-us/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/hc/en-us/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your business description or stated use case indicates tobacco, vape, or e-cigarette messaging.\n* Your website, sample messages, opt-in details, or other verification data caused the request to be categorized as a forbidden SHAFT use case.\n* Your use case relies on age gating, but tobacco, vape, and e-cigarette traffic is not allowed on Toll-Free messaging regardless of age gating.",
    "solutions": "* Remove tobacco, vape, and e-cigarette traffic from the Toll-Free messaging use case. These categories are not supported on Toll-Free messaging.\n* If the rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n* Check the verification record in the API or Console. If `edit_allowed` is `true`, update the request and resubmit it before `edit_expiration`. If the rejection is for content or Messaging Policy violations, the request is not eligible for resubmission.",
    "description": "Twilio rejected your Toll-Free Verification request because the submission indicates a forbidden SHAFT use case involving tobacco, vape, or e-cigarettes. Toll-Free messaging does not support these categories. As of January 31, 2024, unverified Toll-Free numbers are blocked from sending messages to the United States and Canada until verification is approved.",
    "date_created": "2024-02-22T01:12:40Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30459,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Cannabis/CBD",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free Verification request was rejected because the business or messaging use case is associated with cannabis or CBD. Cannabis and CBD businesses are forbidden for SMS and MMS on Twilio in the United States and Canada, regardless of message content. As of January 31, 2024, traffic from unverified, pending, or rejected toll-free numbers is blocked until the number is fully verified.\n\n### Possible causes\n\n- The verification submission identified the business as a cannabis or CBD business.\n- The website, use case description, sample messages, or opt-in flow indicated marketing, sales, account activity, or other messaging for cannabis or CBD products.\n- The business was classified under a forbidden message category for SMS and MMS in the United States and Canada.\n- The submission included a use case that is not permitted even if the messages do not explicitly mention cannabis or CBD.\n\n### Possible solutions\n\n- If your business or use case is cannabis or CBD related, do not resubmit the same toll-free SMS or MMS use case. This category is not eligible for approval.\n- If the rejection is incorrect, review the business website, message samples, opt-in description, and use case details. Correct any information that may have caused the submission to be misclassified, then resubmit if the request is eligible for resubmission.\n- If you need to clarify that your business does not fall into a forbidden category, provide clear additional information that explains your business model and messaging use case.\n- If you cannot use toll-free SMS or MMS for this use case, move the workflow to another allowed channel that fits your compliance requirements.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The verification submission identified the business as a cannabis or CBD business.\n* The website, use case description, sample messages, or opt-in flow indicated marketing, sales, account activity, or other messaging for cannabis or CBD products.\n* The business was classified under a forbidden message category for SMS and MMS in the United States and Canada.\n* The submission included a use case that is not permitted even if the messages do not explicitly mention cannabis or CBD.",
    "solutions": "* If your business or use case is cannabis or CBD related, do not resubmit the same toll-free SMS or MMS use case. This category is not eligible for approval.\n* If the rejection is incorrect, review the business website, message samples, opt-in description, and use case details. Correct any information that may have caused the submission to be misclassified, then resubmit if the request is eligible for resubmission.\n* If you need to clarify that your business does not fall into a forbidden category, provide clear additional information that explains your business model and messaging use case.\n* If you cannot use toll-free SMS or MMS for this use case, move the workflow to another allowed channel that fits your compliance requirements.",
    "description": "This error means your Toll-Free Verification request was rejected because the business or messaging use case is associated with cannabis or CBD. Cannabis and CBD businesses are forbidden for SMS and MMS on Twilio in the United States and Canada, regardless of message content. As of January 31, 2024, traffic from unverified, pending, or rejected toll-free numbers is blocked until the number is fully verified.",
    "date_created": "2024-02-22T01:16:05Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30460,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Third Party Debt Collection",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your Toll-Free Verification request because the submitted business or messaging program falls into a forbidden messaging category for Toll-Free SMS and MMS in the United States and Canada. As of January 31, 2024, messages sent from unverified or pending Toll-Free numbers to the United States and Canada are blocked until the number is approved. Twilio reviews the business sending the messages, the use case, sample messages, web presence, opt-in or consent flow, and related terms and privacy policy during verification.\n\n### Possible causes\n\n- Your submission states or implies that your business collects debt on behalf of another company, provider, or creditor.\n- Your website, terms, privacy policy, or sample messages indicate third-party debt collection activity.\n- Your use case includes debt consolidation, debt reduction, debt relief, or credit repair. These use cases are prohibited regardless of consent.\n- Your submission does not clearly show that the sender is the party owed the debt and that consent was collected directly from the end-user.\n\n### Possible solutions\n\n- Do not use Toll-Free SMS or MMS for third-party debt collection or for prohibited debt relief programs.\n- If you send first-party billing or account messages, update your verification details so they clearly identify the business that is owed the debt, explain how you collect consent directly from recipients, and match the sample messages and website content you submitted.\n- Review your website, terms, privacy policy, and message samples to make sure they do not suggest third-party collection, affiliate collection, or another prohibited debt-related use case.\n- If the rejection does not reflect your actual use case, contact Support and provide clear `additionalInformation` that explains your business model, consent flow, and message purpose. You can also review `rejectionReason`, `errorCode`, and `editAllowed` in the Toll-free Verification API response.\n\n#### Additional resources\n\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-Message-Categories-in-the-US-and-Canada-Short-Code-Toll-Free-and-Long-Code)\n",
    "causes": "* Your submission states or implies that your business collects debt on behalf of another company, provider, or creditor.\n* Your website, terms, privacy policy, or sample messages indicate third-party debt collection activity.\n* Your use case includes debt consolidation, debt reduction, debt relief, or credit repair. These use cases are prohibited regardless of consent.\n* Your submission does not clearly show that the sender is the party owed the debt and that consent was collected directly from the end-user.",
    "solutions": "* Do not use Toll-Free SMS or MMS for third-party debt collection or for prohibited debt relief programs.\n* If you send first-party billing or account messages, update your verification details so they clearly identify the business that is owed the debt, explain how you collect consent directly from recipients, and match the sample messages and website content you submitted.\n* Review your website, terms, privacy policy, and message samples to make sure they do not suggest third-party collection, affiliate collection, or another prohibited debt-related use case.\n* If the rejection does not reflect your actual use case, contact Support and provide clear `additionalInformation` that explains your business model, consent flow, and message purpose. You can also review `rejectionReason`, `errorCode`, and `editAllowed` in the Toll-free Verification API response.",
    "description": "Twilio rejected your Toll-Free Verification request because the submitted business or messaging program falls into a forbidden messaging category for Toll-Free SMS and MMS in the United States and Canada. As of January 31, 2024, messages sent from unverified or pending Toll-Free numbers to the United States and Canada are blocked until the number is approved. Twilio reviews the business sending the messages, the use case, sample messages, web presence, opt-in or consent flow, and related terms and privacy policy during verification.",
    "date_created": "2024-02-22T17:15:33Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30461,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Gambling",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your Toll-Free Verification submission because the business or messaging program in the submission was identified as gambling-related. Toll-Free numbers must be verified before they can send messages to the United States or Canada. As of January 31, 2024, messages from unverified Toll-Free numbers are blocked until the number is verified. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n\nDuring verification, Twilio reviews the business that is sending messages, the declared use case, sample messages, web presence, opt-in flow, and linked terms or privacy policy. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n\n### Possible causes\n\n- Your submission described a gambling business or a gambling-related messaging program. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- Your website, brand, or sample messages referenced a forbidden gambling category such as casino apps, gambling websites, sweepstakes, 50/50 raffles, or betting and sports picks. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- Information in the submission made the use case appear to fall into a forbidden gambling category. This is an inference based on the information Twilio reviews during Toll-Free Verification. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))\n\n### Possible solutions\n\n- Do not submit or resubmit this Toll-Free number for SMS or MMS in the United States or Canada if your actual business or use case is gambling-related. Gambling traffic is prohibited on Toll-Free, Short Code, and Long Code routes in the United States and Canada. Rejections for content or Messaging Policy violations cannot be resubmitted. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- If the rejection was incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n- Review your business description, website content, sample messages, opt-in flow, and policy links to make sure they accurately represent a compliant non-gambling use case before you submit a new verification request for an eligible program. This is an inference based on the information Twilio reviews during verification and the Toll-Free verification onboarding flow.\n- If you need to reach recipients for a use case that cannot be approved for SMS or MMS, use a different channel only when the use case and channel meet the applicable policy requirements. For some forbidden SMS use cases, SendGrid Email API or Programmable Voice may be options. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your submission described a gambling business or a gambling-related messaging program. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* Your website, brand, or sample messages referenced a forbidden gambling category such as casino apps, gambling websites, sweepstakes, 50/50 raffles, or betting and sports picks. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* Information in the submission made the use case appear to fall into a forbidden gambling category. This is an inference based on the information Twilio reviews during Toll-Free Verification. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))",
    "solutions": "* Do not submit or resubmit this Toll-Free number for SMS or MMS in the United States or Canada if your actual business or use case is gambling-related. Gambling traffic is prohibited on Toll-Free, Short Code, and Long Code routes in the United States and Canada. Rejections for content or Messaging Policy violations cannot be resubmitted. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* If the rejection was incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n* Review your business description, website content, sample messages, opt-in flow, and policy links to make sure they accurately represent a compliant non-gambling use case before you submit a new verification request for an eligible program. This is an inference based on the information Twilio reviews during verification and the Toll-Free verification onboarding flow.\n* If you need to reach recipients for a use case that cannot be approved for SMS or MMS, use a different channel only when the use case and channel meet the applicable policy requirements. For some forbidden SMS use cases, SendGrid Email API or Programmable Voice may be options. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "description": "Twilio rejected your Toll-Free Verification submission because the business or messaging program in the submission was identified as gambling-related. Toll-Free numbers must be verified before they can send messages to the United States or Canada. As of January 31, 2024, messages from unverified Toll-Free numbers are blocked until the number is verified. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)) During verification, Twilio reviews the business that is sending messages, the declared use case, sample messages, web presence, opt-in flow, and linked terms or privacy policy. ([help.twilio.com](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada))",
    "date_created": "2024-02-22T18:20:41Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30462,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Sweepstakes",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Toll-Free verification submission was rejected because the submitted business or messaging use case was identified as sweepstakes-related traffic, which falls under a forbidden gambling category. During review, verification checks your business, stated use case, sample messages, web presence, opt-in flow, and related terms or privacy policies. As of January 31, 2024, messaging from unverified Toll-Free numbers to the United States and Canada is blocked until verification is approved.\n\n### Possible causes\n\n- Your business offers sweepstakes, raffles, contests, betting, casino-related services, or similar gambling activity.\n- Your Toll-Free verification submission, website, or sample messages indicate a forbidden gambling use case such as sweepstakes or 50/50 raffles.\n- Your business type itself falls into a forbidden category for SMS or MMS in the United States or Canada, even if the individual message content is not explicitly promotional. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n### Possible solutions\n\n- Do not submit or resubmit a Toll-Free verification request for sweepstakes or other gambling-related messaging. These use cases are prohibited for SMS and MMS in the United States and Canada. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- If you believe your business was misclassified and your use case does not fit a forbidden category, contact Support and provide additional information that clearly explains your business and messaging use case.\n- If you need to communicate for a use case that is prohibited on SMS or MMS, use another channel that fits your compliance requirements, such as SendGrid Email API or Programmable Voice. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n#### Additional resources\n\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n",
    "causes": "* Your business offers sweepstakes, raffles, contests, betting, casino-related services, or similar gambling activity.\n* Your Toll-Free verification submission, website, or sample messages indicate a forbidden gambling use case such as sweepstakes or 50/50 raffles.\n* Your business type itself falls into a forbidden category for SMS or MMS in the United States or Canada, even if the individual message content is not explicitly promotional. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "solutions": "* Do not submit or resubmit a Toll-Free verification request for sweepstakes or other gambling-related messaging. These use cases are prohibited for SMS and MMS in the United States and Canada. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* If you believe your business was misclassified and your use case does not fit a forbidden category, contact Support and provide additional information that clearly explains your business and messaging use case.\n* If you need to communicate for a use case that is prohibited on SMS or MMS, use another channel that fits your compliance requirements, such as SendGrid Email API or Programmable Voice. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "description": "Your Toll-Free verification submission was rejected because the submitted business or messaging use case was identified as sweepstakes-related traffic, which falls under a forbidden gambling category. During review, verification checks your business, stated use case, sample messages, web presence, opt-in flow, and related terms or privacy policies. As of January 31, 2024, messaging from unverified Toll-Free numbers to the United States and Canada is blocked until verification is approved.",
    "date_created": "2024-02-22T21:05:50Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30463,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Stock Alerts/Platforms",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your Toll-Free verification request because the submission matched the disallowed stock alerts or stock platforms category. As of January 31, 2024, unverified Toll-Free numbers cannot send messages to the United States or Canada until verification is approved. During review, Twilio evaluates the business using the number, the messaging use case, sample messages, website presence, opt-in method, and associated privacy policy and terms.\n\n### Possible causes\n\n- Your submission identified the business or messaging program as stock alerts, stock trading, investing, or a similar high-risk financial service use case.\n- Your business appears to operate primarily in stocks, investing, or cryptocurrency, which is not eligible for Toll-Free verification for promotional or alerting traffic.\n- Your use case summary, sample messages, website, or opt-in flow suggested prohibited stock alert or platform messaging instead of an eligible 2FA or transactional use case.\n\n### Possible solutions\n\n- If the submission was categorized incorrectly, contact Support and provide additional information that clearly explains your business, your actual messaging use case, and how recipients opt in.\n- If your business is a stock or investing platform, limit Toll-Free messaging to 2FA or transactional traffic only. Update your use case summary, sample messages, and website details so they reflect that use case accurately.\n- Review your verification details before submitting again. Make sure your website, opt-in materials, privacy policy, terms, and sample messages all align with the messaging program you want approved.\n- If your request is eligible for correction, update it from the Regulatory Information tab for the Toll-Free number and resubmit it within the allowed window. If it is not eligible for resubmission, only create a new verification request after you have materially corrected the use case and supporting information.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your submission identified the business or messaging program as stock alerts, stock trading, investing, or a similar high-risk financial service use case.\n* Your business appears to operate primarily in stocks, investing, or cryptocurrency, which is not eligible for Toll-Free verification for promotional or alerting traffic.\n* Your use case summary, sample messages, website, or opt-in flow suggested prohibited stock alert or platform messaging instead of an eligible 2FA or transactional use case.",
    "solutions": "* If the submission was categorized incorrectly, contact Support and provide additional information that clearly explains your business, your actual messaging use case, and how recipients opt in.\n* If your business is a stock or investing platform, limit Toll-Free messaging to 2FA or transactional traffic only. Update your use case summary, sample messages, and website details so they reflect that use case accurately.\n* Review your verification details before submitting again. Make sure your website, opt-in materials, privacy policy, terms, and sample messages all align with the messaging program you want approved.\n* If your request is eligible for correction, update it from the Regulatory Information tab for the Toll-Free number and resubmit it within the allowed window. If it is not eligible for resubmission, only create a new verification request after you have materially corrected the use case and supporting information.",
    "description": "Twilio rejected your Toll-Free verification request because the submission matched the disallowed stock alerts or stock platforms category. As of January 31, 2024, unverified Toll-Free numbers cannot send messages to the United States or Canada until verification is approved. During review, Twilio evaluates the business using the number, the messaging use case, sample messages, website presence, opt-in method, and associated privacy policy and terms.",
    "date_created": "2024-02-22T21:08:59Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30464,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Cryptocurrency",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour toll-free verification submission was rejected because the business or messaging program in the submission appears to fall into a forbidden message category for U.S. and Canada SMS and MMS traffic. Twilio reviews the business, use case, sample messages, web presence, opt-in flow, and linked terms and privacy policy during toll-free verification. As of January 31, 2024, messages from unverified or pending toll-free numbers to the United States and Canada are blocked until the number is verified.\n\n### Possible causes\n\n- The verification submission identified the business as being associated with cryptocurrency or another high-risk financial services use case.\n- The business website, use case description, sample messages, or opt-in details suggested that the toll-free number would be used for cryptocurrency-related messaging.\n- The submission did not clearly show that the messaging program fits an allowed business use case.\n- The business primarily operates in a forbidden category for SMS and MMS messaging in the United States and Canada.\n\n### Possible solutions\n\n- Review the submission details and confirm whether the business or messaging program falls into a forbidden message category. If it does, do not use this toll-free number for that SMS or MMS use case.\n- If the rejection is incorrect, contact Twilio Support with additional information that clearly explains your business, messaging use case, recipient opt-in flow, and sample messages.\n- Update the business website, use case summary, opt-in description, and linked terms or privacy policy so they accurately reflect the messaging program you want to verify.\n- If your business has multiple lines of business, make sure the submission clearly describes the allowed messaging use case instead of emphasizing cryptocurrency-related activity.\n- Check the verification status in Console or through the Toll-Free Verification API before making changes so you can determine whether the submission is eligible for correction and resubmission.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/hc/en-us/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The verification submission identified the business as being associated with cryptocurrency or another high-risk financial services use case.\n* The business website, use case description, sample messages, or opt-in details suggested that the toll-free number would be used for cryptocurrency-related messaging.\n* The submission did not clearly show that the messaging program fits an allowed business use case.\n* The business primarily operates in a forbidden category for SMS and MMS messaging in the United States and Canada.",
    "solutions": "* Review the submission details and confirm whether the business or messaging program falls into a forbidden message category. If it does, do not use this toll-free number for that SMS or MMS use case.\n* If the rejection is incorrect, contact Twilio Support with additional information that clearly explains your business, messaging use case, recipient opt-in flow, and sample messages.\n* Update the business website, use case summary, opt-in description, and linked terms or privacy policy so they accurately reflect the messaging program you want to verify.\n* If your business has multiple lines of business, make sure the submission clearly describes the allowed messaging use case instead of emphasizing cryptocurrency-related activity.\n* Check the verification status in Console or through the Toll-Free Verification API before making changes so you can determine whether the submission is eligible for correction and resubmission.",
    "description": "Your toll-free verification submission was rejected because the business or messaging program in the submission appears to fall into a forbidden message category for U.S. and Canada SMS and MMS traffic. Twilio reviews the business, use case, sample messages, web presence, opt-in flow, and linked terms and privacy policy during toll-free verification. As of January 31, 2024, messages from unverified or pending toll-free numbers to the United States and Canada are blocked until the number is verified.",
    "date_created": "2024-02-22T21:10:33Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30465,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Risk Investment/Get Rich Quick Schemes",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your Toll-Free Verification submission because the business or messaging program was identified as a disallowed get rich quick or risk investment use case. As of January 31, 2024, messages sent from unverified Toll-Free numbers to the United States and Canada are blocked until the number is verified.\n\nDuring review, Twilio evaluates the business using the number, the stated messaging use case, sample messages, web presence, consent flow, and related privacy policy and terms.\n\n### Possible causes\n\n- Your submission described a forbidden get rich quick scheme, such as a risk investment opportunity, pyramid scheme, mystery shopping program, or deceptive work-from-home offer.\n- The business itself falls into a forbidden category for SMS and MMS in the United States and Canada, even if the sample messages were limited or transactional.\n- Your website, opt-in flow, or supporting details suggested minimal effort for maximum or guaranteed financial gain, which is not permitted on carrier routes.\n\n### Possible solutions\n\n- Review your business model, website, opt-in flow, and sample messages to confirm that your use case is not a forbidden get rich quick scheme.\n- If your business or messaging program was misclassified, contact Support and provide additional information that clearly explains your use case, consent flow, website context, and sample content.\n- If your use case does fall into this forbidden category, do not continue using Toll-Free SMS for that traffic. Use a permitted communication channel or change the messaging program so it aligns with Twilio's messaging policies.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-Message-Categories-in-the-US-and-Canada-Short-Code-Toll-Free-and-Long-Code)\n",
    "causes": "* Your submission described a forbidden get rich quick scheme, such as a risk investment opportunity, pyramid scheme, mystery shopping program, or deceptive work-from-home offer.\n* The business itself falls into a forbidden category for SMS and MMS in the United States and Canada, even if the sample messages were limited or transactional.\n* Your website, opt-in flow, or supporting details suggested minimal effort for maximum or guaranteed financial gain, which is not permitted on carrier routes.",
    "solutions": "* Review your business model, website, opt-in flow, and sample messages to confirm that your use case is not a forbidden get rich quick scheme.\n* If your business or messaging program was misclassified, contact Support and provide additional information that clearly explains your use case, consent flow, website context, and sample content.\n* If your use case does fall into this forbidden category, do not continue using Toll-Free SMS for that traffic. Use a permitted communication channel or change the messaging program so it aligns with Twilio's messaging policies.",
    "description": "Twilio rejected your Toll-Free Verification submission because the business or messaging program was identified as a disallowed get rich quick or risk investment use case. As of January 31, 2024, messages sent from unverified Toll-Free numbers to the United States and Canada are blocked until the number is verified. During review, Twilio evaluates the business using the number, the stated messaging use case, sample messages, web presence, consent flow, and related privacy policy and terms.",
    "date_created": "2024-02-22T21:12:10Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30466,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed - Debt Reduction",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free verification request was rejected because the submitted business or messaging use case was identified as debt reduction. Debt consolidation, debt reduction, and credit repair programs are not eligible for Toll-Free verification, even when end users have provided consent. As of January 31, 2024, unverified Toll-Free numbers are blocked from sending messages to the US and Canada until verification is approved.\n\n### Possible causes\n\n- Your verification submission described a debt reduction, debt consolidation, or credit repair business or use case.\n- Your sample messages, website, opt-in flow, or business details suggested a prohibited debt forgiveness or debt collection category.\n- Your submission was reviewed as a forbidden messaging category for Toll-Free messaging in the US and Canada.\n\n### Possible solutions\n\n- Do not use this Toll-Free number for debt reduction, debt consolidation, or credit repair traffic. These use cases are not eligible for Toll-Free verification.\n- Review the business description, website, opt-in details, and sample messages in your submission to confirm they do not describe a prohibited financial or debt relief program.\n- If the rejection does not match your actual business or use case, contact Support and provide additional information that clearly explains your business model and messaging use case.\n- If the submission is eligible for resubmission in Console, correct the inaccurate information and resubmit it from the Regulatory Information tab. If you resubmit within seven days, the request goes to a priority review queue.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/hc/en-us/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada (Short Code, Toll-Free, and Long Code)](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your verification submission described a debt reduction, debt consolidation, or credit repair business or use case.\n* Your sample messages, website, opt-in flow, or business details suggested a prohibited debt forgiveness or debt collection category.\n* Your submission was reviewed as a forbidden messaging category for Toll-Free messaging in the US and Canada.",
    "solutions": "* Do not use this Toll-Free number for debt reduction, debt consolidation, or credit repair traffic. These use cases are not eligible for Toll-Free verification.\n* Review the business description, website, opt-in details, and sample messages in your submission to confirm they do not describe a prohibited financial or debt relief program.\n* If the rejection does not match your actual business or use case, contact Support and provide additional information that clearly explains your business model and messaging use case.\n* If the submission is eligible for resubmission in Console, correct the inaccurate information and resubmit it from the Regulatory Information tab. If you resubmit within seven days, the request goes to a priority review queue.",
    "description": "This error means your Toll-Free verification request was rejected because the submitted business or messaging use case was identified as debt reduction. Debt consolidation, debt reduction, and credit repair programs are not eligible for Toll-Free verification, even when end users have provided consent. As of January 31, 2024, unverified Toll-Free numbers are blocked from sending messages to the US and Canada until verification is approved.",
    "date_created": "2024-02-22T21:13:37Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30467,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Credit Repair",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Toll-Free verification submission was rejected because the business, use case, or submitted content indicates a prohibited credit or debt repair program. As of January 31, 2024, unverified Toll-Free numbers cannot send messages to the United States or Canada, so messaging traffic on this number is blocked until verification is approved.\n\n### Possible causes\n\n- The submission identifies the business or messaging program as credit repair, debt repair, debt consolidation, debt reduction, or debt relief. These use cases are prohibited for SMS and MMS in the United States and Canada, even when the business has first-party consent.\n- Your website, sample messages, or other verification details describe a business category that falls under the forbidden debt collection or forgiveness category. Toll-Free verification review considers the sending business, stated use case, sample content, web presence, opt-in or consent flow, and related policy information.\n\n### Possible solutions\n\n- If your business actually offers credit repair or related debt reduction services, do not resubmit this Toll-Free verification for SMS or MMS. Use a permitted channel only if it fits your use case and compliance requirements. SendGrid Email API may be an option for many forbidden messaging categories, and Programmable Voice is not subject to the same carrier restrictions as SMS.\n- If your business does not offer credit repair and the submission was categorized incorrectly, review and correct the verification record before resubmitting. Make sure your business description, website, sample messages, opt-in details, and any supporting information accurately describe the real use case.\n- If you submitted through the API, check the rejection response and only resubmit when `edit_allowed` is `true`. If the rejection is not eligible for resubmission, create a new request only after you have corrected the underlying business or use case information.\n- If you believe the rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/hc/en-us/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The submission identifies the business or messaging program as credit repair, debt repair, debt consolidation, debt reduction, or debt relief. These use cases are prohibited for SMS and MMS in the United States and Canada, even when the business has first-party consent.\n* Your website, sample messages, or other verification details describe a business category that falls under the forbidden debt collection or forgiveness category. Toll-Free verification review considers the sending business, stated use case, sample content, web presence, opt-in or consent flow, and related policy information.",
    "solutions": "* If your business actually offers credit repair or related debt reduction services, do not resubmit this Toll-Free verification for SMS or MMS. Use a permitted channel only if it fits your use case and compliance requirements. SendGrid Email API may be an option for many forbidden messaging categories, and Programmable Voice is not subject to the same carrier restrictions as SMS.\n* If your business does not offer credit repair and the submission was categorized incorrectly, review and correct the verification record before resubmitting. Make sure your business description, website, sample messages, opt-in details, and any supporting information accurately describe the real use case.\n* If you submitted through the API, check the rejection response and only resubmit when `edit_allowed` is `true`. If the rejection is not eligible for resubmission, create a new request only after you have corrected the underlying business or use case information.\n* If you believe the rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.",
    "description": "Your Toll-Free verification submission was rejected because the business, use case, or submitted content indicates a prohibited credit or debt repair program. As of January 31, 2024, unverified Toll-Free numbers cannot send messages to the United States or Canada, so messaging traffic on this number is blocked until verification is approved.",
    "date_created": "2024-02-22T21:15:57Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30468,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Third-party Lead Generation",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your toll-free verification request was rejected because the submitted business or messaging use case was identified as third-party lead generation or marketing. As of January 31, 2024, unverified toll-free numbers are blocked from sending messages to the United States and Canada until verification is approved.\n\n### Possible causes\n\n- Your business, website, privacy policy, or terms indicate that you buy, sell, or share consumer information or mobile opt-in data. This is treated as a forbidden third-party lead generation use case.\n- Your submission describes affiliate marketing, affiliate lending, deceptive marketing, or another third-party lead generation model. These use cases are not allowed for SMS and MMS in the United States and Canada.\n- Consent is collected by one business and then transferred to another business. Consent must be obtained directly from the end user by the business that sends the messages.\n- Your verification request does not clearly show a first-party use case and does not provide complete supporting information such as the business website, use case summary, sample messages, or public proof of opt-in. These fields are required for toll-free verification submissions.\n\n### Possible solutions\n\n- If your traffic depends on transferred, purchased, sold, or shared lead data, stop using this toll-free number for that messaging use case. Third-party lead generation is a forbidden category and is not eligible for approval.\n- If your use case is actually first-party, update your website, privacy policy, terms, and opt-in flow so they clearly show that the end business collects consent directly and does not share or sell mobile opt-in data for marketing or promotional purposes.\n- Review your toll-free verification submission and make sure the business website, use case summary, production message sample, and publicly accessible opt-in images accurately match your live customer journey.\n- Review the rejection details in the toll-free number's Regulatory Information tab in Console. If the request is eligible for correction, make the required changes and resubmit. If you believe the rejection was made in error, contact Support with additional information that explains your business model and consent flow.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your business, website, privacy policy, or terms indicate that you buy, sell, or share consumer information or mobile opt-in data. This is treated as a forbidden third-party lead generation use case.\n* Your submission describes affiliate marketing, affiliate lending, deceptive marketing, or another third-party lead generation model. These use cases are not allowed for SMS and MMS in the United States and Canada.\n* Consent is collected by one business and then transferred to another business. Consent must be obtained directly from the end user by the business that sends the messages.\n* Your verification request does not clearly show a first-party use case and does not provide complete supporting information such as the business website, use case summary, sample messages, or public proof of opt-in. These fields are required for toll-free verification submissions.",
    "solutions": "* If your traffic depends on transferred, purchased, sold, or shared lead data, stop using this toll-free number for that messaging use case. Third-party lead generation is a forbidden category and is not eligible for approval.\n* If your use case is actually first-party, update your website, privacy policy, terms, and opt-in flow so they clearly show that the end business collects consent directly and does not share or sell mobile opt-in data for marketing or promotional purposes.\n* Review your toll-free verification submission and make sure the business website, use case summary, production message sample, and publicly accessible opt-in images accurately match your live customer journey.\n* Review the rejection details in the toll-free number's Regulatory Information tab in Console. If the request is eligible for correction, make the required changes and resubmit. If you believe the rejection was made in error, contact Support with additional information that explains your business model and consent flow.",
    "description": "This error means your toll-free verification request was rejected because the submitted business or messaging use case was identified as third-party lead generation or marketing. As of January 31, 2024, unverified toll-free numbers are blocked from sending messages to the United States and Canada until verification is approved.",
    "date_created": "2024-02-22T21:19:55Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30469,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Illegal substances/articles",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free Verification submission was rejected because the business, use case, website, or sample messages indicate a forbidden messaging category related to illegal substances or articles.\n\nFor Toll-Free messaging in the US and Canada, Twilio reviews the business sending the messages, the stated use case, sample content, website, opt-in flow, and linked privacy policy and terms. Businesses associated with illegal substances or articles cannot use Twilio SMS or MMS for these routes. As of January 31, 2024, unverified toll-free numbers are blocked from sending messages to the US and Canada until verification is approved.\n\n### Possible causes\n\n- The business is associated with cannabis, CBD, kratom, drug paraphernalia, vape or e-cig products, or fireworks.\n- The website, use case summary, or sample messages suggest that the business promotes, sells, supports, or facilitates a forbidden category.\n- The submission was filed as a permitted use case such as notifications or 2FA, but the underlying business itself is in a prohibited category.\n- The submission included incomplete or misleading business details that caused the verification review to classify the use case as a forbidden category.\n- The business is in a category that Twilio does not allow on SMS or MMS in the US and Canada, even if the product or service is legal in some jurisdictions.\n\n### Possible solutions\n\n- If your business or messaging use case is actually related to illegal substances or articles, do not resubmit the Toll-Free verification for SMS or MMS. Twilio does not allow these use cases on US and Canada SMS and MMS routes.\n- If the rejection was caused by incorrect or unclear information, review your website URL, use case summary, sample messages, and supporting details. Make sure they clearly describe a permitted business and messaging use case.\n- If you believe the submission was classified incorrectly, contact Twilio Support and provide additional information that explains your business, the messages you send, and why the use case does not fall into a forbidden category.\n- Resubmit only if your business is not in a forbidden category and you can correct the information that led to the rejection.\n- If you need another channel for an otherwise allowed use case, consider a different Twilio product where appropriate, such as SendGrid Email API or Programmable Voice.\n\n#### Additional resources\n\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n",
    "causes": "* The business is associated with cannabis, CBD, kratom, drug paraphernalia, vape or e-cig products, or fireworks.\n* The website, use case summary, or sample messages suggest that the business promotes, sells, supports, or facilitates a forbidden category.\n* The submission was filed as a permitted use case such as notifications or 2FA, but the underlying business itself is in a prohibited category.\n* The submission included incomplete or misleading business details that caused the verification review to classify the use case as a forbidden category.\n* The business is in a category that Twilio does not allow on SMS or MMS in the US and Canada, even if the product or service is legal in some jurisdictions.",
    "solutions": "* If your business or messaging use case is actually related to illegal substances or articles, do not resubmit the Toll-Free verification for SMS or MMS. Twilio does not allow these use cases on US and Canada SMS and MMS routes.\n* If the rejection was caused by incorrect or unclear information, review your website URL, use case summary, sample messages, and supporting details. Make sure they clearly describe a permitted business and messaging use case.\n* If you believe the submission was classified incorrectly, contact Twilio Support and provide additional information that explains your business, the messages you send, and why the use case does not fall into a forbidden category.\n* Resubmit only if your business is not in a forbidden category and you can correct the information that led to the rejection.\n* If you need another channel for an otherwise allowed use case, consider a different Twilio product where appropriate, such as SendGrid Email API or Programmable Voice.",
    "description": "This error means your Toll-Free Verification submission was rejected because the business, use case, website, or sample messages indicate a forbidden messaging category related to illegal substances or articles. For Toll-Free messaging in the US and Canada, Twilio reviews the business sending the messages, the stated use case, sample content, website, opt-in flow, and linked privacy policy and terms. Businesses associated with illegal substances or articles cannot use Twilio SMS or MMS for these routes. As of January 31, 2024, unverified toll-free numbers are blocked from sending messages to the US and Canada until verification is approved.",
    "date_created": "2024-02-22T21:22:34Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30470,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - High Risk: Deceptive Marketing",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free verification request was rejected because the submission was classified as High Risk: Deceptive Marketing. As of January 31, 2024, messages from unverified or pending Toll-Free numbers to the United States and Canada are blocked until verification is approved. The verification review considers the sending business, stated use case, sample message content, web presence, opt-in or consent flow, and associated privacy policy or terms information.\n\n### Possible causes\n\n- The submission indicates that the business or messaging program is associated with a forbidden messaging category classified as High Risk: Deceptive Marketing.\n- The stated use case, sample messages, website content, or opt-in materials appear misleading, deceptive, or inconsistent with the business being verified.\n- The verification review raised compliance concerns after evaluating the business, use case, sample content, web presence, consent collection, and related privacy or terms information.\n\n### Possible solutions\n\n- Review the rejection details for the Toll-Free number in the Regulatory Information tab in Console and confirm whether the verification is eligible for resubmission.\n- If you believe the rejection is incorrect, contact Support and provide additional information that clearly explains your business, messaging use case, and consent flow.\n- Verify that the submission accurately reflects your end business and use case, including `businessWebsite`, `useCaseSummary`, `productionMessageSample`, `optInType`, and any publicly hosted opt-in evidence. Include privacy policy and terms links when they apply to your program.\n- If the messaging program includes deceptive or otherwise forbidden marketing, stop using the Toll-Free number for that use case. Content and Messaging Policy rejections are not eligible for resubmission.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The submission indicates that the business or messaging program is associated with a forbidden messaging category classified as High Risk: Deceptive Marketing.\n* The stated use case, sample messages, website content, or opt-in materials appear misleading, deceptive, or inconsistent with the business being verified.\n* The verification review raised compliance concerns after evaluating the business, use case, sample content, web presence, consent collection, and related privacy or terms information.",
    "solutions": "* Review the rejection details for the Toll-Free number in the Regulatory Information tab in Console and confirm whether the verification is eligible for resubmission.\n* If you believe the rejection is incorrect, contact Support and provide additional information that clearly explains your business, messaging use case, and consent flow.\n* Verify that the submission accurately reflects your end business and use case, including `businessWebsite`, `useCaseSummary`, `productionMessageSample`, `optInType`, and any publicly hosted opt-in evidence. Include privacy policy and terms links when they apply to your program.\n* If the messaging program includes deceptive or otherwise forbidden marketing, stop using the Toll-Free number for that use case. Content and Messaging Policy rejections are not eligible for resubmission.",
    "description": "This error means your Toll-Free verification request was rejected because the submission was classified as High Risk: Deceptive Marketing. As of January 31, 2024, messages from unverified or pending Toll-Free numbers to the United States and Canada are blocked until verification is approved. The verification review considers the sending business, stated use case, sample message content, web presence, opt-in or consent flow, and associated privacy policy or terms information.",
    "date_created": "2024-02-22T21:24:05Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30471,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - High Risk - Non-secured URL in sample message",
    "secondary_message": "The Toll-Free phone number cannot be verified because the campaign provided an unsecure URL in the sample message. URLs sent in message content are required to support the \"https:\" protocol and the sample message needs to reflect that. Please correct the URL with https:// in your sample message and resubmit the verification.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free verification submission was rejected because the sample message includes a URL that does not use `https://`. Toll-Free messaging traffic to the United States and Canada is blocked until the number is verified.\n\n### Possible causes\n\n- Your `productionMessageSample` includes a URL that uses `http://` instead of `https://`.\n- Your `productionMessageSample` includes a URL without the required `https://` prefix.\n\n### Possible solutions\n\n- Correct the URL in your sample message to use `https://` and resubmit the verification.\n- Ensure every URL you plan to send in message content is secured with `https://`.\n- If your rejected verification request can be edited, update the existing request and resubmit it. If it is not eligible for resubmission, correct the sample message and submit a new verification request.\n\n#### Additional resources\n\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n",
    "causes": "* Your `productionMessageSample` includes a URL that uses `http://` instead of `https://`.\n* Your `productionMessageSample` includes a URL without the required `https://` prefix.",
    "solutions": "* Correct the URL in your sample message to use `https://` and resubmit the verification.\n* Ensure every URL you plan to send in message content is secured with `https://`.\n* If your rejected verification request can be edited, update the existing request and resubmit it. If it is not eligible for resubmission, correct the sample message and submit a new verification request.",
    "description": "This error means your Toll-Free verification submission was rejected because the sample message includes a URL that does not use `https://`. Toll-Free messaging traffic to the United States and Canada is blocked until the number is verified.",
    "date_created": "2024-02-22T21:29:18Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30472,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Could not verify Business",
    "secondary_message": "The Toll-Free phone number cannot be verified because we are unable to verify the business. You may have errors in or multiple business information fields: Business Name, Business Street Address, Business City, Business State/Province/Region, Business Postal Code, Business Country, Business Contact First Name, Business Contact Last Name, Business Contact Email, Business Contact Phone, Business Website. Please correct the business information fields and resubmit",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free Verification submission was rejected because the business in the submission could not be verified. As of January 31, 2024, unverified or pending Toll-Free numbers are blocked from sending messages to the US and Canada until verification is approved. The review checks the business sending messages, the use case, sample content, web presence, opt-in or consent flow, and related terms and privacy policy information.\n\n### Possible causes\n\n- The business name, address, or other submitted business details could not be independently confirmed.\n- One or more required business fields are inaccurate, inconsistent, or incomplete, including `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, or `BusinessWebsite`.\n- The website or online presence does not provide enough public information to validate the business, or the URL does not clearly reflect the business name or branding.\n- If you are an ISV, the submission may include the ISV's contact details instead of the end business information.\n\n### Possible solutions\n\n- Confirm that the submission identifies the end business that manages the opt-in and has the consumer relationship. If you are an ISV, submit the end business information instead of your own business details.\n- Review and correct all business information so it matches the business being verified and its public presence, including `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, and `BusinessWebsite`.\n- Make sure the business website is live, publicly accessible, and clearly branded with the business name, logo, and identifying information. If you use a third-party platform, use a custom domain or make the business branding prominent.\n- If the verification response includes `edit_allowed` as `true`, correct the rejected submission and resubmit it before the `edit_expiration` timestamp. If the request is no longer editable, create a new verification request.\n\n#### Additional resources\n\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The business name, address, or other submitted business details could not be independently confirmed.\n* One or more required business fields are inaccurate, inconsistent, or incomplete, including `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, or `BusinessWebsite`.\n* The website or online presence does not provide enough public information to validate the business, or the URL does not clearly reflect the business name or branding.\n* If you are an ISV, the submission may include the ISV's contact details instead of the end business information.",
    "solutions": "* Confirm that the submission identifies the end business that manages the opt-in and has the consumer relationship. If you are an ISV, submit the end business information instead of your own business details.\n* Review and correct all business information so it matches the business being verified and its public presence, including `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, and `BusinessWebsite`.\n* Make sure the business website is live, publicly accessible, and clearly branded with the business name, logo, and identifying information. If you use a third-party platform, use a custom domain or make the business branding prominent.\n* If the verification response includes `edit_allowed` as `true`, correct the rejected submission and resubmit it before the `edit_expiration` timestamp. If the request is no longer editable, create a new verification request.",
    "description": "This error means your Toll-Free Verification submission was rejected because the business in the submission could not be verified. As of January 31, 2024, unverified or pending Toll-Free numbers are blocked from sending messages to the US and Canada until verification is approved. The review checks the business sending messages, the use case, sample content, web presence, opt-in or consent flow, and related terms and privacy policy information.",
    "date_created": "2024-02-22T21:41:31Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30473,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Cannot validate business website URL",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free Verification submission was rejected because the business website URL could not be validated. The `businessWebsite` value is required in the Toll-Free Verification request and must point to the website of the business or organization using the toll-free number. As of January 31, 2024, messages from unverified toll-free numbers to the US and Canada are blocked until the number is verified.\n\n### Possible causes\n\n- The website does not load, is unavailable, or is not operational.\n- The website requires a login, password, or other restricted access that prevents review.\n- The submitted URL does not match the website the consumer is engaging with.\n- The submitted URL is generic, unrelated, or a placeholder rather than the business website.\n\n### Possible solutions\n\n- Verify that the `businessWebsite` value is the correct public website for the business or organization using the toll-free number, then resubmit the verification request.\n- Open the website in an incognito or private browser session and confirm that it loads without a login, password, or other restricted access.\n- If the site is not live yet, wait until it is publicly available and fully operational before you resubmit.\n- Replace any generic or unrelated URL with the actual site customers use to interact with your business.\n- If part of your site must stay restricted, provide a public page that clearly identifies your business and makes the relevant information reviewable.\n\n#### Additional resources\n\n- [Toll-Free Verification API onboarding](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The website does not load, is unavailable, or is not operational.\n* The website requires a login, password, or other restricted access that prevents review.\n* The submitted URL does not match the website the consumer is engaging with.\n* The submitted URL is generic, unrelated, or a placeholder rather than the business website.",
    "solutions": "* Verify that the `businessWebsite` value is the correct public website for the business or organization using the toll-free number, then resubmit the verification request.\n* Open the website in an incognito or private browser session and confirm that it loads without a login, password, or other restricted access.\n* If the site is not live yet, wait until it is publicly available and fully operational before you resubmit.\n* Replace any generic or unrelated URL with the actual site customers use to interact with your business.\n* If part of your site must stay restricted, provide a public page that clearly identifies your business and makes the relevant information reviewable.",
    "description": "This error means your Toll-Free Verification submission was rejected because the business website URL could not be validated. The `businessWebsite` value is required in the Toll-Free Verification request and must point to the website of the business or organization using the toll-free number. As of January 31, 2024, messages from unverified toll-free numbers to the US and Canada are blocked until the number is verified.",
    "date_created": "2024-02-22T21:43:57Z",
    "last_updated": "2026-04-16T22:29:02+01:00"
  },
  {
    "code": 30474,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Need end business",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free Verification submission was rejected because the submission identified the ISV, reseller, or software provider instead of the end business that has the relationship with the opted-in consumer. As of January 31, 2024, unverified or pending toll-free numbers are blocked from sending messages to the United States and Canada until verification is approved.\n\n### Possible causes\n\n- You submitted the ISV, aggregator, or platform business name, address, website, or contact details instead of the end business information.\n- The submission did not clearly identify the business that actually sends messages to the opted-in consumer.\n- The end business information was incomplete, missing, or not collected before the verification request was submitted.\n- You submitted a trial or onboarding flow without collecting the full end business details required for toll-free verification.\n- If you are an ISV, you did not complete an approved Primary Customer Profile for your own business before registering end businesses.\n- Your use case did not clearly show that the ISV manages the opt-in flow and is the sole creator of the message content in cases where an exception might apply.\n\n### Possible solutions\n\n- Resubmit the Toll-Free Verification request with the end business's legal name, address, website, and business contact information.\n- Make sure the submission reflects the business that the consumer recognizes and has opted in to hear from.\n- Update your onboarding process so you collect the end business details before you submit a toll-free verification request.\n- If you are an ISV, create a Primary Customer Profile for your own business in the parent account and wait for approval before registering end businesses.\n- If you already use Customer Profiles for downstream businesses, make sure the verification request references the correct end business profile.\n- If your use case is one of the limited exceptions, explain clearly that you manage the opt-in mechanism and are the sole message content creator before resubmitting.\n\n#### Additional resources\n\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Create a Primary Customer Profile](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n",
    "causes": "* You submitted the ISV, aggregator, or platform business name, address, website, or contact details instead of the end business information.\n* The submission did not clearly identify the business that actually sends messages to the opted-in consumer.\n* The end business information was incomplete, missing, or not collected before the verification request was submitted.\n* You submitted a trial or onboarding flow without collecting the full end business details required for toll-free verification.\n* If you are an ISV, you did not complete an approved Primary Customer Profile for your own business before registering end businesses.\n* Your use case did not clearly show that the ISV manages the opt-in flow and is the sole creator of the message content in cases where an exception might apply.",
    "solutions": "* Resubmit the Toll-Free Verification request with the end business's legal name, address, website, and business contact information.\n* Make sure the submission reflects the business that the consumer recognizes and has opted in to hear from.\n* Update your onboarding process so you collect the end business details before you submit a toll-free verification request.\n* If you are an ISV, create a Primary Customer Profile for your own business in the parent account and wait for approval before registering end businesses.\n* If you already use Customer Profiles for downstream businesses, make sure the verification request references the correct end business profile.\n* If your use case is one of the limited exceptions, explain clearly that you manage the opt-in mechanism and are the sole message content creator before resubmitting.",
    "description": "This error means your Toll-Free Verification submission was rejected because the submission identified the ISV, reseller, or software provider instead of the end business that has the relationship with the opted-in consumer. As of January 31, 2024, unverified or pending toll-free numbers are blocked from sending messages to the United States and Canada until verification is approved.",
    "date_created": "2024-02-22T21:52:44Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30475,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free rejection: Messaging consent is bundled with other agreements",
    "secondary_message": "Messaging consent is bundled with unrelated terms, privacy policies, or account agreements. Provide a separate, explicit messaging consent action and resubmit the corrected Toll-Free verification request.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error identifies messaging consent that is bundled with another agreement. Accepting unrelated terms, a privacy policy, or a general account agreement must not also grant messaging consent.\n\n### Possible causes\n\n- One acceptance action grants both messaging consent and acceptance of unrelated agreements.\n- Messaging consent is embedded in general terms instead of being a separate, explicit choice.\n\n### Possible solutions\n\n- Provide a standalone consent action specific to the messaging program.\n- Separate that action from accepting unrelated terms, privacy policies, or account agreements.\n- Submit evidence of the corrected consent flow and resubmit for review.\n- A separate consent action that is nevertheless required to complete a purchase, registration, or service action is a distinct failure described by [30505](/docs/api/errors/30505).\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Toll-Free Verification API reference](/docs/messaging/api/tollfree-verification-resource)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n",
    "causes": "* One acceptance action grants both messaging consent and acceptance of unrelated agreements.\n* Messaging consent is embedded in general terms instead of being a separate, explicit choice.",
    "solutions": "* Provide a standalone consent action specific to the messaging program.\n* Separate that action from accepting unrelated terms, privacy policies, or account agreements.\n* Submit evidence of the corrected consent flow and resubmit for review.\n* A separate consent action that is nevertheless required to complete a purchase, registration, or service action is a distinct failure described by [30505](/docs/api/errors/30505).",
    "description": "This error identifies messaging consent that is bundled with another agreement. Accepting unrelated terms, a privacy policy, or a general account agreement must not also grant messaging consent.",
    "date_created": "2024-02-22T21:57:31Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30476,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-in not provided",
    "secondary_message": "The Toll-Free phone number cannot be verified because of one or more issues related to the proof of opt-in for consumer to provide consent: 1. You may have selected an opt-in method without description or providing evidence. Please note that every end business must have consent from each recipient they send a message to; 2. You may have submitted a URL for the opt-in workflow, but it did not demonstrate how the consumer opts-in to messaging; 3. You may have submitted a URL that is not reachable, resolvable and accessible to the general public. The URL can contain a link to the web form where the consumer opts-in, a hosted image file with a screenshot of how the consumer opts-in, or a link to a document that tells the story of the opt-in (such as a verbal opt-in script). Please do not submit a URL that requires the user to log into your website to see, and resubmit with a link that tells the story of your opt-in workflow.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Effective Jan 31st, 2024, messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nProof of opt-in for consumer to provide consent was not provided. Every end business must have consent from each recipient they send a message to. It's insufficient to select an opt-in method without description or providing evidence.\n\nYou may have submitted a URL for the opt-in workflow, but it did not demonstrate how the consumer opts-in to messaging. The URL can contain a link to the web form where the consumer opts-in, a hosted image file with a screenshot of how the consumer opts-in, or a link to a document that tells the story of the opt-in (such as a verbal opt-in script).\n\nAny URL submitted must be reachable, resolvable and of access to the public.\n\nOpt-in refers to the process of getting a consumer's permission to send them text messages. A2P message Senders should:\n\n- Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages; and\n- Ensure that Consumers have the ability to revoke consent.\n\nNote: Any business with a terms of service or privacy policy that mentions sharing or selling consumer data/opt-in information is considered noncompliant.\n\n### Possible solutions\n\nResubmit the toll-free verification with a link that tells the story of your opt-in workflow.\n\nResources:\n\n[CTIA guidelines](https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-interoperability-sms-mms)\n\n[Consent/Opt-In](https://www.twilio.com/en-us/legal/messaging-policy#:~:text=with%20Twilio%20policies.-,Consent%20/%20Opt%2Din,-What%20Is%20Proper) in [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Proof of opt-in for consumer to provide consent was not provided. Every end business must have consent from each recipient they send a message to. It's insufficient to select an opt-in method without description or providing evidence. You may have submitted a URL for the opt-in workflow, but it did not demonstrate how the consumer opts-in to messaging. The URL can contain a link to the web form where the consumer opts-in, a hosted image file with a screenshot of how the consumer opts-in, or a link to a document that tells the story of the opt-in (such as a verbal opt-in script). Any URL submitted must be reachable, resolvable and of access to the public. Opt-in refers to the process of getting a consumer's permission to send them text messages. A2P message Senders should: - Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages; and\n- Ensure that Consumers have the ability to revoke consent. Note: Any business with a terms of service or privacy policy that mentions sharing or selling consumer data/opt-in information is considered noncompliant.",
    "solutions": "Resubmit the toll-free verification with a link that tells the story of your opt-in workflow. Resources: [CTIA guidelines](https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-interoperability-sms-mms) [Consent/Opt-In](https://www.twilio.com/en-us/legal/messaging-policy#:~:text=with%20Twilio%20policies.-,Consent%20/%20Opt%2Din,-What%20Is%20Proper) in [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy) [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Effective Jan 31st, 2024, messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2024-02-22T22:03:58Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30477,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free rejection: Third-party information sharing not allowed",
    "secondary_message": "The Toll-Free phone number cannot be verified because your Terms of Service or Privacy Policy indicates that Opt-in is shared with third parties, affiliates, partners, etc. Any business with a terms of service or privacy policy that mentions sharing or selling consumer opt-in data is considered noncompliant as consent cannot be bought, sold, shared, transferred, or exchanged. Please do the following and then resubmit: 1. Revise your processes to not share or sell consumer data/opt-in information with anyone; 2. Revise Terms of Service and Privacy Policy on your website to remove all third party opt-in sharing language; 3. If you have a \"reasons we can share your personal information matrix\" in your privacy policy that is not modifiable, adding a note below it that Messaging opt-in consent will not be shared is acceptable.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error means your toll-free verification request was rejected because your Terms of Service or Privacy Policy indicates that messaging opt-in information may be shared with third parties. Toll-free numbers cannot send SMS to the United States or Canada until toll-free verification is approved. The review checks the business sending the messages, the use case, sample content, web presence, opt-in process, and the related terms and privacy policy.\n\n### Possible causes\n\n- Your Terms of Service or Privacy Policy says consumer opt-in data can be shared, sold, transferred, or exchanged with third parties, affiliates, or partners.\n- Your business practices or submission imply that messaging consent is not kept as a direct agreement between the consumer and the business that sends the message. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n- Your website does not clearly exclude text messaging originator opt-in data and consent from broader information-sharing language. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n\n### Possible solutions\n\n- Update your business processes so consumer opt-in information is not shared or sold to anyone.\n- Remove language from your Terms of Service and Privacy Policy that allows third-party sharing of mobile numbers, SMS opt-in data, or text messaging originator consent.\n- If your privacy policy includes a standard information-sharing matrix that you cannot remove, add a clear note stating that text messaging originator opt-in data and consent are not shared with third parties.\n- After the updated language is live on your website, edit and resubmit the toll-free verification in Console or through the API. If your rejection is eligible for correction, resubmit within 7 days for priority review.\n\n#### Additional resources\n- [Toll-free verification console onboarding guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n- [Required Information for Toll-Free Verification](https://help.twilio.com/articles/13264118705051)\n",
    "causes": "* Your Terms of Service or Privacy Policy says consumer opt-in data can be shared, sold, transferred, or exchanged with third parties, affiliates, or partners.\n* Your business practices or submission imply that messaging consent is not kept as a direct agreement between the consumer and the business that sends the message. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))\n* Your website does not clearly exclude text messaging originator opt-in data and consent from broader information-sharing language. ([help.twilio.com](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected-))",
    "solutions": "* Update your business processes so consumer opt-in information is not shared or sold to anyone.\n* Remove language from your Terms of Service and Privacy Policy that allows third-party sharing of mobile numbers, SMS opt-in data, or text messaging originator consent.\n* If your privacy policy includes a standard information-sharing matrix that you cannot remove, add a clear note stating that text messaging originator opt-in data and consent are not shared with third parties.\n* After the updated language is live on your website, edit and resubmit the toll-free verification in Console or through the API. If your rejection is eligible for correction, resubmit within 7 days for priority review.",
    "description": "This error means your toll-free verification request was rejected because your Terms of Service or Privacy Policy indicates that messaging opt-in information may be shared with third parties. Toll-free numbers cannot send SMS to the United States or Canada until toll-free verification is approved. The review checks the business sending the messages, the use case, sample content, web presence, opt-in process, and the related terms and privacy policy.",
    "date_created": "2024-02-22T22:06:31Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 30478,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - single phone number used for multiple businesses",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Toll-Free verification request was rejected because the submitted number is associated with more than one business. A Toll-Free number used for messaging must map 1:1 to a single business. As of January 31, 2024, messaging traffic on this Toll-Free number is blocked until it is verified. During review, Twilio evaluates the business sending the messages, the use case, sample content, web presence, opt-in or consent flow, and related website terms and privacy policy.\n\n### Possible causes\n\n- The Toll-Free number in your verification request is assigned to more than one business.\n- The same Toll-Free number is being shared across multiple businesses instead of being dedicated to one business.\n- The business listed in the verification request is not the only business using the number for messaging.\n\n### Possible solutions\n\n- Use the Toll-Free number for only one business.\n- If more than one business needs Toll-Free messaging, use a separate Toll-Free number for each business and submit verification for the business that will send the messages.\n- Resubmit the verification and explain in Additional Information how you corrected the issue.\n- Before you resubmit, review the business details, website, use case, sample messages, and opt-in information so the submission clearly matches a single business.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Required Information for Toll-Free Verification](https://help.twilio.com/articles/13264118705051)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155)\n",
    "causes": "* The Toll-Free number in your verification request is assigned to more than one business.\n* The same Toll-Free number is being shared across multiple businesses instead of being dedicated to one business.\n* The business listed in the verification request is not the only business using the number for messaging.",
    "solutions": "* Use the Toll-Free number for only one business.\n* If more than one business needs Toll-Free messaging, use a separate Toll-Free number for each business and submit verification for the business that will send the messages.\n* Resubmit the verification and explain in Additional Information how you corrected the issue.\n* Before you resubmit, review the business details, website, use case, sample messages, and opt-in information so the submission clearly matches a single business.",
    "description": "Your Toll-Free verification request was rejected because the submitted number is associated with more than one business. A Toll-Free number used for messaging must map 1:1 to a single business. As of January 31, 2024, messaging traffic on this Toll-Free number is blocked until it is verified. During review, Twilio evaluates the business sending the messages, the use case, sample content, web presence, opt-in or consent flow, and related website terms and privacy policy.",
    "date_created": "2024-02-22T22:11:34Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30479,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free rejection: Justification required for more than 5 numbers",
    "secondary_message": "The Toll-Free phone number cannot be verified because you're already using 5 Toll-Free numbers. In addition, sending to Canadian handsets qualify for 1 Toll-Free number per business, as outlined in the Canadian Code of Conduct guide. For businesses requesting 6 or more toll-free phone numbers, please include a detailed explanation in the \"Additional Information\" field as to the reason for additional toll-free phone numbers.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your Toll-Free verification request because the submission does not justify why your business needs more than five Toll-Free numbers. For traffic to US subscribers, you can verify up to five Toll-Free numbers for a single business without adding extra justification. For traffic to Canadian handsets, one Toll-Free number per business qualifies under the Canadian Code of Conduct. As of January 31, 2024, messaging traffic from unverified Toll-Free numbers to the United States and Canada is blocked until verification is approved.\n\n### Possible causes\n\n- Your submission requests six or more Toll-Free numbers for one business and does not include a detailed explanation in `additionalInformation` or the Console Additional Information field.\n- You submitted the verification under an ISV or aggregator instead of the business that is actually sending messages to opted-in consumers.\n- You plan to send messages to Canadian handsets and the submission includes more than one Toll-Free number for the business.\n\n### Possible solutions\n\n- Resubmit the verification and add a detailed explanation in `additionalInformation` or the Console Additional Information field. Explain why your business needs more than five Toll-Free numbers and how each number will be used.\n- Submit the verification for the end business that is sending messages to consumers. If you are an ISV, only submit under your own business when you manage the opt-in flow and you are the sole creator of the message content.\n- If you send messages to Canadian handsets, use one Toll-Free number per business for that traffic.\n- Review the rest of the verification record before you resubmit. Make sure your business details, use case, sample messages, website, and opt-in information are complete and consistent so the request can be reviewed accurately.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Required Information for Toll-Free Verification](https://help.twilio.com/articles/13264118705051)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155)\n",
    "causes": "* Your submission requests six or more Toll-Free numbers for one business and does not include a detailed explanation in `additionalInformation` or the Console Additional Information field.\n* You submitted the verification under an ISV or aggregator instead of the business that is actually sending messages to opted-in consumers.\n* You plan to send messages to Canadian handsets and the submission includes more than one Toll-Free number for the business.",
    "solutions": "* Resubmit the verification and add a detailed explanation in `additionalInformation` or the Console Additional Information field. Explain why your business needs more than five Toll-Free numbers and how each number will be used.\n* Submit the verification for the end business that is sending messages to consumers. If you are an ISV, only submit under your own business when you manage the opt-in flow and you are the sole creator of the message content.\n* If you send messages to Canadian handsets, use one Toll-Free number per business for that traffic.\n* Review the rest of the verification record before you resubmit. Make sure your business details, use case, sample messages, website, and opt-in information are complete and consistent so the request can be reviewed accurately.",
    "description": "Twilio rejected your Toll-Free verification request because the submission does not justify why your business needs more than five Toll-Free numbers. For traffic to US subscribers, you can verify up to five Toll-Free numbers for a single business without adding extra justification. For traffic to Canadian handsets, one Toll-Free number per business qualifies under the Canadian Code of Conduct. As of January 31, 2024, messaging traffic from unverified Toll-Free numbers to the United States and Canada is blocked until verification is approved.",
    "date_created": "2024-02-22T22:16:10Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30480,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free phone number verification rejection - Disallowed - Phishing",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Toll-Free verification submission was rejected because the business or message content was associated with a known phishing campaign. Messaging traffic on the Toll-Free number is blocked, and Toll-Free numbers must be verified before they can send messages to the United States and Canada.\n\n### Possible causes\n\n- The business or message content in the submission was identified as associated with a known phishing campaign.\n- The review raised compliance concerns after evaluating the sending business, stated use case, sample content, web presence, opt-in or consent flow, and associated terms and privacy information.\n\n### Possible solutions\n\n- If you believe this rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n- Review the rejected verification in Console under the number's Regulatory Information tab so you can confirm the rejection details before you take next steps.\n- Verify that the information in your verification record accurately represents your business and use case, including fields such as `BusinessWebsite`, `UseCaseSummary`, `ProductionMessageSample`, `OptInType`, and any supporting opt-in evidence or additional information.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The business or message content in the submission was identified as associated with a known phishing campaign.\n* The review raised compliance concerns after evaluating the sending business, stated use case, sample content, web presence, opt-in or consent flow, and associated terms and privacy information.",
    "solutions": "* If you believe this rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n* Review the rejected verification in Console under the number's Regulatory Information tab so you can confirm the rejection details before you take next steps.\n* Verify that the information in your verification record accurately represents your business and use case, including fields such as `BusinessWebsite`, `UseCaseSummary`, `ProductionMessageSample`, `OptInType`, and any supporting opt-in evidence or additional information.",
    "description": "Your Toll-Free verification submission was rejected because the business or message content was associated with a known phishing campaign. Messaging traffic on the Toll-Free number is blocked, and Toll-Free numbers must be verified before they can send messages to the United States and Canada.",
    "date_created": "2024-02-22T22:20:48Z",
    "last_updated": "2026-04-16T22:29:02+01:00"
  },
  {
    "code": 30481,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Toll Free verification -  Requested Cancellation  ",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe toll-free verification request was canceled after a cancellation request was submitted.\n\n### Possible causes\n\n- A customer submitted a request to cancel the toll-free verification.\n\n### Possible solutions\n\n- Submit a new toll-free verification request if you still need to verify the number.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Delete a toll-free verification](/docs/messaging/compliance/toll-free/console-onboarding#delete-a-toll-free-verification)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n",
    "causes": "* A customer submitted a request to cancel the toll-free verification.",
    "solutions": "* Submit a new toll-free verification request if you still need to verify the number.",
    "description": "The toll-free verification request was canceled after a cancellation request was submitted.",
    "date_created": "2025-04-15T17:08:57Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 30482,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Business email requires an official domain",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the business email in a Toll-Free verification submission cannot be verified as associated with the business. Use the official business domain where available. A free-provider address may be considered when it is directly associated with the business and can be verified on its official website. Messaging traffic on the Toll-Free number is blocked until the number is verified.\n\nDuring review, the submission is evaluated against the business details, website, messaging use case, sample messages, opt-in flow, and related compliance information.\n\n### Possible causes\n\n- The business email uses a free or personal email provider and cannot be verified as an official contact for the business.\n- The email domain does not appear to be associated with the business identified in the submission.\n- If you used a free email address, it is not shown on your business website as an official contact method for the business.\n\n### Possible solutions\n\n- Update the business email in your verification request to an address that uses your official business domain, such as contact@yourbusiness.com.\n- Make sure the business website in the submission is live and clearly identifies the same business and contact information.\n- If you must use a free email address, list that address on your official business website as a valid business contact before you resubmit.\n- If the rejected request is eligible for resubmission, correct the submission and resubmit it from the Console or API.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155)\n",
    "causes": "* The business email uses a free or personal email provider and cannot be verified as an official contact for the business.\n* The email domain does not appear to be associated with the business identified in the submission.\n* If you used a free email address, it is not shown on your business website as an official contact method for the business.",
    "solutions": "* Update the business email in your verification request to an address that uses your official business domain, such as contact@yourbusiness.com.\n* Make sure the business website in the submission is live and clearly identifies the same business and contact information.\n* If you must use a free email address, list that address on your official business website as a valid business contact before you resubmit.\n* If the rejected request is eligible for resubmission, correct the submission and resubmit it from the Console or API.",
    "description": "This error occurs when the business email in a Toll-Free verification submission cannot be verified as associated with the business. Use the official business domain where available. A free-provider address may be considered when it is directly associated with the business and can be verified on its official website. Messaging traffic on the Toll-Free number is blocked until the number is verified. During review, the submission is evaluated against the business details, website, messaging use case, sample messages, opt-in flow, and related compliance information.",
    "date_created": "2025-04-15T15:47:29Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30483,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Contact must be a business representative",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Toll-Free verification request was rejected because the business contact on the submission does not appear to be a real person authorized to represent the business. Messaging traffic on the Toll-Free number is blocked until the number is verified.\n\n### Possible causes\n\n- `businessContactFirstName` and `businessContactLastName` do not identify a real person for the business or organization using the Toll-Free number.\n- You entered a generic role or title, such as Admin or Support, instead of an authorized business representative.\n- You submitted an incomplete contact name, such as a partial name or a missing first or last name.\n\n### Possible solutions\n\n- Update `businessContactFirstName` and `businessContactLastName` with the full first and last name of a real person who is authorized to represent the business using the Toll-Free number.\n- Make sure the contact details you submit belong to that business representative, including `businessContactEmail` and `businessContactPhone`. Format `businessContactPhone` in `E.164`.\n- If the request is eligible for resubmission, correct the contact information and resubmit it from the Regulatory Information tab in Console, or update the verification request through the Toll-Free Verification API.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* `businessContactFirstName` and `businessContactLastName` do not identify a real person for the business or organization using the Toll-Free number.\n* You entered a generic role or title, such as Admin or Support, instead of an authorized business representative.\n* You submitted an incomplete contact name, such as a partial name or a missing first or last name.",
    "solutions": "* Update `businessContactFirstName` and `businessContactLastName` with the full first and last name of a real person who is authorized to represent the business using the Toll-Free number.\n* Make sure the contact details you submit belong to that business representative, including `businessContactEmail` and `businessContactPhone`. Format `businessContactPhone` in `E.164`.\n* If the request is eligible for resubmission, correct the contact information and resubmit it from the Regulatory Information tab in Console, or update the verification request through the Toll-Free Verification API.",
    "description": "Your Toll-Free verification request was rejected because the business contact on the submission does not appear to be a real person authorized to represent the business. Messaging traffic on the Toll-Free number is blocked until the number is verified.",
    "date_created": "2025-04-15T15:50:08Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30484,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Business name and office record mismatch",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe business name provided in your submission does not match what appears on your corporate website or other official documents. This may include situations where:\n\n- A different business name is displayed on your website\n- You're operating under a \"Doing Business As\" (DBA) name but didn't clarify this in the submission\n\n### Possible solutions\n\n- Update the business name to exactly match what appears on your website or official documentation\n- If you operate under a DBA name, update the DBA field in your submission and provide supporting documentation\n- Ensure consistency between your verification submission and your web presence\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The business name provided in your submission does not match what appears on your corporate website or other official documents. This may include situations where: - A different business name is displayed on your website\n- You're operating under a \"Doing Business As\" (DBA) name but didn't clarify this in the submission",
    "solutions": "* Update the business name to exactly match what appears on your website or official documentation\n* If you operate under a DBA name, update the DBA field in your submission and provide supporting documentation\n* Ensure consistency between your verification submission and your web presence [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T15:51:25Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30485,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message couldn't be delivered",
    "secondary_message": "Message couldn't be delivered",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nWe temporarily blocked delivery to the destination number because the traffic matched patterns associated with fraudulent messaging. This block is usually temporary, but it can remain in place longer if suspicious activity continues.\n\n### Possible causes\n\n- We identified potential fraudulent messaging activity targeting the destination number.\n- Delivery to that destination was temporarily blocked while we continued to monitor for suspicious traffic.\n- The block remained active because the suspicious activity had not fully subsided.\n\n### Possible solutions\n\n- Wait and retry later if the message is legitimate. This disruption usually resolves within a few hours if we do not detect additional fraudulent activity.\n- Review your messaging flow for abuse or unauthorized use. Enable SMS Pumping Protection, restrict SMS Geo Permissions to the countries where you do business, and secure your account credentials to reduce repeat fraud-related blocking.\n- Add trusted recipients to the Global Safe List if they should never be blocked by Twilio fraud and risk checks.\n- If legitimate traffic continues to hit this error, collect at least 3 affected Message SIDs from the last 24 hours and contact Support so we can investigate.\n\n#### Additional resources\n\n- [SMS Pumping Protection for Programmable Messaging](/docs/messaging/features/sms-pumping-protection-programmable-messaging)\n- [Global Safe List](/docs/usage/global-safe-list)\n- [Preventing Fraud in Programmable Messaging](/docs/messaging/guides/preventing-messaging-fraud)\n",
    "causes": "* We identified potential fraudulent messaging activity targeting the destination number.\n* Delivery to that destination was temporarily blocked while we continued to monitor for suspicious traffic.\n* The block remained active because the suspicious activity had not fully subsided.",
    "solutions": "* Wait and retry later if the message is legitimate. This disruption usually resolves within a few hours if we do not detect additional fraudulent activity.\n* Review your messaging flow for abuse or unauthorized use. Enable SMS Pumping Protection, restrict SMS Geo Permissions to the countries where you do business, and secure your account credentials to reduce repeat fraud-related blocking.\n* Add trusted recipients to the Global Safe List if they should never be blocked by Twilio fraud and risk checks.\n* If legitimate traffic continues to hit this error, collect at least 3 affected Message SIDs from the last 24 hours and contact Support so we can investigate.",
    "description": "We temporarily blocked delivery to the destination number because the traffic matched patterns associated with fraudulent messaging. This block is usually temporary, but it can remain in place longer if suspicious activity continues.",
    "date_created": "2024-05-09T11:33:48Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30486,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Toll Free verification rejection - HELP keyword response must meet requirements",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe HELP keyword response provided in your submission does not meet compliance requirements. Common issues include:\n\n- Missing customer contact details (phone number, email, or website)\n- Missing your business/brand name\n- Incomplete or unclear support information\n- Non-compliant formatting or content\n\n### Possible solutions\n\n- Update your HELP response to include:\n\n  - Your business/brand name\n  - Customer contact details (phone, email, or website)\n  - Clear instructions for getting assistance\n  - Hours of availability (if applicable)\n- Include a \"Message and data rates may apply\" disclosure and opt-out instructions, such as \"Reply STOP to opt out\".\n- Ensure the response is sent automatically when a consumer texts HELP.\n- Ensure the response is concise yet complete\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n- [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The HELP keyword response provided in your submission does not meet compliance requirements. Common issues include: - Missing customer contact details (phone number, email, or website)\n- Missing your business/brand name\n- Incomplete or unclear support information\n- Non-compliant formatting or content",
    "solutions": "* Update your HELP response to include:\n\n  * Your business/brand name\n  * Customer contact details (phone, email, or website)\n  * Clear instructions for getting assistance\n  * Hours of availability (if applicable)\n* Include a \"Message and data rates may apply\" disclosure and opt-out instructions, such as \"Reply STOP to opt out\".\n* Ensure the response is sent automatically when a consumer texts HELP.\n* Ensure the response is concise yet complete",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T17:06:34Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30487,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Toll Free rejection: Charity must provide 501(c)(3) verification",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error indicates that your Toll-Free verification submission was rejected because the business was identified as a charitable organization soliciting donations, but the submission did not provide enough proof of 501(c)(3) status. Messaging traffic on the Toll-Free number is blocked until the number is verified.\n\n### Possible causes\n\n- The submission identifies the business as a charity or nonprofit, but no 501(c)(3) tax-exempt verification was provided.\n- The accreditation URL is missing or invalid.\n- The submitted business details do not confirm nonprofit status.\n\n### Possible solutions\n\n- Confirm that your organization is registered as a 501(c)(3) tax-exempt entity.\n- Provide a valid accreditation URL from a recognized nonprofit source such as BBB Wise Giving Alliance, Charity Navigator, or GuideStar.\n- Make sure the organization name and other submitted details match your official nonprofit records.\n- Update the rejected verification request with the correct nonprofit verification details and resubmit it.\n\n#### Additional resources\n\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The submission identifies the business as a charity or nonprofit, but no 501(c)(3) tax-exempt verification was provided.\n* The accreditation URL is missing or invalid.\n* The submitted business details do not confirm nonprofit status.",
    "solutions": "* Confirm that your organization is registered as a 501(c)(3) tax-exempt entity.\n* Provide a valid accreditation URL from a recognized nonprofit source such as BBB Wise Giving Alliance, Charity Navigator, or GuideStar.\n* Make sure the organization name and other submitted details match your official nonprofit records.\n* Update the rejected verification request with the correct nonprofit verification details and resubmit it.",
    "description": "This error indicates that your Toll-Free verification submission was rejected because the business was identified as a charitable organization soliciting donations, but the submission did not provide enough proof of 501(c)(3) status. Messaging traffic on the Toll-Free number is blocked until the number is verified.",
    "date_created": "2025-04-16T15:53:14Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30488,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Toll Free verification rejection - DBA name must be accurately provided",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour toll-free verification request was rejected because the business identity in the submission did not clearly match the registered business information. If you send messages under a trade name, sub-entity, or downstream brand, include that name in `doingBusinessAs`. Messaging on the toll-free number remains blocked until the number is verified.\n\n### Possible causes\n\n- The `businessName` value uses a brand name that does not match the registered legal business name.\n- Your business operates under a DBA or trade name, but the `doingBusinessAs` field is blank, incomplete, or inaccurate.\n- The information in the verification request does not clearly show how the operating name relates to the registered business.\n\n### Possible solutions\n\n- Update `businessName` so it exactly matches your registered business name.\n- If you use a trade name, enter the exact DBA in `doingBusinessAs`.\n- Make sure your website and other verification details identify the same business name or clearly show the connection between the legal business and the DBA.\n- If requested, provide documentation that shows the relationship between the registered business name and the operating name.\n- If your verification response shows `edit_allowed` as `true`, correct the request and resubmit it before the `edit_expiration` time. If the request can no longer be edited, submit a new toll-free verification request with the corrected business identity details.\n\n#### Additional resources\n\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The `businessName` value uses a brand name that does not match the registered legal business name.\n* Your business operates under a DBA or trade name, but the `doingBusinessAs` field is blank, incomplete, or inaccurate.\n* The information in the verification request does not clearly show how the operating name relates to the registered business.",
    "solutions": "* Update `businessName` so it exactly matches your registered business name.\n* If you use a trade name, enter the exact DBA in `doingBusinessAs`.\n* Make sure your website and other verification details identify the same business name or clearly show the connection between the legal business and the DBA.\n* If requested, provide documentation that shows the relationship between the registered business name and the operating name.\n* If your verification response shows `edit_allowed` as `true`, correct the request and resubmit it before the `edit_expiration` time. If the request can no longer be edited, submit a new toll-free verification request with the corrected business identity details.",
    "description": "Your toll-free verification request was rejected because the business identity in the submission did not clearly match the registered business information. If you send messages under a trade name, sub-entity, or downstream brand, include that name in `doingBusinessAs`. Messaging on the toll-free number remains blocked until the number is verified.",
    "date_created": "2025-04-16T15:54:23Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30489,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Website must be established and active",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe website provided in your submission appears to be:\n\n- Incomplete or under construction\n- Not yet launched\n- Lacking sufficient business information to establish credibility\n- Missing essential details such as contact information or services offered\n\n### Possible solutions\n\n- Submit a fully developed, live website with clear business information\n- Ensure your website includes:\n\n  - Complete contact information\n  - Description of services provided\n  - Business details that match your verification submission\n  - Content that establishes business legitimacy\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The website provided in your submission appears to be: - Incomplete or under construction\n- Not yet launched\n- Lacking sufficient business information to establish credibility\n- Missing essential details such as contact information or services offered",
    "solutions": "* Submit a fully developed, live website with clear business information\n* Ensure your website includes:\n\n  * Complete contact information\n  * Description of services provided\n  * Business details that match your verification submission\n  * Content that establishes business legitimacy [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:06:53Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30490,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Social platform must be established and active",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe social media platform provided as your business's web presence appears to be:\n\n- Newly created with minimal history\n- Inactive or rarely updated\n- Lacking sufficient content to establish business credibility\n- Missing business information or engagement\n\n### Possible solutions\n\n- Submit a more established social media account that demonstrates business legitimacy\n- Ensure your social profile includes:\n\n  - Regular posts and activity\n  - Clear business information\n  - Engagement that establishes legitimacy\n- Alternatively, provide a functional business website instead of a social media profile\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The social media platform provided as your business's web presence appears to be: - Newly created with minimal history\n- Inactive or rarely updated\n- Lacking sufficient content to establish business credibility\n- Missing business information or engagement",
    "solutions": "* Submit a more established social media account that demonstrates business legitimacy\n* Ensure your social profile includes:\n\n  * Regular posts and activity\n  * Clear business information\n  * Engagement that establishes legitimacy\n* Alternatively, provide a functional business website instead of a social media profile [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:08:07Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30491,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Website is password protected or requires login",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe website URL provided in your submission could not be fully reviewed because:\n\n- It requires a username and password to access\n- A login page prevents verification of your business details\n- Content needed for verification is behind restricted access\n\n### Possible solutions\n\n- Provide a publicly accessible version of your website that allows verification of business information\n- If your website cannot be made public for security reasons, submit screenshots displaying the necessary business details in the \"Additional Information\" field\n- Create a public landing page with your business information while maintaining secure access to other areas\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The website URL provided in your submission could not be fully reviewed because: - It requires a username and password to access\n- A login page prevents verification of your business details\n- Content needed for verification is behind restricted access",
    "solutions": "* Provide a publicly accessible version of your website that allows verification of business information\n* If your website cannot be made public for security reasons, submit screenshots displaying the necessary business details in the \"Additional Information\" field\n* Create a public landing page with your business information while maintaining secure access to other areas [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:12:17Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30492,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Business website URL must display branding",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe website URL provided does not clearly reflect your business identity, making verification difficult. This may be due to:\n\n- Using a generic, system-generated URL that doesn't include your business name\n- Providing a URL from a third-party e-commerce platform or URL shortener without clear business branding\n- Lack of visible business branding on the website itself\n\n### Possible solutions\n\n- Submit a URL that includes your business name (e.g., [www.yourbusinessname.com](http://www.yourbusinessname.com))\n- Ensure your website clearly displays company branding including name, logo, and identifying information\n- If using a third-party platform, set up a custom domain or ensure your business branding is prominently featured\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The website URL provided does not clearly reflect your business identity, making verification difficult. This may be due to: - Using a generic, system-generated URL that doesn't include your business name\n- Providing a URL from a third-party e-commerce platform or URL shortener without clear business branding\n- Lack of visible business branding on the website itself",
    "solutions": "* Submit a URL that includes your business name (e.g., [www.yourbusinessname.com](http://www.yourbusinessname.com))\n* Ensure your website clearly displays company branding including name, logo, and identifying information\n* If using a third-party platform, set up a custom domain or ensure your business branding is prominently featured [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:13:35Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30493,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service URL missing, unreachable, or lacking SMS terms",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Terms of Service URL is missing, cannot be reached, or does not include the required consumer protection and SMS disclosures. The page must be publicly accessible and clearly state message rates, message frequency, and opt-out instructions.\n\n### Possible causes\n\n- No Terms of Service URL was provided in the submission.\n- The Terms of Service URL is not live, is inaccessible, or returns an error.\n- The Terms of Service page is missing the required SMS disclosures on rates, message frequency, and opt-out commands.\n\n### Possible solutions\n\n- Provide a valid, publicly accessible URL to your Terms of Service.\n- Open the URL in a browser and confirm it loads for anyone without a login before resubmitting.\n- Make sure the page includes SMS disclosures covering message rates, message frequency, and how to opt out.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n",
    "causes": "* No Terms of Service URL was provided in the submission.\n* The Terms of Service URL is not live, is inaccessible, or returns an error.\n* The Terms of Service page is missing the required SMS disclosures on rates, message frequency, and opt-out commands.",
    "solutions": "* Provide a valid, publicly accessible URL to your Terms of Service.\n* Open the URL in a browser and confirm it loads for anyone without a login before resubmitting.\n* Make sure the page includes SMS disclosures covering message rates, message frequency, and how to opt out.",
    "description": "The Terms of Service URL is missing, cannot be reached, or does not include the required consumer protection and SMS disclosures. The page must be publicly accessible and clearly state message rates, message frequency, and opt-out instructions.",
    "date_created": "2025-04-15T16:14:47Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30494,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - ISV or reseller name must be provided",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour submission indicates that an Independent Software Vendor (ISV) or reseller is being used, but:\n\n- The ISV/reseller field was left blank\n- The information was not provided in the appropriate field\n- The submission mentions an ISV/reseller but doesn't identify them\n\n### Possible solutions\n\n- Update the business identity on your profile to reflect ISV/Reseller and ensure the profile has the correct details of the software provider\n- Ensure the name provided matches the actual software vendor being used\n- Complete all required fields related to ISVs or resellers if your business uses their services\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your submission indicates that an Independent Software Vendor (ISV) or reseller is being used, but: - The ISV/reseller field was left blank\n- The information was not provided in the appropriate field\n- The submission mentions an ISV/reseller but doesn't identify them",
    "solutions": "* Update the business identity on your profile to reflect ISV/Reseller and ensure the profile has the correct details of the software provider\n* Ensure the name provided matches the actual software vendor being used\n* Complete all required fields related to ISVs or resellers if your business uses their services [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:15:58Z",
    "last_updated": "2026-07-23T13:22:24-04:00"
  },
  {
    "code": 30495,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Projected message volume exceeds use case limits",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe message volume requested in your submission appears disproportionately high for the stated use case or business size. This may be due to:\n\n- Requesting authorization for message volumes that don't align with your business scale\n- A use case that doesn't support the scale of messaging requested\n- Insufficient justification for high-volume messaging\n\n### Possible solutions\n\n- Provide a detailed justification for the requested volume in the \"Additional Information\" field\n- Include information about your target audience size and messaging frequency\n- Explain how the requested volume aligns with your business needs and use case\n- Adjust your projected volume to better match your actual business requirements\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The message volume requested in your submission appears disproportionately high for the stated use case or business size. This may be due to: - Requesting authorization for message volumes that don't align with your business scale\n- A use case that doesn't support the scale of messaging requested\n- Insufficient justification for high-volume messaging",
    "solutions": "* Provide a detailed justification for the requested volume in the \"Additional Information\" field\n* Include information about your target audience size and messaging frequency\n* Explain how the requested volume aligns with your business needs and use case\n* Adjust your projected volume to better match your actual business requirements [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:17:16Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30496,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Use case and use case summary inconsistent",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThere is a mismatch between the selected use case and the use case summary in your submission. For example:\n\n- Use case is listed as \"Account Alerts\" but the summary describes marketing messages\n- Different types of messages are described in the various sections of your submission\n- The content contradicts the selected use case category\n\n### Possible solutions\n\n- Review your submission to ensure the use case and use case summary align perfectly\n- Update either the use case selection or the summary to ensure consistency\n- Make sure all sections of your submission reflect the same messaging purpose\n- Avoid mixing different use cases in a single submission\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "There is a mismatch between the selected use case and the use case summary in your submission. For example: - Use case is listed as \"Account Alerts\" but the summary describes marketing messages\n- Different types of messages are described in the various sections of your submission\n- The content contradicts the selected use case category",
    "solutions": "* Review your submission to ensure the use case and use case summary align perfectly\n* Update either the use case selection or the summary to ensure consistency\n* Make sure all sections of your submission reflect the same messaging purpose\n* Avoid mixing different use cases in a single submission [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:18:33Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30497,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Use case summary is incomplete or unrelated to the messaging",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe use case summary is too generic, incomplete, or describes something unrelated to the selected messaging use case. It must fully explain how and why you send messages.\n\n### Possible causes\n\n- The summary provides limited detail about the messaging use case.\n- The summary describes activity that is unrelated to the selected use case.\n- Key information about how and why messages are sent is missing.\n\n### Possible solutions\n\n- Provide complete, specific details describing your intended use case.\n- Explain clearly how and why you send messages to opted-in recipients.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The summary provides limited detail about the messaging use case.\n* The summary describes activity that is unrelated to the selected use case.\n* Key information about how and why messages are sent is missing.",
    "solutions": "* Provide complete, specific details describing your intended use case.\n* Explain clearly how and why you send messages to opted-in recipients.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The use case summary is too generic, incomplete, or describes something unrelated to the selected messaging use case. It must fully explain how and why you send messages.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30498,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-in workflow must match submission details",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe opt-in workflow description in your submission doesn't match the actual opt-in example provided. For example:\n\n- Your description mentions a verbal opt-in, but you provided a web form example\n- The opt-in method described differs from what was demonstrated\n- Details in the description contradict what's shown in the provided example\n\n### Possible solutions\n\n- Update either the opt-in workflow description or the provided example to ensure consistency\n- Make sure your description accurately reflects your actual opt-in process\n- Provide examples that match the exact opt-in method you've described\n- Ensure all aspects of your submission align with your actual business practices\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The opt-in workflow description in your submission doesn't match the actual opt-in example provided. For example: - Your description mentions a verbal opt-in, but you provided a web form example\n- The opt-in method described differs from what was demonstrated\n- Details in the description contradict what's shown in the provided example",
    "solutions": "* Update either the opt-in workflow description or the provided example to ensure consistency\n* Make sure your description accurately reflects your actual opt-in process\n* Provide examples that match the exact opt-in method you've described\n* Ensure all aspects of your submission align with your actual business practices [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:20:48Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30499,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Message content doesn't align with use case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe sample message content provided in your submission:\n\n- Does not align with the use case you selected\n- Is incomplete or missing key details (such as your business name)\n- Contains content that contradicts your stated messaging purpose\n- References messaging types different from what you've described elsewhere\n\n### Possible solutions\n\n- Update your sample message content to accurately reflect the approved use case\n- Ensure all required message components are included (business name, opt-out instructions, etc.)\n- Make sure the message content is complete and properly formatted\n- Remove any content that doesn't align with your stated messaging purpose\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The sample message content provided in your submission: - Does not align with the use case you selected\n- Is incomplete or missing key details (such as your business name)\n- Contains content that contradicts your stated messaging purpose\n- References messaging types different from what you've described elsewhere",
    "solutions": "* Update your sample message content to accurately reflect the approved use case\n* Ensure all required message components are included (business name, opt-out instructions, etc.)\n* Make sure the message content is complete and properly formatted\n* Remove any content that doesn't align with your stated messaging purpose [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:22:03Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30500,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Twilio Internal Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio's platform encountered an internal error while processing this message.\n\n### Possible causes\n\n- If this message was being processed during an incident, it is possible that this message was affected. See [Twilio's status page](https://status.twilio.com/) for ongoing and historical incidents.\n- There was an unrecoverable anomaly that occurred while processing this particular message.\n\n### Possible solutions\n\n- Try sending the message again.\n- If the subsequent attempt also fails with this error, [contact support](https://support.twilio.com/hc/en-us/articles/360048500694-Contacting-Twilio-Support) referencing the affected Message Sids for further troubleshooting.\n",
    "causes": "* If this message was being processed during an incident, it is possible that this message was affected. See [Twilio's status page](https://status.twilio.com/) for ongoing and historical incidents.\n* There was an unrecoverable anomaly that occurred while processing this particular message.",
    "solutions": "* Try sending the message again.\n* If the subsequent attempt also fails with this error, [contact support](https://support.twilio.com/hc/en-us/articles/360048500694-Contacting-Twilio-Support) referencing the affected Message Sids for further troubleshooting.",
    "description": "Twilio's platform encountered an internal error while processing this message.",
    "date_created": "2023-12-08T10:20:51Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30501,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Political messaging: Campaign Verify token is invalid or unverifiable",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nPolitical messaging campaigns must include a valid Campaign Verify token. If the token cannot be validated or does not match the submitting political entity, the submission cannot be approved. A missing required token is a separate error described by [30502](/docs/api/errors/30502).\n\n### Possible causes\n\n- The Campaign Verify token provided cannot be validated.\n- The token does not match the political entity listed in the submission.\n- The Business Registration Number (BRN) tied to the token does not match the BRN provided in the submission.\n- A token issued for another messaging program (Short Code, 10DLC, or RCS) was submitted instead of a Toll-Free token.\n\n### Possible solutions\n\n- Register at campaignverify.org to obtain a token, and confirm the token entered is correct and active.\n- Ensure the token is associated with the same political entity listed in the submission.\n- Verify the BRN tied to the token matches the BRN provided in the submission.\n- Make sure the token was issued for Toll-Free messaging and the use case is set to Political, then resubmit.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Campaign Verify token provided cannot be validated.\n* The token does not match the political entity listed in the submission.\n* The Business Registration Number (BRN) tied to the token does not match the BRN provided in the submission.\n* A token issued for another messaging program (Short Code, 10DLC, or RCS) was submitted instead of a Toll-Free token.",
    "solutions": "* Register at campaignverify.org to obtain a token, and confirm the token entered is correct and active.\n* Ensure the token is associated with the same political entity listed in the submission.\n* Verify the BRN tied to the token matches the BRN provided in the submission.\n* Make sure the token was issued for Toll-Free messaging and the use case is set to Political, then resubmit.",
    "description": "Political messaging campaigns must include a valid Campaign Verify token. If the token cannot be validated or does not match the submitting political entity, the submission cannot be approved. A missing required token is a separate error described by [30502](/docs/api/errors/30502).",
    "date_created": "2025-04-15T16:32:40Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30502,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Political messaging must provide a Campaign Verify token",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe submission is missing a required Campaign Verify token. This error identifies an omitted token; a supplied token that is invalid, unverifiable, or mismatched is covered by [30501](/docs/api/errors/30501).\n\n### Possible causes\n\n- A political candidate or political action committee (PAC) submitted without a Campaign Verify token.\n- The Campaign Verify token field was left blank or omitted from the submission.\n\n### Possible solutions\n\n- Register at campaignverify.org to obtain a Campaign Verify token.\n- Ensure the token is associated with the same political entity listed in the submission.\n- Make sure the token was issued for Toll-Free messaging; tokens for Short Code, 10DLC, or RCS cannot be used.\n- Set the use case to Political, add the token to the submission, and resubmit.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* A political candidate or political action committee (PAC) submitted without a Campaign Verify token.\n* The Campaign Verify token field was left blank or omitted from the submission.",
    "solutions": "* Register at campaignverify.org to obtain a Campaign Verify token.\n* Ensure the token is associated with the same political entity listed in the submission.\n* Make sure the token was issued for Toll-Free messaging; tokens for Short Code, 10DLC, or RCS cannot be used.\n* Set the use case to Political, add the token to the submission, and resubmit.",
    "description": "The submission is missing a required Campaign Verify token. This error identifies an omitted token; a supplied token that is invalid, unverifiable, or mismatched is covered by [30501](/docs/api/errors/30501).",
    "date_created": "2025-04-15T16:33:54Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30503,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Confirmation message missing required details",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe confirmation message example provided in your submission is missing required elements. These may include:\n\n- Program name or product description\n- Customer care contact information (phone number or HELP command)\n- Opt-out instructions (e.g., \"Reply STOP to opt out\")\n- Message frequency disclosure (e.g., \"Recurring\" or \"Msg freq may vary\")\n- Pricing statement (e.g., \"Msg & Data rates may apply\")\n\n### Possible solutions\n\n- Update your confirmation message to include all required details:\n\n  - Business/program name\n  - Customer care information\n  - Opt-out instructions\n  - Message frequency disclosure (for recurring messages)\n  - Pricing statement\n- Ensure clarity and consistency across all messaging examples\n- Resubmit with the complete confirmation message\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The confirmation message example provided in your submission is missing required elements. These may include: - Program name or product description\n- Customer care contact information (phone number or HELP command)\n- Opt-out instructions (e.g., \"Reply STOP to opt out\")\n- Message frequency disclosure (e.g., \"Recurring\" or \"Msg freq may vary\")\n- Pricing statement (e.g., \"Msg & Data rates may apply\")",
    "solutions": "* Update your confirmation message to include all required details:\n\n  * Business/program name\n  * Customer care information\n  * Opt-out instructions\n  * Message frequency disclosure (for recurring messages)\n  * Pricing statement\n* Ensure clarity and consistency across all messaging examples\n* Resubmit with the complete confirmation message [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:33:56Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30504,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Single opt-in cannot cover multiple use cases",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour opt-in process attempts to cover multiple message types with a single consent action. Common issues include:\n\n- Using a single checkbox for both promotional and informational messages\n- Opt-in text that doesn't differentiate between different message types\n- Combining multiple use cases under one consent mechanism\n\n### Possible solutions\n\n- Create separate opt-in mechanisms for each message type (e.g., promotional, informational)\n- Clearly describe the purpose of each opt-in and the specific types of messages users will receive\n- Ensure users can select which message types they want to receive independently\n- Resubmit with evidence of separate opt-ins for different message types\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your opt-in process attempts to cover multiple message types with a single consent action. Common issues include: - Using a single checkbox for both promotional and informational messages\n- Opt-in text that doesn't differentiate between different message types\n- Combining multiple use cases under one consent mechanism",
    "solutions": "* Create separate opt-in mechanisms for each message type (e.g., promotional, informational)\n* Clearly describe the purpose of each opt-in and the specific types of messages users will receive\n* Ensure users can select which message types they want to receive independently\n* Resubmit with evidence of separate opt-ins for different message types [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:34:08Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30505,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-in must be optional, not required",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour opt-in process requires users to consent to receiving messages as a condition for completing unrelated actions such as:\n\n- Creating an account\n- Making a purchase\n- Accessing services\n- Completing registration\n\n### Possible solutions\n\n- Update your forms to ensure users can complete their primary action without being required to opt in to messaging\n- Clearly indicate that messaging consent is optional and separate from the main service\n- Use language that makes the optional nature of messaging clear (e.g., \"Would you also like to receive...\")\n- Ensure users can decline messaging while still completing their primary action\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your opt-in process requires users to consent to receiving messages as a condition for completing unrelated actions such as: - Creating an account\n- Making a purchase\n- Accessing services\n- Completing registration",
    "solutions": "* Update your forms to ensure users can complete their primary action without being required to opt in to messaging\n* Clearly indicate that messaging consent is optional and separate from the main service\n* Use language that makes the optional nature of messaging clear (e.g., \"Would you also like to receive...\")\n* Ensure users can decline messaging while still completing their primary action [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:36:06Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30506,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-ins must clearly reflect end business",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nFor submissions by Independent Software Vendors (ISVs) or platform providers, the opt-in examples provided:\n\n- Display the ISV's branding instead of the end business\n- Don't clearly identify which business the user is consenting to receive messages from\n- Fail to establish a direct relationship between the end user and the business sending messages\n\n### Possible solutions\n\n- Submit opt-in examples showing the end business's branding and language\n- Ensure opt-in text explicitly indicates that users are consenting to receive messages from the specific end business\n- Remove or minimize ISV/platform branding that might confuse the consent relationship\n- Make it clear which business will be sending messages to users\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "For submissions by Independent Software Vendors (ISVs) or platform providers, the opt-in examples provided: - Display the ISV's branding instead of the end business\n- Don't clearly identify which business the user is consenting to receive messages from\n- Fail to establish a direct relationship between the end user and the business sending messages",
    "solutions": "* Submit opt-in examples showing the end business's branding and language\n* Ensure opt-in text explicitly indicates that users are consenting to receive messages from the specific end business\n* Remove or minimize ISV/platform branding that might confuse the consent relationship\n* Make it clear which business will be sending messages to users [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:37:25Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30507,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-in does not match use case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThere is a mismatch between the opt-in language or method and the use case described in your submission. Examples include:\n\n- Opt-in text indicates consent for promotional messages, but the use case is for informational messages\n- Consent language doesn't specifically cover the message types described in your use case\n- The opt-in method is inappropriate for the described messaging purpose\n\n### Possible solutions\n\n- Ensure your opt-in explicitly matches the use case described in your submission\n- Update the opt-in text to specifically reference the intended message types\n- For informational messages: \"I agree to receive account updates and notifications\"\n- For promotional messages: \"I agree to receive marketing messages and special offers\"\n- Align all aspects of your submission with the actual messaging purpose\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "There is a mismatch between the opt-in language or method and the use case described in your submission. Examples include: - Opt-in text indicates consent for promotional messages, but the use case is for informational messages\n- Consent language doesn't specifically cover the message types described in your use case\n- The opt-in method is inappropriate for the described messaging purpose",
    "solutions": "* Ensure your opt-in explicitly matches the use case described in your submission\n* Update the opt-in text to specifically reference the intended message types\n* For informational messages: \"I agree to receive account updates and notifications\"\n* For promotional messages: \"I agree to receive marketing messages and special offers\"\n* Align all aspects of your submission with the actual messaging purpose [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:38:47Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30508,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Pre-selected opt-in checkbox is not allowed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour opt-in process uses pre-selected or pre-checked options for consent, which fails to provide users with a clear choice. This includes:\n\n- Checkboxes that are automatically checked by default\n- Toggle switches that are pre-enabled\n- Any opt-in mechanism where the default state is \"opted in\"\n\n### Possible solutions\n\n- Remove all pre-selected options from your opt-in forms\n- Ensure all checkboxes or consent mechanisms start in the unchecked/unselected state\n- Require users to actively select or confirm their consent\n- Update your opt-in workflow to require affirmative action from users\n- Provide evidence of the corrected opt-in process when resubmitting\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your opt-in process uses pre-selected or pre-checked options for consent, which fails to provide users with a clear choice. This includes: - Checkboxes that are automatically checked by default\n- Toggle switches that are pre-enabled\n- Any opt-in mechanism where the default state is \"opted in\"",
    "solutions": "* Remove all pre-selected options from your opt-in forms\n* Ensure all checkboxes or consent mechanisms start in the unchecked/unselected state\n* Require users to actively select or confirm their consent\n* Update your opt-in workflow to require affirmative action from users\n* Provide evidence of the corrected opt-in process when resubmitting [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:40:03Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30509,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-in URL not accessible",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour toll-free verification request was rejected because the opt-in URL in the submission could not be accessed for review. Messaging traffic on the toll-free number remains blocked until the number is verified. Reviewers use the opt-in example to confirm how you collect consent for the messaging use case, along with the related website, privacy policy, and terms information in the submission.\n\n### Possible causes\n\n- The opt-in URL requires a login, password, or other credentials, so reviewers cannot access it.\n- The link is broken, returns an error, no longer resolves, or the page was changed after you submitted it.\n- The URL does not lead directly to the opt-in content or does not clearly show how the consumer opts in to receive messages.\n\n### Possible solutions\n\n- Replace the URL with a public link that is reachable, resolvable, and accessible without authentication.\n- Make sure the link goes directly to the web form or other proof of consent that tells the full opt-in story for the submitted use case. A valid example can be a web form, a hosted image, or a document such as a verbal opt-in script.\n- If the opt-in flow is inside an authenticated app or portal, host screenshots at public URLs and submit them as your opt-in evidence. If you submit verification through the API, use `optInImageUrls` for those publicly hosted images.\n- If you use screenshots, include the complete opt-in experience and visible business branding so the consent flow is easy to review.\n- If the rejected request is eligible for resubmission, correct the URL and resubmit within seven days to enter priority review. After that window, the toll-free number remains `Restricted` until you resubmit verification.\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* The opt-in URL requires a login, password, or other credentials, so reviewers cannot access it.\n* The link is broken, returns an error, no longer resolves, or the page was changed after you submitted it.\n* The URL does not lead directly to the opt-in content or does not clearly show how the consumer opts in to receive messages.",
    "solutions": "* Replace the URL with a public link that is reachable, resolvable, and accessible without authentication.\n* Make sure the link goes directly to the web form or other proof of consent that tells the full opt-in story for the submitted use case. A valid example can be a web form, a hosted image, or a document such as a verbal opt-in script.\n* If the opt-in flow is inside an authenticated app or portal, host screenshots at public URLs and submit them as your opt-in evidence. If you submit verification through the API, use `optInImageUrls` for those publicly hosted images.\n* If you use screenshots, include the complete opt-in experience and visible business branding so the consent flow is easy to review.\n* If the rejected request is eligible for resubmission, correct the URL and resubmit within seven days to enter priority review. After that window, the toll-free number remains `Restricted` until you resubmit verification.",
    "description": "Your toll-free verification request was rejected because the opt-in URL in the submission could not be accessed for review. Messaging traffic on the toll-free number remains blocked until the number is verified. Reviewers use the opt-in example to confirm how you collect consent for the messaging use case, along with the related website, privacy policy, and terms information in the submission.",
    "date_created": "2025-04-15T16:41:21Z",
    "last_updated": "2026-04-16T22:29:02+01:00"
  },
  {
    "code": 30510,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Opt-in example must be complete, branded, and legible",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe opt-in example provided is cropped, incomplete, illegible, or missing branding that identifies the business collecting consent. If consent is collected through a webform, the example must include a phone number field.\n\n### Possible causes\n\n- The opt-in screenshot is cropped and does not show the business name or logo.\n- The text in the image is illegible or blurred.\n- Consent is collected through a webform, but the phone number field is missing.\n\n### Possible solutions\n\n- Submit a complete opt-in example that includes all text, buttons, and branding, such as the company name or logo.\n- If consent is collected through a webform, make sure it includes a phone number field.\n- Ensure the opt-in clearly identifies the business collecting consent.\n- Replace blurred or illegible images with a readable example that shows the full opt-in flow.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n",
    "causes": "* The opt-in screenshot is cropped and does not show the business name or logo.\n* The text in the image is illegible or blurred.\n* Consent is collected through a webform, but the phone number field is missing.",
    "solutions": "* Submit a complete opt-in example that includes all text, buttons, and branding, such as the company name or logo.\n* If consent is collected through a webform, make sure it includes a phone number field.\n* Ensure the opt-in clearly identifies the business collecting consent.\n* Replace blurred or illegible images with a readable example that shows the full opt-in flow.",
    "description": "The opt-in example provided is cropped, incomplete, illegible, or missing branding that identifies the business collecting consent. If consent is collected through a webform, the example must include a phone number field.",
    "date_created": "2025-04-15T16:42:38Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30511,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Verbal consent script must be provided",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour submission indicates verbal consent is used, but:\n\n- No verbal consent script was provided\n- The script or documentation for verbal opt-in was incomplete\n- The verbal consent process could not be verified\n\n### Possible solutions\n\n- Submit a detailed script showing the exact language used for obtaining verbal consent\n- Include a simulated conversation demonstrating how users are informed and how their consent is collected\n- Provide documentation of how verbal consent is recorded and stored\n- Include instructions for how users can opt-out after providing verbal consent\n- Consider implementing a confirmation text message after verbal opt-in\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your submission indicates verbal consent is used, but: - No verbal consent script was provided\n- The script or documentation for verbal opt-in was incomplete\n- The verbal consent process could not be verified",
    "solutions": "* Submit a detailed script showing the exact language used for obtaining verbal consent\n* Include a simulated conversation demonstrating how users are informed and how their consent is collected\n* Provide documentation of how verbal consent is recorded and stored\n* Include instructions for how users can opt-out after providing verbal consent\n* Consider implementing a confirmation text message after verbal opt-in [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:43:52Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30512,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Age gate required for age-restricted content",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour business or messaging content relates to age-restricted products or services, but:\n\n- No age verification process was included in your opt-in flow\n- The age verification method is insufficient (e.g., simply asking \"Are you 18+?\")\n- Age verification is mentioned but not demonstrated in your submission\n\n### Possible solutions\n\n- Implement a robust age gate that verifies users meet the required age (21+ for alcohol, 18+ for other restricted items)\n- Use acceptable age verification methods such as:\n\n  - Requiring users to enter their full date of birth (MM/DD/YYYY)\n  - Using a third-party age verification service\n- Provide evidence of your age verification process in your submission\n- Ensure age verification occurs before messaging opt-in for age-restricted content\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your business or messaging content relates to age-restricted products or services, but: - No age verification process was included in your opt-in flow\n- The age verification method is insufficient (e.g., simply asking \"Are you 18+?\")\n- Age verification is mentioned but not demonstrated in your submission",
    "solutions": "* Implement a robust age gate that verifies users meet the required age (21+ for alcohol, 18+ for other restricted items)\n* Use acceptable age verification methods such as:\n\n  * Requiring users to enter their full date of birth (MM/DD/YYYY)\n  * Using a third-party age verification service\n* Provide evidence of your age verification process in your submission\n* Ensure age verification occurs before messaging opt-in for age-restricted content [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:45:17Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30513,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-in not sufficient: Language Unclear",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your Toll-Free verification submission because the opt-in language does not clearly show that recipients are consenting to receive text messages. Messaging traffic on the Toll-Free number remains blocked until the number is verified. During review, Twilio evaluates the business, use case, sample content, web presence, opt-in or consent flow, and related terms or privacy policy.\n\n### Possible causes\n\n- The opt-in language does not clearly ask the user to consent to messaging.\n- The opt-in flow does not explicitly mention SMS or text messaging.\n- The consent language is buried in your terms of service or privacy policy instead of appearing as part of the opt-in flow.\n- The language does not make clear what messages the user is agreeing to receive.\n\n### Possible solutions\n\n- Rewrite the opt-in language so it explicitly asks users to agree to receive SMS or text messages from your business.\n- Keep messaging consent separate from acceptance of your privacy policy or terms of service.\n- State what messages the user will receive so the consent is specific and easy to understand.\n- Update your verification submission with publicly hosted images or URLs that show the full opt-in workflow and the text shown to the user.\n- After you correct the opt-in flow, resubmit the verification request if your rejected submission is eligible for editing and resubmission.\n\n#### Additional resources\n\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Required Information for Toll-Free Verification](https://help.twilio.com/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n",
    "causes": "* The opt-in language does not clearly ask the user to consent to messaging.\n* The opt-in flow does not explicitly mention SMS or text messaging.\n* The consent language is buried in your terms of service or privacy policy instead of appearing as part of the opt-in flow.\n* The language does not make clear what messages the user is agreeing to receive.",
    "solutions": "* Rewrite the opt-in language so it explicitly asks users to agree to receive SMS or text messages from your business.\n* Keep messaging consent separate from acceptance of your privacy policy or terms of service.\n* State what messages the user will receive so the consent is specific and easy to understand.\n* Update your verification submission with publicly hosted images or URLs that show the full opt-in workflow and the text shown to the user.\n* After you correct the opt-in flow, resubmit the verification request if your rejected submission is eligible for editing and resubmission.",
    "description": "Twilio rejected your Toll-Free verification submission because the opt-in language does not clearly show that recipients are consenting to receive text messages. Messaging traffic on the Toll-Free number remains blocked until the number is verified. During review, Twilio evaluates the business, use case, sample content, web presence, opt-in or consent flow, and related terms or privacy policy.",
    "date_created": "2025-04-15T16:46:37Z",
    "last_updated": "2026-04-16T22:29:02+01:00"
  },
  {
    "code": 30515,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Valid opt-in required for all submissions",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour submission relies on an organizational or government exemption for messaging consent, but:\n\n- Toll-Free verification requires explicit opt-in evidence regardless of exemption status\n- No opt-in process was provided despite claiming exemption\n- The exemption claimed does not apply to toll-free messaging requirements\n\n### Possible solutions\n\n- Explicit consumer consent (opt-in) is required for all toll-free verifications, without exception\n- Implement a compliant opt-in process that meets TCPA and carrier requirements\n- Provide evidence of this opt-in process in your submission\n- Do not rely on organizational or government exemptions for toll-free verification\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your submission relies on an organizational or government exemption for messaging consent, but: - Toll-Free verification requires explicit opt-in evidence regardless of exemption status\n- No opt-in process was provided despite claiming exemption\n- The exemption claimed does not apply to toll-free messaging requirements",
    "solutions": "* Explicit consumer consent (opt-in) is required for all toll-free verifications, without exception\n* Implement a compliant opt-in process that meets TCPA and carrier requirements\n* Provide evidence of this opt-in process in your submission\n* Do not rely on organizational or government exemptions for toll-free verification [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:47:53Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30516,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Double opt-in required for this use case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour messaging use case requires a double opt-in process, but:\n\n- Only a single opt-in was provided\n- The double opt-in process was not documented\n- The confirmation step was missing or incomplete\n\nDouble opt-in is required for certain use cases including shopping cart reminders.\n\n### Possible solutions\n\n- Implement a double opt-in process for your specific use case\n- Ensure the process includes:\n\n  1. Initial opt-in (web form, keyword, etc.)\n  2. Confirmation message asking user to confirm subscription\n  3. User's affirmative response to complete enrollment\n- Document the complete double opt-in flow in your submission\n- Provide example messages for both steps of the double opt-in process\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your messaging use case requires a double opt-in process, but: - Only a single opt-in was provided\n- The double opt-in process was not documented\n- The confirmation step was missing or incomplete Double opt-in is required for certain use cases including shopping cart reminders.",
    "solutions": "* Implement a double opt-in process for your specific use case\n* Ensure the process includes:\n\n  1. Initial opt-in (web form, keyword, etc.)\n  2. Confirmation message asking user to confirm subscription\n  3. User's affirmative response to complete enrollment\n* Document the complete double opt-in flow in your submission\n* Provide example messages for both steps of the double opt-in process [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:49:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30517,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Shopping cart reminders must meet opt-in, privacy, and send limits",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nShopping cart reminder programs must meet specific opt-in, privacy, tracking, and send-limit requirements. Reminders are limited to one message per abandoned cart, sent within 48 hours.\n\n### Possible causes\n\n- The opt-in terms and conditions do not state that the program includes shopping cart reminders.\n- The program does not include a text-based double opt-in confirmation.\n- The double opt-in message does not tell the user the program includes shopping cart reminders.\n- The privacy policy does not disclose how abandoned cart data is captured (for example, cookies or plugins), and the terms do not reflect the cart reminder policy.\n\n### Possible solutions\n\n- Require a text-based double opt-in confirmation before sending reminders.\n- State in your terms and privacy policy how you link a consumer's phone number to an abandoned cart, for example through cookies or plugins.\n- Include shopping cart reminders explicitly in your call-to-action and terms.\n- Send only one reminder per unique abandoned cart, within 48 hours.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n",
    "causes": "* The opt-in terms and conditions do not state that the program includes shopping cart reminders.\n* The program does not include a text-based double opt-in confirmation.\n* The double opt-in message does not tell the user the program includes shopping cart reminders.\n* The privacy policy does not disclose how abandoned cart data is captured (for example, cookies or plugins), and the terms do not reflect the cart reminder policy.",
    "solutions": "* Require a text-based double opt-in confirmation before sending reminders.\n* State in your terms and privacy policy how you link a consumer's phone number to an abandoned cart, for example through cookies or plugins.\n* Include shopping cart reminders explicitly in your call-to-action and terms.\n* Send only one reminder per unique abandoned cart, within 48 hours.",
    "description": "Shopping cart reminder programs must meet specific opt-in, privacy, tracking, and send-limit requirements. Reminders are limited to one message per abandoned cart, sent within 48 hours.",
    "date_created": "2025-04-15T16:50:42Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30518,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Call-to-action missing required disclosures",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe call-to-action (CTA) in your opt-in process is missing required disclosures. These may include:\n\n- Brand/Program Name\n- Message frequency disclosure for recurring programs\n- Opt-in disclosure and pricing statement (e.g., \"Msg & Data rates may apply\")\n- Customer support and Opt-Out details\n- Inconsistency between the Toll-Free Number in the submission and the one in the Call-to-Action\n\n### Possible solutions\n\n- Update your Call-to-Action to include all required details:\n\n  - Your business or program name\n  - Message frequency disclosure (for recurring messages)\n  - Standard pricing statement (\"Msg & Data rates may apply\")\n  - Customer support information and opt-out instructions\n- Ensure consistency between the toll-free number in your submission and in your Call-to-Action\n- Include all disclosures in proximity to where consumers provide their phone number\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The call-to-action (CTA) in your opt-in process is missing required disclosures. These may include: - Brand/Program Name\n- Message frequency disclosure for recurring programs\n- Opt-in disclosure and pricing statement (e.g., \"Msg & Data rates may apply\")\n- Customer support and Opt-Out details\n- Inconsistency between the Toll-Free Number in the submission and the one in the Call-to-Action",
    "solutions": "* Update your Call-to-Action to include all required details:\n\n  * Your business or program name\n  * Message frequency disclosure (for recurring messages)\n  * Standard pricing statement (\"Msg & Data rates may apply\")\n  * Customer support information and opt-out instructions\n* Ensure consistency between the toll-free number in your submission and in your Call-to-Action\n* Include all disclosures in proximity to where consumers provide their phone number [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:52:06Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30519,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free rejection: Privacy policy required for personal data collection",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free Verification submission was rejected because your business collects personal data and the submission did not include an acceptable privacy policy. Messaging traffic on this Toll-Free number is blocked until the number is verified.\n\n### Possible causes\n\n- No privacy policy was included in your submission.\n- The privacy policy URL was invalid or inaccessible.\n- The privacy policy does not explain how personal data is collected, stored, used, or protected.\n- Required privacy disclosures are missing from the policy.\n\n### Possible solutions\n\n- Publish a privacy policy on your public website if your business collects personal data.\n- Make sure your privacy policy clearly explains how personal data is collected, stored, used, and protected.\n- Include information about your messaging practices in the privacy policy when it applies to your use case.\n- Provide a valid public `privacyPolicyUrl` in your Toll-Free Verification submission.\n- Make sure the privacy policy URL loads without login requirements, IP restrictions, or other access controls.\n- If your rejected submission can be edited, correct the privacy policy information and resubmit the verification request in Console or through the Toll-Free Verification API.\n\n#### Additional resources\n\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n",
    "causes": "* No privacy policy was included in your submission.\n* The privacy policy URL was invalid or inaccessible.\n* The privacy policy does not explain how personal data is collected, stored, used, or protected.\n* Required privacy disclosures are missing from the policy.",
    "solutions": "* Publish a privacy policy on your public website if your business collects personal data.\n* Make sure your privacy policy clearly explains how personal data is collected, stored, used, and protected.\n* Include information about your messaging practices in the privacy policy when it applies to your use case.\n* Provide a valid public `privacyPolicyUrl` in your Toll-Free Verification submission.\n* Make sure the privacy policy URL loads without login requirements, IP restrictions, or other access controls.\n* If your rejected submission can be edited, correct the privacy policy information and resubmit the verification request in Console or through the Toll-Free Verification API.",
    "description": "This error means your Toll-Free Verification submission was rejected because your business collects personal data and the submission did not include an acceptable privacy policy. Messaging traffic on this Toll-Free number is blocked until the number is verified.",
    "date_created": "2025-04-15T16:53:24Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30520,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Privacy policy mentions sharing opt-in data",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour privacy policy contains language indicating that personal data, including opt-in information, may be:\n\n- Shared with third parties\n- Sold to other organizations\n- Rented to marketing partners\n- Transferred to affiliates or other entities\n\n### Possible solutions\n\n- Update your privacy policy to include clear language prohibiting the sharing of opt-in data\n- Add specific language such as:\n\n  - \"Opt-in data and consent will not be shared with third parties.\"\n  - \"SMS collected information is not shared with third parties or associates.\"\n  - \"The above excludes text messaging originator opt-in data and consent; this information will not be shared with any third parties.\"\n- Ensure your policy explicitly protects messaging consent from being shared or transferred\n- Remove any language suggesting opt-in data may be shared\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your privacy policy contains language indicating that personal data, including opt-in information, may be: - Shared with third parties\n- Sold to other organizations\n- Rented to marketing partners\n- Transferred to affiliates or other entities",
    "solutions": "* Update your privacy policy to include clear language prohibiting the sharing of opt-in data\n* Add specific language such as:\n\n  * \"Opt-in data and consent will not be shared with third parties.\"\n  * \"SMS collected information is not shared with third parties or associates.\"\n  * \"The above excludes text messaging originator opt-in data and consent; this information will not be shared with any third parties.\"\n* Ensure your policy explicitly protects messaging consent from being shared or transferred\n* Remove any language suggesting opt-in data may be shared [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:54:47Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30521,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Opt-in data cannot be shared with third parties",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour verification indicates that opt-in data may be shared, transferred, rented, or sold to third parties through:\n\n- Language in your opt-in terms about sharing data with non-affiliates or partners\n- Privacy policy or terms that mention transferring messaging consent\n- Business practices that involve sharing or selling consent data\n- Lack of explicit protection for messaging consent\n\n### Possible solutions\n\n- Remove all language that allows sharing opt-in data with third parties\n- Update your privacy policy and terms to include specific language prohibiting the sharing of consent:\n  - \"The above excludes text messaging originator opt-in data and consent; this information will not be shared with any third parties.\"\n- Ensure your business practices maintain consent as a direct 1:1 agreement between consumer and message sender\n- Make it clear that opt-in cannot be transferred or sold\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your verification indicates that opt-in data may be shared, transferred, rented, or sold to third parties through: - Language in your opt-in terms about sharing data with non-affiliates or partners\n- Privacy policy or terms that mention transferring messaging consent\n- Business practices that involve sharing or selling consent data\n- Lack of explicit protection for messaging consent",
    "solutions": "* Remove all language that allows sharing opt-in data with third parties\n* Update your privacy policy and terms to include specific language prohibiting the sharing of consent:\n  * \"The above excludes text messaging originator opt-in data and consent; this information will not be shared with any third parties.\"\n* Ensure your business practices maintain consent as a direct 1:1 agreement between consumer and message sender\n* Make it clear that opt-in cannot be transferred or sold [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:56:12Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30522,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SMS terms must be complete and accessible near the opt-in",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe SMS terms and conditions are missing, incomplete, or not accessible. Terms must be complete, publicly accessible, and linked as visible text near the opt-in, not hidden in a pop-up.\n\n### Possible causes\n\n- No terms and conditions were provided, either as a live hyperlink or a copy block.\n- The terms are missing required compliance elements.\n- The terms are shown in a pop-up window, which is not permitted.\n- The terms link is broken or not accessible.\n\n### Possible solutions\n\n- Include all required elements: program or business name, product description, message frequency, customer care contact, opt-out instructions, and the \"message and data rates may apply\" disclosure.\n- Add a carrier liability disclosure stating that wireless carriers are not liable for delayed or undelivered messages.\n- Place direct text links labeled Terms of Service and Privacy Policy close to the opt-in, not in pop-ups, dropdowns, or far from the phone number field.\n- Make the terms link publicly accessible and active.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n",
    "causes": "* No terms and conditions were provided, either as a live hyperlink or a copy block.\n* The terms are missing required compliance elements.\n* The terms are shown in a pop-up window, which is not permitted.\n* The terms link is broken or not accessible.",
    "solutions": "* Include all required elements: program or business name, product description, message frequency, customer care contact, opt-out instructions, and the \"message and data rates may apply\" disclosure.\n* Add a carrier liability disclosure stating that wireless carriers are not liable for delayed or undelivered messages.\n* Place direct text links labeled Terms of Service and Privacy Policy close to the opt-in, not in pop-ups, dropdowns, or far from the phone number field.\n* Make the terms link publicly accessible and active.",
    "description": "The SMS terms and conditions are missing, incomplete, or not accessible. Terms must be complete, publicly accessible, and linked as visible text near the opt-in, not hidden in a pop-up.",
    "date_created": "2025-04-15T16:57:31Z",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30523,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - High-risk domain reputation",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe website domain you provided has been flagged for a high-risk reputation, indicating potential association with:\n\n- Suspicious or questionable activities\n- Previously identified fraudulent behavior\n- Security concerns or compromised status\n- Misleading or deceptive content\n\n### Possible solutions\n\n- This content is ineligible for resubmission with the current domain\n- If you believe this is an error, contact Twilio Support with evidence of your domain's legitimacy\n- Future submissions must use a domain with a positive reputation and no security concerns\n- Ensure your website meets security best practices and contains accurate business information\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "The website domain you provided has been flagged for a high-risk reputation, indicating potential association with: - Suspicious or questionable activities\n- Previously identified fraudulent behavior\n- Security concerns or compromised status\n- Misleading or deceptive content",
    "solutions": "* This content is ineligible for resubmission with the current domain\n* If you believe this is an error, contact Twilio Support with evidence of your domain's legitimacy\n* Future submissions must use a domain with a positive reputation and no security concerns\n* Ensure your website meets security best practices and contains accurate business information [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:58:46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30524,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Potential fraud risk",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour verification submission has been flagged for potential fraud risk based on:\n\n- Risk assessment of business information provided\n- Suspicious patterns or inconsistencies in submission details\n- Association with previously identified fraudulent activity\n\n### Possible solutions\n\n- This content is ineligible for resubmission\n- Businesses associated with fraudulent activity are not permitted on the network\n- Any future submissions must comply with fraud prevention requirements and pass security checks\n- If you believe this is an error, contact Twilio Support with documentation verifying your business legitimacy\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your verification submission has been flagged for potential fraud risk based on: - Risk assessment of business information provided\n- Suspicious patterns or inconsistencies in submission details\n- Association with previously identified fraudulent activity",
    "solutions": "* This content is ineligible for resubmission\n* Businesses associated with fraudulent activity are not permitted on the network\n* Any future submissions must comply with fraud prevention requirements and pass security checks\n* If you believe this is an error, contact Twilio Support with documentation verifying your business legitimacy [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T16:59:58Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30525,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Public URL shorteners not allowed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour sample message content includes URLs from public URL shortening services such as:\n\n- bit.ly\n- goo.gl\n- t.co\n- tinyurl.com\n- Other generic URL shorteners\n\nThese services obscure the destination and don't reflect your brand identity.\n\n### Possible solutions\n\n- Replace public URL shorteners with branded, custom domain URLs\n- Set up your own URL shortening service with a custom domain\n- Use Twilio's [Link Shortening](https://help.twilio.com/articles/1260804572090-How-can-I-send-shortened-URLs-links-in-my-messages) feature to programmatically shorten links using your own branded domain\n- Update your sample message with the full, branded URL or a properly branded shortened URL\n- Ensure all URLs in your messaging clearly identify your business\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your sample message content includes URLs from public URL shortening services such as: - bit.ly\n- goo.gl\n- t.co\n- tinyurl.com\n- Other generic URL shorteners These services obscure the destination and don't reflect your brand identity.",
    "solutions": "* Replace public URL shorteners with branded, custom domain URLs\n* Set up your own URL shortening service with a custom domain\n* Use Twilio's [Link Shortening](https://help.twilio.com/articles/1260804572090-How-can-I-send-shortened-URLs-links-in-my-messages) feature to programmatically shorten links using your own branded domain\n* Update your sample message with the full, branded URL or a properly branded shortened URL\n* Ensure all URLs in your messaging clearly identify your business [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T17:01:17Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30526,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - High-risk domain issues",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nDomain provided was flagged for high-risk issues with the website URL provided, such as:\n\n- Recently registered domain with minimal history\n- Domain associated with suspicious activity\n- Security vulnerabilities or improper configuration\n- Misalignment between domain ownership and business details\n\n### Possible solutions\n\n- This content is ineligible for resubmission with the current domain\n- URLs that fail domain inspection are considered high risk and cannot be approved\n- For future submissions, ensure your domain:\n\n  - Has been established for a reasonable period\n  - Is properly secured and configured\n  - Has clear ownership aligned with business details\n  - Maintains a positive reputation\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Domain provided was flagged for high-risk issues with the website URL provided, such as: - Recently registered domain with minimal history\n- Domain associated with suspicious activity\n- Security vulnerabilities or improper configuration\n- Misalignment between domain ownership and business details",
    "solutions": "* This content is ineligible for resubmission with the current domain\n* URLs that fail domain inspection are considered high risk and cannot be approved\n* For future submissions, ensure your domain:\n\n  * Has been established for a reasonable period\n  * Is properly secured and configured\n  * Has clear ownership aligned with business details\n  * Maintains a positive reputation [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T17:01:22Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30527,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Toll Free verification rejection - Business Registration Number is Missing or Invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Business Registration Number fields in your Toll-Free Verification submission are missing, invalid, or cannot be validated against the business information you submitted. Business registration details are required for all business types except `SOLE_PROPRIETOR`, and the registration data must align with the legal business record.\n\n### Possible causes\n\n- You did not provide `businessRegistrationNumber`, `businessRegistrationAuthority`, or `businessRegistrationCountry` for a business type other than `SOLE_PROPRIETOR`.\n- The legal business name in your submission does not exactly match the name associated with the registration number in official records. For US entities, this should match the IRS CP 575 or 147C letter. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n- The registration number is not valid for the selected authority or region, such as an EIN that is not a valid 9-digit number or a non-US registration number that was not issued by a local or national business authority. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n- You submitted a trade name or DBA as the primary business name, but did not provide the legally registered business name and `doingBusinessAs` information correctly. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n- The EIN was recently issued and is not yet verifiable. According to the [IRS Employer ID Numbers guidance](https://www.irs.gov/businesses/small-businesses-self-employed/employer-id-numbers), a newly assigned EIN can take up to two weeks to pass the IRS Taxpayer ID Number (TIN) Matching Program, so a correct number can still fail validation during that period.\n\n### Possible solutions\n\n- If your rejected Toll-Free Verification is eligible for resubmission, edit the request, remove `Business Registration Number`, `Business Registration Authority`, `Business Registration Country`, and `Business Type`, then resubmit. ([help.twilio.com](https://help.twilio.com/articles/9321443984155))\n- If you are submitting or correcting BRN data, enter your exact legal business name as it appears in your official registration records. Do not abbreviate it, change punctuation, or substitute a DBA for the legal entity name. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n- Verify that the registration number, registration authority, and registration country match your official business documents. For US businesses, use a valid 9-digit EIN. For businesses outside the US, use the official registration number issued by the appropriate authority in the country of registration. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n- If your business does not have a business registration number because it is a sole proprietorship, set `businessType` to `SOLE_PROPRIETOR`. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n- If the EIN was issued recently, wait until it can pass the [IRS TIN Matching Program](https://www.irs.gov/businesses/small-businesses-self-employed/employer-id-numbers) (up to two weeks after assignment) before resubmitting the verification request.\n- If your information is correct and validation still fails, contact support with your verification ID, phone number, and supporting registration documents so the submission can be reviewed. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n\n#### Additional resources\n\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n- [Toll-free verification resource](/docs/messaging/api/tollfree-verification-resource)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n",
    "causes": "* You did not provide `businessRegistrationNumber`, `businessRegistrationAuthority`, or `businessRegistrationCountry` for a business type other than `SOLE_PROPRIETOR`.\n* The legal business name in your submission does not exactly match the name associated with the registration number in official records. For US entities, this should match the IRS CP 575 or 147C letter. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n* The registration number is not valid for the selected authority or region, such as an EIN that is not a valid 9-digit number or a non-US registration number that was not issued by a local or national business authority. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n* You submitted a trade name or DBA as the primary business name, but did not provide the legally registered business name and `doingBusinessAs` information correctly. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n* The EIN was recently issued and is not yet verifiable. According to the [IRS Employer ID Numbers guidance](https://www.irs.gov/businesses/small-businesses-self-employed/employer-id-numbers), a newly assigned EIN can take up to two weeks to pass the IRS Taxpayer ID Number (TIN) Matching Program, so a correct number can still fail validation during that period.",
    "solutions": "* If your rejected Toll-Free Verification is eligible for resubmission, edit the request, remove `Business Registration Number`, `Business Registration Authority`, `Business Registration Country`, and `Business Type`, then resubmit. ([help.twilio.com](https://help.twilio.com/articles/9321443984155))\n* If you are submitting or correcting BRN data, enter your exact legal business name as it appears in your official registration records. Do not abbreviate it, change punctuation, or substitute a DBA for the legal entity name. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n* Verify that the registration number, registration authority, and registration country match your official business documents. For US businesses, use a valid 9-digit EIN. For businesses outside the US, use the official registration number issued by the appropriate authority in the country of registration. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n* If your business does not have a business registration number because it is a sole proprietorship, set `businessType` to `SOLE_PROPRIETOR`. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))\n* If the EIN was issued recently, wait until it can pass the [IRS TIN Matching Program](https://www.irs.gov/businesses/small-businesses-self-employed/employer-id-numbers) (up to two weeks after assignment) before resubmitting the verification request.\n* If your information is correct and validation still fails, contact support with your verification ID, phone number, and supporting registration documents so the submission can be reviewed. ([help.twilio.com](https://help.twilio.com/articles/38266268244507))",
    "description": "This error occurs when the Business Registration Number fields in your Toll-Free Verification submission are missing, invalid, or cannot be validated against the business information you submitted. Business registration details are required for all business types except `SOLE_PROPRIETOR`, and the registration data must align with the legal business record.",
    "date_created": "2025-04-16T15:57:27Z",
    "last_updated": "2026-08-04T16:51:51+01:00"
  },
  {
    "code": 30528,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll Free verification rejection - Disallowed: Non-federally compliant use case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour messaging use case does not comply with federal regulations applicable across all 50 U.S. states. This may involve:\n\n- Content that is legal in some states but federally prohibited\n- Activities that violate federal communications laws\n- Products or services that are federally regulated but not properly licensed\n- Use cases explicitly prohibited by federal guidelines\n\n### Possible solutions\n\n- This content is ineligible for resubmission\n- Messaging use cases must comply with federal regulations applicable in all 50 U.S. states\n- State-level legality is insufficient if federal compliance is not met\n- Future submissions must focus on use cases that are fully compliant with all applicable federal laws\n\n[Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected)\n\n[Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification)\n\n[Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "Your messaging use case does not comply with federal regulations applicable across all 50 U.S. states. This may involve: - Content that is legal in some states but federally prohibited\n- Activities that violate federal communications laws\n- Products or services that are federally regulated but not properly licensed\n- Use cases explicitly prohibited by federal guidelines",
    "solutions": "* This content is ineligible for resubmission\n* Messaging use cases must comply with federal regulations applicable in all 50 U.S. states\n* State-level legality is insufficient if federal compliance is not met\n* Future submissions must focus on use cases that are fully compliant with all applicable federal laws [Why was my Toll Free Verification Rejected?](https://support.twilio.com/hc/en-us/articles/9321443984155-Why-Was-My-Toll-Free-Verification-Rejected) [Required information for Toll-free verification](https://support.twilio.com/hc/en-us/articles/13264118705051-Required-Information-for-Toll-Free-Verification) [Toll-Free best practices](https://support.twilio.com/hc/en-us/articles/360038172934-Information-and-best-practices-for-using-Toll-Free-SMS-and-MMS-in-the-US-and-Canada)",
    "description": "The Toll-Free phone number verification submission has been reviewed and it was rejected. Messaging traffic on this Toll-Free number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2025-04-15T17:04:44Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 30529,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Toll Free rejection: Alcohol promotions require age verification",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour toll-free verification submission was rejected because your messaging program involves alcohol-related content and the review did not find an acceptable age-verification process. Messaging traffic on the toll-free number remains blocked until the number is verified.\n\nTwilio reviews the business that is sending the messages, the stated use case, sample content, web presence, opt-in or consent flow, and related terms and privacy policy when evaluating a toll-free verification submission.\n\n### Possible causes\n\n- Your opt-in flow or website does not use a robust age-verification process for alcohol-related messaging.\n- Your age gate relies on a simple confirmation such as \"Yes\" instead of collecting a full date of birth. Twilio requires age gating for alcohol-related traffic to mean that users enter their date of birth.\n- Your website or landing pages make alcohol-related content available before the user passes an age gate.\n- Your verification submission does not clearly show how your opt-in flow, website, and sample messages enforce legal age restrictions.\n- You intend to send age-gated alcohol traffic to Canada. Age-gated content into Canada must be blocked unless you have a special carrier exemption. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n### Possible solutions\n\n- Add a 21+ age gate to your website and opt-in flow before users can access alcohol-related content or enroll in messaging.\n- Require users to enter their full date of birth in `MM/DD/YYYY` format, or use a third-party age-verification service. Do not rely on a simple \"Yes\" confirmation as your only control.\n- Update your verification submission so it includes clear evidence of the revised age-verification flow, including where the age gate appears in the user journey and how consent is collected.\n- If the rejected submission is eligible for resubmission, correct the issue and resubmit from the toll-free number's Regulatory Information section in Console during the resubmission window when available.\n- If you send messages to Canada, block age-gated alcohol traffic unless you have the required carrier exemption. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n#### Additional resources\n\n- [Toll-Free Verification Console Onboarding Guide](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Toll-Free Message Verification for US/Canada](https://help.twilio.com/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your opt-in flow or website does not use a robust age-verification process for alcohol-related messaging.\n* Your age gate relies on a simple confirmation such as \"Yes\" instead of collecting a full date of birth. Twilio requires age gating for alcohol-related traffic to mean that users enter their date of birth.\n* Your website or landing pages make alcohol-related content available before the user passes an age gate.\n* Your verification submission does not clearly show how your opt-in flow, website, and sample messages enforce legal age restrictions.\n* You intend to send age-gated alcohol traffic to Canada. Age-gated content into Canada must be blocked unless you have a special carrier exemption. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "solutions": "* Add a 21+ age gate to your website and opt-in flow before users can access alcohol-related content or enroll in messaging.\n* Require users to enter their full date of birth in `MM/DD/YYYY` format, or use a third-party age-verification service. Do not rely on a simple \"Yes\" confirmation as your only control.\n* Update your verification submission so it includes clear evidence of the revised age-verification flow, including where the age gate appears in the user journey and how consent is collected.\n* If the rejected submission is eligible for resubmission, correct the issue and resubmit from the toll-free number's Regulatory Information section in Console during the resubmission window when available.\n* If you send messages to Canada, block age-gated alcohol traffic unless you have the required carrier exemption. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "description": "Your toll-free verification submission was rejected because your messaging program involves alcohol-related content and the review did not find an acceptable age-verification process. Messaging traffic on the toll-free number remains blocked until the number is verified. Twilio reviews the business that is sending the messages, the stated use case, sample content, web presence, opt-in or consent flow, and related terms and privacy policy when evaluating a toll-free verification submission.",
    "date_created": "2025-04-15T17:05:23Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30530,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Selected legal entity type does not match your business records",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe registration information provided does not match the legal entity type you selected. This often happens when a business is submitted as a Sole Proprietorship but the available information indicates it is a registered or incorporated organization.\n\n### Possible causes\n\n- The submission was filed as a Sole Proprietor, but an EIN was provided that belongs to an incorporated entity.\n- The business website or other details point to a registered or incorporated company rather than a sole proprietorship.\n- The registration information is missing, incomplete, or inconsistent with the declared entity type.\n\n### Possible solutions\n\n- Provide valid business registration information that matches your official legal entity type.\n- Update your entity type selection so it matches your corporate records.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n",
    "causes": "* The submission was filed as a Sole Proprietor, but an EIN was provided that belongs to an incorporated entity.\n* The business website or other details point to a registered or incorporated company rather than a sole proprietorship.\n* The registration information is missing, incomplete, or inconsistent with the declared entity type.",
    "solutions": "* Provide valid business registration information that matches your official legal entity type.\n* Update your entity type selection so it matches your corporate records.",
    "description": "The registration information provided does not match the legal entity type you selected. This often happens when a business is submitted as a Sole Proprietorship but the available information indicates it is a registered or incorporated organization.",
    "date_created": "2026-03-03T18:54:31-05:00",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30531,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Toll-Free verification rejection - HELP keyword response must meet requirements",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Toll-Free verification submission was rejected because the `HELP` keyword response in the submission doesn't meet requirements. Messaging traffic on the Toll-Free number is blocked until the number is verified.\n\n### Possible causes\n\n- The `HELP` keyword response doesn't include customer contact details such as a phone number, email address, or website.\n- The `HELP` keyword response doesn't include your business or brand name.\n- The `HELP` keyword response doesn't provide clear support information.\n- The `HELP` keyword response uses formatting or content that doesn't meet requirements.\n\n### Possible solutions\n\n- Update your submitted `HELP` keyword response to include your business or brand name and at least one customer contact method, such as a phone number, email address, or website.\n- Make sure the `HELP` response tells users how to get assistance and includes a \"Message and data rates may apply\" disclosure and opt-out instructions, such as \"Reply STOP to opt out\".\n- Ensure the response is sent automatically when a consumer texts HELP.\n- Resubmit the Toll-Free verification request after you correct the `HELP` response.\n\n### Additional resources\n\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Why Was My Toll-Free Verification Rejected?](https://help.twilio.com/articles/9321443984155)\n- [Get started with toll-free verification using the API](/docs/messaging/compliance/toll-free/api-onboarding)\n",
    "causes": "* The `HELP` keyword response doesn't include customer contact details such as a phone number, email address, or website.\n* The `HELP` keyword response doesn't include your business or brand name.\n* The `HELP` keyword response doesn't provide clear support information.\n* The `HELP` keyword response uses formatting or content that doesn't meet requirements.",
    "solutions": "* Update your submitted `HELP` keyword response to include your business or brand name and at least one customer contact method, such as a phone number, email address, or website.\n* Make sure the `HELP` response tells users how to get assistance and includes a \"Message and data rates may apply\" disclosure and opt-out instructions, such as \"Reply STOP to opt out\".\n* Ensure the response is sent automatically when a consumer texts HELP.\n* Resubmit the Toll-Free verification request after you correct the `HELP` response.",
    "description": "This error means your Toll-Free verification submission was rejected because the `HELP` keyword response in the submission doesn't meet requirements. Messaging traffic on the Toll-Free number is blocked until the number is verified.",
    "date_created": "2026-03-09T15:03:10+01:00",
    "last_updated": "2026-09-14T12:28:48-04:00"
  },
  {
    "code": 30532,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Personal use cases are not supported",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour registration must describe a business use case. Messaging programs used only for personal purposes, such as reaching yourself, family members, or friends, are not eligible.\n\n### Possible causes\n\n- The number was requested to send reminders to yourself, friends, or family members.\n- The use case describes general personal messaging rather than a business activity.\n\n### Possible solutions\n\n- If the submitted description does not reflect your actual business messaging, correct it and provide matching evidence. Personal messaging itself is not supported by this registration program; changing only the description does not make it eligible.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The number was requested to send reminders to yourself, friends, or family members.\n* The use case describes general personal messaging rather than a business activity.",
    "solutions": "* If the submitted description does not reflect your actual business messaging, correct it and provide matching evidence. Personal messaging itself is not supported by this registration program; changing only the description does not make it eligible.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your registration must describe a business use case. Messaging programs used only for personal purposes, such as reaching yourself, family members, or friends, are not eligible.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30533,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Person-to-person (P2P) use cases are not supported",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nMessaging registration supports application-to-person (A2P) use cases only. Person-to-person (P2P) messaging is not supported.\n\n### Possible causes\n\n- The number was requested to send messages person to person.\n- The use case describes individuals texting each other rather than a business sending messages to consumers.\n\n### Possible solutions\n\n- If the submitted description does not reflect your actual business messaging, correct it and provide matching evidence. Person-to-person messaging itself is not supported by this registration program; changing only the description does not make it eligible.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The number was requested to send messages person to person.\n* The use case describes individuals texting each other rather than a business sending messages to consumers.",
    "solutions": "* If the submitted description does not reflect your actual business messaging, correct it and provide matching evidence. Person-to-person messaging itself is not supported by this registration program; changing only the description does not make it eligible.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Messaging registration supports application-to-person (A2P) use cases only. Person-to-person (P2P) messaging is not supported.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30534,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Testing use case is missing business or program details",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nTesting use cases still require complete, accurate business information and full messaging program details. Placeholder text is not accepted.\n\n### Possible causes\n\n- Business information fields were filled with the word \"testing.\"\n- Use case details include only the word \"testing\" without an actual description.\n- The submission does not confirm that messaging is strictly internal with no external recipients.\n\n### Possible solutions\n\n- Provide accurate business details, including a live website, valid address, and correct contact information.\n- Add a detailed testing use case description with supporting documentation that identifies the recipients.\n- Confirm that messaging is strictly internal and that no messages will be sent to external recipients, then resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Business information fields were filled with the word \"testing.\"\n* Use case details include only the word \"testing\" without an actual description.\n* The submission does not confirm that messaging is strictly internal with no external recipients.",
    "solutions": "* Provide accurate business details, including a live website, valid address, and correct contact information.\n* Add a detailed testing use case description with supporting documentation that identifies the recipients.\n* Confirm that messaging is strictly internal and that no messages will be sent to external recipients, then resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Testing use cases still require complete, accurate business information and full messaging program details. Placeholder text is not accepted.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30535,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Viral messaging is missing required compliance disclosures",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nViral messaging programs must be one-time, consent-based, and include required disclosures. Submissions that do not demonstrate these requirements will be denied.\n\n### Possible causes\n\n- The program sends recurring messages instead of a single one-time message.\n- The sender does not have recipient consent before sending.\n- Recipients are chosen with bulk tools such as \"select all\" or contact imports.\n- Messages omit sender identity, purpose, recipient name, or opt-out instructions, or the sender is offered a reward for sending.\n\n### Possible solutions\n\n- Limit messages to a single, non-recurring communication.\n- Obtain prior recipient consent and select recipients individually rather than in bulk.\n- Include the sender's identity, message purpose, recipient name, and an opt-out mechanism in every message.\n- Remove any compensation, rewards, or incentives for senders, then resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The program sends recurring messages instead of a single one-time message.\n* The sender does not have recipient consent before sending.\n* Recipients are chosen with bulk tools such as \"select all\" or contact imports.\n* Messages omit sender identity, purpose, recipient name, or opt-out instructions, or the sender is offered a reward for sending.",
    "solutions": "* Limit messages to a single, non-recurring communication.\n* Obtain prior recipient consent and select recipients individually rather than in bulk.\n* Include the sender's identity, message purpose, recipient name, and an opt-out mechanism in every message.\n* Remove any compensation, rewards, or incentives for senders, then resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Viral messaging programs must be one-time, consent-based, and include required disclosures. Submissions that do not demonstrate these requirements will be denied.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30536,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Privacy policy URL is missing, inaccessible, or empty",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe privacy policy URL you provided could not be verified because it was missing, broken, behind a login screen, or had no content.\n\n### Possible causes\n\n- No privacy policy URL was provided.\n- The link is broken or does not load.\n- The page sits behind a login screen and cannot be reviewed.\n- The page loads but has no privacy policy content.\n\n### Possible solutions\n\n- Provide a privacy policy URL that is publicly accessible and active.\n- Ensure the page includes all relevant disclosures about consumer data protection and privacy, then resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* No privacy policy URL was provided.\n* The link is broken or does not load.\n* The page sits behind a login screen and cannot be reviewed.\n* The page loads but has no privacy policy content.",
    "solutions": "* Provide a privacy policy URL that is publicly accessible and active.\n* Ensure the page includes all relevant disclosures about consumer data protection and privacy, then resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The privacy policy URL you provided could not be verified because it was missing, broken, behind a login screen, or had no content.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30537,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Business model does not match the messaging use case",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe business model shown on your website does not align with the messaging use case in your submission.\n\n### Possible causes\n\n- The website describes a service business, but the sample messages reference physical product shipping or delivery updates.\n- The message content does not match the products or services listed on your website.\n\n### Possible solutions\n\n- Align your messaging program details with the core business model and information on your website.\n- Update the sample messages or website details so they are consistent, then resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The website describes a service business, but the sample messages reference physical product shipping or delivery updates.\n* The message content does not match the products or services listed on your website.",
    "solutions": "* Align your messaging program details with the core business model and information on your website.\n* Update the sample messages or website details so they are consistent, then resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The business model shown on your website does not align with the messaging use case in your submission.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30538,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "A message sample is missing for a selected use case",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYou selected multiple use cases but provided a sample message for only one. Each selected use case needs its own sample.\n\n### Possible causes\n\n- The selected use cases mix content types, such as marketing and informational, but only one sample message was provided.\n\n### Possible solutions\n\n- Provide a unique message sample for each use case you selected, then resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The selected use cases mix content types, such as marketing and informational, but only one sample message was provided.",
    "solutions": "* Provide a unique message sample for each use case you selected, then resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. You selected multiple use cases but provided a sample message for only one. Each selected use case needs its own sample.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30539,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call-to-Action opt-out instructions are present but noncompliant",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour call-to-action includes opt-out instructions, but those instructions do not provide compliant keyword language. If opt-out instructions are entirely absent, see [30547](/docs/api/errors/30547).\n\n### Possible causes\n\n- The disclosure contains opt-out instructions but does not explain a valid keyword-based way to stop receiving messages.\n- The instructions direct consumers to use alternative words or numbers to opt out, such as \"Reply NO to stop\" or \"Text 3 to unsubscribe,\" which is not allowed.\n\n### Possible solutions\n\n- Update your consent details to include standard, compliant opt-out language.\n- Place clear instructions in plain sight on the call-to-action screen using a valid opt-out keyword, such as \"Reply STOP to cancel\" or \"Reply STOP to opt out,\" then resubmit. Valid keyword examples include STOP, UNSUBSCRIBE, END, QUIT, HALT, and CANCEL.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The disclosure contains opt-out instructions but does not explain a valid keyword-based way to stop receiving messages.\n* The instructions direct consumers to use alternative words or numbers to opt out, such as \"Reply NO to stop\" or \"Text 3 to unsubscribe,\" which is not allowed.",
    "solutions": "* Update your consent details to include standard, compliant opt-out language.\n* Place clear instructions in plain sight on the call-to-action screen using a valid opt-out keyword, such as \"Reply STOP to cancel\" or \"Reply STOP to opt out,\" then resubmit. Valid keyword examples include STOP, UNSUBSCRIBE, END, QUIT, HALT, and CANCEL.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your call-to-action includes opt-out instructions, but those instructions do not provide compliant keyword language. If opt-out instructions are entirely absent, see [30547](/docs/api/errors/30547).",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30540,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Double opt-in confirmation message is required",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYou must provide the confirmation message that is sent to users after they double opt in to your messaging program.\n\n### Possible causes\n\n- The double opt-in confirmation field is empty.\n- The confirmation message is missing required compliance disclosures.\n\n### Possible solutions\n\n- Provide a double opt-in confirmation message that includes the brand name, program name, a \"message and data rates may apply\" disclosure, and help and opt-out disclosures, then resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The double opt-in confirmation field is empty.\n* The confirmation message is missing required compliance disclosures.",
    "solutions": "* Provide a double opt-in confirmation message that includes the brand name, program name, a \"message and data rates may apply\" disclosure, and help and opt-out disclosures, then resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. You must provide the confirmation message that is sent to users after they double opt in to your messaging program.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30541,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Political campaign is missing an FEC or state committee ID",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nPolitical campaigns must provide a valid Federal Election Commission (FEC) Committee ID for federal submissions or a state registration number for state-level submissions.\n\n### Possible causes\n\n- The submission does not include an FEC Committee ID for a federal-level political campaign.\n- The submission does not include a state committee ID for a state-level political campaign.\n\n### Possible solutions\n\n- For federal campaigns, submit a valid FEC Committee ID. You can search committee and candidate profiles at the [FEC committee search](https://www.fec.gov/data/).\n- For state campaigns, submit a state committee registration number or equivalent official documentation, then resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The submission does not include an FEC Committee ID for a federal-level political campaign.\n* The submission does not include a state committee ID for a state-level political campaign.",
    "solutions": "* For federal campaigns, submit a valid FEC Committee ID. You can search committee and candidate profiles at the [FEC committee search](https://www.fec.gov/data/).\n* For state campaigns, submit a state committee registration number or equivalent official documentation, then resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Political campaigns must provide a valid Federal Election Commission (FEC) Committee ID for federal submissions or a state registration number for state-level submissions.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30542,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Political messaging must use the Political use case category",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nPolitical campaigns and 527 tax-exempt political organizations must select the dedicated Political use case category. Generic categories such as Marketing or Customer Care are not allowed for political messaging.\n\n### Possible causes\n\n- A registered political PAC submitted under the generic Customer Care use case category.\n- A candidate's election committee submitted vote-related message samples but classified the use case as Marketing.\n\n### Possible solutions\n\n- Change the submission's use case category to Political.\n- Ensure the message samples and description align with the Political category and include a valid Campaign Verify Token, then resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* A registered political PAC submitted under the generic Customer Care use case category.\n* A candidate's election committee submitted vote-related message samples but classified the use case as Marketing.",
    "solutions": "* Change the submission's use case category to Political.\n* Ensure the message samples and description align with the Political category and include a valid Campaign Verify Token, then resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Political campaigns and 527 tax-exempt political organizations must select the dedicated Political use case category. Generic categories such as Marketing or Customer Care are not allowed for political messaging.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30543,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Live opt-in link not provided",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nFor a website-based opt-in that requires an active landing-page link, the registration is missing that link. A screenshot or mock-up does not replace the required live link for this method.\n\nThis error does not require a public live form for every opt-in method. Authenticated web forms, paper, verbal, and other accepted methods must provide the evidence required for that method and program. Where hosted screenshots are accepted for a nonpublic flow, this error does not prohibit them.\n\n### Possible causes\n\n- A required live website opt-in link was omitted.\n- A screenshot or mock-up was submitted instead of the required active landing-page link for a public website flow.\n\n### Possible solutions\n\n- For a website flow requiring a live link, provide the direct active landing-page URL and confirm it matches the submitted opt-in process.\n- For other accepted methods, provide the program-specific evidence that demonstrates the actual consent process.\n- Resubmit the registration with the required evidence.\n- A supplied opt-in URL that cannot be accessed is a different failure; Toll-Free guidance for that condition is described by [30509](/docs/api/errors/30509).\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* A required live website opt-in link was omitted.\n* A screenshot or mock-up was submitted instead of the required active landing-page link for a public website flow.",
    "solutions": "* For a website flow requiring a live link, provide the direct active landing-page URL and confirm it matches the submitted opt-in process.\n* For other accepted methods, provide the program-specific evidence that demonstrates the actual consent process.\n* Resubmit the registration with the required evidence.\n* A supplied opt-in URL that cannot be accessed is a different failure; Toll-Free guidance for that condition is described by [30509](/docs/api/errors/30509).",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. For a website-based opt-in that requires an active landing-page link, the registration is missing that link. A screenshot or mock-up does not replace the required live link for this method. This error does not require a public live form for every opt-in method. Authenticated web forms, paper, verbal, and other accepted methods must provide the evidence required for that method and program. Where hosted screenshots are accepted for a nonpublic flow, this error does not prohibit them.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30544,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call-to-Action does not state the message purpose",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe Call-to-Action (CTA) disclosure does not state the purpose or nature of the messages the user is consenting to receive, such as promotions, order updates, or appointment reminders.\n\n### Possible causes\n\n- The CTA disclosure requests SMS consent without specifying the type of content the consumer will receive.\n- The message purpose is missing or too vague for the user to understand what they are opting into.\n\n### Possible solutions\n\n- Update the CTA disclosure to clearly describe the specific purpose of the messages, such as \"marketing offers and promotional alerts\" or \"appointment reminders\".\n- Resubmit with the updated disclosure text.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The CTA disclosure requests SMS consent without specifying the type of content the consumer will receive.\n* The message purpose is missing or too vague for the user to understand what they are opting into.",
    "solutions": "* Update the CTA disclosure to clearly describe the specific purpose of the messages, such as \"marketing offers and promotional alerts\" or \"appointment reminders\".\n* Resubmit with the updated disclosure text.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The Call-to-Action (CTA) disclosure does not state the purpose or nature of the messages the user is consenting to receive, such as promotions, order updates, or appointment reminders.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30545,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call-to-Action does not state message frequency",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe Call-to-Action (CTA) disclosure does not state how often the end user will receive messages. Clear frequency expectations must be provided before opt-in.\n\n### Possible causes\n\n- The opt-in form requests consent without specifying how often messages will be sent.\n- The disclosure does not indicate that messaging is recurring.\n\n### Possible solutions\n\n- Update the CTA disclosure to explicitly state message frequency using standard phrasing such as \"Message frequency varies,\" \"1 msg per request,\" or \"4 msgs/month\".\n- Resubmit with the updated disclosure text.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in form requests consent without specifying how often messages will be sent.\n* The disclosure does not indicate that messaging is recurring.",
    "solutions": "* Update the CTA disclosure to explicitly state message frequency using standard phrasing such as \"Message frequency varies,\" \"1 msg per request,\" or \"4 msgs/month\".\n* Resubmit with the updated disclosure text.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The Call-to-Action (CTA) disclosure does not state how often the end user will receive messages. Clear frequency expectations must be provided before opt-in.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30546,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deadline to correct the opt-in process has expired",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nA previous agreement gave you time to bring your opt-in into compliance, but that grace period has expired and the agreed changes were not made. This error concerns the remediation deadline from the previous review; it does not mean that a subscriber's consent has expired. Implement the required changes and submit proof of a fully compliant opt-in.\n\n### Possible causes\n\n- The same non-compliant opt-in was provided again after the grace period had already ended.\n- The opt-in was not updated to reflect the specific compliance details agreed upon during the grace period.\n\n### Possible solutions\n\n- Provide a compliant opt-in that includes the specific modifications requested during the earlier review.\n- Submit proof of the fully compliant opt-in to move forward with verification.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The same non-compliant opt-in was provided again after the grace period had already ended.\n* The opt-in was not updated to reflect the specific compliance details agreed upon during the grace period.",
    "solutions": "* Provide a compliant opt-in that includes the specific modifications requested during the earlier review.\n* Submit proof of the fully compliant opt-in to move forward with verification.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. A previous agreement gave you time to bring your opt-in into compliance, but that grace period has expired and the agreed changes were not made. This error concerns the remediation deadline from the previous review; it does not mean that a subscriber's consent has expired. Implement the required changes and submit proof of a fully compliant opt-in.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30547,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call-to-Action is missing opt-out instructions",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe Call-to-Action (CTA) disclosure contains no opt-out instructions. Instructions that are present but noncompliant are a separate failure described by [30539](/docs/api/errors/30539).\n\n### Possible causes\n\n- The opt-in text requests SMS consent but provides no instructions for how to stop receiving messages.\n- The disclosure omits any instruction telling consumers how to revoke consent or unsubscribe.\n\n### Possible solutions\n\n- Add clear opt-out instructions to the CTA disclosure that reference a valid opt-out keyword such as STOP, UNSUBSCRIBE, END, QUIT, HALT, or CANCEL, for example \"Text STOP to cancel\".\n- Resubmit with the updated disclosure text.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in text requests SMS consent but provides no instructions for how to stop receiving messages.\n* The disclosure omits any instruction telling consumers how to revoke consent or unsubscribe.",
    "solutions": "* Add clear opt-out instructions to the CTA disclosure that reference a valid opt-out keyword such as STOP, UNSUBSCRIBE, END, QUIT, HALT, or CANCEL, for example \"Text STOP to cancel\".\n* Resubmit with the updated disclosure text.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The Call-to-Action (CTA) disclosure contains no opt-out instructions. Instructions that are present but noncompliant are a separate failure described by [30539](/docs/api/errors/30539).",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30548,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Charitable program does not separate consent for donation requests",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nPrograms that send both transactional or informational notifications and financial solicitation messages over a single line must offer separate consent options for each category. A single combined checkbox is not compliant.\n\n### Possible causes\n\n- A single signup checkbox covers both account notifications and donation requests, such as \"I agree to receive account notifications and donation requests from \\[Brand Name].\"\n- The form ties informational alerts and fundraising or donation requests together in one consent statement.\n\n### Possible solutions\n\n- Update the registration form to use separate, independent checkboxes for each program component.\n- Provide unchecked checkboxes so users can opt into informational updates without being forced to consent to donation requests, for example one checkbox for account and informational alerts and a separate checkbox for fundraising and donation messages.\n- Resubmit with the updated form.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* A single signup checkbox covers both account notifications and donation requests, such as \"I agree to receive account notifications and donation requests from \\[Brand Name].\"\n* The form ties informational alerts and fundraising or donation requests together in one consent statement.",
    "solutions": "* Update the registration form to use separate, independent checkboxes for each program component.\n* Provide unchecked checkboxes so users can opt into informational updates without being forced to consent to donation requests, for example one checkbox for account and informational alerts and a separate checkbox for fundraising and donation messages.\n* Resubmit with the updated form.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Programs that send both transactional or informational notifications and financial solicitation messages over a single line must offer separate consent options for each category. A single combined checkbox is not compliant.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30549,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "No Terms of Service link found in the opt-in flow",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nNo direct, accessible link to the messaging program's Terms of Service was found in the opt-in flow or at the Call-to-Action (CTA). A clickable Terms of Service link must be present where consent is collected.\n\n### Possible causes\n\n- The opt-in flow or CTA requests consent but has no visible, clickable link to the program's Terms of Service.\n- A Terms of Service link is present elsewhere but not within or adjacent to the opt-in or CTA disclosure.\n\n### Possible solutions\n\n- Include an accessible hyperlink to the Terms of Service within or immediately adjacent to the opt-in flow and the CTA disclosure text.\n- Resubmit once the link is in place.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in flow or CTA requests consent but has no visible, clickable link to the program's Terms of Service.\n* A Terms of Service link is present elsewhere but not within or adjacent to the opt-in or CTA disclosure.",
    "solutions": "* Include an accessible hyperlink to the Terms of Service within or immediately adjacent to the opt-in flow and the CTA disclosure text.\n* Resubmit once the link is in place.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. No direct, accessible link to the messaging program's Terms of Service was found in the opt-in flow or at the Call-to-Action (CTA). A clickable Terms of Service link must be present where consent is collected.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30550,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "No Privacy Policy link found in the opt-in flow",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nNo direct, accessible link to the business Privacy Policy was found in the opt-in flow or at the Call-to-Action (CTA). The Privacy Policy explains how end-user mobile data is handled and protected and must be linked where consent is collected.\n\n### Possible causes\n\n- The opt-in flow or CTA requests consent but has no visible, clickable link to the Privacy Policy.\n- A Privacy Policy link is present elsewhere but not within or adjacent to the opt-in or CTA disclosure.\n\n### Possible solutions\n\n- Add a clear, accessible hyperlink to your compliant Privacy Policy within or adjacent to the opt-in flow and the CTA disclosure text.\n- Resubmit once the link is in place.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in flow or CTA requests consent but has no visible, clickable link to the Privacy Policy.\n* A Privacy Policy link is present elsewhere but not within or adjacent to the opt-in or CTA disclosure.",
    "solutions": "* Add a clear, accessible hyperlink to your compliant Privacy Policy within or adjacent to the opt-in flow and the CTA disclosure text.\n* Resubmit once the link is in place.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. No direct, accessible link to the business Privacy Policy was found in the opt-in flow or at the Call-to-Action (CTA). The Privacy Policy explains how end-user mobile data is handled and protected and must be linked where consent is collected.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30551,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Consent does not specify SMS or text messaging",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nConsent disclosures must clearly state that messages are delivered by SMS or text messaging. Vague or generic terms such as \"communications\" without naming the text messaging channel are not compliant.\n\n### Possible causes\n\n- The disclosure uses generic phrasing such as \"you agree to receive communications\" without identifying SMS or text messaging as the delivery channel.\n\n### Possible solutions\n\n- Update the disclosure to explicitly include the terms \"SMS\" or \"text messages\", for example \"By checking this box, you agree to receive SMS notifications...\".\n- Resubmit with the updated disclosure text.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The disclosure uses generic phrasing such as \"you agree to receive communications\" without identifying SMS or text messaging as the delivery channel.",
    "solutions": "* Update the disclosure to explicitly include the terms \"SMS\" or \"text messages\", for example \"By checking this box, you agree to receive SMS notifications...\".\n* Resubmit with the updated disclosure text.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Consent disclosures must clearly state that messages are delivered by SMS or text messaging. Vague or generic terms such as \"communications\" without naming the text messaging channel are not compliant.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30552,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Opt-in is not customer-facing",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe opt-in provided is not customer-facing and does not clearly show how the end user agrees to receive messages. Proof must show direct consent from the end user, not a staff member acting on their behalf.\n\n### Possible causes\n\n- The opt-in shows an admin dashboard or management interface with a checkbox such as \"I confirm this customer has agreed to receive the SMS\", indicating someone is checking the box on the customer's behalf.\n- The opt-in does not clearly show the interaction between the business and the end user.\n\n### Possible solutions\n\n- Submit proof of direct end-user consent, such as a customer-facing web form, paper intake form, or verbal script.\n- Do not use internal admin dashboards or staff-selected CRM checkboxes as opt-in proof, and resubmit with valid customer-facing proof.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in shows an admin dashboard or management interface with a checkbox such as \"I confirm this customer has agreed to receive the SMS\", indicating someone is checking the box on the customer's behalf.\n* The opt-in does not clearly show the interaction between the business and the end user.",
    "solutions": "* Submit proof of direct end-user consent, such as a customer-facing web form, paper intake form, or verbal script.\n* Do not use internal admin dashboards or staff-selected CRM checkboxes as opt-in proof, and resubmit with valid customer-facing proof.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The opt-in provided is not customer-facing and does not clearly show how the end user agrees to receive messages. Proof must show direct consent from the end user, not a staff member acting on their behalf.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30553,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SMS is forced for two-factor authentication",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nPrograms that use multi-factor confirmations or two-factor authentication (2FA) codes must offer at least one alternative delivery channel besides SMS, such as email, voice fallback, or push notification. SMS cannot be a forced requirement for security verification.\n\n### Possible causes\n\n- A login or signup security page blocks the user from completing setup unless they provide an SMS-enabled phone number.\n- The workflow states that text-based 2FA is mandatory with no other option.\n\n### Possible solutions\n\n- Update the authentication workflow to offer at least one alternative delivery method, such as an email confirmation link, alongside the SMS option.\n- Resubmit once an alternative channel is available.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* A login or signup security page blocks the user from completing setup unless they provide an SMS-enabled phone number.\n* The workflow states that text-based 2FA is mandatory with no other option.",
    "solutions": "* Update the authentication workflow to offer at least one alternative delivery method, such as an email confirmation link, alongside the SMS option.\n* Resubmit once an alternative channel is available.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Programs that use multi-factor confirmations or two-factor authentication (2FA) codes must offer at least one alternative delivery channel besides SMS, such as email, voice fallback, or push notification. SMS cannot be a forced requirement for security verification.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30554,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Charitable donations collected insecurely over SMS",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nDonations must not be collected, authorized, or completed through SMS keyword responses, dollar-amount replies, or other text-based payment methods.\n\n### Possible causes\n\n- The program prompts donors to \"Reply with a dollar amount to charge your card on file\".\n- The program asks for payment or billing details directly inside the text message thread.\n\n### Possible solutions\n\n- When a user texts a keyword such as \"DONATE\", reply with a secure HTTPS link to an external page where the donor can process payment themselves.\n- Remove any text-based payment collection from the messaging flow and resubmit.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The program prompts donors to \"Reply with a dollar amount to charge your card on file\".\n* The program asks for payment or billing details directly inside the text message thread.",
    "solutions": "* When a user texts a keyword such as \"DONATE\", reply with a secure HTTPS link to an external page where the donor can process payment themselves.\n* Remove any text-based payment collection from the messaging flow and resubmit.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Donations must not be collected, authorized, or completed through SMS keyword responses, dollar-amount replies, or other text-based payment methods.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30555,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "First message sent without documented prior consent",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYou must collect explicit consent before sending the first message to an end user. The submitted proof must show the step where the user actively granted permission.\n\n### Possible causes\n\n- The opt-in proof shows an outbound message to the end user but not the step where the user granted permission.\n- The proof shows a confirmation or automated reply without the preceding Call-to-Action, web form, or intake form that triggered it.\n\n### Possible solutions\n\n- Submit visual proof of the complete opt-in sequence, clearly showing the step where the user consents before receiving the first message.\n- Resubmit once the full opt-in flow is documented.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in proof shows an outbound message to the end user but not the step where the user granted permission.\n* The proof shows a confirmation or automated reply without the preceding Call-to-Action, web form, or intake form that triggered it.",
    "solutions": "* Submit visual proof of the complete opt-in sequence, clearly showing the step where the user consents before receiving the first message.\n* Resubmit once the full opt-in flow is documented.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. You must collect explicit consent before sending the first message to an end user. The submitted proof must show the step where the user actively granted permission.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30556,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SMS consent is bundled with other communication channels",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nMessaging consent must be collected separately from other use cases, services, and communication channels such as email or phone calls. It cannot be bundled with consent for other channels.\n\n### Possible causes\n\n- SMS consent is combined or bundled with other channels such as email or phone calls.\n- The form does not offer a separate, standalone opt-in for SMS.\n\n### Possible solutions\n\n- Separate SMS enrollment from all other communication channels so the user can opt into text messages independently.\n- Resubmit with a standalone SMS opt-in.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* SMS consent is combined or bundled with other channels such as email or phone calls.\n* The form does not offer a separate, standalone opt-in for SMS.",
    "solutions": "* Separate SMS enrollment from all other communication channels so the user can opt into text messages independently.\n* Resubmit with a standalone SMS opt-in.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Messaging consent must be collected separately from other use cases, services, and communication channels such as email or phone calls. It cannot be bundled with consent for other channels.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30557,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service missing business or program name",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour Terms of Service do not clearly identify the registered business name or the program name associated with your messaging program. Registrations must name the business or brand operating the text messaging service.\n\n### Possible causes\n\n- The Terms of Service describe messaging program rules but do not name the business or brand that operates the service.\n- Neither the registered business name nor the program name appears anywhere in the Terms of Service.\n\n### Possible solutions\n\n- Update the Terms of Service to explicitly state the registered business or messaging program name.\n- Resubmit your registration once the Terms of Service identify the business or program name.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Terms of Service describe messaging program rules but do not name the business or brand that operates the service.\n* Neither the registered business name nor the program name appears anywhere in the Terms of Service.",
    "solutions": "* Update the Terms of Service to explicitly state the registered business or messaging program name.\n* Resubmit your registration once the Terms of Service identify the business or program name.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your Terms of Service do not clearly identify the registered business name or the program name associated with your messaging program. Registrations must name the business or brand operating the text messaging service.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30558,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service missing message frequency disclosure",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour Terms of Service do not specify how often subscribers can expect to receive messages from your messaging program.\n\n### Possible causes\n\n- The Terms of Service omit any statement about how often messages will be sent.\n- No message frequency is disclosed, such as a recurring cadence or an exact message count.\n\n### Possible solutions\n\n- Update the Terms of Service to state the message frequency, such as \"Message frequency may vary\" for recurring programs.\n- For one-time or fixed programs, specify an exact message count.\n- Resubmit your registration once the message frequency is disclosed.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Terms of Service omit any statement about how often messages will be sent.\n* No message frequency is disclosed, such as a recurring cadence or an exact message count.",
    "solutions": "* Update the Terms of Service to state the message frequency, such as \"Message frequency may vary\" for recurring programs.\n* For one-time or fixed programs, specify an exact message count.\n* Resubmit your registration once the message frequency is disclosed.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your Terms of Service do not specify how often subscribers can expect to receive messages from your messaging program.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30559,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service missing product description",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour Terms of Service do not clearly describe the nature, content, or scope of your messaging program.\n\n### Possible causes\n\n- The Terms of Service cover general subscription terms but do not describe the types of messages that are sent.\n- Subscribers cannot tell whether messages are marketing offers, order updates, appointment alerts, or other content.\n\n### Possible solutions\n\n- Update the Terms of Service to include a clear product description outlining the types of messages subscribers will receive.\n- Resubmit your registration once the product description is added.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Terms of Service cover general subscription terms but do not describe the types of messages that are sent.\n* Subscribers cannot tell whether messages are marketing offers, order updates, appointment alerts, or other content.",
    "solutions": "* Update the Terms of Service to include a clear product description outlining the types of messages subscribers will receive.\n* Resubmit your registration once the product description is added.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your Terms of Service do not clearly describe the nature, content, or scope of your messaging program.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30560,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service missing customer support information",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour Terms of Service do not include accessible customer care contact details or support instructions for subscribers who need help.\n\n### Possible causes\n\n- The Terms of Service do not provide a support email address or phone number.\n- No HELP keyword instructions are provided for subscriber support.\n\n### Possible solutions\n\n- Add a working support pathway subscribers can use to reach customer care directly, such as a support email address or telephone line.\n- Include HELP keyword instructions where applicable.\n- Resubmit your registration once support contact details are added.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Terms of Service do not provide a support email address or phone number.\n* No HELP keyword instructions are provided for subscriber support.",
    "solutions": "* Add a working support pathway subscribers can use to reach customer care directly, such as a support email address or telephone line.\n* Include HELP keyword instructions where applicable.\n* Resubmit your registration once support contact details are added.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your Terms of Service do not include accessible customer care contact details or support instructions for subscribers who need help.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30561,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service missing opt-out information",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour Terms of Service do not provide clear instructions on how subscribers can opt out or cancel your messaging program.\n\n### Possible causes\n\n- The Terms of Service explain how to enroll but do not explain how to stop receiving messages.\n- No cancellation keywords are listed.\n\n### Possible solutions\n\n- State the cancellation keyword instructions, such as standard keywords like STOP, END, CANCEL, UNSUBSCRIBE, and QUIT.\n- Resubmit your registration once opt-out instructions are added.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Terms of Service explain how to enroll but do not explain how to stop receiving messages.\n* No cancellation keywords are listed.",
    "solutions": "* State the cancellation keyword instructions, such as standard keywords like STOP, END, CANCEL, UNSUBSCRIBE, and QUIT.\n* Resubmit your registration once opt-out instructions are added.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your Terms of Service do not provide clear instructions on how subscribers can opt out or cancel your messaging program.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30562,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service missing message and data rates disclosure",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour Terms of Service omit the required notice informing subscribers that wireless carriers may charge standard fees for sending and receiving messages.\n\n### Possible causes\n\n- The Terms of Service outline program rules but do not state that message and data rates may apply.\n\n### Possible solutions\n\n- Include explicit \"Message and data rates may apply\" disclosure language within the Terms of Service.\n- Resubmit your registration once the disclosure is added.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Terms of Service outline program rules but do not state that message and data rates may apply.",
    "solutions": "* Include explicit \"Message and data rates may apply\" disclosure language within the Terms of Service.\n* Resubmit your registration once the disclosure is added.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your Terms of Service omit the required notice informing subscribers that wireless carriers may charge standard fees for sending and receiving messages.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30563,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service missing carrier liability disclosure",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nYour Terms of Service omit the required statement clarifying that wireless carriers are not liable for delayed or undelivered messages.\n\n### Possible causes\n\n- The Terms of Service do not include language absolving wireless carriers of liability for message delivery delays or failures.\n\n### Possible solutions\n\n- Add a carrier liability clause stating that wireless carriers are not liable for delayed or undelivered messages.\n- Resubmit your registration once the carrier liability disclosure is added.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Terms of Service do not include language absolving wireless carriers of liability for message delivery delays or failures.",
    "solutions": "* Add a carrier liability clause stating that wireless carriers are not liable for delayed or undelivered messages.\n* Resubmit your registration once the carrier liability disclosure is added.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Your Terms of Service omit the required statement clarifying that wireless carriers are not liable for delayed or undelivered messages.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30564,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Terms of Service and Privacy Policy links not near opt-in",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nDirect text links to your Terms of Service and Privacy Policy are not placed close to the call-to-action opt-in section, or they are hidden inside dropdowns or pop-ups.\n\n### Possible causes\n\n- Legal links are located far from the call-to-action or opt-in section.\n- Terms of Service or Privacy Policy links are hidden inside a pop-up window or a dropdown menu.\n\n### Possible solutions\n\n- Place direct text links labeled Terms of Service and Privacy Policy within close proximity of the call-to-action or opt-in section.\n- Make the links plainly visible rather than hidden inside dropdowns or pop-ups.\n- Resubmit your registration once the links are positioned near the opt-in.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Legal links are located far from the call-to-action or opt-in section.\n* Terms of Service or Privacy Policy links are hidden inside a pop-up window or a dropdown menu.",
    "solutions": "* Place direct text links labeled Terms of Service and Privacy Policy within close proximity of the call-to-action or opt-in section.\n* Make the links plainly visible rather than hidden inside dropdowns or pop-ups.\n* Resubmit your registration once the links are positioned near the opt-in.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Direct text links to your Terms of Service and Privacy Policy are not placed close to the call-to-action opt-in section, or they are hidden inside dropdowns or pop-ups.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30565,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Promotional messaging for prescription drugs or GLP-1 products is not permitted",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nPromotional or marketing messaging is prohibited for prescription drugs and GLP-1 products in your messaging campaign. Only informational use cases, such as two-factor authentication, order confirmations, shipping updates, and account or appointment alerts, are permitted.\n\n### Possible causes\n\n- Your business involves prescription drugs or GLP-1 medications and the campaign attempts to promote these products.\n- A promotional or marketing use case was selected for a submission involving prescription drugs or GLP-1 products.\n\nThe informational-use exception does not authorize an otherwise prohibited business or controlled-substance use case. Those restrictions remain separate. For A2P 10DLC, existing [30941](/docs/api/errors/30941) guidance and its program-specific eligibility are not replaced by this page.\n\n### Possible solutions\n\n- If the business and intended use case are otherwise permitted, remove promotional content and submit evidence of the actual informational messaging, such as two-factor authentication, order and shipping updates, or account and appointment alerts.\n- Remove all promotional language and marketing intent from your campaign details and message samples.\n- For an otherwise permitted business and use case, submit the corrected registration for review after making these changes.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your business involves prescription drugs or GLP-1 medications and the campaign attempts to promote these products.\n* A promotional or marketing use case was selected for a submission involving prescription drugs or GLP-1 products. The informational-use exception does not authorize an otherwise prohibited business or controlled-substance use case. Those restrictions remain separate. For A2P 10DLC, existing [30941](/docs/api/errors/30941) guidance and its program-specific eligibility are not replaced by this page.",
    "solutions": "* If the business and intended use case are otherwise permitted, remove promotional content and submit evidence of the actual informational messaging, such as two-factor authentication, order and shipping updates, or account and appointment alerts.\n* Remove all promotional language and marketing intent from your campaign details and message samples.\n* For an otherwise permitted business and use case, submit the corrected registration for review after making these changes.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Promotional or marketing messaging is prohibited for prescription drugs and GLP-1 products in your messaging campaign. Only informational use cases, such as two-factor authentication, order confirmations, shipping updates, and account or appointment alerts, are permitted.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30566,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Academic Fraud and Cheating Services Are Prohibited",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nMessaging that facilitates academic dishonesty is prohibited in your messaging campaign. This includes essay mills, exam help, ghostwriting, test answer sales, and impersonation services.\n\n### Possible causes\n\n- Your campaign promotes services that write custom academic essays, theses, or dissertations for students.\n- Your messaging offers live exam assistance, test answer sales, or ghostwriting.\n\n### Possible solutions\n\n- Confirm that your use case does not involve academic dishonesty, such as essay writing, exam assistance, test answer sales, ghostwriting, or impersonation services.\n- If your service is legitimate, update your campaign description and message samples to clearly describe your actual use case.\n- Once your content no longer facilitates academic dishonesty, resubmit your registration for review.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your campaign promotes services that write custom academic essays, theses, or dissertations for students.\n* Your messaging offers live exam assistance, test answer sales, or ghostwriting.",
    "solutions": "* Confirm that your use case does not involve academic dishonesty, such as essay writing, exam assistance, test answer sales, ghostwriting, or impersonation services.\n* If your service is legitimate, update your campaign description and message samples to clearly describe your actual use case.\n* Once your content no longer facilitates academic dishonesty, resubmit your registration for review.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Messaging that facilitates academic dishonesty is prohibited in your messaging campaign. This includes essay mills, exam help, ghostwriting, test answer sales, and impersonation services.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30567,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phishing and Simulated Phishing Messages Are Prohibited",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nMessaging configured to simulate phishing attacks is prohibited on the network. This includes simulated smishing campaigns sent to a company's own employees as part of internal security awareness or threat training.\n\n### Possible causes\n\n- Your registration is intended to send simulated suspicious links or unverified credential reset prompts to employees for security awareness testing.\n- Your campaign is configured to simulate phishing or smishing attacks.\n\n### Possible solutions\n\n- Confirm that your messaging is not designed to simulate phishing or smishing attacks.\n- If your use case is legitimate, update your campaign description and message samples to reflect your actual messaging and remove any simulated phishing or credential-testing content.\n- Once your content no longer simulates phishing attacks, resubmit your registration for review.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your registration is intended to send simulated suspicious links or unverified credential reset prompts to employees for security awareness testing.\n* Your campaign is configured to simulate phishing or smishing attacks.",
    "solutions": "* Confirm that your messaging is not designed to simulate phishing or smishing attacks.\n* If your use case is legitimate, update your campaign description and message samples to reflect your actual messaging and remove any simulated phishing or credential-testing content.\n* Once your content no longer simulates phishing attacks, resubmit your registration for review.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. Messaging configured to simulate phishing attacks is prohibited on the network. This includes simulated smishing campaigns sent to a company's own employees as part of internal security awareness or threat training.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30568,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call-to-Action is missing the business or brand name",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe Call-to-Action (CTA) asks consumers to consent to messages but does not identify the business or brand that will send them.\n\nFor a business or program name missing from Terms of Service, see [30557](/docs/api/errors/30557). Mismatched branding and a missing live opt-in link are separate failures.\n\n### Possible causes\n\n- The opt-in disclosure invites consumers to receive messages without naming the sender.\n- The business name appears elsewhere on the page but is absent from the CTA.\n\n### Possible solutions\n\n- Add the sending business or brand name to the CTA where consent is collected, and ensure the name is consistent with the registered business details.\n- For example, identify the sender with \"Receive order updates from Acme.\" This example illustrates the business-name element only, not a complete compliant CTA.\n- Provide updated evidence showing the complete CTA for registration review.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in disclosure invites consumers to receive messages without naming the sender.\n* The business name appears elsewhere on the page but is absent from the CTA.",
    "solutions": "* Add the sending business or brand name to the CTA where consent is collected, and ensure the name is consistent with the registered business details.\n* For example, identify the sender with \"Receive order updates from Acme.\" This example illustrates the business-name element only, not a complete compliant CTA.\n* Provide updated evidence showing the complete CTA for registration review.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The Call-to-Action (CTA) asks consumers to consent to messages but does not identify the business or brand that will send them. For a business or program name missing from Terms of Service, see [30557](/docs/api/errors/30557). Mismatched branding and a missing live opt-in link are separate failures.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30569,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call-to-Action is missing the message and data rates disclosure",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe Call-to-Action (CTA) does not disclose that message and data rates may apply to the messaging program.\n\nThis error concerns the CTA. A rates disclosure missing from Terms of Service is covered by [30562](/docs/api/errors/30562). Disclosures in an automated HELP response are a separate check.\n\n### Possible causes\n\n- The opt-in disclosure omits the required message and data rates statement.\n- The statement appears in Terms of Service but is absent from the CTA.\n\n### Possible solutions\n\n- Add the exact disclosure \"Message and data rates may apply\" to the CTA where consumers consent. This phrase illustrates the rates element only, not a complete compliant CTA.\n- Provide updated evidence showing the complete CTA for registration review.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in disclosure omits the required message and data rates statement.\n* The statement appears in Terms of Service but is absent from the CTA.",
    "solutions": "* Add the exact disclosure \"Message and data rates may apply\" to the CTA where consumers consent. This phrase illustrates the rates element only, not a complete compliant CTA.\n* Provide updated evidence showing the complete CTA for registration review.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The Call-to-Action (CTA) does not disclose that message and data rates may apply to the messaging program. This error concerns the CTA. A rates disclosure missing from Terms of Service is covered by [30562](/docs/api/errors/30562). Disclosures in an automated HELP response are a separate check.",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30570,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call-to-Action is missing customer support instructions",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error applies to both Toll-Free Verification and A2P 10DLC registration.\n\nThe Call-to-Action (CTA) does not tell consumers how to obtain customer support for the messaging program.\n\nThis error concerns support instructions in the CTA. For support information missing from Terms of Service, see [30560](/docs/api/errors/30560). For Toll-Free automated HELP-response requirements, see [30486](/docs/api/errors/30486).\n\n### Possible causes\n\n- The opt-in disclosure does not include HELP instructions.\n- Support information appears in Terms of Service or the automated HELP reply but is absent from the CTA.\n\n### Possible solutions\n\n- Add clear customer support instructions to the CTA that reference the HELP keyword, for example \"Reply HELP for help\". This example illustrates the support element only, not a complete compliant CTA.\n- Provide updated evidence showing the complete CTA for registration review.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Toll-Free Verification Onboarding Guide](https://help.twilio.com/articles/13264118705051)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The opt-in disclosure does not include HELP instructions.\n* Support information appears in Terms of Service or the automated HELP reply but is absent from the CTA.",
    "solutions": "* Add clear customer support instructions to the CTA that reference the HELP keyword, for example \"Reply HELP for help\". This example illustrates the support element only, not a complete compliant CTA.\n* Provide updated evidence showing the complete CTA for registration review.",
    "description": "This error applies to both Toll-Free Verification and A2P 10DLC registration. The Call-to-Action (CTA) does not tell consumers how to obtain customer support for the messaging program. This error concerns support instructions in the CTA. For support information missing from Terms of Service, see [30560](/docs/api/errors/30560). For Toll-Free automated HELP-response requirements, see [30486](/docs/api/errors/30486).",
    "date_created": "2026-09-14T12:28:48-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30610,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message couldn't be delivered",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when Compliance Toolkit blocks a non-essential outbound message because the send attempt falls inside Quiet Hours for the recipient's local time. Quiet Hours enforcement uses the recipient's phone number area code by default and can use ZIP code data from Contact API when you provide it. Twilio returns 30610 when Quiet Hours handling is set to `Block` instead of rescheduling the message for a later delivery time.\n\n### Possible causes\n\n- The message was sent during Quiet Hours for the recipient's local time. In the US, Compliance Toolkit checks federal TCPA quiet hours from 9:00 PM to 8:00 AM and can also enforce state-specific quiet hours in supported states.\n- Compliance Toolkit classified the message as non-essential based on the message content and context.\n- You set `messageIntent` to a non-essential use case such as `marketing`, `events`, `education`, `polling`, or `announcements`, which keeps Quiet Hours enforcement in place.\n- Quiet Hours handling for Compliance Toolkit is configured as `Block` instead of the default `Reschedule` behavior.\n- The recipient's local time was inferred from the phone number area code, or from ZIP code data you supplied through Contact API, and that location placed the send attempt inside a restricted window.\n\n### Possible solutions\n\n- Send the message outside the recipient's local Quiet Hours window. For planned campaigns, schedule delivery for an allowed time instead of sending immediately.\n- Change Compliance Toolkit Quiet Hours handling from `Block` to `Reschedule` if you want Twilio to deliver non-essential messages automatically after Quiet Hours end.\n- Set `messageIntent` explicitly for each message so Compliance Toolkit uses your intended use case. Essential values such as `otp`, `notifications`, `fraud`, `security`, `customercare`, and `delivery` are exempt from Quiet Hours checks.\n- Provide the recipient's ZIP code through Contact API when the phone number area code does not reflect the recipient's current location. This improves Quiet Hours accuracy.\n- If you are building your own send timing workflow, create a scheduled message with `ScheduleType` and `SendAt` so the message is queued for a future delivery time.\n\n#### Additional resources\n\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Contact API](/docs/messaging/features/contact-api)\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n",
    "causes": "* The message was sent during Quiet Hours for the recipient's local time. In the US, Compliance Toolkit checks federal TCPA quiet hours from 9:00 PM to 8:00 AM and can also enforce state-specific quiet hours in supported states.\n* Compliance Toolkit classified the message as non-essential based on the message content and context.\n* You set `messageIntent` to a non-essential use case such as `marketing`, `events`, `education`, `polling`, or `announcements`, which keeps Quiet Hours enforcement in place.\n* Quiet Hours handling for Compliance Toolkit is configured as `Block` instead of the default `Reschedule` behavior.\n* The recipient's local time was inferred from the phone number area code, or from ZIP code data you supplied through Contact API, and that location placed the send attempt inside a restricted window.",
    "solutions": "* Send the message outside the recipient's local Quiet Hours window. For planned campaigns, schedule delivery for an allowed time instead of sending immediately.\n* Change Compliance Toolkit Quiet Hours handling from `Block` to `Reschedule` if you want Twilio to deliver non-essential messages automatically after Quiet Hours end.\n* Set `messageIntent` explicitly for each message so Compliance Toolkit uses your intended use case. Essential values such as `otp`, `notifications`, `fraud`, `security`, `customercare`, and `delivery` are exempt from Quiet Hours checks.\n* Provide the recipient's ZIP code through Contact API when the phone number area code does not reflect the recipient's current location. This improves Quiet Hours accuracy.\n* If you are building your own send timing workflow, create a scheduled message with `ScheduleType` and `SendAt` so the message is queued for a future delivery time.",
    "description": "This error occurs when Compliance Toolkit blocks a non-essential outbound message because the send attempt falls inside Quiet Hours for the recipient's local time. Quiet Hours enforcement uses the recipient's phone number area code by default and can use ZIP code data from Contact API when you provide it. Twilio returns 30610 when Quiet Hours handling is set to `Block` instead of rescheduling the message for a later delivery time.",
    "date_created": "2024-04-16T06:06:20Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30615,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message couldn't be delivered",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when local regulations prevent delivery to the recipient at the time you attempted to send the message. This most commonly affects non-essential messaging, such as marketing or promotional traffic, during restricted local quiet hours.\n\n### Possible causes\n\n- You attempted to send a non-essential message during the recipient's local quiet hours.\n- The message content or use case was treated as marketing, promotional, or other non-essential traffic.\n- The recipient is in a location with stricter quiet hours requirements than the standard 9:00 PM to 8:00 AM window.\n- Quiet hours were evaluated using the recipient's local time, based on location information available for that recipient.\n\n### Possible solutions\n\n- Send non-essential traffic only during permitted local hours for the recipient.\n- Review the message use case and make sure essential traffic is identified correctly with `messageIntent` when you use Compliance Toolkit.\n- Improve recipient location accuracy so quiet hours are evaluated correctly for each recipient.\n- Schedule the message for an allowed delivery time by using Message Scheduling.\n- If you continue to see this error for traffic that should be allowed, collect at least three recent Message SIDs that returned 30615 and contact Support.\n\n#### Additional resources\n\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Troubleshooting Undelivered Twilio SMS Messages](https://help.twilio.com/hc/en-us/articles/223181868-Troubleshooting-Undelivered-Twilio-SMS-Messages)\n",
    "causes": "* You attempted to send a non-essential message during the recipient's local quiet hours.\n* The message content or use case was treated as marketing, promotional, or other non-essential traffic.\n* The recipient is in a location with stricter quiet hours requirements than the standard 9:00 PM to 8:00 AM window.\n* Quiet hours were evaluated using the recipient's local time, based on location information available for that recipient.",
    "solutions": "* Send non-essential traffic only during permitted local hours for the recipient.\n* Review the message use case and make sure essential traffic is identified correctly with `messageIntent` when you use Compliance Toolkit.\n* Improve recipient location accuracy so quiet hours are evaluated correctly for each recipient.\n* Schedule the message for an allowed delivery time by using Message Scheduling.\n* If you continue to see this error for traffic that should be allowed, collect at least three recent Message SIDs that returned 30615 and contact Support.",
    "description": "Twilio returns this error when local regulations prevent delivery to the recipient at the time you attempted to send the message. This most commonly affects non-essential messaging, such as marketing or promotional traffic, during restricted local quiet hours.",
    "date_created": "2024-04-16T06:06:55Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30620,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message couldn't be delivered",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Sender ID used for the message does not align with the registered use case for that sender in the destination country. This commonly happens in countries where Sender IDs must be registered and used only for approved traffic types.\n\n### Possible causes\n\n- The Sender ID in your `From` value is registered for a different use case than the message content you sent.\n- Your Messaging Service selected a Sender ID that is valid for the destination, but that sender's registered use case does not match the intent of this message.\n- A default Sender ID is configured for the destination country, so the message was sent with that sender because the `From` value in your request did not match a registered Sender ID exactly.\n- The destination country requires Sender ID registration or enforces country-specific restrictions on approved Sender ID traffic.\n\n### Possible solutions\n\n- Send the message with a different registered Sender ID whose approved use case matches the intent of the message.\n- Register or re-register the Sender ID for the business use case you need in the destination country before sending more traffic.\n- Review the Sender Pool in your Messaging Service and confirm that the sender available for the destination country is appropriate for this traffic type.\n- Check your default Sender ID configuration for the destination country. If you need to use multiple Sender IDs for different use cases in one country, remove the default Sender ID and provide the appropriate registered sender in `From`.\n- Make sure the `From` value exactly matches one of your registered Sender IDs for that country, including letter case.\n- Review the SMS guidelines for the destination country and align your sender registration and message content with the local requirements before retrying.\n- If the error continues, collect three or more Message SIDs from the last 24 hours that show This error and open a support request.\n\n#### Additional resources\n\n- [Alphanumeric Sender IDs in Messaging Services](/docs/messaging/services/alphanumeric-sender-ids-in-messaging-services)\n- [Configure your default Sender ID](/docs/phone-numbers/default-sender-id)\n- [SMS Guidelines](/en-us/guidelines/sms)\n",
    "causes": "* The Sender ID in your `From` value is registered for a different use case than the message content you sent.\n* Your Messaging Service selected a Sender ID that is valid for the destination, but that sender's registered use case does not match the intent of this message.\n* A default Sender ID is configured for the destination country, so the message was sent with that sender because the `From` value in your request did not match a registered Sender ID exactly.\n* The destination country requires Sender ID registration or enforces country-specific restrictions on approved Sender ID traffic.",
    "solutions": "* Send the message with a different registered Sender ID whose approved use case matches the intent of the message.\n* Register or re-register the Sender ID for the business use case you need in the destination country before sending more traffic.\n* Review the Sender Pool in your Messaging Service and confirm that the sender available for the destination country is appropriate for this traffic type.\n* Check your default Sender ID configuration for the destination country. If you need to use multiple Sender IDs for different use cases in one country, remove the default Sender ID and provide the appropriate registered sender in `From`.\n* Make sure the `From` value exactly matches one of your registered Sender IDs for that country, including letter case.\n* Review the SMS guidelines for the destination country and align your sender registration and message content with the local requirements before retrying.\n* If the error continues, collect three or more Message SIDs from the last 24 hours that show This error and open a support request.",
    "description": "This error occurs when the Sender ID used for the message does not align with the registered use case for that sender in the destination country. This commonly happens in countries where Sender IDs must be registered and used only for approved traffic types.",
    "date_created": "2024-04-16T06:24:53Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30630,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attempt to send to unsubscribed recipient",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to send a message to a recipient who has opted out of messages from your Twilio phone number, Channels sender, or Messaging Service. Twilio blocks the send until that recipient opts back in. For long code and toll-free messaging, Twilio handles standard opt-out keywords automatically. If you use Advanced Opt-Out with a Messaging Service, Twilio can also enforce the custom opt-out keywords you configure.\n\n### Possible causes\n\n- The recipient previously replied with a standard opt-out keyword such as `STOP`, `UNSUBSCRIBE`, `END`, `QUIT`, `STOPALL`, `CANCEL`, `REVOKE`, or `OPTOUT` to the sender you are using. ([help.twilio.com](https://help.twilio.com/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering))\n- The recipient matched a custom opt-out keyword configured through Advanced Opt-Out on your Messaging Service.\n- Your application is still sending from the same Twilio phone number, Channels sender, or Messaging Service after the recipient opted out and before they opted back in.\n\n### Possible solutions\n\n- Stop sending to this recipient from the affected sender or Messaging Service. Remove the recipient from your campaign or store the opt-out in your own suppression list so you do not retry the send. If you use more than one sender, maintain your own block list across those senders as well.\n- Ask the recipient to opt back in with a supported opt-in keyword. Twilio supports `START`, `YES`, and `UNSTOP` for long code opt-ins. For toll-free re-subscribe flows, use `START` or `UNSTOP`. ([help.twilio.com](https://help.twilio.com/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering))\n- If you send through a Messaging Service, enable and configure Advanced Opt-Out so you can manage opt-in, opt-out, and help keywords consistently and track these events with the `OptOutType` webhook parameter.\n- Review your consent flow before sending more messages. Send messages only to recipients who have expressly opted in, and include clear opt-out instructions in your messaging program.\n\n#### Additional resources\n\n- [Customize users' opt-in and opt-out experience with Advanced Opt-Out](/docs/messaging/tutorials/advanced-opt-out)\n- [Messaging Services](/docs/messaging/services)\n- [Twilio support for opt-out keywords (SMS STOP filtering)](https://help.twilio.com/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering)\n",
    "causes": "* The recipient previously replied with a standard opt-out keyword such as `STOP`, `UNSUBSCRIBE`, `END`, `QUIT`, `STOPALL`, `CANCEL`, `REVOKE`, or `OPTOUT` to the sender you are using. ([help.twilio.com](https://help.twilio.com/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering))\n* The recipient matched a custom opt-out keyword configured through Advanced Opt-Out on your Messaging Service.\n* Your application is still sending from the same Twilio phone number, Channels sender, or Messaging Service after the recipient opted out and before they opted back in.",
    "solutions": "* Stop sending to this recipient from the affected sender or Messaging Service. Remove the recipient from your campaign or store the opt-out in your own suppression list so you do not retry the send. If you use more than one sender, maintain your own block list across those senders as well.\n* Ask the recipient to opt back in with a supported opt-in keyword. Twilio supports `START`, `YES`, and `UNSTOP` for long code opt-ins. For toll-free re-subscribe flows, use `START` or `UNSTOP`. ([help.twilio.com](https://help.twilio.com/articles/223134027-Twilio-support-for-opt-out-keywords-SMS-STOP-filtering))\n* If you send through a Messaging Service, enable and configure Advanced Opt-Out so you can manage opt-in, opt-out, and help keywords consistently and track these events with the `OptOutType` webhook parameter.\n* Review your consent flow before sending more messages. Send messages only to recipients who have expressly opted in, and include clear opt-out instructions in your messaging program.",
    "description": "This error occurs when you try to send a message to a recipient who has opted out of messages from your Twilio phone number, Channels sender, or Messaging Service. Twilio blocks the send until that recipient opts back in. For long code and toll-free messaging, Twilio handles standard opt-out keywords automatically. If you use Advanced Opt-Out with a Messaging Service, Twilio can also enforce the custom opt-out keywords you configure.",
    "date_created": "2024-04-16T06:25:19Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30640,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message couldn't be delivered",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when Compliance Toolkit identifies the destination phone number as having elevated compliance risk and blocks delivery. When the TCPA Known Litigators Check blocks a message, Twilio returns 30640 in the error logs and API response.\n\n### Possible causes\n\n- Compliance Toolkit identified the destination number as associated with elevated compliance risk.\n- The TCPA Known Litigators Check was enabled for your account or subaccount, and the destination number matched a phone number believed to be associated with prior TCPA-related legal activity.\n- The message was treated as non-essential traffic, such as `marketing` or `events`, which is blocked when the destination number is identified by the known litigators check.\n\n### Possible solutions\n\n- Remove the destination phone number from your marketing, communication, or outreach lists.\n- Verify that you have valid consent before sending messages to this recipient.\n- If the message is an essential use case, set `messageIntent` to the correct value, such as `otp`, `notifications`, or `customercare`, so Compliance Toolkit can classify the traffic correctly. Essential traffic is exempt from the known litigators check.\n- If you have verified consent and need to bypass this check for a specific request, set `riskCheck` to `disable` when you create the message.\n- Keep compliance checks enabled by default. Use overrides only when you are confident that the recipient has provided valid consent and that your messaging complies with applicable requirements.\n\n#### Additional resources\n\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [Message resource API reference](/docs/messaging/api/message-resource#create-a-message-resource)\n- [Send SMS and MMS messages](/docs/messaging/tutorials/how-to-send-sms-messages)\n",
    "causes": "* Compliance Toolkit identified the destination number as associated with elevated compliance risk.\n* The TCPA Known Litigators Check was enabled for your account or subaccount, and the destination number matched a phone number believed to be associated with prior TCPA-related legal activity.\n* The message was treated as non-essential traffic, such as `marketing` or `events`, which is blocked when the destination number is identified by the known litigators check.",
    "solutions": "* Remove the destination phone number from your marketing, communication, or outreach lists.\n* Verify that you have valid consent before sending messages to this recipient.\n* If the message is an essential use case, set `messageIntent` to the correct value, such as `otp`, `notifications`, or `customercare`, so Compliance Toolkit can classify the traffic correctly. Essential traffic is exempt from the known litigators check.\n* If you have verified consent and need to bypass this check for a specific request, set `riskCheck` to `disable` when you create the message.\n* Keep compliance checks enabled by default. Use overrides only when you are confident that the recipient has provided valid consent and that your messaging complies with applicable requirements.",
    "description": "This error occurs when Compliance Toolkit identifies the destination phone number as having elevated compliance risk and blocks delivery. When the TCPA Known Litigators Check blocks a message, Twilio returns 30640 in the error logs and API response.",
    "date_created": "2025-12-09T20:35:09.625Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30646,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to Upsert Consent",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a bulk consent upsert contains one or more invalid consent fields, or when the upsert fails because of an internal server error. Twilio maps validation failures to the submitted `correlation_id` so you can identify which consent object failed.\n\n### Possible causes\n\n- `INVALID_CORRELATION_ID`. The `correlation_id` value is not a valid unique 32-character UUID for the request item.\n- `INVALID_SENDER_ID`. The `sender_id` value is not a valid Messaging Service SID or a valid From phone number.\n- `INVALID_CONTACT_ID`. The `contact_id` value is not a valid phone number in `E.164` format.\n- `INVALID_STATUS`. The `status` value is not `opt-in` or `opt-out`.\n- `INVALID_SOURCE`. The `source` value is not `website`, `offline`, `opt-in-message`, `opt-out-message`, or `others`.\n- `INVALID_DATE_OF_CONSENT`. The `date_of_consent` value is not a valid ISO-8601 datetime, or it is set in the future.\n- `INTERNAL_SERVER_ERROR`. The upsert failed because of an internal server error during processing.\n\n### Possible solutions\n\n- Generate a new unique 32-character UUID for each `correlation_id` so each consent object can be matched to its response item.\n- Set `sender_id` to a valid Messaging Service SID or a valid From phone number. If you want consent and opt-outs synchronized across RCS, SMS, and MMS, use a Messaging Service SID when possible.\n- Format `contact_id` as a valid `E.164` phone number, such as `+14155552671`.\n- Send only accepted `status` values. Use `opt-in` to record consent or re-opt-in, and use `opt-out` to record revoked consent.\n- Send only accepted `source` values: `website`, `offline`, `opt-in-message`, `opt-out-message`, or `others`.\n- If you provide `date_of_consent`, send it as an ISO-8601 datetime and do not use a future timestamp. If you do not have this value, omit it instead of sending an invalid date.\n- If you receive an internal server error, retry the request. If the problem continues, collect at least three `correlation_id` values from the last 24 hours before contacting Support.\n\n#### Additional resources\n\n- [Consent Management API](/docs/messaging/features/consent-api)\n- [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)\n- [What is E.164?](/docs/glossary/what-e164)\n",
    "causes": "* `INVALID_CORRELATION_ID`. The `correlation_id` value is not a valid unique 32-character UUID for the request item.\n* `INVALID_SENDER_ID`. The `sender_id` value is not a valid Messaging Service SID or a valid From phone number.\n* `INVALID_CONTACT_ID`. The `contact_id` value is not a valid phone number in `E.164` format.\n* `INVALID_STATUS`. The `status` value is not `opt-in` or `opt-out`.\n* `INVALID_SOURCE`. The `source` value is not `website`, `offline`, `opt-in-message`, `opt-out-message`, or `others`.\n* `INVALID_DATE_OF_CONSENT`. The `date_of_consent` value is not a valid ISO-8601 datetime, or it is set in the future.\n* `INTERNAL_SERVER_ERROR`. The upsert failed because of an internal server error during processing.",
    "solutions": "* Generate a new unique 32-character UUID for each `correlation_id` so each consent object can be matched to its response item.\n* Set `sender_id` to a valid Messaging Service SID or a valid From phone number. If you want consent and opt-outs synchronized across RCS, SMS, and MMS, use a Messaging Service SID when possible.\n* Format `contact_id` as a valid `E.164` phone number, such as `+14155552671`.\n* Send only accepted `status` values. Use `opt-in` to record consent or re-opt-in, and use `opt-out` to record revoked consent.\n* Send only accepted `source` values: `website`, `offline`, `opt-in-message`, `opt-out-message`, or `others`.\n* If you provide `date_of_consent`, send it as an ISO-8601 datetime and do not use a future timestamp. If you do not have this value, omit it instead of sending an invalid date.\n* If you receive an internal server error, retry the request. If the problem continues, collect at least three `correlation_id` values from the last 24 hours before contacting Support.",
    "description": "This error occurs when a bulk consent upsert contains one or more invalid consent fields, or when the upsert fails because of an internal server error. Twilio maps validation failures to the submitted `correlation_id` so you can identify which consent object failed.",
    "date_created": "2024-09-26T10:24:59Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30647,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to Upsert Contact",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nWe return this error when one or more contact objects fail validation during a Contact API bulk upsert request. Common failures include an invalid `correlation_id`, a `contact_id` that is not in `E.164` format, an invalid `country_iso_code`, an invalid `zip_code`, or an internal server failure during processing.\n\n### Possible causes\n\n- Reason code `INVALID_CORRELATION_ID`. The `correlation_id` field is not a valid 32-character UUID.\n- Reason code `INVALID_COUNTRY_ISO_CODE`. The `country_iso_code` field is not a valid 2-character uppercase `ISO 3166-1 alpha-2` country code such as `US`.\n- Reason code `INVALID_CONTACT_ID`. The `contact_id` field is not a valid phone number in `E.164` format.\n- Reason code `INVALID_ZIP_CODE`. The `zip_code` field does not match the postal code format for the country specified by `country_iso_code`.\n- Reason code `INTERNAL_SERVER_ERROR`. The upsert request failed because of an internal server issue during processing.\n\n### Possible solutions\n\n- Generate a unique 32-character UUID for each `correlation_id` in the request so you can map each response item back to the original contact object.\n- Format every `contact_id` in `E.164`. Start the number with `+`, use only digits after the `+`, and keep the total length to 15 digits or fewer.\n- Use a valid two-letter uppercase `country_iso_code` value such as `US`.\n- Make sure each `zip_code` matches the postal code format used by the country you send in `country_iso_code`.\n- Validate phone numbers before you upsert contacts. A Lookup formatting and validation request can confirm whether a number is valid and return validation errors when it is not.\n- Retry the request if you receive `INTERNAL_SERVER_ERROR`. If the issue continues, collect at least 3 recent `correlation_id` values from the last 24 hours before contacting support.\n\n#### Additional resources\n\n- [Contact API](/docs/messaging/features/contact-api)\n- [What is E.164?](/docs/glossary/what-e164)\n- [Lookup Formatting and Validation](/docs/lookup/v2-api/formatting-validation)\n",
    "causes": "* Reason code `INVALID_CORRELATION_ID`. The `correlation_id` field is not a valid 32-character UUID.\n* Reason code `INVALID_COUNTRY_ISO_CODE`. The `country_iso_code` field is not a valid 2-character uppercase `ISO 3166-1 alpha-2` country code such as `US`.\n* Reason code `INVALID_CONTACT_ID`. The `contact_id` field is not a valid phone number in `E.164` format.\n* Reason code `INVALID_ZIP_CODE`. The `zip_code` field does not match the postal code format for the country specified by `country_iso_code`.\n* Reason code `INTERNAL_SERVER_ERROR`. The upsert request failed because of an internal server issue during processing.",
    "solutions": "* Generate a unique 32-character UUID for each `correlation_id` in the request so you can map each response item back to the original contact object.\n* Format every `contact_id` in `E.164`. Start the number with `+`, use only digits after the `+`, and keep the total length to 15 digits or fewer.\n* Use a valid two-letter uppercase `country_iso_code` value such as `US`.\n* Make sure each `zip_code` matches the postal code format used by the country you send in `country_iso_code`.\n* Validate phone numbers before you upsert contacts. A Lookup formatting and validation request can confirm whether a number is valid and return validation errors when it is not.\n* Retry the request if you receive `INTERNAL_SERVER_ERROR`. If the issue continues, collect at least 3 recent `correlation_id` values from the last 24 hours before contacting support.",
    "description": "We return this error when one or more contact objects fail validation during a Contact API bulk upsert request. Common failures include an invalid `correlation_id`, a `contact_id` that is not in `E.164` format, an invalid `country_iso_code`, an invalid `zip_code`, or an internal server failure during processing.",
    "date_created": "2024-09-26T08:57:54Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30648,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Geo Permissions update restricted for subaccounts",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to update SMS Geo Permissions on a subaccount that still inherits those settings from its parent account. Subaccounts inherit SMS Geo Permissions from the parent account by default, and you must disable inheritance before you can manage a subaccount independently.\n\n### Possible causes\n\n- Geo Permissions inheritance is enabled for the subaccount, so the subaccount continues to use the parent account's settings.\n- You are trying to change Geo Permissions from the subaccount even though inherited permissions can only be updated from the parent account.\n- The subaccount needs its own SMS Geo Permissions, but inheritance has not been disabled yet. Only Account Owner and Account Admin roles can disable inheritance for a subaccount.\n\n### Possible solutions\n\n- Sign in to the parent account and update SMS Geo Permissions there if the subaccount should keep inheriting the parent account's settings.\n- If the subaccount needs different settings, disable inheritance for that subaccount first. Then update the subaccount's SMS Geo Permissions separately.\n- Make sure you are logged in to the correct account before making changes. Only Account Owner and Account Admin roles can modify SMS Geo Permissions.\n\n#### Additional resources\n\n- [SMS Geo Permissions](/docs/messaging/guides/sms-geo-permissions)\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n- [International SMS Messaging Geographic Permissions (Geo Permissions) and How They Work](https://help.twilio.com/articles/223181108-International-SMS-Messaging-Geographic-Permissions-Geo-Permissions-and-How-They-Work)\n",
    "causes": "* Geo Permissions inheritance is enabled for the subaccount, so the subaccount continues to use the parent account's settings.\n* You are trying to change Geo Permissions from the subaccount even though inherited permissions can only be updated from the parent account.\n* The subaccount needs its own SMS Geo Permissions, but inheritance has not been disabled yet. Only Account Owner and Account Admin roles can disable inheritance for a subaccount.",
    "solutions": "* Sign in to the parent account and update SMS Geo Permissions there if the subaccount should keep inheriting the parent account's settings.\n* If the subaccount needs different settings, disable inheritance for that subaccount first. Then update the subaccount's SMS Geo Permissions separately.\n* Make sure you are logged in to the correct account before making changes. Only Account Owner and Account Admin roles can modify SMS Geo Permissions.",
    "description": "This error occurs when you try to update SMS Geo Permissions on a subaccount that still inherits those settings from its parent account. Subaccounts inherit SMS Geo Permissions from the parent account by default, and you must disable inheritance before you can manage a subaccount independently.",
    "date_created": "2025-09-25T07:20:25.747Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30649,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to Update Geo Permissions",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio couldn't apply your requested change to Messaging Geo Permissions. Manage SMS Geo Permissions in Console, not through the API. If a destination is marked High Risk, you must acknowledge the risk in Console before you enable it.\n\n### Possible causes\n\n- You tried to change permissions for a country or region currently marked High Risk outside Console. High Risk destinations require a risk acknowledgement in Console before you enable them.\n- You tried to update permissions for a destination that Twilio does not support for messaging traffic, including Iran, Syria, or Cuba.\n- You attempted to manage SMS Geo Permissions through an API workflow. SMS Geo Permissions cannot be changed programmatically for security reasons.\n\n### Possible solutions\n\n- Open Console and go to Messaging > Settings > Geo Permissions to make the change there. If the country is marked High Risk, acknowledge the risk and then save the update.\n- Make the change from an Account Owner or Account Admin profile. Only those profiles can modify SMS Geo Permissions.\n- Remove SMS Geo Permissions updates from API-based automation. Use Console to manage these settings. If you need to review changes later, audit SMS Geo Permission events in Console or with the Monitor Event API.\n- Before you enable a new destination, confirm that Twilio supports messaging to that country and review that country's SMS requirements. Do not retry updates for unsupported destinations such as Iran, Syria, or Cuba.\n\n#### Additional resources\n\n- [SMS Geo Permissions](/docs/messaging/guides/sms-geo-permissions)\n- [Preventing Fraud in Programmable Messaging](/docs/messaging/guides/preventing-messaging-fraud)\n- [International SMS Messaging Geographic Permissions (Geo Permissions) and How They Work](https://help.twilio.com/articles/223181108-International-SMS-Messaging-Geographic-Permissions-Geo-Permissions-and-How-They-Work)\n",
    "causes": "* You tried to change permissions for a country or region currently marked High Risk outside Console. High Risk destinations require a risk acknowledgement in Console before you enable them.\n* You tried to update permissions for a destination that Twilio does not support for messaging traffic, including Iran, Syria, or Cuba.\n* You attempted to manage SMS Geo Permissions through an API workflow. SMS Geo Permissions cannot be changed programmatically for security reasons.",
    "solutions": "* Open Console and go to Messaging > Settings > Geo Permissions to make the change there. If the country is marked High Risk, acknowledge the risk and then save the update.\n* Make the change from an Account Owner or Account Admin profile. Only those profiles can modify SMS Geo Permissions.\n* Remove SMS Geo Permissions updates from API-based automation. Use Console to manage these settings. If you need to review changes later, audit SMS Geo Permission events in Console or with the Monitor Event API.\n* Before you enable a new destination, confirm that Twilio supports messaging to that country and review that country's SMS requirements. Do not retry updates for unsupported destinations such as Iran, Syria, or Cuba.",
    "description": "Twilio couldn't apply your requested change to Messaging Geo Permissions. Manage SMS Geo Permissions in Console, not through the API. If a destination is marked High Risk, you must acknowledge the risk in Console before you enable it.",
    "date_created": "2025-09-25T08:05:42.047Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30700,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Advanced messaging features are not available in this region.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou receive this error when your message request includes advanced messaging parameters in a Twilio Region where those features are unavailable. Twilio Regions operate in isolation, not all products and features are available outside US1, and US1 is the default Region for workloads when you do not explicitly select another Region.\n\n### Possible causes\n\n- Your API request is being processed in a non-US1 Region where the advanced messaging feature you requested is not supported.\n- Your request includes advanced Messaging Service parameters, for example `ShortenUrls`, while the request is being processed in a Region where that feature is unavailable.\n- You migrated part of your application to another Region, but the messaging workflow still depends on features that need to remain in US1.\n\n### Possible solutions\n\n- Send the message through US1 if you need the advanced messaging feature. If you do not explicitly select a Region, Twilio processes workloads in US1 by default.\n- Remove the advanced messaging parameters from the request, then send the message again if you must keep processing in the current Region.\n- Review your API client or server-side SDK configuration and confirm that you are targeting the intended Region and edge. When you use Twilio server-side SDKs, specify both the region and edge settings so requests do not go to the wrong Region.\n- If your application uses multiple Regions, keep the messaging workload in US1 and use other supported products in another Region only where needed.\n\n#### Additional resources\n\n- [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions)\n- [Regional product availability](/docs/global-infrastructure/regional-product-and-feature-availability)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* Your API request is being processed in a non-US1 Region where the advanced messaging feature you requested is not supported.\n* Your request includes advanced Messaging Service parameters, for example `ShortenUrls`, while the request is being processed in a Region where that feature is unavailable.\n* You migrated part of your application to another Region, but the messaging workflow still depends on features that need to remain in US1.",
    "solutions": "* Send the message through US1 if you need the advanced messaging feature. If you do not explicitly select a Region, Twilio processes workloads in US1 by default.\n* Remove the advanced messaging parameters from the request, then send the message again if you must keep processing in the current Region.\n* Review your API client or server-side SDK configuration and confirm that you are targeting the intended Region and edge. When you use Twilio server-side SDKs, specify both the region and edge settings so requests do not go to the wrong Region.\n* If your application uses multiple Regions, keep the messaging workload in US1 and use other supported products in another Region only where needed.",
    "description": "You receive this error when your message request includes advanced messaging parameters in a Twilio Region where those features are unavailable. Twilio Regions operate in isolation, not all products and features are available outside US1, and US1 is the default Region for workloads when you do not explicitly select another Region.",
    "date_created": "2025-09-08T16:54:33.144Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30701,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Invalid input parameters",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Brand registration request includes one or more fields that do not pass validation. Review the specific field names and validation messages returned with the error, then correct those inputs before you resubmit the Brand. Common validation failures include length limits, invalid enum values, country-specific address checks, invalid phone number formatting, and invalid email addresses.\n\n<Info>\n  This error occurs during Brand registration, before you can create a Campaign. For help diagnosing Brand-level failures, see [Troubleshooting U.S. A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands).\n</Info>\n\n### Possible causes\n\n- A text field exceeded the allowed length for that property, such as `friendly_name`, `business_name`, `business_registration_number`, `first_name`, `last_name`, `street`, `city`, `email`, `stock_ticker`, or `website_url`.\n- `phone_number` or `mobile_phone_number` was not provided in `E.164` format.\n- An address field failed validation. This can happen when `street`, `city`, `region`, `postal_code`, or `iso_country` does not form a valid address for the country you submitted. For U.S. and Canadian addresses, `region` should use the two-letter state or province abbreviation.\n- `email` was malformed, used an unknown domain, used a disposable domain, or otherwise failed email validation.\n- An enum field used an unsupported value, such as `stock_exchange` or `business_industry`.\n- The invalid value is stored in the customer profile or related registration data used to create the Brand, so the Brand submission continues to fail until that underlying data is corrected.\n\n### Possible solutions\n\n- Review the error details for the exact field names that failed validation, then update only those properties and resubmit the Brand registration.\n- Keep each submitted value within the allowed length for that field. If you send enum fields such as `stock_exchange` or `business_industry`, use only supported values.\n- Format contact phone numbers in `E.164`, for example `+12025550123`.\n- Use a well-formatted email address with a valid, non-disposable domain.\n- Verify that the business address is complete and valid. Use the correct street, city, matching `postal_code`, a two-letter `region` value where required, and a two-letter `iso_country` code.\n- If the invalid data is in the customer profile or trust bundle associated with the Brand, update that underlying record first, then resubmit or update the Brand registration.\n\n### Fix by scenario\n\n#### Invalid phone number format\n\n<Warning>\n  The following value would be rejected:\n\n  `phone_number`: `555-012-3456`\n\n  Phone numbers must use E.164 format. Local formats, dashes, or missing country codes cause validation failures.\n</Warning>\n\n<Info>\n  The following value would pass validation:\n\n  `phone_number`: `+15550123456`\n\n  Passes because it uses E.164 format with the country code prefix.\n</Info>\n\n#### Invalid address fields\n\n<Warning>\n  The following values would be rejected:\n\n  `region`: `California`, `postal_code`: `9410`\n\n  U.S. addresses require a two-letter state abbreviation and a valid postal code.\n</Warning>\n\n<Info>\n  The following values would pass validation:\n\n  `region`: `CA`, `postal_code`: `94105`, `iso_country`: `US`\n\n  Passes because the region uses the two-letter abbreviation and all address fields form a valid combination.\n</Info>\n\n#### Additional resources\n\n- [Troubleshooting U.S. A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting Sole Proprietor Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard and Low-Volume Standard Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* A text field exceeded the allowed length for that property, such as `friendly_name`, `business_name`, `business_registration_number`, `first_name`, `last_name`, `street`, `city`, `email`, `stock_ticker`, or `website_url`.\n* `phone_number` or `mobile_phone_number` was not provided in `E.164` format.\n* An address field failed validation. This can happen when `street`, `city`, `region`, `postal_code`, or `iso_country` does not form a valid address for the country you submitted. For U.S. and Canadian addresses, `region` should use the two-letter state or province abbreviation.\n* `email` was malformed, used an unknown domain, used a disposable domain, or otherwise failed email validation.\n* An enum field used an unsupported value, such as `stock_exchange` or `business_industry`.\n* The invalid value is stored in the customer profile or related registration data used to create the Brand, so the Brand submission continues to fail until that underlying data is corrected.",
    "solutions": "* Review the error details for the exact field names that failed validation, then update only those properties and resubmit the Brand registration.\n* Keep each submitted value within the allowed length for that field. If you send enum fields such as `stock_exchange` or `business_industry`, use only supported values.\n* Format contact phone numbers in `E.164`, for example `+12025550123`.\n* Use a well-formatted email address with a valid, non-disposable domain.\n* Verify that the business address is complete and valid. Use the correct street, city, matching `postal_code`, a two-letter `region` value where required, and a two-letter `iso_country` code.\n* If the invalid data is in the customer profile or trust bundle associated with the Brand, update that underlying record first, then resubmit or update the Brand registration.",
    "description": "Your Brand registration request includes one or more fields that do not pass validation. Review the specific field names and validation messages returned with the error, then correct those inputs before you resubmit the Brand. Common validation failures include length limits, invalid enum values, country-specific address checks, invalid phone number formatting, and invalid email addresses. <Info>\n  This error occurs during Brand registration, before you can create a Campaign. For help diagnosing Brand-level failures, see [Troubleshooting U.S. A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands).\n</Info>",
    "date_created": "2024-02-12T08:17:53Z",
    "last_updated": "2026-07-23T11:57:56+01:00"
  },
  {
    "code": 30702,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Registration not found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio could not reconcile your A2P Brand registration with The Campaign Registry (TCR). This error usually means the Brand record is no longer active or is no longer available in TCR.\n\n### Possible causes\n\n- The Brand is no longer active in TCR.\n- The Brand was deleted before reconciliation completed.\n\n### Possible solutions\n\n- Open Messaging > Regulatory Compliance > Brands in Console and review the failure details for the affected Brand.\n- Check the BrandRegistration resource and review its `status` and `errors` fields to confirm whether the registration is still valid.\n- If the Brand is in a failed state, correct the underlying Customer Profile or A2P Messaging Profile information before you resubmit.\n- If you use the Console, delete the failed Brand and submit a new Brand after you correct the profile information.\n- If you use the API, update the related profile or trust bundle data first, then retry the Brand registration flow.\n- If the Brand is no longer active or has already been deleted, register the Brand again.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting A2P 10DLC Standard and Low Volume Standard Brand failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* The Brand is no longer active in TCR.\n* The Brand was deleted before reconciliation completed.",
    "solutions": "* Open Messaging > Regulatory Compliance > Brands in Console and review the failure details for the affected Brand.\n* Check the BrandRegistration resource and review its `status` and `errors` fields to confirm whether the registration is still valid.\n* If the Brand is in a failed state, correct the underlying Customer Profile or A2P Messaging Profile information before you resubmit.\n* If you use the Console, delete the failed Brand and submit a new Brand after you correct the profile information.\n* If you use the API, update the related profile or trust bundle data first, then retry the Brand registration flow.\n* If the Brand is no longer active or has already been deleted, register the Brand again.",
    "description": "Twilio could not reconcile your A2P Brand registration with The Campaign Registry (TCR). This error usually means the Brand record is no longer active or is no longer available in TCR.",
    "date_created": "2024-07-11T17:44:03Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30703,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Duplicate record detected",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nBrand registration failed due to duplicate record detection. Following attributes are expected to be unique for each brand and can fail with this duplication check.\n\n- Mobile phone number\n- Business registration identifier\n- Business legal name\n- Authorised representative's phone number\n- Email address\n- Website\n- Stock symbol (applicable only for public entities)\n\n### Possible causes\n\n- The mobile phone number provided in the brand registration request has already been used to register a US A2P Brand with TCR.\n- An existing brand is using the provided business identification type and number.\n- An existing brand is using the provided business legal name.\n- Authorised representative's phone number provided for brand registration has already been registered. Please retry with a different phone number.\n- Email address provided for brand registration has already been registered with another brand. Please try again with a different email address.\n- Website provided for brand registration has already been registered. Please try again with a different website url.\n- Business name provided for brand registration has already been registered. Business names are expected to be unique across all brands.\n- Stock symbol provided for brand registration has already been registered\n\n### Possible solutions\n\nDepending on the fields you may have received in the error message, please refer to the following solutions:\n\n- Use a unique US mobile phone number for the registration.\n- Use a unique business registration identifier for successful registration.\n- Use a unique business name.\n- Use a unique authorized representative.\n- Use a unique email address.\n- Use a unique website address.\n- Use a unique business name.\n- Use a unique stock symbol.\n\nAdditional help resources\n\n- [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The mobile phone number provided in the brand registration request has already been used to register a US A2P Brand with TCR.\n* An existing brand is using the provided business identification type and number.\n* An existing brand is using the provided business legal name.\n* Authorised representative's phone number provided for brand registration has already been registered. Please retry with a different phone number.\n* Email address provided for brand registration has already been registered with another brand. Please try again with a different email address.\n* Website provided for brand registration has already been registered. Please try again with a different website url.\n* Business name provided for brand registration has already been registered. Business names are expected to be unique across all brands.\n* Stock symbol provided for brand registration has already been registered",
    "solutions": "Depending on the fields you may have received in the error message, please refer to the following solutions: - Use a unique US mobile phone number for the registration.\n- Use a unique business registration identifier for successful registration.\n- Use a unique business name.\n- Use a unique authorized representative.\n- Use a unique email address.\n- Use a unique website address.\n- Use a unique business name.\n- Use a unique stock symbol. Additional help resources - [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)",
    "description": "Brand registration failed due to duplicate record detection. Following attributes are expected to be unique for each brand and can fail with this duplication check. - Mobile phone number\n- Business registration identifier\n- Business legal name\n- Authorised representative's phone number\n- Email address\n- Website\n- Stock symbol (applicable only for public entities)",
    "date_created": "2024-02-12T08:37:29Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30709,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Subscribers Must Be Opted In When Providing an Opt-In Message",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nWhen registering an A2P 10DLC campaign, an opt-in message is required if the campaign involves subscriber opt-in. If an opt-in message is provided, the campaign must ensure that subscribers are properly opted in before messages are sent.\n\n### Possible causes\n\n- An opt-in message was provided, but there is no clear opt-in process for subscribers.\n- The campaign setup does not align with opt-in policies.\n\n### Possible solutions\n\n- Ensure that subscribers explicitly opt in before receiving messages.\n- Provide an accurate opt-in process that aligns with compliance guidelines.\n- Review Twilio's A2P 10DLC opt-in compliance requirements.\n\n### Additional resources\n\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* An opt-in message was provided, but there is no clear opt-in process for subscribers.\n* The campaign setup does not align with opt-in policies.",
    "solutions": "* Ensure that subscribers explicitly opt in before receiving messages.\n* Provide an accurate opt-in process that aligns with compliance guidelines.\n* Review Twilio's A2P 10DLC opt-in compliance requirements.",
    "description": "When registering an A2P 10DLC campaign, an opt-in message is required if the campaign involves subscriber opt-in. If an opt-in message is provided, the campaign must ensure that subscribers are properly opted in before messages are sent.",
    "date_created": "2025-02-24T17:32:53Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30710,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deleting a Brand with Active Campaigns is Not Allowed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou can't delete a Brand while it still has one or more active A2P 10DLC Campaigns associated with it. Delete the associated Campaigns first, then retry the Brand deletion. In Console, the Brand `Delete` button is available only after the Brand has no Campaigns associated with it.\n\n### Possible causes\n\n- The Brand is still linked to one or more active A2P 10DLC Campaigns.\n- You tried to delete the Brand before deleting the Campaigns associated with it.\n- A Campaign is still attached to a Messaging Service. A `Usa2p` resource represents an A2P 10DLC Campaign within a Messaging Service, so the Brand still has an active Campaign association.\n\n### Possible solutions\n\n- Review the Brand in Console and delete any Campaigns associated with it. After the Brand has no Campaigns associated with it, use the `Delete` button to delete the Brand.\n- If you manage A2P 10DLC through the API, remove the associated `Usa2p` resource from each Messaging Service that is still using the Campaign before you retry deleting the Brand.\n- Confirm which Messaging Services still have A2P 10DLC enabled and check their `us_app_to_person` link or `us_app_to_person_registered` state before retrying the deletion.\n- Plan Campaign removal carefully. Deleting an approved `Usa2p` resource blocks A2P 10DLC messaging from that Messaging Service, and deleting a Messaging Service used for A2P 10DLC also deletes the Campaign and halts messaging until you create and register a new Campaign again.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The Brand is still linked to one or more active A2P 10DLC Campaigns.\n* You tried to delete the Brand before deleting the Campaigns associated with it.\n* A Campaign is still attached to a Messaging Service. A `Usa2p` resource represents an A2P 10DLC Campaign within a Messaging Service, so the Brand still has an active Campaign association.",
    "solutions": "* Review the Brand in Console and delete any Campaigns associated with it. After the Brand has no Campaigns associated with it, use the `Delete` button to delete the Brand.\n* If you manage A2P 10DLC through the API, remove the associated `Usa2p` resource from each Messaging Service that is still using the Campaign before you retry deleting the Brand.\n* Confirm which Messaging Services still have A2P 10DLC enabled and check their `us_app_to_person` link or `us_app_to_person_registered` state before retrying the deletion.\n* Plan Campaign removal carefully. Deleting an approved `Usa2p` resource blocks A2P 10DLC messaging from that Messaging Service, and deleting a Messaging Service used for A2P 10DLC also deletes the Campaign and halts messaging until you create and register a new Campaign again.",
    "description": "You can't delete a Brand while it still has one or more active A2P 10DLC Campaigns associated with it. Delete the associated Campaigns first, then retry the Brand deletion. In Console, the Brand `Delete` button is available only after the Brand has no Campaigns associated with it.",
    "date_created": "2025-02-24T17:28:14Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30711,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deleting a Brand with Active Brand Sharing is Not Allowed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA2P 10DLC brands that have active brand sharing with other accounts cannot be deleted. Before deletion, you must first remove all brand-sharing relationships. This restriction ensures compliance with brand registration policies.\n\n### Possible causes\n\nThe brand is currently shared with one or more other accounts.\n\n### Possible solutions\n\n- Remove all brand-sharing associations before attempting to delete the brand.\n- Review brand-sharing settings in the Twilio Console or via API.\n\n### Additional resources\n\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "The brand is currently shared with one or more other accounts.",
    "solutions": "* Remove all brand-sharing associations before attempting to delete the brand.\n* Review brand-sharing settings in the Twilio Console or via API.",
    "description": "A2P 10DLC brands that have active brand sharing with other accounts cannot be deleted. Before deletion, you must first remove all brand-sharing relationships. This restriction ensures compliance with brand registration policies.",
    "date_created": "2025-02-24T17:29:09Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30712,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Max registration limit reached",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your account has reached the allowed number of A2P 10DLC Brand registrations. Twilio can't create another Brand until you resolve the limit issue.\n\n### Possible causes\n\n- Your account already has the maximum number of Brand registrations allowed for the current registration flow.\n- The same business identity, EIN, or Tax ID has already been used across too many Brand registrations.\n- You created duplicate Brand registrations for the same business, which can cause later registration attempts to fail.\n\n### Possible solutions\n\n- Review your existing Brand registrations in Console or by listing your account's BrandRegistration resources to identify duplicate or unnecessary registrations.\n- Avoid registering the same business multiple times. Reuse the correct existing Brand when it already represents the business and use case you need.\n- If you still need another Brand or you believe the limit was reached in error, contact Twilio Support and include the relevant error details.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* Your account already has the maximum number of Brand registrations allowed for the current registration flow.\n* The same business identity, EIN, or Tax ID has already been used across too many Brand registrations.\n* You created duplicate Brand registrations for the same business, which can cause later registration attempts to fail.",
    "solutions": "* Review your existing Brand registrations in Console or by listing your account's BrandRegistration resources to identify duplicate or unnecessary registrations.\n* Avoid registering the same business multiple times. Reuse the correct existing Brand when it already represents the business and use case you need.\n* If you still need another Brand or you believe the limit was reached in error, contact Twilio Support and include the relevant error details.",
    "description": "This error means your account has reached the allowed number of A2P 10DLC Brand registrations. Twilio can't create another Brand until you resolve the limit issue.",
    "date_created": "2024-02-12T08:38:24Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30713,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Vetting Token",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you submit an invalid vetting token during A2P 10DLC registration. The error is returned when the token is expired, incorrectly formatted, or doesn't match the Brand details you submitted.\n\n### Possible causes\n\n- The vetting token is incorrect, expired, or doesn't match the Brand information.\n- The token format is invalid. Campaign Verify tokens include multiple pipe-delimited fields, so a truncated or malformed value can fail validation.\n- The token was generated for a different Brand. A Campaign Verify token works with only one Brand.\n\n### Possible solutions\n\n- Confirm that you are using the correct vetting token for the Brand registration you are updating.\n- Check whether the token has expired. If it has, request a new token from your vetting provider and submit it again.\n- Copy the token exactly as issued and make sure the full value is present with no missing characters or formatting changes.\n- If you are using the API, submit the token in the `VettingId` parameter when you create the Vettings subresource for the Brand.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC Vettings subresource](/docs/messaging/api/brand-vetting-resource)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The vetting token is incorrect, expired, or doesn't match the Brand information.\n* The token format is invalid. Campaign Verify tokens include multiple pipe-delimited fields, so a truncated or malformed value can fail validation.\n* The token was generated for a different Brand. A Campaign Verify token works with only one Brand.",
    "solutions": "* Confirm that you are using the correct vetting token for the Brand registration you are updating.\n* Check whether the token has expired. If it has, request a new token from your vetting provider and submit it again.\n* Copy the token exactly as issued and make sure the full value is present with no missing characters or formatting changes.\n* If you are using the API, submit the token in the `VettingId` parameter when you create the Vettings subresource for the Brand.",
    "description": "This error occurs when you submit an invalid vetting token during A2P 10DLC registration. The error is returned when the token is expired, incorrectly formatted, or doesn't match the Brand details you submitted.",
    "date_created": "2025-02-24T17:31:06Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30714,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Vetting Token Rejected by TCR",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe vetting token provided for A2P 10DLC brand or campaign registration was rejected by The Campaign Registry (TCR). This may be due to an invalid token, mismatched brand details, or an issue with the vetting provider.\n\n### Possible causes\n\n- The vetting token is invalid or does not match the brand details.\n- The vetting provider has revoked or rejected the token.\n- The token has expired or is not recognized by TCR.\n\n### Possible solutions\n\n- Verify the vetting token with your vetting provider.\n- Ensure the brand details match the vetted information.\n- Contact TCR or Twilio support for assistance.\n\n### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The vetting token is invalid or does not match the brand details.\n* The vetting provider has revoked or rejected the token.\n* The token has expired or is not recognized by TCR.",
    "solutions": "* Verify the vetting token with your vetting provider.\n* Ensure the brand details match the vetted information.\n* Contact TCR or Twilio support for assistance.",
    "description": "The vetting token provided for A2P 10DLC brand or campaign registration was rejected by The Campaign Registry (TCR). This may be due to an invalid token, mismatched brand details, or an issue with the vetting provider.",
    "date_created": "2025-02-24T17:32:06Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30715,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Vetting Token Not Allowed for Sole Proprietor Brands",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou receive this error when you submit a Campaign Verify token for an A2P 10DLC Brand with `brand_type` set to `SOLE_PROPRIETOR`. Sole Proprietor Brands are not eligible for vetting tokens and must be registered without an external brand vetting step.\n\n### Possible causes\n\n- You provided a vetting token while creating or updating a Sole Proprietor Brand.\n- You created the Brand as `SOLE_PROPRIETOR`, then tried to associate a Campaign Verify token through the Vettings subresource.\n- The business was registered in the Sole Proprietor flow even though it has a U.S. EIN or Canadian Business Number and should use the Standard or Low-Volume Standard onboarding flow instead.\n\n### Possible solutions\n\n- Remove the vetting token from the request and register the Sole Proprietor Brand without external vetting.\n- Confirm that the Brand is intended to be a true Sole Proprietor registration before you proceed. Sole Proprietor registration is only for businesses in the United States or Canada that do not have a Tax ID.\n- If the business has a Tax ID or needs to submit a Campaign Verify token, restart registration using the Standard or Low-Volume Standard onboarding flow. If the business is a 527 political organization, provide the Campaign Verify token during that eligible A2P 10DLC registration flow.\n\n#### Additional resources\n\n- [Direct Sole Proprietor Registration Overview](/docs/messaging/compliance/a2p-10dlc/direct-sole-proprietor-registration-overview)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [A2P 10DLC - Vettings subresource](/docs/messaging/api/brand-vetting-resource)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* You provided a vetting token while creating or updating a Sole Proprietor Brand.\n* You created the Brand as `SOLE_PROPRIETOR`, then tried to associate a Campaign Verify token through the Vettings subresource.\n* The business was registered in the Sole Proprietor flow even though it has a U.S. EIN or Canadian Business Number and should use the Standard or Low-Volume Standard onboarding flow instead.",
    "solutions": "* Remove the vetting token from the request and register the Sole Proprietor Brand without external vetting.\n* Confirm that the Brand is intended to be a true Sole Proprietor registration before you proceed. Sole Proprietor registration is only for businesses in the United States or Canada that do not have a Tax ID.\n* If the business has a Tax ID or needs to submit a Campaign Verify token, restart registration using the Standard or Low-Volume Standard onboarding flow. If the business is a 527 political organization, provide the Campaign Verify token during that eligible A2P 10DLC registration flow.",
    "description": "You receive this error when you submit a Campaign Verify token for an A2P 10DLC Brand with `brand_type` set to `SOLE_PROPRIETOR`. Sole Proprietor Brands are not eligible for vetting tokens and must be registered without an external brand vetting step.",
    "date_created": "2025-02-24T17:30:09Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30729,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Country code not allowed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the business address country submitted for a US A2P Brand registration is not allowed. For Standard and Low-Volume Standard Brand registrations, Twilio collects the business address country in the `iso_country` field as a two-letter ISO country code.\n\n### Possible causes\n\n- The `iso_country` value in the business address is outside the supported country list for US A2P Brand registrations.\n- The business address country was entered with the wrong two-letter ISO code. Twilio expects `iso_country` to be an ISO country code such as `US`.\n- The Brand submission was created with business profile information that needs to be corrected in the Customer Profile or TrustProduct before you resubmit the Brand.\n\n### Possible solutions\n\n- Update the business address so the `iso_country` field uses the correct supported two-letter ISO country code for the business.\n- Review the Customer Profile or TrustProduct information attached to the Brand, correct the country if needed, and then resubmit the Brand in Console or update it through the API.\n- If the business is based in a country that is not allowed for US A2P Brand registration, use a supported country for brand registrations before submitting again.\n\n#### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n",
    "causes": "* The `iso_country` value in the business address is outside the supported country list for US A2P Brand registrations.\n* The business address country was entered with the wrong two-letter ISO code. Twilio expects `iso_country` to be an ISO country code such as `US`.\n* The Brand submission was created with business profile information that needs to be corrected in the Customer Profile or TrustProduct before you resubmit the Brand.",
    "solutions": "* Update the business address so the `iso_country` field uses the correct supported two-letter ISO country code for the business.\n* Review the Customer Profile or TrustProduct information attached to the Brand, correct the country if needed, and then resubmit the Brand in Console or update it through the API.\n* If the business is based in a country that is not allowed for US A2P Brand registration, use a supported country for brand registrations before submitting again.",
    "description": "This error occurs when the business address country submitted for a US A2P Brand registration is not allowed. For Standard and Low-Volume Standard Brand registrations, Twilio collects the business address country in the `iso_country` field as a two-letter ISO country code.",
    "date_created": "2024-02-12T08:39:26Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30734,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Sole Proprietor brands are not enabled",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nSole Proprietor brand registration is not enabled for this account. Sole Proprietor registration is available only for eligible customers in the United States or Canada who do not have a business Tax ID and who use the supported onboarding flow.\n\n### Possible causes\n\n- This account is not enabled to create Sole Proprietor brands.\n- The business is not eligible for Sole Proprietor registration. Sole Proprietor registration is limited to U.S. or Canadian sole proprietors without an EIN or Canadian Business Number. Businesses with a Tax ID must register as a Standard or Low-Volume Standard Brand instead.\n- The wrong onboarding path is being used. Direct customers register Sole Proprietor brands in Console, while ISVs typically register Sole Proprietor brands for customers through the API flow.\n\n### Possible solutions\n\n- If you are a direct customer, create a Starter Profile and register the Sole Proprietor brand from Console under Messaging > Regulatory Compliance > Onboarding.\n- If you are registering brands for customers as an ISV, use the Sole Proprietor API onboarding flow and verify that the registration information is complete before you submit the Brand.\n- If the business has an EIN, a Canadian Business Number, or is located outside the United States or Canada, register it as a Standard or Low-Volume Standard Brand instead of a Sole Proprietor Brand.\n- If this account should be able to register Sole Proprietor brands, contact Support for enablement help.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Direct Sole Proprietor Registration Overview](/docs/messaging/compliance/a2p-10dlc/direct-sole-proprietor-registration-overview)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* This account is not enabled to create Sole Proprietor brands.\n* The business is not eligible for Sole Proprietor registration. Sole Proprietor registration is limited to U.S. or Canadian sole proprietors without an EIN or Canadian Business Number. Businesses with a Tax ID must register as a Standard or Low-Volume Standard Brand instead.\n* The wrong onboarding path is being used. Direct customers register Sole Proprietor brands in Console, while ISVs typically register Sole Proprietor brands for customers through the API flow.",
    "solutions": "* If you are a direct customer, create a Starter Profile and register the Sole Proprietor brand from Console under Messaging > Regulatory Compliance > Onboarding.\n* If you are registering brands for customers as an ISV, use the Sole Proprietor API onboarding flow and verify that the registration information is complete before you submit the Brand.\n* If the business has an EIN, a Canadian Business Number, or is located outside the United States or Canada, register it as a Standard or Low-Volume Standard Brand instead of a Sole Proprietor Brand.\n* If this account should be able to register Sole Proprietor brands, contact Support for enablement help.",
    "description": "Sole Proprietor brand registration is not enabled for this account. Sole Proprietor registration is available only for eligible customers in the United States or Canada who do not have a business Tax ID and who use the supported onboarding flow.",
    "date_created": "2024-02-12T08:40:05Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30747,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Address duplicate threshold reached",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Sole Proprietor Brand registration uses an address that has already reached the allowed duplicate threshold. Each Sole Proprietor Brand must use a unique address in the connected Starter Customer Profile Bundle.\n\n### Possible causes\n\n- The Starter Customer Profile Bundle linked to the Brand registration contains an address that has already been used for another Sole Proprietor Brand.\n- The address attached to the registration failed the duplicate address check for Sole Proprietor onboarding.\n- The connected Starter Customer Profile Bundle still points to an older address record that is already associated with a different Sole Proprietor Brand.\n\n### Possible solutions\n\n- Edit the connected Starter Customer Profile Bundle and replace the current address with a different address that is unique for this Sole Proprietor Brand.\n- If you register through the API, create a new `customer_profile_address` Supporting Document for the updated address and attach it to the Starter Customer Profile Bundle.\n- Submit the updated Starter Customer Profile Bundle for review. After the profile update is accepted, resubmit the Sole Proprietor Brand registration request.\n- Confirm that the address you submit for the Sole Proprietor registration is a valid address for this brand and is not being reused from another Sole Proprietor Brand registration.\n\n#### Additional resources\n\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [New Sole Proprietor A2P 10DLC Registration for ISVs: API Walkthrough](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api-sole-prop-new)\n- [BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n",
    "causes": "* The Starter Customer Profile Bundle linked to the Brand registration contains an address that has already been used for another Sole Proprietor Brand.\n* The address attached to the registration failed the duplicate address check for Sole Proprietor onboarding.\n* The connected Starter Customer Profile Bundle still points to an older address record that is already associated with a different Sole Proprietor Brand.",
    "solutions": "* Edit the connected Starter Customer Profile Bundle and replace the current address with a different address that is unique for this Sole Proprietor Brand.\n* If you register through the API, create a new `customer_profile_address` Supporting Document for the updated address and attach it to the Starter Customer Profile Bundle.\n* Submit the updated Starter Customer Profile Bundle for review. After the profile update is accepted, resubmit the Sole Proprietor Brand registration request.\n* Confirm that the address you submit for the Sole Proprietor registration is a valid address for this brand and is not being reused from another Sole Proprietor Brand registration.",
    "description": "This error occurs when a Sole Proprietor Brand registration uses an address that has already reached the allowed duplicate threshold. Each Sole Proprietor Brand must use a unique address in the connected Starter Customer Profile Bundle.",
    "date_created": "2024-02-12T08:40:42Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30748,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Phone number duplicate threshold reached",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nBrand can not be registered with provided phone number since duplicate threshold limit has been reached for it.\n\n### Possible causes\n\nA phone number can not be used multiple times for Sole Proprietor Brand registrations. It is possible that the Starter customer profile bundle used for Sole Proprietor brand registration contains phone number that has been used to register multiple Sole Proprietor brands already.\n\n### Possible solutions\n\nEdit the starter customer profile and use a different phone number. Once submitted for review, you can resubmit the brand registration request.\n\nAdditional help resources\n\n- [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "A phone number can not be used multiple times for Sole Proprietor Brand registrations. It is possible that the Starter customer profile bundle used for Sole Proprietor brand registration contains phone number that has been used to register multiple Sole Proprietor brands already.",
    "solutions": "Edit the starter customer profile and use a different phone number. Once submitted for review, you can resubmit the brand registration request. Additional help resources - [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)",
    "description": "Brand can not be registered with provided phone number since duplicate threshold limit has been reached for it.",
    "date_created": "2024-02-12T08:41:26Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30749,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Email address duplicate threshold reached",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou can't register a Sole Proprietor brand with an email address that has already reached the allowed reuse limit. For Sole Proprietor A2P brand registrations, the email address in the Starter customer profile can be used no more than 10 times across all A2P brand registrations with TCR.\n\n### Possible causes\n\n- The Starter customer profile for this Sole Proprietor brand uses an email address that has already been used in 10 A2P brand registrations.\n- The same email address was used for A2P 10DLC registration with another provider, and that usage also counts toward the TCR limit.\n- The registration request reused a Starter customer profile that still contains an email address that has already reached the maximum allowed registrations.\n\n### Possible solutions\n\n- Edit the Starter customer profile and replace the email address with one that has not reached the duplicate threshold.\n- Submit the updated Starter customer profile for review, then resubmit the Sole Proprietor brand registration request.\n- If you are registering through the API, update the customer profile email, resubmit the profile bundle, allow validation to complete, and then retry the brand registration.\n- Use the actual customer's email address for the Starter customer profile instead of a shared address that may already be associated with other Sole Proprietor brand registrations.\n\n#### Additional resources\n\n- [Direct Sole Proprietor Registration Overview](/docs/messaging/compliance/a2p-10dlc/direct-sole-proprietor-registration-overview)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [New Sole Proprietor A2P 10DLC Registration for ISVs: API Walkthrough](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api-sole-prop-new)\n",
    "causes": "* The Starter customer profile for this Sole Proprietor brand uses an email address that has already been used in 10 A2P brand registrations.\n* The same email address was used for A2P 10DLC registration with another provider, and that usage also counts toward the TCR limit.\n* The registration request reused a Starter customer profile that still contains an email address that has already reached the maximum allowed registrations.",
    "solutions": "* Edit the Starter customer profile and replace the email address with one that has not reached the duplicate threshold.\n* Submit the updated Starter customer profile for review, then resubmit the Sole Proprietor brand registration request.\n* If you are registering through the API, update the customer profile email, resubmit the profile bundle, allow validation to complete, and then retry the brand registration.\n* Use the actual customer's email address for the Starter customer profile instead of a shared address that may already be associated with other Sole Proprietor brand registrations.",
    "description": "You can't register a Sole Proprietor brand with an email address that has already reached the allowed reuse limit. For Sole Proprietor A2P brand registrations, the email address in the Starter customer profile can be used no more than 10 times across all A2P brand registrations with TCR.",
    "date_created": "2024-02-12T08:42:07Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30750,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Mobile phone number duplicate threshold reached",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the mobile phone number in your Sole Proprietor Brand registration has already reached the allowed reuse limit. Twilio sends the OTP verification request to that mobile number during Sole Proprietor registration, and the same number can be used no more than three times across all A2P Brand registrations with TCR, including registrations submitted through another provider.\n\n### Possible causes\n\n- The mobile phone number in the Sole Proprietor Brand registration has already been used in the maximum number of A2P Brand registrations allowed by TCR.\n- The same mobile phone number was previously used for A2P 10DLC registration through another provider, and that prior registration counts toward the same limit.\n- The registration reuses a mobile phone number across multiple Sole Proprietor registrations instead of providing a unique active mobile number for OTP verification.\n\n### Possible solutions\n\n- Update the Sole Proprietor registration details and replace the mobile phone number with a different active U.S. or Canadian mobile number that can receive the OTP verification request.\n- Verify that the replacement mobile number has not already been used three times across A2P Brand registrations with TCR, including registrations completed through another provider.\n- Resubmit the Brand registration after you save the updated mobile phone number. If you are troubleshooting a failed submission in Console, review the failed Brand details and fix the registration data before submitting again.\n\n#### Additional resources\n\n- [A2P 10DLC: Gather the required business information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Direct Sole Proprietor Registration Overview](/docs/messaging/compliance/a2p-10dlc/direct-sole-proprietor-registration-overview)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* The mobile phone number in the Sole Proprietor Brand registration has already been used in the maximum number of A2P Brand registrations allowed by TCR.\n* The same mobile phone number was previously used for A2P 10DLC registration through another provider, and that prior registration counts toward the same limit.\n* The registration reuses a mobile phone number across multiple Sole Proprietor registrations instead of providing a unique active mobile number for OTP verification.",
    "solutions": "* Update the Sole Proprietor registration details and replace the mobile phone number with a different active U.S. or Canadian mobile number that can receive the OTP verification request.\n* Verify that the replacement mobile number has not already been used three times across A2P Brand registrations with TCR, including registrations completed through another provider.\n* Resubmit the Brand registration after you save the updated mobile phone number. If you are troubleshooting a failed submission in Console, review the failed Brand details and fix the registration data before submitting again.",
    "description": "This error means the mobile phone number in your Sole Proprietor Brand registration has already reached the allowed reuse limit. Twilio sends the OTP verification request to that mobile number during Sole Proprietor registration, and the same number can be used no more than three times across all A2P Brand registrations with TCR, including registrations submitted through another provider.",
    "date_created": "2024-02-12T08:42:43Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30751,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Unsupported mobile phone number",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you submit an unsupported mobile phone number for A2P 10DLC Sole Proprietor brand registration. Use a supported wireless mobile number for OTP verification before you resubmit the brand registration.\n\n### Possible causes\n\n- The `mobile_phone_number` submitted for the brand does not meet the requirements for Sole Proprietor OTP verification. Twilio sends the verification request to that number as part of the registration flow.\n- The mobile number cannot receive the verification SMS needed to complete brand verification.\n- The mobile number was acquired from a CPaaS provider such as Twilio, which is not supported for this verification step.\n\n### Possible solutions\n\n- Replace `mobile_phone_number` with a supported wireless mobile number that can receive the verification SMS for brand registration.\n- Confirm that the owner of the mobile number can receive the OTP and reply to complete verification. If the OTP expires after 24 hours, trigger a new verification request and complete the reply flow.\n- Review the Sole Proprietor registration requirements for the mobile number, update the brand registration details, and resubmit after the number meets those requirements.\n\n#### Additional resources\n\n- [Required Business Information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Direct Sole Proprietor Registration Overview](/docs/messaging/compliance/a2p-10dlc/direct-sole-proprietor-registration-overview)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* The `mobile_phone_number` submitted for the brand does not meet the requirements for Sole Proprietor OTP verification. Twilio sends the verification request to that number as part of the registration flow.\n* The mobile number cannot receive the verification SMS needed to complete brand verification.\n* The mobile number was acquired from a CPaaS provider such as Twilio, which is not supported for this verification step.",
    "solutions": "* Replace `mobile_phone_number` with a supported wireless mobile number that can receive the verification SMS for brand registration.\n* Confirm that the owner of the mobile number can receive the OTP and reply to complete verification. If the OTP expires after 24 hours, trigger a new verification request and complete the reply flow.\n* Review the Sole Proprietor registration requirements for the mobile number, update the brand registration details, and resubmit after the number meets those requirements.",
    "description": "This error occurs when you submit an unsupported mobile phone number for A2P 10DLC Sole Proprietor brand registration. Use a supported wireless mobile number for OTP verification before you resubmit the brand registration.",
    "date_created": "2024-02-12T08:43:43Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30752,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Invalid or expired OTP",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs during Sole Proprietor A2P Brand verification when the OTP used for brand verification is invalid or has expired. Twilio sends the verification request to the mobile number registered with the Brand after the Brand reaches `APPROVED`. The Brand remains `UNVERIFIED` until the mobile number owner completes the verification step. The OTP is valid for 24 hours.\n\n### Possible causes\n\n- The mobile number owner did not complete the OTP verification within 24 hours, so the OTP expired.\n- The verification attempt did not use the current valid OTP for the Brand verification request.\n- The mobile number owner did not reply `YES` to the verification message sent to the registered mobile number, so the Brand verification did not complete.\n\n### Possible solutions\n\n- Ask the owner of the registered mobile number to complete the verification message and reply `YES`. After the reply is received, `identity_status` changes to `VERIFIED`.\n- If the OTP has expired, request a fresh OTP from Console or by creating a Brand Registration OTP through the API. Then complete verification with the latest OTP request.\n- Check the Brand status before proceeding. Wait for the Brand to reach `APPROVED`, then confirm that `identity_status` changes from `UNVERIFIED` to `VERIFIED` after verification completes.\n\n#### Additional resources\n\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [New Sole Proprietor A2P 10DLC Registration for ISVs: API Walkthrough](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api-sole-prop-new)\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n",
    "causes": "* The mobile number owner did not complete the OTP verification within 24 hours, so the OTP expired.\n* The verification attempt did not use the current valid OTP for the Brand verification request.\n* The mobile number owner did not reply `YES` to the verification message sent to the registered mobile number, so the Brand verification did not complete.",
    "solutions": "* Ask the owner of the registered mobile number to complete the verification message and reply `YES`. After the reply is received, `identity_status` changes to `VERIFIED`.\n* If the OTP has expired, request a fresh OTP from Console or by creating a Brand Registration OTP through the API. Then complete verification with the latest OTP request.\n* Check the Brand status before proceeding. Wait for the Brand to reach `APPROVED`, then confirm that `identity_status` changes from `UNVERIFIED` to `VERIFIED` after verification completes.",
    "description": "This error occurs during Sole Proprietor A2P Brand verification when the OTP used for brand verification is invalid or has expired. Twilio sends the verification request to the mobile number registered with the Brand after the Brand reaches `APPROVED`. The Brand remains `UNVERIFIED` until the mobile number owner completes the verification step. The OTP is valid for 24 hours.",
    "date_created": "2024-02-12T08:44:24Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30753,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Unsupported email address",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when the email submitted for A2P 10DLC brand registration is not accepted. Registration can fail when the email address is not well formatted, uses an unknown or disposable domain, or uses a personal or generic domain that is not accepted for brand contact verification.\n\n### Possible causes\n\n- The email address is not well formatted, or the domain uses invalid address syntax.\n- The domain is unknown, disposable, or otherwise not supported for brand registration.\n- For registrations that use Authentication+, the `brand_contact_email` uses a free, personal, or generic domain instead of a business or organizational domain associated with your brand.\n- The email value in the customer profile or brand details is invalid and must be replaced with a functional email address before you resubmit the registration.\n\n### Possible solutions\n\n- Update the rejected email to a well-formatted address with a valid, non-disposable domain, then resubmit the profile or brand registration.\n- If the rejected field is `brand_contact_email`, use an email address on a business or organizational domain that is clearly associated with your brand. Avoid free or generic providers such as `gmail.com` or `yahoo.com`.\n- If you corrected a brand contact email used for Authentication+, trigger the 2FA verification again in Console or through the 2FA Verification resource, then have the contact complete verification before the deadline in the email.\n- If your business domain should qualify but the registration still fails, contact Twilio Support for review.\n\n#### Additional resources\n\n- [A2P 10DLC: Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting A2P 10DLC Standard and Low Volume Standard Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* The email address is not well formatted, or the domain uses invalid address syntax.\n* The domain is unknown, disposable, or otherwise not supported for brand registration.\n* For registrations that use Authentication+, the `brand_contact_email` uses a free, personal, or generic domain instead of a business or organizational domain associated with your brand.\n* The email value in the customer profile or brand details is invalid and must be replaced with a functional email address before you resubmit the registration.",
    "solutions": "* Update the rejected email to a well-formatted address with a valid, non-disposable domain, then resubmit the profile or brand registration.\n* If the rejected field is `brand_contact_email`, use an email address on a business or organizational domain that is clearly associated with your brand. Avoid free or generic providers such as `gmail.com` or `yahoo.com`.\n* If you corrected a brand contact email used for Authentication+, trigger the 2FA verification again in Console or through the 2FA Verification resource, then have the contact complete verification before the deadline in the email.\n* If your business domain should qualify but the registration still fails, contact Twilio Support for review.",
    "description": "This error appears when the email submitted for A2P 10DLC brand registration is not accepted. Registration can fail when the email address is not well formatted, uses an unknown or disposable domain, or uses a personal or generic domain that is not accepted for brand contact verification.",
    "date_created": "2024-02-12T08:45:28Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30754,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Invalid postal address",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the postal address submitted for A2P 10DLC brand registration cannot be validated. Review the business address in the associated customer profile, Trust Bundle, or supporting address document before you resubmit the brand.\n\n### Possible causes\n\n- One or more address fields do not form a valid postal address.\n- The `postal_code` does not match the submitted `street`, city or locality, or `region`.\n- The `street`, city or locality, or `region` contains invalid or misspelled values.\n- For Sole Proprietor registrations, the address is not a valid US or Canadian address.\n- The address information stored in the associated customer profile or supporting document does not match the corrected values you intended to submit.\n\n### Possible solutions\n\n- Review the address connected to the brand registration and correct any typos, invalid abbreviations, or mismatched values.\n- Make sure `street`, city or locality, `region`, `postal_code`, and `iso_country` describe a real deliverable address.\n- If you are registering a Sole Proprietor brand, use a valid US or Canadian address.\n- Fetch the failed brand and review the `errors` array or `failure_reason` details so you can identify which address field needs correction.\n- If you use the Console, edit the customer profile or supporting address information, delete the failed brand, and submit the brand again with the corrected address.\n- If you use the API, update the associated customer profile or Trust Bundle first, then call the BrandRegistration `update` endpoint to resubmit the failed brand.\n\n#### Additional resources\n\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting A2P 10DLC Standard and Low Volume Standard brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Troubleshooting Sole Proprietor Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* One or more address fields do not form a valid postal address.\n* The `postal_code` does not match the submitted `street`, city or locality, or `region`.\n* The `street`, city or locality, or `region` contains invalid or misspelled values.\n* For Sole Proprietor registrations, the address is not a valid US or Canadian address.\n* The address information stored in the associated customer profile or supporting document does not match the corrected values you intended to submit.",
    "solutions": "* Review the address connected to the brand registration and correct any typos, invalid abbreviations, or mismatched values.\n* Make sure `street`, city or locality, `region`, `postal_code`, and `iso_country` describe a real deliverable address.\n* If you are registering a Sole Proprietor brand, use a valid US or Canadian address.\n* Fetch the failed brand and review the `errors` array or `failure_reason` details so you can identify which address field needs correction.\n* If you use the Console, edit the customer profile or supporting address information, delete the failed brand, and submit the brand again with the corrected address.\n* If you use the API, update the associated customer profile or Trust Bundle first, then call the BrandRegistration `update` endpoint to resubmit the failed brand.",
    "description": "This error occurs when the postal address submitted for A2P 10DLC brand registration cannot be validated. Review the business address in the associated customer profile, Trust Bundle, or supporting address document before you resubmit the brand.",
    "date_created": "2024-02-12T08:46:05Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30755,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Unsupported country code",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you submit a US A2P Brand registration with a business address country in `iso_country` that is not supported for that registration flow.\n\n### Possible causes\n\n- The `iso_country` value in the business address is not in the supported list for US A2P Brand registration.\n- The country was entered in a format other than a two-letter ISO country code.\n- The business was submitted through the wrong registration path. Sole Proprietor registration is only for businesses in the US or Canada without an EIN or Canadian Business Number.\n\n### Possible solutions\n\n- Verify the business address and submit the correct two-letter ISO country code in `iso_country`.\n- If you are registering a Sole Proprietor Brand, confirm that the business is located in the US or Canada and is eligible for that registration type.\n- If the business is not eligible for Sole Proprietor registration, use the Standard or Low-Volume Standard registration flow and provide the required business information for that business type.\n- Update the Customer Profile or related registration information with the correct country details, then resubmit the Brand.\n- If the Brand is already in a failed state, correct the upstream profile information first and then resubmit the Brand through Console or the API.\n\n#### Additional resources\n\n- [A2P 10DLC: Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The `iso_country` value in the business address is not in the supported list for US A2P Brand registration.\n* The country was entered in a format other than a two-letter ISO country code.\n* The business was submitted through the wrong registration path. Sole Proprietor registration is only for businesses in the US or Canada without an EIN or Canadian Business Number.",
    "solutions": "* Verify the business address and submit the correct two-letter ISO country code in `iso_country`.\n* If you are registering a Sole Proprietor Brand, confirm that the business is located in the US or Canada and is eligible for that registration type.\n* If the business is not eligible for Sole Proprietor registration, use the Standard or Low-Volume Standard registration flow and provide the required business information for that business type.\n* Update the Customer Profile or related registration information with the correct country details, then resubmit the Brand.\n* If the Brand is already in a failed state, correct the upstream profile information first and then resubmit the Brand through Console or the API.",
    "description": "This error occurs when you submit a US A2P Brand registration with a business address country in `iso_country` that is not supported for that registration flow.",
    "date_created": "2024-02-12T08:46:42Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30756,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Obfuscation check failure",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nObfuscation check failed for brand registration inputs.\n\n### Possible causes\n\nObfuscation check failed for brand registration inputs.\n\n### Possible solutions\n\nUse natural text inputs for business name, first and last name.\n\nAdditional help resources\n\n- [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "Obfuscation check failed for brand registration inputs.",
    "solutions": "Use natural text inputs for business name, first and last name. Additional help resources - [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)",
    "description": "Obfuscation check failed for brand registration inputs.",
    "date_created": "2024-02-12T08:47:34Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30757,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Missing Business Registration Number ",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the brand registration request did not include a business registration number, so Twilio cannot complete brand registration until you add the missing value.\n\n### Possible causes\n\n- The brand registration request is missing the business registration number.\n- The business registration number was not added to the customer profile or registration data used to create the brand.\n\n### Possible solutions\n\n- Add the business registration number to the brand registration data, then resubmit the brand.\n- Make sure the registration details match the legal business information you use for A2P 10DLC onboarding. ([help.twilio.com](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices))\n- If the brand already failed, update the associated customer profile and submit the brand again through the Messaging compliance flow.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The brand registration request is missing the business registration number.\n* The business registration number was not added to the customer profile or registration data used to create the brand.",
    "solutions": "* Add the business registration number to the brand registration data, then resubmit the brand.\n* Make sure the registration details match the legal business information you use for A2P 10DLC onboarding. ([help.twilio.com](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices))\n* If the brand already failed, update the associated customer profile and submit the brand again through the Messaging compliance flow.",
    "description": "This error means the brand registration request did not include a business registration number, so Twilio cannot complete brand registration until you add the missing value.",
    "date_created": "2025-01-22T21:41:36Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30758,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unknown Error Code",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nRegistration Authority was not provided for brand registration to complete. Update the connected A2P 10DLC business data so `business_registration_identifier` is set to a supported value such as `EIN` or `DUNS`, and use `EIN` for US entities or international tax IDs.\n\n### Possible causes\n\n- The business profile used for A2P 10DLC registration is missing `business_registration_identifier`. Twilio uses this field to capture the business registration authority.\n- The registration authority was set to a value that isn't supported for the business or registration type. Supported values include `EIN` and `DUNS`, along with country-specific identifiers for other regions.\n- The matching `business_registration_number` was not supplied, or its format does not match the selected registration authority.\n\n### Possible solutions\n\n- Set `business_registration_identifier` to the correct authority for the business. Use `EIN` for US entities or international tax IDs.\n- Enter the matching `business_registration_number` in the correct format. Use EIN format for `EIN` and DUNS format for `DUNS`.\n- Review the business information in Trust Hub, then resubmit the brand registration after the profile contains complete and valid data.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The business profile used for A2P 10DLC registration is missing `business_registration_identifier`. Twilio uses this field to capture the business registration authority.\n* The registration authority was set to a value that isn't supported for the business or registration type. Supported values include `EIN` and `DUNS`, along with country-specific identifiers for other regions.\n* The matching `business_registration_number` was not supplied, or its format does not match the selected registration authority.",
    "solutions": "* Set `business_registration_identifier` to the correct authority for the business. Use `EIN` for US entities or international tax IDs.\n* Enter the matching `business_registration_number` in the correct format. Use EIN format for `EIN` and DUNS format for `DUNS`.\n* Review the business information in Trust Hub, then resubmit the brand registration after the profile contains complete and valid data.",
    "description": "Registration Authority was not provided for brand registration to complete. Update the connected A2P 10DLC business data so `business_registration_identifier` is set to a supported value such as `EIN` or `DUNS`, and use `EIN` for US entities or international tax IDs.",
    "date_created": "2025-01-22T21:40:03Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30759,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "US A2P Registration: Insufficient Permissions to Perform Operation",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you attempt an operation on an A2P 10DLC Brand or Campaign that your account isn't allowed to perform. Before you retry the request, review your account access, registration status, and API credentials.\n\n### Possible causes\n\n- Your account is missing a required permission for the A2P 10DLC Brand or Campaign operation you attempted.\n- You are using a Restricted API key that doesn't include the Messaging permission required for the endpoint you are calling.\n- The operation may depend on A2P 10DLC registration steps that aren't complete yet, such as an approved Brand, an associated Messaging Service, or a supported Campaign use case. Some use cases also require additional carrier review before they can be used.\n- The requested action requires account-level enablement or support assistance before it can be completed.\n\n### Possible solutions\n\n- Confirm that your Brand is registered and approved before you create or manage an A2P 10DLC Campaign.\n- If you're adding a campaign to an existing Messaging Service, verify that the Service contains at least one Twilio 10DLC phone number in its Sender Pool before retrying.\n- If you authenticate with a Restricted API key, update the key to include the required Messaging permissions for the Brand or Campaign endpoint, or retry the request with credentials that have the necessary access.\n- If your Campaign use case requires additional review, wait for that review to complete before retrying the operation.\n- If the operation still fails, contact Twilio Support and include the Brand SID, Messaging Service SID, and the action you attempted so the required account access can be reviewed.\n\n#### Additional resources\n\n- [Register for US A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC Campaign resource](/docs/messaging/api/usapptoperson-resource)\n- [Restricted API keys](/docs/iam/api-keys/restricted-api-keys)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your account is missing a required permission for the A2P 10DLC Brand or Campaign operation you attempted.\n* You are using a Restricted API key that doesn't include the Messaging permission required for the endpoint you are calling.\n* The operation may depend on A2P 10DLC registration steps that aren't complete yet, such as an approved Brand, an associated Messaging Service, or a supported Campaign use case. Some use cases also require additional carrier review before they can be used.\n* The requested action requires account-level enablement or support assistance before it can be completed.",
    "solutions": "* Confirm that your Brand is registered and approved before you create or manage an A2P 10DLC Campaign.\n* If you're adding a campaign to an existing Messaging Service, verify that the Service contains at least one Twilio 10DLC phone number in its Sender Pool before retrying.\n* If you authenticate with a Restricted API key, update the key to include the required Messaging permissions for the Brand or Campaign endpoint, or retry the request with credentials that have the necessary access.\n* If your Campaign use case requires additional review, wait for that review to complete before retrying the operation.\n* If the operation still fails, contact Twilio Support and include the Brand SID, Messaging Service SID, and the action you attempted so the required account access can be reviewed.",
    "description": "This error occurs when you attempt an operation on an A2P 10DLC Brand or Campaign that your account isn't allowed to perform. Before you retry the request, review your account access, registration status, and API credentials.",
    "date_created": "2025-02-28T19:22:19Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30790,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Internal system error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio could not complete processing of your A2P 10DLC Brand registration because an internal system error occurred. If the Brand enters `FAILED` status, review the `errors` list in the `BrandRegistration` resource or the failure details in Console before you resubmit.\n\n### Possible causes\n\n- An internal Twilio system error interrupted processing of the Brand registration request.\n\n### Possible solutions\n\n- Check the Brand's status and failure details in Console or by fetching the `BrandRegistration` resource. Brands that cannot be verified move to `FAILED`, and the resource includes an `errors` array for troubleshooting.\n- Use Console or the Twilio Trust Hub API to resubmit the Brand if it remains in `FAILED` state. Twilio supports up to three self-service resubmissions for Brands in the `FAILED` state.\n- Contact Twilio Support if the error persists or if you have already used the available self-service resubmissions.\n\n#### Additional resources\n\n- [A2P 10DLC - BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* An internal Twilio system error interrupted processing of the Brand registration request.",
    "solutions": "* Check the Brand's status and failure details in Console or by fetching the `BrandRegistration` resource. Brands that cannot be verified move to `FAILED`, and the resource includes an `errors` array for troubleshooting.\n* Use Console or the Twilio Trust Hub API to resubmit the Brand if it remains in `FAILED` state. Twilio supports up to three self-service resubmissions for Brands in the `FAILED` state.\n* Contact Twilio Support if the error persists or if you have already used the available self-service resubmissions.",
    "description": "Twilio could not complete processing of your A2P 10DLC Brand registration because an internal system error occurred. If the Brand enters `FAILED` status, review the `errors` list in the `BrandRegistration` resource or the failure details in Console before you resubmit.",
    "date_created": "2024-02-12T08:48:10Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30791,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Temporary system error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error indicates a temporary system-side failure while processing an A2P 10DLC Brand registration request. Twilio could not complete the Brand submission with The Campaign Registry at that time.\n\n### Possible causes\n\n- The Campaign Registry encountered a temporary system error and could not process the Brand submission.\n- The Brand registration request could not be completed even though the request was accepted for processing.\n\n### Possible solutions\n\n- Wait 30 seconds, then submit the Brand registration again.\n- Before you retry, verify that the Brand, Customer Profile, and Trust Hub information you submitted is accurate and well-formed.\n- Check the Brand in Console or retrieve the BrandRegistration resource to review the current `status` and any available `errors`.\n- If the Brand continues to fail after you retry and the submitted information is correct, contact Twilio Support for additional help.\n\n#### Additional resources\n\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting A2P 10DLC Standard and Low-Volume Standard Brand failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n",
    "causes": "* The Campaign Registry encountered a temporary system error and could not process the Brand submission.\n* The Brand registration request could not be completed even though the request was accepted for processing.",
    "solutions": "* Wait 30 seconds, then submit the Brand registration again.\n* Before you retry, verify that the Brand, Customer Profile, and Trust Hub information you submitted is accurate and well-formed.\n* Check the Brand in Console or retrieve the BrandRegistration resource to review the current `status` and any available `errors`.\n* If the Brand continues to fail after you retry and the submitted information is correct, contact Twilio Support for additional help.",
    "description": "This error indicates a temporary system-side failure while processing an A2P 10DLC Brand registration request. Twilio could not complete the Brand submission with The Campaign Registry at that time.",
    "date_created": "2024-02-12T08:48:52Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 30792,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: General error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means Twilio encountered a general system error while processing a brand registration request. Check the Brand Overview page in Console or the `errors[]` field on the `BrandRegistration` resource for a more specific failure reason when one is available.\n\n### Possible causes\n\n- Twilio hit a general processing failure while handling the brand registration request.\n- The registration workflow may have stopped before Twilio could return a more specific validation error. This is an inference from the general error wording and the neighboring temporary system error entry.\n\n### Possible solutions\n\n- Retry the request after a short delay. A similar brand registration system error recommends trying again after 30 seconds.\n- Check the Brand Overview page in Console. If the Brand registration status is `FAILED`, review the `errors[]` fields to find the specific issue before resubmitting.\n- If the Brand is `SUSPENDED` or you still cannot resolve the error, contact Twilio Support.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* Twilio hit a general processing failure while handling the brand registration request.\n* The registration workflow may have stopped before Twilio could return a more specific validation error. This is an inference from the general error wording and the neighboring temporary system error entry.",
    "solutions": "* Retry the request after a short delay. A similar brand registration system error recommends trying again after 30 seconds.\n* Check the Brand Overview page in Console. If the Brand registration status is `FAILED`, review the `errors[]` fields to find the specific issue before resubmitting.\n* If the Brand is `SUSPENDED` or you still cannot resolve the error, contact Twilio Support.",
    "description": "This error means Twilio encountered a general system error while processing a brand registration request. Check the Brand Overview page in Console or the `errors[]` field on the `BrandRegistration` resource for a more specific failure reason when one is available.",
    "date_created": "2024-02-12T08:49:29Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30793,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Failure: Validation problems with connected bundles",
    "secondary_message": null,
    "product": "Branded Comms, Trust-Hub",
    "products_used": [
      "messaging",
      "trust-hub"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio cannot validate the bundle SIDs in your BrandRegistration request. In this request, `CustomerProfileBundleSid` identifies the Secondary Customer Profile and `A2PProfileBundleSid` identifies the TrustProduct resource associated with the business. This error can also occur when a public entity submits an unsupported `stock_exchange` value in the A2P bundle.\n\n### Possible causes\n\n- The `CustomerProfileBundleSid` value does not match an existing Secondary Customer Profile SID.\n- The `A2PProfileBundleSid` value does not match an existing TrustProduct SID for the business.\n- The request used the wrong Account SID or Auth Token, so Twilio could not retrieve the referenced Customer Profile or TrustProduct.\n- The A2P bundle for a public entity includes an unsupported `stock_exchange` value. This applies to public entities registering Low-Volume Standard or Standard Brands.\n\n### Possible solutions\n\n- Verify that `CustomerProfileBundleSid` points to the correct Secondary Customer Profile for the same account. If needed, list your Customer Profiles in Trust Hub or confirm the SID in Console before you retry the BrandRegistration request.\n- Verify that `A2PProfileBundleSid` points to the correct TrustProduct for the same business and account. If needed, list your TrustProducts in Trust Hub and retry the request with the correct `BU` SID.\n- Make sure you are using the correct Account SID and Auth Token for the account that owns both bundles.\n- If you are registering a public entity, update the A2P bundle so `stock_exchange` uses one of the supported values: `NONE`, `NASDAQ`, `NYSE`, `AMEX`, `AMX`, `ASX`, `B3`, `BME`, `BSE`, `FRA`, `ICEX`, `JPX`, `JSE`, `KRX`, `LON`, `NSE`, `OMX`, `OTHER`, `SEHK`, `SGX`, `SSE`, `STO`, `SWX`, `SZSE`, `TSX`, `TWSE`, or `VSE`.\n- After you correct the bundle references or A2P bundle data, submit the BrandRegistration request again.\n\n#### Additional resources\n\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Gather the Required Business Information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The `CustomerProfileBundleSid` value does not match an existing Secondary Customer Profile SID.\n* The `A2PProfileBundleSid` value does not match an existing TrustProduct SID for the business.\n* The request used the wrong Account SID or Auth Token, so Twilio could not retrieve the referenced Customer Profile or TrustProduct.\n* The A2P bundle for a public entity includes an unsupported `stock_exchange` value. This applies to public entities registering Low-Volume Standard or Standard Brands.",
    "solutions": "* Verify that `CustomerProfileBundleSid` points to the correct Secondary Customer Profile for the same account. If needed, list your Customer Profiles in Trust Hub or confirm the SID in Console before you retry the BrandRegistration request.\n* Verify that `A2PProfileBundleSid` points to the correct TrustProduct for the same business and account. If needed, list your TrustProducts in Trust Hub and retry the request with the correct `BU` SID.\n* Make sure you are using the correct Account SID and Auth Token for the account that owns both bundles.\n* If you are registering a public entity, update the A2P bundle so `stock_exchange` uses one of the supported values: `NONE`, `NASDAQ`, `NYSE`, `AMEX`, `AMX`, `ASX`, `B3`, `BME`, `BSE`, `FRA`, `ICEX`, `JPX`, `JSE`, `KRX`, `LON`, `NSE`, `OMX`, `OTHER`, `SEHK`, `SGX`, `SSE`, `STO`, `SWX`, `SZSE`, `TSX`, `TWSE`, or `VSE`.\n* After you correct the bundle references or A2P bundle data, submit the BrandRegistration request again.",
    "description": "This error occurs when Twilio cannot validate the bundle SIDs in your BrandRegistration request. In this request, `CustomerProfileBundleSid` identifies the Secondary Customer Profile and `A2PProfileBundleSid` identifies the TrustProduct resource associated with the business. This error can also occur when a public entity submits an unsupported `stock_exchange` value in the A2P bundle.",
    "date_created": "2024-02-13T08:46:41Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30794,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "US A2P Registration: General error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when a US A2P Brand or Campaign registration request fails and the registration workflow returns a general error instead of a more specific validation result. Review the error details returned in the registration response to identify what you need to correct before you retry.\n\n<Info>\n  Error 30794 surfaces when the system cannot map the failure to a more specific code. Determine whether the failure is on the **Brand** or the **Campaign**, then follow the targeted guidance below. If you received a more specific code alongside 30794, follow that code's page instead:\n\n  - [30795 - Brand Registration: Tax ID data mismatch](/docs/api/errors/30795)\n  - [30701 - Brand Registration Failure: Invalid input parameters](/docs/api/errors/30701)\n  - [30909 - Campaign rejected: Message Flow or Call to Action incomplete/unverified](/docs/api/errors/30909)\n  - [30896 - Campaign vetting rejection - Opt-in Error](/docs/api/errors/30896)\n  - [30908 - Campaign vetting rejection - Compliant Privacy Policy Required](/docs/api/errors/30908)\n</Info>\n\n### Possible causes\n\n- The Brand or Campaign registration request was not processed successfully, and the returned response contains the only available failure details for this submission.\n- The Brand registration data in the associated Customer Profile or A2P Trust Bundle is incomplete, incorrectly formatted, or does not match business records. Brand registrations can fail for these reasons, and Brand failures surface details in the `errors` field when the Brand status is `FAILED`.\n- The Campaign submission contains fields that are incomplete or do not meet review requirements, such as the Campaign description, sample messages, opt-in flow, opt-out flow, or other use case details. Campaign failures surface details in the Usa2p `errors` field when `campaign_status` is `FAILED`.\n\n### Possible solutions\n\n#### Identify whether the failure is on the Brand registration or the Campaign submission\n\nUse the signals below to determine where the failure occurred, then follow the relevant fix section.\n\n| Signal                                                                     | Indicates                   | Next step                                                                                         |\n| -------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------- |\n| `BrandRegistration` resource `status` = `FAILED` and `errors` is populated | Brand registration failure  | Follow \"Fix Brand registration failures\" below                                                    |\n| `Usa2p` resource `campaign_status` = `FAILED` and `errors` is populated    | Campaign submission failure | Follow \"Fix Campaign submission failures\" below                                                   |\n| Both resources show no errors but 30794 was returned                       | Transient or system error   | Wait a few minutes and retry; if persistent, [contact Twilio Support](https://support.twilio.com) |\n\n#### Fix Brand registration failures\n\n<Warning>\n  A Brand failure blocks all downstream work. You cannot create a Campaign until the Brand is approved.\n</Warning>\n\nFetch the `BrandRegistration` resource by SID and review the `errors` array. Common Brand-level causes of 30794 include:\n\n- Tax ID mismatch: the legal company name does not match the name on file with the issuing authority. See [30795 - Tax ID data mismatch](/docs/api/errors/30795) for targeted guidance.\n- Invalid input parameters: field-level validation errors on the Brand payload. See [30701 - Invalid input parameters](/docs/api/errors/30701) for the full validation table.\n- Incomplete Customer Profile or Trust Bundle: required fields are missing or blank.\n\nCorrect the underlying Customer Profile or A2P Trust Bundle, then resubmit. For step-by-step instructions, see [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands).\n\n#### Fix Campaign submission failures\n\n<Warning>\n  Campaign rejections are specific to the use case details you submitted. The Brand itself may be healthy. Check `BrandRegistration` status first.\n</Warning>\n\nFetch the `Usa2p` resource and review the `errors` array, or check Campaign details in Console. Common Campaign-level causes of 30794 include:\n\n- Message Flow or Call to Action incomplete: the `message_flow` field does not describe opt-in clearly enough. See [30909 - Message Flow or Call to Action incomplete/unverified](/docs/api/errors/30909).\n- Opt-in error: opt-in details are missing or non-compliant. See [30896 - Opt-in Error](/docs/api/errors/30896).\n- Privacy policy not compliant: the privacy policy is missing, unreachable, or does not include the required non-sharing statement. See [30908 - Compliant Privacy Policy Required](/docs/api/errors/30908).\n\nUpdate the rejected fields, then resubmit. For step-by-step instructions, see [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns).\n\n<Info>\n  This error may appear alongside more specific error codes. If you also received one of the following, follow the linked page for targeted guidance:\n\n  - [30701 - Brand Registration Failure: Invalid input parameters](/docs/api/errors/30701)\n  - [30795 - Brand Registration: Tax ID data mismatch](/docs/api/errors/30795)\n</Info>\n\n#### Additional resources\n\n- [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The Brand or Campaign registration request was not processed successfully, and the returned response contains the only available failure details for this submission.\n* The Brand registration data in the associated Customer Profile or A2P Trust Bundle is incomplete, incorrectly formatted, or does not match business records. Brand registrations can fail for these reasons, and Brand failures surface details in the `errors` field when the Brand status is `FAILED`.\n* The Campaign submission contains fields that are incomplete or do not meet review requirements, such as the Campaign description, sample messages, opt-in flow, opt-out flow, or other use case details. Campaign failures surface details in the Usa2p `errors` field when `campaign_status` is `FAILED`.",
    "solutions": "",
    "description": "This error appears when a US A2P Brand or Campaign registration request fails and the registration workflow returns a general error instead of a more specific validation result. Review the error details returned in the registration response to identify what you need to correct before you retry. <Info>\n  Error 30794 surfaces when the system cannot map the failure to a more specific code. Determine whether the failure is on the **Brand** or the **Campaign**, then follow the targeted guidance below. If you received a more specific code alongside 30794, follow that code's page instead: - [30795 - Brand Registration: Tax ID data mismatch](/docs/api/errors/30795)\n- [30701 - Brand Registration Failure: Invalid input parameters](/docs/api/errors/30701)\n- [30909 - Campaign rejected: Message Flow or Call to Action incomplete/unverified](/docs/api/errors/30909)\n- [30896 - Campaign vetting rejection - Opt-in Error](/docs/api/errors/30896)\n- [30908 - Campaign vetting rejection - Compliant Privacy Policy Required](/docs/api/errors/30908)\n  </Info>",
    "date_created": "2024-02-13T08:44:38Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30795,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration: Tax ID data mismatch",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means The Campaign Registry returned feedback for your Brand registration because the Tax ID in your Customer Profile does not match associated business details such as your legal company name. Until you correct the mismatch, you cannot use this Brand to create a Campaign.\n\n### Possible causes\n\n- The US EIN you submitted is invalid.\n- The Canadian government ID you submitted could not be verified.\n- The foreign government ID you submitted could not be verified.\n- The legal company name you submitted does not match the name associated with the US EIN, Canadian government ID, or foreign government ID.\n- You submitted a US SSN instead of a US EIN.\n\n### Possible solutions\n\nThe mismatch is almost always in the Customer Profile you submitted *before* Brand creation, not in the Brand itself. Correct the underlying data, then resubmit the Brand:\n\n1. **Verify your Tax ID against your tax documents**: Locate your EIN (US), Canadian government ID, or foreign government ID on an official document (for US entities, your IRS EIN assignment letter or CP 575 notice). Confirm it is a business Tax ID — not a personal US SSN. See [`business_registration_identifier`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#business_registration_identifier) and [`business_registration_number`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#business_registration_number) for the exact values Twilio expects.\n2. **Match your legal business name exactly**: Enter the legal company name exactly as it is registered with the issuing authority. For US entities, use the name associated with your EIN in IRS records. Abbreviations, missing suffixes (`Inc.`, `LLC`), and DBAs all cause mismatches. See [`business_name`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#business_name).\n3. **Correct the data, then resubmit the Brand**:\n   - **In Console**: Go to [**Communications > Trust Hub > Registrations > Regulatory Compliance**](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/regulatory-compliance), edit and resubmit the Customer Profile, then delete and recreate the failed Brand. Follow the step-by-step walkthrough in [Resubmitting Standard/LVS Brands using the Console](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands#using-the-console).\n   - **Using the API**: Update the upstream [Customer Profile](/docs/trust-hub/trusthub-rest-api/customer-profiles) or Trust Bundle, then call the Brand [`update`](/docs/messaging/api/brand-registration-resource) operation with the Brand SID (`BN…`). See [Updating an A2P Brand using the API](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands#updating-an-a2p-brand-using-the-api). You can resubmit up to three times at no additional charge.\n4. **If your information already matches, appeal for manual review**: If the submitted data exactly matches your tax registration but the Brand still fails, [contact Twilio Support](https://help.twilio.com) to appeal the rejection and provide documentation. This often happens when the Tax ID was recently issued and hasn't yet propagated to the vetting databases. This appeal-based manual re-vetting entails a $10 fee.\n\n### Fix by cause\n\n<Info>\n  If you also received [30794 - US A2P Registration: General error](/docs/api/errors/30794), review that page for additional context on general registration failures that can accompany Tax ID mismatches.\n</Info>\n\n#### Legal name does not match EIN records\n\n<Warning>\n  The following submission would be rejected:\n\n  Brand registration with `business_name`: `Acme Sandwiches` and EIN registered to `Acme Sandwich Company, Inc.`\n\n  The name must match exactly as registered with the IRS. Abbreviations, missing suffixes, or DBAs cause mismatches.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  Brand registration with `business_name`: `Acme Sandwich Company, Inc.` matching the exact legal name on IRS records for the submitted EIN.\n\n  Passes because the legal company name matches the name associated with the Tax ID.\n</Info>\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard and Low-Volume Standard Brand failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n",
    "causes": "* The US EIN you submitted is invalid.\n* The Canadian government ID you submitted could not be verified.\n* The foreign government ID you submitted could not be verified.\n* The legal company name you submitted does not match the name associated with the US EIN, Canadian government ID, or foreign government ID.\n* You submitted a US SSN instead of a US EIN.",
    "solutions": "The mismatch is almost always in the Customer Profile you submitted *before* Brand creation, not in the Brand itself. Correct the underlying data, then resubmit the Brand: 1) **Verify your Tax ID against your tax documents**: Locate your EIN (US), Canadian government ID, or foreign government ID on an official document (for US entities, your IRS EIN assignment letter or CP 575 notice). Confirm it is a business Tax ID — not a personal US SSN. See [`business_registration_identifier`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#business_registration_identifier) and [`business_registration_number`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#business_registration_number) for the exact values Twilio expects.\n2) **Match your legal business name exactly**: Enter the legal company name exactly as it is registered with the issuing authority. For US entities, use the name associated with your EIN in IRS records. Abbreviations, missing suffixes (`Inc.`, `LLC`), and DBAs all cause mismatches. See [`business_name`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#business_name).\n3) **Correct the data, then resubmit the Brand**:\n   * **In Console**: Go to [**Communications > Trust Hub > Registrations > Regulatory Compliance**](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/regulatory-compliance), edit and resubmit the Customer Profile, then delete and recreate the failed Brand. Follow the step-by-step walkthrough in [Resubmitting Standard/LVS Brands using the Console](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands#using-the-console).\n   * **Using the API**: Update the upstream [Customer Profile](/docs/trust-hub/trusthub-rest-api/customer-profiles) or Trust Bundle, then call the Brand [`update`](/docs/messaging/api/brand-registration-resource) operation with the Brand SID (`BN…`). See [Updating an A2P Brand using the API](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands#updating-an-a2p-brand-using-the-api). You can resubmit up to three times at no additional charge.\n4) **If your information already matches, appeal for manual review**: If the submitted data exactly matches your tax registration but the Brand still fails, [contact Twilio Support](https://help.twilio.com) to appeal the rejection and provide documentation. This often happens when the Tax ID was recently issued and hasn't yet propagated to the vetting databases. This appeal-based manual re-vetting entails a $10 fee.",
    "description": "This error means The Campaign Registry returned feedback for your Brand registration because the Tax ID in your Customer Profile does not match associated business details such as your legal company name. Until you correct the mismatch, you cannot use this Brand to create a Campaign.",
    "date_created": "2024-02-28T16:27:09Z",
    "last_updated": "2026-09-25T10:24:38-04:00"
  },
  {
    "code": 30796,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration: Entity type or stock information mismatch",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your Brand registration received feedback from The Campaign Registry. You can't use the Brand to create campaigns until you correct the business type or stock information in the registration. This usually happens when a non-public business is registered as `public`, or when the submitted `stock_ticker` and `stock_exchange` do not match the business's legal company name and public records.\n\n### Possible causes\n\n- You registered a business as `public` even though the correct `company_type` is `private`, `non-profit`, or `government`.\n- The submitted `stock_ticker` and `stock_exchange` could not be verified for the submitted legal company name.\n- The submitted `stock_exchange` is not recognized or is not one of the supported exchange codes for A2P 10DLC registration.\n- The legal business name does not exactly match official registration records, which can prevent public company details from being verified.\n\n### Possible solutions\n\n- If the business is not publicly traded, update `company_type` to the correct value and remove `stock_ticker` and `stock_exchange`. Twilio requires you to omit those properties when `company_type` is anything other than `public`.\n- If the business is publicly traded, update `stock_ticker` and `stock_exchange` so they match the exact legal company name and public company records.\n- Use a supported `stock_exchange` value when you resubmit the registration. Supported values include exchanges such as `NYSE` and `NASDAQ`.\n- Verify that `business_name` matches the exact legal business name from official registration records before you resubmit the Brand.\n- Edit the A2P profile in Console or update the BrandRegistration resource with the corrected information, then submit the Brand again.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* You registered a business as `public` even though the correct `company_type` is `private`, `non-profit`, or `government`.\n* The submitted `stock_ticker` and `stock_exchange` could not be verified for the submitted legal company name.\n* The submitted `stock_exchange` is not recognized or is not one of the supported exchange codes for A2P 10DLC registration.\n* The legal business name does not exactly match official registration records, which can prevent public company details from being verified.",
    "solutions": "* If the business is not publicly traded, update `company_type` to the correct value and remove `stock_ticker` and `stock_exchange`. Twilio requires you to omit those properties when `company_type` is anything other than `public`.\n* If the business is publicly traded, update `stock_ticker` and `stock_exchange` so they match the exact legal company name and public company records.\n* Use a supported `stock_exchange` value when you resubmit the registration. Supported values include exchanges such as `NYSE` and `NASDAQ`.\n* Verify that `business_name` matches the exact legal business name from official registration records before you resubmit the Brand.\n* Edit the A2P profile in Console or update the BrandRegistration resource with the corrected information, then submit the Brand again.",
    "description": "This error means your Brand registration received feedback from The Campaign Registry. You can't use the Brand to create campaigns until you correct the business type or stock information in the registration. This usually happens when a non-public business is registered as `public`, or when the submitted `stock_ticker` and `stock_exchange` do not match the business's legal company name and public records.",
    "date_created": "2024-02-28T16:29:44Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30797,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration: Must be a U.S. government entity to register as government",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour Brand registration received feedback from The Campaign Registry. You cannot use this Brand to create campaigns until you correct the registration details. In this case, the business was submitted as a government entity, but the registration could not confirm that the business is a U.S. government entity.\n\n### Possible causes\n\n- The business is not a U.S. entity. Only U.S. entities qualify for the Government entity type.\n- The registration was submitted with `entity_type` set to Government even though the organization does not qualify for that type.\n- The business details provided for the Brand or Customer Profile could not be confirmed from independent or official records.\n- The legal company name or address does not match official records closely enough for automated verification. ([help.twilio.com](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices))\n\n### Possible solutions\n\n- If the organization is not a U.S. government entity, change `entity_type` to the correct organization type and resubmit the Brand registration.\n- If the organization is a U.S. government entity, update the Customer Profile so the legal company name and address match official records, then resubmit the Brand.\n- Review the Brand registration feedback in Console or by fetching the Brand registration resource so you can correct the exact fields that failed validation.\n- If automated review still cannot confirm government status, contact Support and provide supporting documentation for manual verification. ([help.twilio.com](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices))\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [A2P 10DLC - BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The business is not a U.S. entity. Only U.S. entities qualify for the Government entity type.\n* The registration was submitted with `entity_type` set to Government even though the organization does not qualify for that type.\n* The business details provided for the Brand or Customer Profile could not be confirmed from independent or official records.\n* The legal company name or address does not match official records closely enough for automated verification. ([help.twilio.com](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices))",
    "solutions": "* If the organization is not a U.S. government entity, change `entity_type` to the correct organization type and resubmit the Brand registration.\n* If the organization is a U.S. government entity, update the Customer Profile so the legal company name and address match official records, then resubmit the Brand.\n* Review the Brand registration feedback in Console or by fetching the Brand registration resource so you can correct the exact fields that failed validation.\n* If automated review still cannot confirm government status, contact Support and provide supporting documentation for manual verification. ([help.twilio.com](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices))",
    "description": "Your Brand registration received feedback from The Campaign Registry. You cannot use this Brand to create campaigns until you correct the registration details. In this case, the business was submitted as a government entity, but the registration could not confirm that the business is a U.S. government entity.",
    "date_created": "2024-02-28T16:31:38Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30798,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration Feedback: No IRS 501c tax-exempt status found.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you register an A2P 10DLC Brand as a nonprofit and The Campaign Registry cannot confirm IRS 501(c) tax-exempt status for the entity in your registration. You cannot use the Brand to create campaigns until you correct the nonprofit registration details and resubmit.\n\n### Possible causes\n\n- The organization is not a US entity, and only US entities qualify for the nonprofit Brand type.\n- The organization is not verified as a US IRS-recognized nonprofit.\n- The nonprofit registration details are incomplete, including the charitable subsection code needed for validation.\n- The Trust Hub customer profile or Brand registration uses values that do not match nonprofit registration requirements, including Business Type, Business Industry, or Company Type.\n\n### Possible solutions\n\n- If the organization is not a qualifying US nonprofit, change the Brand company type to the correct value instead of `non_profit` or `US Non Profit`, then resubmit the Brand.\n- If the organization is a nonprofit, update the Trust Hub customer profile so Business Type is `Non-profit Corporation`, Business Industry is `NOT_FOR_PROFIT`, and the Brand Company Type is `non_profit` or `US Non Profit`, then resubmit the Brand.\n- Verify that the legal business name and EIN in the customer profile exactly match the federal tax records. If you are registering a US entity, use the exact legal business name from the CP 575 notice or 147C letter.\n- If the nonprofit registration or EIN is new, wait for the tax records to propagate before resubmitting. If you need faster review, contact Twilio Support with federal documentation to request manual verification.\n\n#### Additional resources\n\n- [Troubleshooting A2P 10DLC Standard and Low-Volume Standard Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [A2P 10DLC registration for government and nonprofit agencies](/docs/messaging/compliance/a2p-10dlc/onboarding-for-government-and-non-profit-agencies)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n",
    "causes": "* The organization is not a US entity, and only US entities qualify for the nonprofit Brand type.\n* The organization is not verified as a US IRS-recognized nonprofit.\n* The nonprofit registration details are incomplete, including the charitable subsection code needed for validation.\n* The Trust Hub customer profile or Brand registration uses values that do not match nonprofit registration requirements, including Business Type, Business Industry, or Company Type.",
    "solutions": "* If the organization is not a qualifying US nonprofit, change the Brand company type to the correct value instead of `non_profit` or `US Non Profit`, then resubmit the Brand.\n* If the organization is a nonprofit, update the Trust Hub customer profile so Business Type is `Non-profit Corporation`, Business Industry is `NOT_FOR_PROFIT`, and the Brand Company Type is `non_profit` or `US Non Profit`, then resubmit the Brand.\n* Verify that the legal business name and EIN in the customer profile exactly match the federal tax records. If you are registering a US entity, use the exact legal business name from the CP 575 notice or 147C letter.\n* If the nonprofit registration or EIN is new, wait for the tax records to propagate before resubmitting. If you need faster review, contact Twilio Support with federal documentation to request manual verification.",
    "description": "This error occurs when you register an A2P 10DLC Brand as a nonprofit and The Campaign Registry cannot confirm IRS 501(c) tax-exempt status for the entity in your registration. You cannot use the Brand to create campaigns until you correct the nonprofit registration details and resubmit.",
    "date_created": "2024-02-28T16:33:53Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30799,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Brand Registration: Unable to verify registration details",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when The Campaign Registry cannot verify the brand details you submitted for A2P 10DLC registration. Correct the business profile or brand values before you create a campaign, because brand registrations can fail when the business information is incomplete, formatted incorrectly, or does not match existing records.\n\n### Possible causes\n\n- The business registration number you submitted is invalid, or the legal company name does not match the registration record. For US companies, the EIN must match the legal company name exactly as registered.\n- The government ID you submitted for a Canadian or foreign company could not be verified, or the legal company name does not match the ID.\n- The EIN you submitted appears to be a US SSN.\n- The stock exchange or stock ticker symbol could not be verified for the legal company name, or the stock exchange is not recognized.\n- You selected Government for a company that is not a US government entity, or independent sources could not confirm the government entity classification.\n- You selected Non-Profit for a company that is not a US entity, is not verified as a US IRS-recognized nonprofit, or is missing the required charitable subsection code.\n\n### Possible solutions\n\n- Update the `business_registration_identifier` and legal company name so they match your tax or registration documents. For US companies, use an EIN that matches the legal name exactly.\n- If your brand is publicly listed, update `stock_exchange` and `stock_ticker` to match the company and exchange records.\n- If you are registering a government or nonprofit organization, set the Trust Hub and Brand values to the required government or nonprofit values before you resubmit. Use `company_type` `government` for government organizations and `company_type` `non_profit` for nonprofit organizations.\n- If the data is already correct and the brand still fails, contact Twilio Support for further review.\n\n#### Additional resources\n\n- [Troubleshooting US A2P Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [A2P 10DLC - Registration for Government and Nonprofit Agencies](/docs/messaging/compliance/a2p-10dlc/onboarding-for-government-and-non-profit-agencies)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The business registration number you submitted is invalid, or the legal company name does not match the registration record. For US companies, the EIN must match the legal company name exactly as registered.\n* The government ID you submitted for a Canadian or foreign company could not be verified, or the legal company name does not match the ID.\n* The EIN you submitted appears to be a US SSN.\n* The stock exchange or stock ticker symbol could not be verified for the legal company name, or the stock exchange is not recognized.\n* You selected Government for a company that is not a US government entity, or independent sources could not confirm the government entity classification.\n* You selected Non-Profit for a company that is not a US entity, is not verified as a US IRS-recognized nonprofit, or is missing the required charitable subsection code.",
    "solutions": "* Update the `business_registration_identifier` and legal company name so they match your tax or registration documents. For US companies, use an EIN that matches the legal name exactly.\n* If your brand is publicly listed, update `stock_exchange` and `stock_ticker` to match the company and exchange records.\n* If you are registering a government or nonprofit organization, set the Trust Hub and Brand values to the required government or nonprofit values before you resubmit. Use `company_type` `government` for government organizations and `company_type` `non_profit` for nonprofit organizations.\n* If the data is already correct and the brand still fails, contact Twilio Support for further review.",
    "description": "This error appears when The Campaign Registry cannot verify the brand details you submitted for A2P 10DLC registration. Correct the business profile or brand values before you create a campaign, because brand registrations can fail when the business information is incomplete, formatted incorrectly, or does not match existing records.",
    "date_created": "2024-02-28T16:42:57Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30800,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Business email requires an official domain",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a verification request is rejected because the business email in the submission doesn't use an official business domain. Messaging traffic on the phone number is blocked until the number is verified.\n\nDuring review, the submission is evaluated against the business details, website, messaging use case, sample messages, opt-in flow, and related compliance information.\n\n### Possible causes\n\n- The business email in the verification request uses a free or personal email provider instead of your business domain.\n- The email domain doesn't appear to be associated with the business identified in the submission.\n- If you used a free email address, it isn't shown on your business website as an official contact method for the business.\n\n### Possible solutions\n\n- Update the business email in your verification request to an address that uses your official business domain, such as `contact@yourbusiness.com`.\n- Make sure the business website in the submission is live and clearly identifies the same business and contact information.\n- If you must use a free email address, list that address on your official business website as a valid business contact before you resubmit.\n- If the rejected request is eligible for resubmission, correct the submission and resubmit it from the Console or API.\n",
    "causes": "* The business email in the verification request uses a free or personal email provider instead of your business domain.\n* The email domain doesn't appear to be associated with the business identified in the submission.\n* If you used a free email address, it isn't shown on your business website as an official contact method for the business.",
    "solutions": "* Update the business email in your verification request to an address that uses your official business domain, such as `contact@yourbusiness.com`.\n* Make sure the business website in the submission is live and clearly identifies the same business and contact information.\n* If you must use a free email address, list that address on your official business website as a valid business contact before you resubmit.\n* If the rejected request is eligible for resubmission, correct the submission and resubmit it from the Console or API.",
    "description": "This error occurs when a verification request is rejected because the business email in the submission doesn't use an official business domain. Messaging traffic on the phone number is blocked until the number is verified. During review, the submission is evaluated against the business details, website, messaging use case, sample messages, opt-in flow, and related compliance information.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30801,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Contact must be a business representative",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification request was rejected because the business contact on the submission doesn't appear to be a real person authorized to represent the business. Messaging traffic on the phone number is blocked until the number is verified.\n\n### Possible causes\n\n- `businessContactFirstName` and `businessContactLastName` don't identify a real person for the business or organization using the phone number.\n- You entered a generic role or title, such as Admin or Support, instead of an authorized business representative.\n- You submitted an incomplete contact name, such as a partial name or a missing first or last name.\n\n### Possible solutions\n\n- Update `businessContactFirstName` and `businessContactLastName` with the full first and last name of a real person who is authorized to represent the business using the phone number.\n- Make sure the contact details you submit belong to that business representative, including `businessContactEmail` and `businessContactPhone`. Format `businessContactPhone` in `E.164`.\n- If the request is eligible for resubmission, correct the contact information and resubmit it from the Regulatory Information tab in Console, or update the verification request through the verification API.\n",
    "causes": "* `businessContactFirstName` and `businessContactLastName` don't identify a real person for the business or organization using the phone number.\n* You entered a generic role or title, such as Admin or Support, instead of an authorized business representative.\n* You submitted an incomplete contact name, such as a partial name or a missing first or last name.",
    "solutions": "* Update `businessContactFirstName` and `businessContactLastName` with the full first and last name of a real person who is authorized to represent the business using the phone number.\n* Make sure the contact details you submit belong to that business representative, including `businessContactEmail` and `businessContactPhone`. Format `businessContactPhone` in `E.164`.\n* If the request is eligible for resubmission, correct the contact information and resubmit it from the Regulatory Information tab in Console, or update the verification request through the verification API.",
    "description": "Your verification request was rejected because the business contact on the submission doesn't appear to be a real person authorized to represent the business. Messaging traffic on the phone number is blocked until the number is verified.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30802,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Business name and office record mismatch",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe business name provided in your submission doesn't match what appears on your corporate website or other official documents. This may include situations where:\n\n- A different business name is displayed on your website\n- You're operating under a \"Doing Business As\" (DBA) name but didn't clarify this in the submission\n\n### Possible solutions\n\n- Update the business name to exactly match what appears on your website or official documentation\n- If you operate under a DBA name, update the DBA field in your submission and provide supporting documentation\n- Ensure consistency between your verification submission and your web presence\n",
    "causes": "The business name provided in your submission doesn't match what appears on your corporate website or other official documents. This may include situations where: - A different business name is displayed on your website\n- You're operating under a \"Doing Business As\" (DBA) name but didn't clarify this in the submission",
    "solutions": "* Update the business name to exactly match what appears on your website or official documentation\n* If you operate under a DBA name, update the DBA field in your submission and provide supporting documentation\n* Ensure consistency between your verification submission and your web presence",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30803,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Official business registration documents required",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process evaluates the business sending messaging, the use case, sample content, web presence, opt-in/consent collected, and associated website terms and privacy policies.\n\n### Possible causes\n\nWe were unable to fully verify your business based on the information provided. This may be due to:\n- Insufficient content on your website to confirm business operations\n- Discrepancies in the business information provided during verification\n- Incomplete business details that can't be independently verified\n\n### Possible solutions\n\n- Submit official business registration documents such as a business registration certificate, articles of incorporation, or business license.\n- Include documents in the **Additional Information** field when resubmitting your verification request. You can provide multiple links by listing them separately on new lines. \n- Ensure your website content clearly reflects your business operations and matches the details provided in your verification submission.\n",
    "causes": "We were unable to fully verify your business based on the information provided. This may be due to: - Insufficient content on your website to confirm business operations\n- Discrepancies in the business information provided during verification\n- Incomplete business details that can't be independently verified",
    "solutions": "* Submit official business registration documents such as a business registration certificate, articles of incorporation, or business license.\n* Include documents in the **Additional Information** field when resubmitting your verification request. You can provide multiple links by listing them separately on new lines.\n* Ensure your website content clearly reflects your business operations and matches the details provided in your verification submission.",
    "description": "The verification submission has been reviewed and rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process evaluates the business sending messaging, the use case, sample content, web presence, opt-in/consent collected, and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30804,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Need end business",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because the submission identified the ISV, reseller, or software provider instead of the end business that has the relationship with the opted-in consumer.\n\n### Possible causes\n\n- You submitted the ISV, aggregator, or platform business name, address, website, or contact details instead of the end business information.\n- The submission didn't clearly identify the business that actually sends messages to the opted-in consumer.\n- The end business information was incomplete, missing, or not collected before the verification request was submitted.\n- You submitted a trial or onboarding flow without collecting the full end business details required for verification.\n- If you are an ISV, you didn't complete an approved Primary Customer Profile for your own business before registering end businesses.\n- Your use case didn't clearly show that the ISV manages the opt-in flow and is the sole creator of the message content in cases where an exception might apply.\n\n### Possible solutions\n\n- Resubmit the verification request with the end business's legal name, address, website, and business contact information.\n- Make sure the submission reflects the business that the consumer recognizes and has opted in to hear from.\n- Update your onboarding process so you collect the end business details before you submit a verification request.\n- If you are an ISV, create a Primary Customer Profile for your own business in the parent account and wait for approval before registering end businesses.\n- If you already use Customer Profiles for downstream businesses, make sure the verification request references the correct end business profile.\n- If your use case is one of the limited exceptions, explain clearly that you manage the opt-in mechanism and are the sole message content creator before resubmitting.\n\n#### Additional resources\n\n- [Create a Primary Customer Profile](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n",
    "causes": "* You submitted the ISV, aggregator, or platform business name, address, website, or contact details instead of the end business information.\n* The submission didn't clearly identify the business that actually sends messages to the opted-in consumer.\n* The end business information was incomplete, missing, or not collected before the verification request was submitted.\n* You submitted a trial or onboarding flow without collecting the full end business details required for verification.\n* If you are an ISV, you didn't complete an approved Primary Customer Profile for your own business before registering end businesses.\n* Your use case didn't clearly show that the ISV manages the opt-in flow and is the sole creator of the message content in cases where an exception might apply.",
    "solutions": "* Resubmit the verification request with the end business's legal name, address, website, and business contact information.\n* Make sure the submission reflects the business that the consumer recognizes and has opted in to hear from.\n* Update your onboarding process so you collect the end business details before you submit a verification request.\n* If you are an ISV, create a Primary Customer Profile for your own business in the parent account and wait for approval before registering end businesses.\n* If you already use Customer Profiles for downstream businesses, make sure the verification request references the correct end business profile.\n* If your use case is one of the limited exceptions, explain clearly that you manage the opt-in mechanism and are the sole message content creator before resubmitting.",
    "description": "This error means your verification submission was rejected because the submission identified the ISV, reseller, or software provider instead of the end business that has the relationship with the opted-in consumer.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30805,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Could not validate business information",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected.\n\n### Possible causes\n\nThe phone number can't be verified due to invalid information. This could be because the business details, such as the business name or address, couldn't be confirmed, or because the website URL provided is inaccessible, unavailable, or a generic placeholder like google.com or example.com. Or the ISV contact information was provided instead of its customer's contact information.\n\n### Possible solutions\n\n- Ensure all business information fields are valid and accurately represent the business who manages the opt-in and has the relationship with the consumer:\n  - `BusinessName`\n  - `BusinessStreetAddress`\n  - `BusinessCity`\n  - `BusinessStateProvinceRegion`\n  - `BusinessPostalCode`\n  - `BusinessCountry`\n  - `BusinessContactFirstName`\n  - `BusinessContactLastName`\n  - `BusinessContactEmail`\n  - `BusinessContactPhone`\n  - `BusinessWebsite`\n- Correct the business information fields on verification submission by editing it and then resubmit it.\n\n#### Additional resources\n\n- [Forbidden Message Categories](https://support.twilio.com/hc/en-us/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n- [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n",
    "causes": "The phone number can't be verified due to invalid information. This could be because the business details, such as the business name or address, couldn't be confirmed, or because the website URL provided is inaccessible, unavailable, or a generic placeholder like google.com or example.com. Or the ISV contact information was provided instead of its customer's contact information.",
    "solutions": "* Ensure all business information fields are valid and accurately represent the business who manages the opt-in and has the relationship with the consumer:\n  * `BusinessName`\n  * `BusinessStreetAddress`\n  * `BusinessCity`\n  * `BusinessStateProvinceRegion`\n  * `BusinessPostalCode`\n  * `BusinessCountry`\n  * `BusinessContactFirstName`\n  * `BusinessContactLastName`\n  * `BusinessContactEmail`\n  * `BusinessContactPhone`\n  * `BusinessWebsite`\n* Correct the business information fields on verification submission by editing it and then resubmit it.",
    "description": "The verification submission has been reviewed and it was rejected.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30806,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - single phone number used for multiple businesses",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification request was rejected because the submitted number is associated with more than one business. A phone number used for messaging must map 1:1 to a single business. During review, Twilio evaluates the business sending the messages, the use case, sample content, web presence, opt-in or consent flow, and related website terms and privacy policy.\n\n### Possible causes\n\n- The phone number in your verification request is assigned to more than one business.\n- The same phone number is being shared across multiple businesses instead of being dedicated to one business.\n- The business listed in the verification request isn't the only business using the number for messaging.\n\n### Possible solutions\n\n- Use the phone number for only one business.\n- If more than one business needs messaging, use a separate phone number for each business and submit verification for the business that will send the messages.\n- Resubmit the verification and explain in Additional Information how you corrected the issue.\n- Before you resubmit, review the business details, website, use case, sample messages, and opt-in information so the submission clearly matches a single business.\n",
    "causes": "* The phone number in your verification request is assigned to more than one business.\n* The same phone number is being shared across multiple businesses instead of being dedicated to one business.\n* The business listed in the verification request isn't the only business using the number for messaging.",
    "solutions": "* Use the phone number for only one business.\n* If more than one business needs messaging, use a separate phone number for each business and submit verification for the business that will send the messages.\n* Resubmit the verification and explain in Additional Information how you corrected the issue.\n* Before you resubmit, review the business details, website, use case, sample messages, and opt-in information so the submission clearly matches a single business.",
    "description": "Your verification request was rejected because the submitted number is associated with more than one business. A phone number used for messaging must map 1:1 to a single business. During review, Twilio evaluates the business sending the messages, the use case, sample content, web presence, opt-in or consent flow, and related website terms and privacy policy.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30807,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Justification required for more than 5 numbers",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your verification request because the submission doesn't justify why your business needs more than five phone numbers. For traffic to US subscribers, you can verify up to five phone numbers for a single business without adding extra justification. For traffic to Canadian handsets, one phone number per business qualifies under the Canadian Code of Conduct.\n\n### Possible causes\n\n- Your submission requests six or more phone numbers for one business and doesn't include a detailed explanation in `additionalInformation` or the Console Additional Information field.\n- You submitted the verification under an ISV or aggregator instead of the business that is actually sending messages to opted-in consumers.\n- You plan to send messages to Canadian handsets and the submission includes more than one phone number for the business.\n\n### Possible solutions\n\n- Resubmit the verification and add a detailed explanation in `additionalInformation` or the Console Additional Information field. Explain why your business needs more than five phone numbers and how each number will be used.\n- Submit the verification for the end business that is sending messages to consumers. If you are an ISV, only submit under your own business when you manage the opt-in flow and you are the sole creator of the message content.\n- If you send messages to Canadian handsets, use one phone number per business for that traffic.\n- Review the rest of the verification record before you resubmit. Make sure your business details, use case, sample messages, website, and opt-in information are complete and consistent so the request can be reviewed accurately.\n",
    "causes": "* Your submission requests six or more phone numbers for one business and doesn't include a detailed explanation in `additionalInformation` or the Console Additional Information field.\n* You submitted the verification under an ISV or aggregator instead of the business that is actually sending messages to opted-in consumers.\n* You plan to send messages to Canadian handsets and the submission includes more than one phone number for the business.",
    "solutions": "* Resubmit the verification and add a detailed explanation in `additionalInformation` or the Console Additional Information field. Explain why your business needs more than five phone numbers and how each number will be used.\n* Submit the verification for the end business that is sending messages to consumers. If you are an ISV, only submit under your own business when you manage the opt-in flow and you are the sole creator of the message content.\n* If you send messages to Canadian handsets, use one phone number per business for that traffic.\n* Review the rest of the verification record before you resubmit. Make sure your business details, use case, sample messages, website, and opt-in information are complete and consistent so the request can be reviewed accurately.",
    "description": "Twilio rejected your verification request because the submission doesn't justify why your business needs more than five phone numbers. For traffic to US subscribers, you can verify up to five phone numbers for a single business without adding extra justification. For traffic to Canadian handsets, one phone number per business qualifies under the Canadian Code of Conduct.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30808,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Could not verify Business",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because the business in the submission couldn't be verified. The review checks the business sending messages, the use case, sample content, web presence, opt-in or consent flow, and related terms and privacy policy information.\n\n### Possible causes\n\n- The business name, address, or other submitted business details couldn't be independently confirmed.\n- One or more required business fields are inaccurate, inconsistent, or incomplete, including `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, or `BusinessWebsite`.\n- The website or online presence doesn't provide enough public information to validate the business, or the URL doesn't clearly reflect the business name or branding.\n- If you are an ISV, the submission may include the ISV's contact details instead of the end business information.\n\n### Possible solutions\n\n- Confirm that the submission identifies the end business that manages the opt-in and has the consumer relationship. If you are an ISV, submit the end business information instead of your own business details.\n- Review and correct all business information so it matches the business being verified and its public presence, including `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, and `BusinessWebsite`.\n- Make sure the business website is live, publicly accessible, and clearly branded with the business name, logo, and identifying information. If you use a third-party platform, use a custom domain or make the business branding prominent.\n- If the verification response includes `edit_allowed` as `true`, correct the rejected submission and resubmit it before the `edit_expiration` timestamp. If the request is no longer editable, create a new verification request.\n",
    "causes": "* The business name, address, or other submitted business details couldn't be independently confirmed.\n* One or more required business fields are inaccurate, inconsistent, or incomplete, including `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, or `BusinessWebsite`.\n* The website or online presence doesn't provide enough public information to validate the business, or the URL doesn't clearly reflect the business name or branding.\n* If you are an ISV, the submission may include the ISV's contact details instead of the end business information.",
    "solutions": "* Confirm that the submission identifies the end business that manages the opt-in and has the consumer relationship. If you are an ISV, submit the end business information instead of your own business details.\n* Review and correct all business information so it matches the business being verified and its public presence, including `BusinessName`, `BusinessStreetAddress`, `BusinessCity`, `BusinessStateProvinceRegion`, `BusinessPostalCode`, `BusinessCountry`, `BusinessContactFirstName`, `BusinessContactLastName`, `BusinessContactEmail`, `BusinessContactPhone`, and `BusinessWebsite`.\n* Make sure the business website is live, publicly accessible, and clearly branded with the business name, logo, and identifying information. If you use a third-party platform, use a custom domain or make the business branding prominent.\n* If the verification response includes `edit_allowed` as `true`, correct the rejected submission and resubmit it before the `edit_expiration` timestamp. If the request is no longer editable, create a new verification request.",
    "description": "This error means your verification submission was rejected because the business in the submission couldn't be verified. The review checks the business sending messages, the use case, sample content, web presence, opt-in or consent flow, and related terms and privacy policy information.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30809,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Charity must provide 501(c)(3) verification",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error indicates that your verification submission was rejected because the business was identified as a charitable organization soliciting donations, but the submission didn't provide enough proof of 501(c)(3) status. Messaging traffic on the phone number is blocked until the number is verified.\n\n### Possible causes\n\n- The submission identifies the business as a charity or nonprofit, but no 501(c)(3) tax-exempt verification was provided.\n- The accreditation URL is missing or invalid.\n- The submitted business details don't confirm nonprofit status.\n\n### Possible solutions\n\n- Confirm that your organization is registered as a 501(c)(3) tax-exempt entity.\n- Provide a valid accreditation URL from a recognized nonprofit source such as BBB Wise Giving Alliance, Charity Navigator, or GuideStar.\n- Make sure the organization name and other submitted details match your official nonprofit records.\n- Update the rejected verification request with the correct nonprofit verification details and resubmit it.\n",
    "causes": "* The submission identifies the business as a charity or nonprofit, but no 501(c)(3) tax-exempt verification was provided.\n* The accreditation URL is missing or invalid.\n* The submitted business details don't confirm nonprofit status.",
    "solutions": "* Confirm that your organization is registered as a 501(c)(3) tax-exempt entity.\n* Provide a valid accreditation URL from a recognized nonprofit source such as BBB Wise Giving Alliance, Charity Navigator, or GuideStar.\n* Make sure the organization name and other submitted details match your official nonprofit records.\n* Update the rejected verification request with the correct nonprofit verification details and resubmit it.",
    "description": "This error indicates that your verification submission was rejected because the business was identified as a charitable organization soliciting donations, but the submission didn't provide enough proof of 501(c)(3) status. Messaging traffic on the phone number is blocked until the number is verified.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30810,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - DBA name must be accurately provided",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification request was rejected because the business identity in the submission didn't clearly match the registered business information. If you send messages under a trade name, sub-entity, or downstream brand, include that name in `doingBusinessAs`. Messaging on the phone number remains blocked until the number is verified.\n\n### Possible causes\n\n- The `businessName` value uses a brand name that doesn't match the registered legal business name.\n- Your business operates under a DBA or trade name, but the `doingBusinessAs` field is blank, incomplete, or inaccurate.\n- The information in the verification request doesn't clearly show how the operating name relates to the registered business.\n\n### Possible solutions\n\n- Update `businessName` so it exactly matches your registered business name.\n- If you use a trade name, enter the exact DBA in `doingBusinessAs`.\n- Make sure your website and other verification details identify the same business name or clearly show the connection between the legal business and the DBA.\n- If requested, provide documentation that shows the relationship between the registered business name and the operating name.\n- If your verification response shows `edit_allowed` as `true`, correct the request and resubmit it before the `edit_expiration` time. If the request can no longer be edited, submit a new verification request with the corrected business identity details.\n",
    "causes": "* The `businessName` value uses a brand name that doesn't match the registered legal business name.\n* Your business operates under a DBA or trade name, but the `doingBusinessAs` field is blank, incomplete, or inaccurate.\n* The information in the verification request doesn't clearly show how the operating name relates to the registered business.",
    "solutions": "* Update `businessName` so it exactly matches your registered business name.\n* If you use a trade name, enter the exact DBA in `doingBusinessAs`.\n* Make sure your website and other verification details identify the same business name or clearly show the connection between the legal business and the DBA.\n* If requested, provide documentation that shows the relationship between the registered business name and the operating name.\n* If your verification response shows `edit_allowed` as `true`, correct the request and resubmit it before the `edit_expiration` time. If the request can no longer be edited, submit a new verification request with the corrected business identity details.",
    "description": "Your verification request was rejected because the business identity in the submission didn't clearly match the registered business information. If you send messages under a trade name, sub-entity, or downstream brand, include that name in `doingBusinessAs`. Messaging on the phone number remains blocked until the number is verified.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30811,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Business Registration Number is Missing or Invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe business name or brand listed in your submission doesn't align with your registered business details. This inconsistency may be due to:\n\n- Using a brand name that differs from your registered business name\n- Operating under a \"Doing Business As\" (DBA) name but leaving the DBA field blank\n\n### Possible causes\n\nThe business registration number doesn't match the brand name.\n\n### Possible solutions\n\n- Verify that the business registration number in your submission is correct and matches your official registration documents.\n- If you operate under a DBA name, include it in the appropriate field in your submission.\n- Ensure the business name in your submission matches the name on your business registration certificate or articles of incorporation.\n",
    "causes": "The business registration number doesn't match the brand name.",
    "solutions": "* Verify that the business registration number in your submission is correct and matches your official registration documents.\n* If you operate under a DBA name, include it in the appropriate field in your submission.\n* Ensure the business name in your submission matches the name on your business registration certificate or articles of incorporation.",
    "description": "The business name or brand listed in your submission doesn't align with your registered business details. This inconsistency may be due to: - Using a brand name that differs from your registered business name\n- Operating under a \"Doing Business As\" (DBA) name but leaving the DBA field blank",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30812,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Website must be established and active",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe website provided in your submission appears to be:\n\n- Incomplete or under construction\n- Not yet launched\n- Lacking sufficient business information to establish credibility\n- Missing essential details such as contact information or services offered\n\n### Possible solutions\n\n- Submit a fully developed, live website with clear business information\n- Ensure your website includes:\n- Complete contact information\n- Description of services provided\n- Business details that match your verification submission\n- Content that establishes business legitimacy\n",
    "causes": "The website provided in your submission appears to be: - Incomplete or under construction\n- Not yet launched\n- Lacking sufficient business information to establish credibility\n- Missing essential details such as contact information or services offered",
    "solutions": "* Submit a fully developed, live website with clear business information\n* Ensure your website includes:\n* Complete contact information\n* Description of services provided\n* Business details that match your verification submission\n* Content that establishes business legitimacy",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30813,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Social platform must be established and active",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe social media platform provided as your business's web presence appears to be:\n\n- Newly created with minimal history\n- Inactive or rarely updated\n- Lacking sufficient content to establish business credibility\n- Missing business information or engagement\n\n### Possible solutions\n\n- Submit a more established social media account that demonstrates business legitimacy\n- Ensure your social profile includes:\n- Regular posts and activity\n- Clear business information\n- Engagement that establishes legitimacy\n- Alternatively, provide a functional business website instead of a social media profile\n",
    "causes": "The social media platform provided as your business's web presence appears to be: - Newly created with minimal history\n- Inactive or rarely updated\n- Lacking sufficient content to establish business credibility\n- Missing business information or engagement",
    "solutions": "* Submit a more established social media account that demonstrates business legitimacy\n* Ensure your social profile includes:\n* Regular posts and activity\n* Clear business information\n* Engagement that establishes legitimacy\n* Alternatively, provide a functional business website instead of a social media profile",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30814,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Website is password protected or requires login",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe website URL provided in your submission couldn't be fully reviewed because:\n\n- It requires a username and password to access\n- A login page prevents verification of your business details\n- Content needed for verification is behind restricted access\n\n### Possible solutions\n\n- Provide a publicly accessible version of your website that allows verification of business information\n- If your website can't be made public for security reasons, submit screenshots displaying the necessary business details in the \"Additional Information\" field\n- Create a public landing page with your business information while maintaining secure access to other areas\n",
    "causes": "The website URL provided in your submission couldn't be fully reviewed because: - It requires a username and password to access\n- A login page prevents verification of your business details\n- Content needed for verification is behind restricted access",
    "solutions": "* Provide a publicly accessible version of your website that allows verification of business information\n* If your website can't be made public for security reasons, submit screenshots displaying the necessary business details in the \"Additional Information\" field\n* Create a public landing page with your business information while maintaining secure access to other areas",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30815,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Cannot validate business website URL",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because the business website URL couldn't be validated. The `businessWebsite` value is required in the verification request and must point to the website of the business or organization using the phone number.\n\n### Possible causes\n\n- The website doesn't load, is unavailable, or isn't operational.\n- The website requires a login, password, or other restricted access that prevents review.\n- The submitted URL doesn't match the website the consumer is engaging with.\n- The submitted URL is generic, unrelated, or a placeholder rather than the business website.\n\n### Possible solutions\n\n- Verify that the `businessWebsite` value is the correct public website for the business or organization using the phone number, then resubmit the verification request.\n- Open the website in an incognito or private browser session and confirm that it loads without a login, password, or other restricted access.\n- If the site isn't live yet, wait until it's publicly available and fully operational before you resubmit.\n- Replace any generic or unrelated URL with the actual site customers use to interact with your business.\n- If part of your site must stay restricted, provide a public page that clearly identifies your business and makes the relevant information reviewable.\n",
    "causes": "* The website doesn't load, is unavailable, or isn't operational.\n* The website requires a login, password, or other restricted access that prevents review.\n* The submitted URL doesn't match the website the consumer is engaging with.\n* The submitted URL is generic, unrelated, or a placeholder rather than the business website.",
    "solutions": "* Verify that the `businessWebsite` value is the correct public website for the business or organization using the phone number, then resubmit the verification request.\n* Open the website in an incognito or private browser session and confirm that it loads without a login, password, or other restricted access.\n* If the site isn't live yet, wait until it's publicly available and fully operational before you resubmit.\n* Replace any generic or unrelated URL with the actual site customers use to interact with your business.\n* If part of your site must stay restricted, provide a public page that clearly identifies your business and makes the relevant information reviewable.",
    "description": "This error means your verification submission was rejected because the business website URL couldn't be validated. The `businessWebsite` value is required in the verification request and must point to the website of the business or organization using the phone number.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30816,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Business website URL must display branding",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe website URL provided doesn't clearly reflect your business identity, making verification difficult. This may be due to:\n\n- Using a generic, system-generated URL that doesn't include your business name\n- Providing a URL from a third-party e-commerce platform or URL shortener without clear business branding\n- Lack of visible business branding on the website itself\n\n### Possible solutions\n\n- Submit a URL that includes your business name (e.g., [www.yourbusinessname.com](http://www.yourbusinessname.com))\n- Ensure your website clearly displays company branding including name, logo, and identifying information\n- If using a third-party platform, set up a custom domain or ensure your business branding is prominently featured\n",
    "causes": "The website URL provided doesn't clearly reflect your business identity, making verification difficult. This may be due to: - Using a generic, system-generated URL that doesn't include your business name\n- Providing a URL from a third-party e-commerce platform or URL shortener without clear business branding\n- Lack of visible business branding on the website itself",
    "solutions": "* Submit a URL that includes your business name (e.g., [www.yourbusinessname.com](http://www.yourbusinessname.com))\n* Ensure your website clearly displays company branding including name, logo, and identifying information\n* If using a third-party platform, set up a custom domain or ensure your business branding is prominently featured",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30817,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Privacy policy or terms URL missing or inaccessible",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was rejected because the Privacy Policy URL, the Terms and Conditions URL, or both were missing, unreachable, or didn't contain the required policy content.\n\nYou can't send messaging traffic from this phone number to the United States and Canada until verification is approved.\n\n### Possible causes\n\n- You didn't provide a `privacy_policy_url` or `terms_and_conditions_url` in the verification submission.\n- One or both URLs are inaccessible or return an error.\n- The linked page doesn't contain an actual Privacy Policy or Terms and Conditions.\n- The linked content is incomplete or still under construction.\n\n### Possible solutions\n\n- Provide direct, publicly accessible URLs for your Privacy Policy and Terms and Conditions.\n- Open each URL in a browser and confirm it loads successfully without errors.\n- Update the linked pages so they contain complete policy content and clearly address messaging and data practices.\n- If your verification request is eligible for resubmission, correct the URLs in Console or through the verification API and submit the request again.\n",
    "causes": "* You didn't provide a `privacy_policy_url` or `terms_and_conditions_url` in the verification submission.\n* One or both URLs are inaccessible or return an error.\n* The linked page doesn't contain an actual Privacy Policy or Terms and Conditions.\n* The linked content is incomplete or still under construction.",
    "solutions": "* Provide direct, publicly accessible URLs for your Privacy Policy and Terms and Conditions.\n* Open each URL in a browser and confirm it loads successfully without errors.\n* Update the linked pages so they contain complete policy content and clearly address messaging and data practices.\n* If your verification request is eligible for resubmission, correct the URLs in Console or through the verification API and submit the request again.",
    "description": "Your verification submission was rejected because the Privacy Policy URL, the Terms and Conditions URL, or both were missing, unreachable, or didn't contain the required policy content. You can't send messaging traffic from this phone number to the United States and Canada until verification is approved.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30818,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - ISV or reseller name must be provided",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour submission indicates that an Independent Software Vendor (ISV) or reseller is being used, but:\n\n- The ISV/reseller field was left blank\n- The information wasn't provided in the appropriate field\n- The submission mentions an ISV/reseller but doesn't identify them\n\n### Possible solutions\n\n- Update the ISV/Reseller field with the correct details of the software provider\n- Ensure the name provided matches the actual software vendor being used\n- Complete all required fields related to ISVs or resellers if your business uses their services\n",
    "causes": "Your submission indicates that an Independent Software Vendor (ISV) or reseller is being used, but: - The ISV/reseller field was left blank\n- The information wasn't provided in the appropriate field\n- The submission mentions an ISV/reseller but doesn't identify them",
    "solutions": "* Update the ISV/Reseller field with the correct details of the software provider\n* Ensure the name provided matches the actual software vendor being used\n* Complete all required fields related to ISVs or resellers if your business uses their services",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30819,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Projected message volume exceeds use case limits",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe message volume requested in your submission appears disproportionately high for the stated use case or business size. This may be due to:\n\n- Requesting authorization for message volumes that don't align with your business scale\n- A use case that doesn't support the scale of messaging requested\n- Insufficient justification for high-volume messaging\n\n### Possible solutions\n\n- Provide a detailed justification for the requested volume in the \"Additional Information\" field\n- Include information about your target audience size and messaging frequency\n- Explain how the requested volume aligns with your business needs and use case\n- Adjust your projected volume to better match your actual business requirements\n",
    "causes": "The message volume requested in your submission appears disproportionately high for the stated use case or business size. This may be due to: - Requesting authorization for message volumes that don't align with your business scale\n- A use case that doesn't support the scale of messaging requested\n- Insufficient justification for high-volume messaging",
    "solutions": "* Provide a detailed justification for the requested volume in the \"Additional Information\" field\n* Include information about your target audience size and messaging frequency\n* Explain how the requested volume aligns with your business needs and use case\n* Adjust your projected volume to better match your actual business requirements",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30820,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Use case and use case summary inconsistent",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThere is a mismatch between the selected use case and the use case summary in your submission. For example:\n\n- Use case is listed as \"Account Alerts\" but the summary describes marketing messages\n- Different types of messages are described in the various sections of your submission\n- The content contradicts the selected use case category\n\n### Possible solutions\n\n- Review your submission to ensure the use case and use case summary align perfectly\n- Update either the use case selection or the summary to ensure consistency\n- Make sure all sections of your submission reflect the same messaging purpose\n- Avoid mixing different use cases in a single submission\n",
    "causes": "There is a mismatch between the selected use case and the use case summary in your submission. For example: - Use case is listed as \"Account Alerts\" but the summary describes marketing messages\n- Different types of messages are described in the various sections of your submission\n- The content contradicts the selected use case category",
    "solutions": "* Review your submission to ensure the use case and use case summary align perfectly\n* Update either the use case selection or the summary to ensure consistency\n* Make sure all sections of your submission reflect the same messaging purpose\n* Avoid mixing different use cases in a single submission",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30821,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Use case summary is incomplete",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and rejected. Messaging traffic on this phone number is blocked until it's verified.\n\n### Possible causes\n\nThe use case summary provided in your submission is incomplete or lacks sufficient detail. This may be due to:\n\n- The use case description is too vague or generic to evaluate\n- Key details about the messaging program are missing from the summary\n- The summary doesn't clearly describe what messages will be sent and why\n- The description doesn't explain the relationship between the business and the message recipients\n\n### Possible solutions\n\n- Provide a detailed use case summary that clearly describes the purpose of your messaging program\n- Include specifics about what messages will be sent, how often, and to whom\n- Explain the business context and why messaging is needed for this use case\n- Make sure the summary aligns with the sample messages and other details in your submission\n",
    "causes": "The use case summary provided in your submission is incomplete or lacks sufficient detail. This may be due to: - The use case description is too vague or generic to evaluate\n- Key details about the messaging program are missing from the summary\n- The summary doesn't clearly describe what messages will be sent and why\n- The description doesn't explain the relationship between the business and the message recipients",
    "solutions": "* Provide a detailed use case summary that clearly describes the purpose of your messaging program\n* Include specifics about what messages will be sent, how often, and to whom\n* Explain the business context and why messaging is needed for this use case\n* Make sure the summary aligns with the sample messages and other details in your submission",
    "description": "The verification submission has been reviewed and rejected. Messaging traffic on this phone number is blocked until it's verified.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30822,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in workflow must match submission details",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe opt-in workflow description in your submission doesn't match the actual opt-in example provided. For example:\n\n- Your description mentions a verbal opt-in, but you provided a web form example\n- The opt-in method described differs from what was demonstrated\n- Details in the description contradict what's shown in the provided example\n\n### Possible solutions\n\n- Update either the opt-in workflow description or the provided example to ensure consistency\n- Make sure your description accurately reflects your actual opt-in process\n- Provide examples that match the exact opt-in method you've described\n- Ensure all aspects of your submission align with your actual business practices\n",
    "causes": "The opt-in workflow description in your submission doesn't match the actual opt-in example provided. For example: - Your description mentions a verbal opt-in, but you provided a web form example\n- The opt-in method described differs from what was demonstrated\n- Details in the description contradict what's shown in the provided example",
    "solutions": "* Update either the opt-in workflow description or the provided example to ensure consistency\n* Make sure your description accurately reflects your actual opt-in process\n* Provide examples that match the exact opt-in method you've described\n* Ensure all aspects of your submission align with your actual business practices",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30823,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Message content doesn't align with use case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe sample message content provided in your submission:\n\n- Doesn't align with the use case you selected\n- Is incomplete or missing key details (such as your business name)\n- Contains content that contradicts your stated messaging purpose\n- References messaging types different from what you've described elsewhere\n\n### Possible solutions\n\n- Update your sample message content to accurately reflect the approved use case\n- Ensure all required message components are included (business name, opt-out instructions, etc.)\n- Make sure the message content is complete and properly formatted\n- Remove any content that doesn't align with your stated messaging purpose\n",
    "causes": "The sample message content provided in your submission: - Doesn't align with the use case you selected\n- Is incomplete or missing key details (such as your business name)\n- Contains content that contradicts your stated messaging purpose\n- References messaging types different from what you've described elsewhere",
    "solutions": "* Update your sample message content to accurately reflect the approved use case\n* Ensure all required message components are included (business name, opt-out instructions, etc.)\n* Make sure the message content is complete and properly formatted\n* Remove any content that doesn't align with your stated messaging purpose",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30824,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Edit time expired",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a rejected verification isn't corrected and resubmitted within the seven-day edit window. After that window expires, the phone number remains `Restricted`. A later resubmission is handled like a new verification instead of a priority resubmission.\n\n### Possible causes\n\n- You didn't update and resubmit the rejected verification within seven days of the rejection.\n- The `editExpiration` timestamp for the rejected verification passed before you completed your corrections.\n- You waited until after the priority resubmission window expired to submit corrected business or compliance information.\n\n### Possible solutions\n\n- Review the rejection details for the phone number in Console under Regulatory Information before you resubmit.\n- If you use the API, check `edit_allowed`, `edit_expiration`, and `rejection_reasons` on the verification record so you can determine whether to edit the existing request or create a new one.\n- Correct the rejected verification details and resubmit the request with complete and accurate business, website, use case, opt-in, and sample message information.\n- If the seven-day window has already expired, submit the corrected verification anyway. It will be processed in the standard queue instead of the priority queue. If the request is no longer editable through the API, create a new verification request.\n",
    "causes": "* You didn't update and resubmit the rejected verification within seven days of the rejection.\n* The `editExpiration` timestamp for the rejected verification passed before you completed your corrections.\n* You waited until after the priority resubmission window expired to submit corrected business or compliance information.",
    "solutions": "* Review the rejection details for the phone number in Console under Regulatory Information before you resubmit.\n* If you use the API, check `edit_allowed`, `edit_expiration`, and `rejection_reasons` on the verification record so you can determine whether to edit the existing request or create a new one.\n* Correct the rejected verification details and resubmit the request with complete and accurate business, website, use case, opt-in, and sample message information.\n* If the seven-day window has already expired, submit the corrected verification anyway. It will be processed in the standard queue instead of the priority queue. If the request is no longer editable through the API, create a new verification request.",
    "description": "This error occurs when a rejected verification isn't corrected and resubmitted within the seven-day edit window. After that window expires, the phone number remains `Restricted`. A later resubmission is handled like a new verification instead of a priority resubmission.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30825,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Age Gate",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe phone number can't be verified because an Age Gate isn't present or isn't acceptable on your website and/or opt-in policy.\n\n### Possible solutions\n\n- Add a robust age gate to your website or opt-in policy. Resubmit the verification with the updated age gate information.\n\n[Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n",
    "causes": "The phone number can't be verified because an Age Gate isn't present or isn't acceptable on your website and/or opt-in policy.",
    "solutions": "* Add a robust age gate to your website or opt-in policy. Resubmit the verification with the updated age gate information. [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)",
    "description": "The verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30826,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Political campaigns require a Campaign Verify token",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was rejected because your political messaging use case requires a Campaign Verify token. Until your phone number is verified and approved, messaging traffic from that number to the United States and Canada is blocked.\n\n### Possible causes\n\n- Your organization is a 527 political organization and you selected `POLITICAL_ELECTION_CAMPAIGNS`, but no Campaign Verify token was provided.\n- The Campaign Verify token in `VettingId` is incomplete, malformed, case-sensitive mismatch, or expired.\n- The Campaign Verify token doesn't match the political organization listed in the verification submission.\n- The verification request was submitted without the required political vetting details.\n\n### Possible solutions\n\n- Obtain a valid Campaign Verify token for the political organization before you resubmit the verification.\n- If you submit through the API, set `VettingProvider` to `CAMPAIGN_VERIFY` and pass the full token in `VettingId`.\n- Use the full Campaign Verify token exactly as issued, including all pipe-delimited fields.\n- Confirm the token is still valid and registered to the same political entity in your submission. If the token has expired, update the verification request with a new token.\n- If you submitted through the Console, provide the Campaign Verify token when prompted during verification.\n- If the rejected submission is eligible for editing, resubmit the corrected verification within the allowed edit window.\n",
    "causes": "* Your organization is a 527 political organization and you selected `POLITICAL_ELECTION_CAMPAIGNS`, but no Campaign Verify token was provided.\n* The Campaign Verify token in `VettingId` is incomplete, malformed, case-sensitive mismatch, or expired.\n* The Campaign Verify token doesn't match the political organization listed in the verification submission.\n* The verification request was submitted without the required political vetting details.",
    "solutions": "* Obtain a valid Campaign Verify token for the political organization before you resubmit the verification.\n* If you submit through the API, set `VettingProvider` to `CAMPAIGN_VERIFY` and pass the full token in `VettingId`.\n* Use the full Campaign Verify token exactly as issued, including all pipe-delimited fields.\n* Confirm the token is still valid and registered to the same political entity in your submission. If the token has expired, update the verification request with a new token.\n* If you submitted through the Console, provide the Campaign Verify token when prompted during verification.\n* If the rejected submission is eligible for editing, resubmit the corrected verification within the allowed edit window.",
    "description": "Your verification submission was rejected because your political messaging use case requires a Campaign Verify token. Until your phone number is verified and approved, messaging traffic from that number to the United States and Canada is blocked.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30827,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Political campaigns must submit FEC ID",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour submission indicates a political campaign, but:\n\n- No Federal Election Commission (FEC) Committee ID was provided for federal-level campaigns\n- No state committee registration number was provided for state-level campaigns\n- The provided identification couldn't be verified\n\n### Possible solutions\n\n- For federal-level campaigns: Submit a valid FEC Committee ID\n- For state-level campaigns: Submit a state committee registration number or equivalent official documentation\n- Include this information in the \"Additional Information\" field when resubmitting\n- Ensure all registration numbers are current and verifiable\n",
    "causes": "Your submission indicates a political campaign, but: - No Federal Election Commission (FEC) Committee ID was provided for federal-level campaigns\n- No state committee registration number was provided for state-level campaigns\n- The provided identification couldn't be verified",
    "solutions": "* For federal-level campaigns: Submit a valid FEC Committee ID\n* For state-level campaigns: Submit a state committee registration number or equivalent official documentation\n* Include this information in the \"Additional Information\" field when resubmitting\n* Ensure all registration numbers are current and verifiable",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30828,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Confirmation message missing required details",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe confirmation message example provided in your submission is missing required elements. These may include:\n\n- Program name or product description\n- Customer care contact information (phone number or HELP command)\n- Opt-out instructions (e.g., \"Reply STOP to opt out\")\n- Message frequency disclosure (e.g., \"Recurring\" or \"Msg freq may vary\")\n- Pricing statement (e.g., \"Msg & Data rates may apply\")\n\n### Possible solutions\n\n- Update your confirmation message to include all required details:\n- Business/program name\n- Customer care information\n- Opt-out instructions\n- Message frequency disclosure (for recurring messages)\n- Pricing statement\n- Ensure clarity and consistency across all messaging examples\n- Resubmit with the complete confirmation message\n",
    "causes": "The confirmation message example provided in your submission is missing required elements. These may include: - Program name or product description\n- Customer care contact information (phone number or HELP command)\n- Opt-out instructions (e.g., \"Reply STOP to opt out\")\n- Message frequency disclosure (e.g., \"Recurring\" or \"Msg freq may vary\")\n- Pricing statement (e.g., \"Msg & Data rates may apply\")",
    "solutions": "* Update your confirmation message to include all required details:\n* Business/program name\n* Customer care information\n* Opt-out instructions\n* Message frequency disclosure (for recurring messages)\n* Pricing statement\n* Ensure clarity and consistency across all messaging examples\n* Resubmit with the complete confirmation message",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30829,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Single opt-in cannot cover multiple use cases",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour opt-in process attempts to cover multiple message types with a single consent action. Common issues include:\n\n- Using a single checkbox for both promotional and informational messages\n- Opt-in text that doesn't differentiate between different message types\n- Combining multiple use cases under one consent mechanism\n\n### Possible solutions\n\n- Create separate opt-in mechanisms for each message type (e.g., promotional, informational)\n- Clearly describe the purpose of each opt-in and the specific types of messages users will receive\n- Ensure users can select which message types they want to receive independently\n- Resubmit with evidence of separate opt-ins for different message types\n",
    "causes": "Your opt-in process attempts to cover multiple message types with a single consent action. Common issues include: - Using a single checkbox for both promotional and informational messages\n- Opt-in text that doesn't differentiate between different message types\n- Combining multiple use cases under one consent mechanism",
    "solutions": "* Create separate opt-in mechanisms for each message type (e.g., promotional, informational)\n* Clearly describe the purpose of each opt-in and the specific types of messages users will receive\n* Ensure users can select which message types they want to receive independently\n* Resubmit with evidence of separate opt-ins for different message types",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30830,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Cannot combine messaging consent with service requirement",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour opt-in mechanism requires that the consumer opt-in to messaging as a requirement of using your service, which is not allowed.\n\nConsent can't be a requirement for your business's service. A business may not combine collecting a consumer's phone number with opting-in to receive marketing messaging. An explicit opt-in leaves no ambiguity for why the customer gave the phone number, and for how they expect the company will communicate with them.\n\nOpt-in refers to the process of getting a consumer's permission to send them text messages. According to TCPA law, businesses must have \"express written consent\" from the consumer before texting them. NonConsumer (A2P) Message Senders should:\n\n- Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages; and\n- Ensure that Consumers have the ability to revoke consent.\n\n**Note**: If there is promotional messaging on this phone number, it requires express written consent.\n\n### Possible solutions\n\n- Ensure your opt-in mechanism is a distinct action during a consumer's sign up for your service.\n- An opt-in call-to-action (CTA) with a checkbox must be unchecked by default.\n\n#### Additional resources\n\n- [CTIA guidelines](https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-interoperability-sms-mms)\n- [Consent/Opt-In](https://www.twilio.com/en-us/legal/messaging-policy#:~:text=with%20Twilio%20policies.-,Consent%20/%20Opt%2Din,-What%20Is%20Proper) in [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n",
    "causes": "Your opt-in mechanism requires that the consumer opt-in to messaging as a requirement of using your service, which is not allowed. Consent can't be a requirement for your business's service. A business may not combine collecting a consumer's phone number with opting-in to receive marketing messaging. An explicit opt-in leaves no ambiguity for why the customer gave the phone number, and for how they expect the company will communicate with them. Opt-in refers to the process of getting a consumer's permission to send them text messages. According to TCPA law, businesses must have \"express written consent\" from the consumer before texting them. NonConsumer (A2P) Message Senders should: - Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages; and\n- Ensure that Consumers have the ability to revoke consent. **Note**: If there is promotional messaging on this phone number, it requires express written consent.",
    "solutions": "* Ensure your opt-in mechanism is a distinct action during a consumer's sign up for your service.\n* An opt-in call-to-action (CTA) with a checkbox must be unchecked by default.",
    "description": "The verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30831,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in not sufficient: express consent required",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe Opt-in workflow provided in the verification isn't sufficient. Express Consent is required. Express Consent is more than collecting a phone number - it's a voluntary, informed end user choice for a specific purpose - it requires upfront disclosure and intentional action. Explicit opt-in leaves no ambiguity for why the customer gave the phone number, and for how they expect the company will communicate with them. Every end business must have consent from each recipient they send a message to. Consumers may give permission over text, on a form, on a website, or verbally. Consumers may also give written permission. Listing \"SMS\" in your Terms of Service or Privacy Policy is not Express Consent.\n\nNote: If there is promotional messaging on this phone number, it requires express written consent.\n\nOpt-in refers to the process of getting a consumer's permission to send them text messages. According to TCPA law, businesses must have \"express written consent\" from the consumer before texting them. NonConsumer (A2P) Message Senders should:\n\n- Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages;\n- Ensure that Consumers have the ability to revoke consent\n\n### Possible solutions\n\n- Correct your opt-in process to collect a consumer's express consent via CTIA guidelines and resubmit the verification\n- Note: An opt-in call-to-action (CTA) with a checkbox must be unchecked by default\n\n#### Additional resources\n\n- [CTIA guidelines](https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-interoperability-sms-mms)\n- [Forbidden Message Categories](https://support.twilio.com/hc/en-us/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n- [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n",
    "causes": "The Opt-in workflow provided in the verification isn't sufficient. Express Consent is required. Express Consent is more than collecting a phone number - it's a voluntary, informed end user choice for a specific purpose - it requires upfront disclosure and intentional action. Explicit opt-in leaves no ambiguity for why the customer gave the phone number, and for how they expect the company will communicate with them. Every end business must have consent from each recipient they send a message to. Consumers may give permission over text, on a form, on a website, or verbally. Consumers may also give written permission. Listing \"SMS\" in your Terms of Service or Privacy Policy is not Express Consent. Note: If there is promotional messaging on this phone number, it requires express written consent. Opt-in refers to the process of getting a consumer's permission to send them text messages. According to TCPA law, businesses must have \"express written consent\" from the consumer before texting them. NonConsumer (A2P) Message Senders should: - Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages;\n- Ensure that Consumers have the ability to revoke consent",
    "solutions": "* Correct your opt-in process to collect a consumer's express consent via CTIA guidelines and resubmit the verification\n* Note: An opt-in call-to-action (CTA) with a checkbox must be unchecked by default",
    "description": "The verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30832,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in must be optional, not required",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour opt-in process requires users to consent to receiving messages as a condition for completing unrelated actions such as:\n\n- Creating an account\n- Making a purchase\n- Accessing services\n- Completing registration\n\n### Possible solutions\n\n- Update your forms to ensure users can complete their primary action without being required to opt in to messaging\n- Clearly indicate that messaging consent is optional and separate from the main service\n- Use language that makes the optional nature of messaging clear (e.g., \"Would you also like to receive...\")\n- Ensure users can decline messaging while still completing their primary action\n",
    "causes": "Your opt-in process requires users to consent to receiving messages as a condition for completing unrelated actions such as: - Creating an account\n- Making a purchase\n- Accessing services\n- Completing registration",
    "solutions": "* Update your forms to ensure users can complete their primary action without being required to opt in to messaging\n* Clearly indicate that messaging consent is optional and separate from the main service\n* Use language that makes the optional nature of messaging clear (e.g., \"Would you also like to receive...\")\n* Ensure users can decline messaging while still completing their primary action",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30833,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-ins must clearly reflect end business",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nFor submissions by Independent Software Vendors (ISVs) or platform providers, the opt-in examples provided:\n\n- Display the ISV's branding instead of the end business\n- Don't clearly identify which business the user is consenting to receive messages from\n- Fail to establish a direct relationship between the end user and the business sending messages\n\n### Possible solutions\n\n- Submit opt-in examples showing the end business's branding and language\n- Ensure opt-in text explicitly indicates that users are consenting to receive messages from the specific end business\n- Remove or minimize ISV/platform branding that might confuse the consent relationship\n- Make it clear which business will be sending messages to users\n",
    "causes": "For submissions by Independent Software Vendors (ISVs) or platform providers, the opt-in examples provided: - Display the ISV's branding instead of the end business\n- Don't clearly identify which business the user is consenting to receive messages from\n- Fail to establish a direct relationship between the end user and the business sending messages",
    "solutions": "* Submit opt-in examples showing the end business's branding and language\n* Ensure opt-in text explicitly indicates that users are consenting to receive messages from the specific end business\n* Remove or minimize ISV/platform branding that might confuse the consent relationship\n* Make it clear which business will be sending messages to users",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30834,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in does not match use case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThere is a mismatch between the opt-in language or method and the use case described in your submission. Examples include:\n\n- Opt-in text indicates consent for promotional messages, but the use case is for informational messages\n- Consent language doesn't specifically cover the message types described in your use case\n- The opt-in method is inappropriate for the described messaging purpose\n\n### Possible solutions\n\n- Ensure your opt-in explicitly matches the use case described in your submission\n- Update the opt-in text to specifically reference the intended message types\n- For informational messages: \"I agree to receive account updates and notifications\"\n- For promotional messages: \"I agree to receive marketing messages and special offers\"\n- Align all aspects of your submission with the actual messaging purpose\n",
    "causes": "There is a mismatch between the opt-in language or method and the use case described in your submission. Examples include: - Opt-in text indicates consent for promotional messages, but the use case is for informational messages\n- Consent language doesn't specifically cover the message types described in your use case\n- The opt-in method is inappropriate for the described messaging purpose",
    "solutions": "* Ensure your opt-in explicitly matches the use case described in your submission\n* Update the opt-in text to specifically reference the intended message types\n* For informational messages: \"I agree to receive account updates and notifications\"\n* For promotional messages: \"I agree to receive marketing messages and special offers\"\n* Align all aspects of your submission with the actual messaging purpose",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30835,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Pre-selected opt-in checkbox is not allowed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour opt-in process uses pre-selected or pre-checked options for consent, which fails to provide users with a clear choice. This includes:\n\n- Checkboxes that are automatically checked by default\n- Toggle switches that are pre-enabled\n- Any opt-in mechanism where the default state is \"opted in\"\n\n### Possible solutions\n\n- Remove all pre-selected options from your opt-in forms\n- Ensure all checkboxes or consent mechanisms start in the unchecked/unselected state\n- Require users to actively select or confirm their consent\n- Update your opt-in workflow to require affirmative action from users\n- Provide evidence of the corrected opt-in process when resubmitting\n",
    "causes": "Your opt-in process uses pre-selected or pre-checked options for consent, which fails to provide users with a clear choice. This includes: - Checkboxes that are automatically checked by default\n- Toggle switches that are pre-enabled\n- Any opt-in mechanism where the default state is \"opted in\"",
    "solutions": "* Remove all pre-selected options from your opt-in forms\n* Ensure all checkboxes or consent mechanisms start in the unchecked/unselected state\n* Require users to actively select or confirm their consent\n* Update your opt-in workflow to require affirmative action from users\n* Provide evidence of the corrected opt-in process when resubmitting",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30836,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in URL not accessible",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification request was rejected because the opt-in URL in the submission couldn't be accessed for review. Messaging traffic on the phone number remains blocked until the number is verified. Reviewers use the opt-in example to confirm how you collect consent for the messaging use case, along with the related website, privacy policy, and terms information in the submission.\n\n### Possible causes\n\n- The opt-in URL requires a login, password, or other credentials, so reviewers can't access it.\n- The link is broken, returns an error, no longer resolves, or the page was changed after you submitted it.\n- The URL doesn't lead directly to the opt-in content or doesn't clearly show how the consumer opts in to receive messages.\n\n### Possible solutions\n\n- Replace the URL with a public link that is reachable, resolvable, and accessible without authentication.\n- Make sure the link goes directly to the web form or other proof of consent that tells the full opt-in story for the submitted use case. A valid example can be a web form, a hosted image, or a document such as a verbal opt-in script.\n- If the opt-in flow is inside an authenticated app or portal, host screenshots at public URLs and submit them as your opt-in evidence. If you submit verification through the API, use `optInImageUrls` for those publicly hosted images.\n- If you use screenshots, include the complete opt-in experience and visible business branding so the consent flow is easy to review.\n- If the rejected request is eligible for resubmission, correct the URL and resubmit within seven days to enter priority review. After that window, the phone number remains `Restricted` until you resubmit verification.\n",
    "causes": "* The opt-in URL requires a login, password, or other credentials, so reviewers can't access it.\n* The link is broken, returns an error, no longer resolves, or the page was changed after you submitted it.\n* The URL doesn't lead directly to the opt-in content or doesn't clearly show how the consumer opts in to receive messages.",
    "solutions": "* Replace the URL with a public link that is reachable, resolvable, and accessible without authentication.\n* Make sure the link goes directly to the web form or other proof of consent that tells the full opt-in story for the submitted use case. A valid example can be a web form, a hosted image, or a document such as a verbal opt-in script.\n* If the opt-in flow is inside an authenticated app or portal, host screenshots at public URLs and submit them as your opt-in evidence. If you submit verification through the API, use `optInImageUrls` for those publicly hosted images.\n* If you use screenshots, include the complete opt-in experience and visible business branding so the consent flow is easy to review.\n* If the rejected request is eligible for resubmission, correct the URL and resubmit within seven days to enter priority review. After that window, the phone number remains `Restricted` until you resubmit verification.",
    "description": "Your verification request was rejected because the opt-in URL in the submission couldn't be accessed for review. Messaging traffic on the phone number remains blocked until the number is verified. Reviewers use the opt-in example to confirm how you collect consent for the messaging use case, along with the related website, privacy policy, and terms information in the submission.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30837,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in example must be complete and branded",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe opt-in example provided is insufficient for verification because it's:\n\n- Cropped or incomplete, not showing the full opt-in process\n- Missing branding that identifies the business collecting consent\n- Blurry or illegible, making text difficult to read\n- Missing context or surrounding page elements that provide clarity\n\n### Possible solutions\n\n- Submit a complete opt-in example that includes all text, buttons, and branding\n- Ensure the business name or logo is clearly visible in the example\n- Provide high-quality, legible images or screenshots\n- Include enough context to understand the full opt-in experience\n- Make sure the example clearly shows how users provide consent\n",
    "causes": "The opt-in example provided is insufficient for verification because it's: - Cropped or incomplete, not showing the full opt-in process\n- Missing branding that identifies the business collecting consent\n- Blurry or illegible, making text difficult to read\n- Missing context or surrounding page elements that provide clarity",
    "solutions": "* Submit a complete opt-in example that includes all text, buttons, and branding\n* Ensure the business name or logo is clearly visible in the example\n* Provide high-quality, legible images or screenshots\n* Include enough context to understand the full opt-in experience\n* Make sure the example clearly shows how users provide consent",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30838,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Verbal consent script must be provided",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour submission indicates verbal consent is used, but:\n\n- No verbal consent script was provided\n- The script or documentation for verbal opt-in was incomplete\n- The verbal consent process couldn't be verified\n\n### Possible solutions\n\n- Submit a detailed script showing the exact language used for obtaining verbal consent\n- Include a simulated conversation demonstrating how users are informed and how their consent is collected\n- Provide documentation of how verbal consent is recorded and stored\n- Include instructions for how users can opt-out after providing verbal consent\n- Consider implementing a confirmation text message after verbal opt-in\n",
    "causes": "Your submission indicates verbal consent is used, but: - No verbal consent script was provided\n- The script or documentation for verbal opt-in was incomplete\n- The verbal consent process couldn't be verified",
    "solutions": "* Submit a detailed script showing the exact language used for obtaining verbal consent\n* Include a simulated conversation demonstrating how users are informed and how their consent is collected\n* Provide documentation of how verbal consent is recorded and stored\n* Include instructions for how users can opt-out after providing verbal consent\n* Consider implementing a confirmation text message after verbal opt-in",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30839,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Third-party information sharing not allowed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe Terms of Service or Privacy Policy on the business's website indicates that Opt-in is shared with third parties, affiliates, partners, etc. Any business with a terms of service or privacy policy that mentions sharing or selling consumer opt-in data is considered noncompliant. Consent can't be bought, sold, shared, transferred, or exchanged.\n\n### Possible solutions\n\nRevise your processes to not share or sell consumer data/opt-in information with anyone. Revise your Terms of Service and Privacy Policy to remove all third party opt-in sharing language. If you have a \"reasons we can share your personal information matrix\" in your privacy policy that isn't modifiable, adding a note below it that Messaging opt-in consent won't be shared is acceptable. Once complete and live on the business website, resubmit the verification.\n\n#### Additional resources\n\n- [CTIA guidelines](https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-interoperability-sms-mms)\n- [Consent/Opt-In](https://www.twilio.com/en-us/legal/messaging-policy#:~:text=with%20Twilio%20policies.-,Consent%20/%20Opt%2Din,-What%20Is%20Proper) in [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n",
    "causes": "The Terms of Service or Privacy Policy on the business's website indicates that Opt-in is shared with third parties, affiliates, partners, etc. Any business with a terms of service or privacy policy that mentions sharing or selling consumer opt-in data is considered noncompliant. Consent can't be bought, sold, shared, transferred, or exchanged.",
    "solutions": "Revise your processes to not share or sell consumer data/opt-in information with anyone. Revise your Terms of Service and Privacy Policy to remove all third party opt-in sharing language. If you have a \"reasons we can share your personal information matrix\" in your privacy policy that isn't modifiable, adding a note below it that Messaging opt-in consent won't be shared is acceptable. Once complete and live on the business website, resubmit the verification.",
    "description": "The verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30840,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Age gate required for age-restricted content",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour business or messaging content relates to age-restricted products or services, but:\n\n- No age verification process was included in your opt-in flow\n- The age verification method is insufficient (e.g., simply asking \"Are you 18+?\")\n- Age verification is mentioned but not demonstrated in your submission\n\n### Possible solutions\n\n- Implement a robust age gate that verifies users meet the required age (21+ for alcohol, 18+ for other restricted items)\n- Use acceptable age verification methods such as:\n- Requiring users to enter their full date of birth (MM/DD/YYYY)\n- Using a third-party age verification service\n- Provide evidence of your age verification process in your submission\n- Ensure age verification occurs before messaging opt-in for age-restricted content\n",
    "causes": "Your business or messaging content relates to age-restricted products or services, but: - No age verification process was included in your opt-in flow\n- The age verification method is insufficient (e.g., simply asking \"Are you 18+?\")\n- Age verification is mentioned but not demonstrated in your submission",
    "solutions": "* Implement a robust age gate that verifies users meet the required age (21+ for alcohol, 18+ for other restricted items)\n* Use acceptable age verification methods such as:\n* Requiring users to enter their full date of birth (MM/DD/YYYY)\n* Using a third-party age verification service\n* Provide evidence of your age verification process in your submission\n* Ensure age verification occurs before messaging opt-in for age-restricted content",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30841,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in not sufficient: Language Unclear",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your verification submission because the opt-in language doesn't clearly show that recipients are consenting to receive text messages. Messaging traffic on the phone number remains blocked until the number is verified. During review, Twilio evaluates the business, use case, sample content, web presence, opt-in or consent flow, and related terms or privacy policy.\n\n### Possible causes\n\n- The opt-in language doesn't clearly ask the user to consent to messaging.\n- The opt-in flow doesn't explicitly mention SMS or text messaging.\n- The consent language is buried in your terms of service or privacy policy instead of appearing as part of the opt-in flow.\n- The language doesn't make clear what messages the user is agreeing to receive.\n\n### Possible solutions\n\n- Rewrite the opt-in language so it explicitly asks users to agree to receive SMS or text messages from your business.\n- Keep messaging consent separate from acceptance of your privacy policy or terms of service.\n- State what messages the user will receive so the consent is specific and easy to understand.\n- Update your verification submission with publicly hosted images or URLs that show the full opt-in workflow and the text shown to the user.\n- After you correct the opt-in flow, resubmit the verification request if your rejected submission is eligible for editing and resubmission.\n",
    "causes": "* The opt-in language doesn't clearly ask the user to consent to messaging.\n* The opt-in flow doesn't explicitly mention SMS or text messaging.\n* The consent language is buried in your terms of service or privacy policy instead of appearing as part of the opt-in flow.\n* The language doesn't make clear what messages the user is agreeing to receive.",
    "solutions": "* Rewrite the opt-in language so it explicitly asks users to agree to receive SMS or text messages from your business.\n* Keep messaging consent separate from acceptance of your privacy policy or terms of service.\n* State what messages the user will receive so the consent is specific and easy to understand.\n* Update your verification submission with publicly hosted images or URLs that show the full opt-in workflow and the text shown to the user.\n* After you correct the opt-in flow, resubmit the verification request if your rejected submission is eligible for editing and resubmission.",
    "description": "Twilio rejected your verification submission because the opt-in language doesn't clearly show that recipients are consenting to receive text messages. Messaging traffic on the phone number remains blocked until the number is verified. During review, Twilio evaluates the business, use case, sample content, web presence, opt-in or consent flow, and related terms or privacy policy.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30842,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in not provided",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nProof of opt-in for consumer to provide consent wasn't provided. Every end business must have consent from each recipient they send a message to. It's insufficient to select an opt-in method without description or providing evidence.\n\nYou may have submitted a URL for the opt-in workflow, but it didn't demonstrate how the consumer opts-in to messaging. The URL can contain a link to the web form where the consumer opts-in, a hosted image file with a screenshot of how the consumer opts-in, or a link to a document that tells the story of the opt-in (such as a verbal opt-in script).\n\nAny URL submitted must be reachable, resolvable and of access to the public.\n\nOpt-in refers to the process of getting a consumer's permission to send them text messages. A2P message Senders should:\n\n- Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages; and\n- Ensure that Consumers have the ability to revoke consent.\n\nNote: Any business with a terms of service or privacy policy that mentions sharing or selling consumer data/opt-in information is considered noncompliant.\n\n### Possible solutions\n\nResubmit the verification with a link that tells the story of your opt-in workflow.\n\n#### Additional resources\n\n- [CTIA guidelines](https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-interoperability-sms-mms)\n- [Consent/Opt-In](https://www.twilio.com/en-us/legal/messaging-policy#:~:text=with%20Twilio%20policies.-,Consent%20/%20Opt%2Din,-What%20Is%20Proper) in [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n",
    "causes": "Proof of opt-in for consumer to provide consent wasn't provided. Every end business must have consent from each recipient they send a message to. It's insufficient to select an opt-in method without description or providing evidence. You may have submitted a URL for the opt-in workflow, but it didn't demonstrate how the consumer opts-in to messaging. The URL can contain a link to the web form where the consumer opts-in, a hosted image file with a screenshot of how the consumer opts-in, or a link to a document that tells the story of the opt-in (such as a verbal opt-in script). Any URL submitted must be reachable, resolvable and of access to the public. Opt-in refers to the process of getting a consumer's permission to send them text messages. A2P message Senders should: - Obtain a Consumer's consent to receive messages generally;\n- Obtain a Consumer's express written consent to specifically receive marketing messages; and\n- Ensure that Consumers have the ability to revoke consent. Note: Any business with a terms of service or privacy policy that mentions sharing or selling consumer data/opt-in information is considered noncompliant.",
    "solutions": "Resubmit the verification with a link that tells the story of your opt-in workflow.",
    "description": "The verification submission has been reviewed and it was rejected. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30843,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Valid opt-in required for all submissions",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour submission relies on an organizational or government exemption for messaging consent, but:\n\n- Verification requires explicit opt-in evidence regardless of exemption status\n- No opt-in process was provided despite claiming exemption\n- The exemption claimed doesn't apply to messaging requirements\n\n### Possible solutions\n\n- Explicit consumer consent (opt-in) is required for all verifications, without exception\n- Implement a compliant opt-in process that meets TCPA and carrier requirements\n- Provide evidence of this opt-in process in your submission\n- Do not rely on organizational or government exemptions for verification\n",
    "causes": "Your submission relies on an organizational or government exemption for messaging consent, but: - Verification requires explicit opt-in evidence regardless of exemption status\n- No opt-in process was provided despite claiming exemption\n- The exemption claimed doesn't apply to messaging requirements",
    "solutions": "* Explicit consumer consent (opt-in) is required for all verifications, without exception\n* Implement a compliant opt-in process that meets TCPA and carrier requirements\n* Provide evidence of this opt-in process in your submission\n* Do not rely on organizational or government exemptions for verification",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30844,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Double opt-in required for this use case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour messaging use case requires a double opt-in process, but:\n\n- Only a single opt-in was provided\n- The double opt-in process wasn't documented\n- The confirmation step was missing or incomplete\n\nDouble opt-in is required for certain use cases including shopping cart reminders.\n\n### Possible solutions\n\n- Implement a double opt-in process for your specific use case\n- Ensure the process includes:\n  1. Initial opt-in (web form, keyword, etc.)\n  2. Confirmation message asking user to confirm subscription\n  3. User's affirmative response to complete enrollment\n- Document the complete double opt-in flow in your submission.\n- Provide example messages for both steps of the double opt-in process.\n",
    "causes": "Your messaging use case requires a double opt-in process, but: - Only a single opt-in was provided\n- The double opt-in process wasn't documented\n- The confirmation step was missing or incomplete Double opt-in is required for certain use cases including shopping cart reminders.",
    "solutions": "* Implement a double opt-in process for your specific use case\n* Ensure the process includes:\n  1. Initial opt-in (web form, keyword, etc.)\n  2. Confirmation message asking user to confirm subscription\n  3. User's affirmative response to complete enrollment\n* Document the complete double opt-in flow in your submission.\n* Provide example messages for both steps of the double opt-in process.",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30845,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Shopping cart reminders must follow specific guidelines",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour submission indicates shopping cart reminder messages, but doesn't meet the specific requirements for this use case:\n\n- The opt-in terms don't explicitly mention shopping cart reminders\n- There is no double opt-in mechanism via text\n- The privacy policy doesn't disclose how abandoned cart data is captured\n- The terms and conditions don't reflect the shopping cart reminder policy\n\n### Possible solutions\n\n- Update your opt-in terms to explicitly state that the program includes shopping cart reminders\n- Implement a double opt-in mechanism via text that clearly informs users about cart reminders\n- Revise your privacy policy to disclose how abandoned cart data is captured (cookies, plugins, etc.)\n- Ensure terms and conditions reflect your shopping cart reminder policy\n- Limit reminders to one alert per unique abandoned cart within 48 hours\n- Confirm cart notifications don't complete transactions or collect payment via text\n",
    "causes": "Your submission indicates shopping cart reminder messages, but doesn't meet the specific requirements for this use case: - The opt-in terms don't explicitly mention shopping cart reminders\n- There is no double opt-in mechanism via text\n- The privacy policy doesn't disclose how abandoned cart data is captured\n- The terms and conditions don't reflect the shopping cart reminder policy",
    "solutions": "* Update your opt-in terms to explicitly state that the program includes shopping cart reminders\n* Implement a double opt-in mechanism via text that clearly informs users about cart reminders\n* Revise your privacy policy to disclose how abandoned cart data is captured (cookies, plugins, etc.)\n* Ensure terms and conditions reflect your shopping cart reminder policy\n* Limit reminders to one alert per unique abandoned cart within 48 hours\n* Confirm cart notifications don't complete transactions or collect payment via text",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30846,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Call-to-action missing required disclosures",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe call-to-action (CTA) in your opt-in process is missing required disclosures. These may include:\n\n- Brand/Program Name\n- Message frequency disclosure for recurring programs\n- Opt-in disclosure and pricing statement (e.g., \"Msg & Data rates may apply\")\n- Customer support and Opt-Out details\n- Inconsistency between the Number in the submission and the one in the Call-to-Action\n\n### Possible solutions\n\n- Update your Call-to-Action to include all required details:\n  - Your business or program name\n  - Message frequency disclosure (for recurring messages)\n  - Standard pricing statement (\"Msg & Data rates may apply\")\n  - Customer support information and opt-out instructions\n- Ensure consistency between the phone number in your submission and in your Call-to-Action\n- Include all disclosures in proximity to where consumers provide their phone number\n",
    "causes": "The call-to-action (CTA) in your opt-in process is missing required disclosures. These may include: - Brand/Program Name\n- Message frequency disclosure for recurring programs\n- Opt-in disclosure and pricing statement (e.g., \"Msg & Data rates may apply\")\n- Customer support and Opt-Out details\n- Inconsistency between the Number in the submission and the one in the Call-to-Action",
    "solutions": "* Update your Call-to-Action to include all required details:\n  * Your business or program name\n  * Message frequency disclosure (for recurring messages)\n  * Standard pricing statement (\"Msg & Data rates may apply\")\n  * Customer support information and opt-out instructions\n* Ensure consistency between the phone number in your submission and in your Call-to-Action\n* Include all disclosures in proximity to where consumers provide their phone number",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30847,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Privacy policy required for personal data collection",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because your business collects personal data and the submission didn't include an acceptable privacy policy. Messaging traffic on this phone number is blocked until the number is verified.\n\n### Possible causes\n\n- No privacy policy was included in your submission.\n- The privacy policy URL was invalid or inaccessible.\n- The privacy policy doesn't explain how personal data is collected, stored, used, or protected.\n- Required privacy disclosures are missing from the policy.\n\n### Possible solutions\n\n- Publish a privacy policy on your public website if your business collects personal data.\n- Make sure your privacy policy clearly explains how personal data is collected, stored, used, and protected.\n- Include information about your messaging practices in the privacy policy when it applies to your use case.\n- Provide a valid public `privacyPolicyUrl` in your verification submission.\n- Make sure the privacy policy URL loads without login requirements, IP restrictions, or other access controls.\n- If your rejected submission can be edited, correct the privacy policy information and resubmit the verification request in Console or through the verification API.\n",
    "causes": "* No privacy policy was included in your submission.\n* The privacy policy URL was invalid or inaccessible.\n* The privacy policy doesn't explain how personal data is collected, stored, used, or protected.\n* Required privacy disclosures are missing from the policy.",
    "solutions": "* Publish a privacy policy on your public website if your business collects personal data.\n* Make sure your privacy policy clearly explains how personal data is collected, stored, used, and protected.\n* Include information about your messaging practices in the privacy policy when it applies to your use case.\n* Provide a valid public `privacyPolicyUrl` in your verification submission.\n* Make sure the privacy policy URL loads without login requirements, IP restrictions, or other access controls.\n* If your rejected submission can be edited, correct the privacy policy information and resubmit the verification request in Console or through the verification API.",
    "description": "This error means your verification submission was rejected because your business collects personal data and the submission didn't include an acceptable privacy policy. Messaging traffic on this phone number is blocked until the number is verified.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30848,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Privacy policy mentions sharing opt-in data",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour privacy policy contains language indicating that personal data, including opt-in information, may be:\n\n- Shared with third parties\n- Sold to other organizations\n- Rented to marketing partners\n- Transferred to affiliates or other entities\n\n### Possible solutions\n\n- Update your privacy policy to include clear language prohibiting the sharing of opt-in data\n- Add specific language such as:\n  - \"Opt-in data and consent will not be shared with third parties.\"\n  - \"SMS collected information is not shared with third parties or associates.\"\n  - \"The above excludes text messaging originator opt-in data and consent; this information will not be shared with any third parties.\"\n- Ensure your policy explicitly protects messaging consent from being shared or transferred\n- Remove any language suggesting opt-in data may be shared\n",
    "causes": "Your privacy policy contains language indicating that personal data, including opt-in information, may be: - Shared with third parties\n- Sold to other organizations\n- Rented to marketing partners\n- Transferred to affiliates or other entities",
    "solutions": "* Update your privacy policy to include clear language prohibiting the sharing of opt-in data\n* Add specific language such as:\n  * \"Opt-in data and consent will not be shared with third parties.\"\n  * \"SMS collected information is not shared with third parties or associates.\"\n  * \"The above excludes text messaging originator opt-in data and consent; this information will not be shared with any third parties.\"\n* Ensure your policy explicitly protects messaging consent from being shared or transferred\n* Remove any language suggesting opt-in data may be shared",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30849,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Opt-in data cannot be shared with third parties",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour verification indicates that opt-in data may be shared, transferred, rented, or sold to third parties through:\n\n- Language in your opt-in terms about sharing data with non-affiliates or partners\n- Privacy policy or terms that mention transferring messaging consent\n- Business practices that involve sharing or selling consent data\n- Lack of explicit protection for messaging consent\n\n### Possible solutions\n\n- Remove all language that allows sharing opt-in data with third parties\n- Update your privacy policy and terms to include specific language prohibiting the sharing of consent:\n  - \"The above excludes text messaging originator opt-in data and consent; this information will not be shared with any third parties.\"\n- Ensure your business practices maintain consent as a direct 1:1 agreement between consumer and message sender\n- Make it clear that opt-in can't be transferred or sold\n",
    "causes": "Your verification indicates that opt-in data may be shared, transferred, rented, or sold to third parties through: - Language in your opt-in terms about sharing data with non-affiliates or partners\n- Privacy policy or terms that mention transferring messaging consent\n- Business practices that involve sharing or selling consent data\n- Lack of explicit protection for messaging consent",
    "solutions": "* Remove all language that allows sharing opt-in data with third parties\n* Update your privacy policy and terms to include specific language prohibiting the sharing of consent:\n  * \"The above excludes text messaging originator opt-in data and consent; this information will not be shared with any third parties.\"\n* Ensure your business practices maintain consent as a direct 1:1 agreement between consumer and message sender\n* Make it clear that opt-in can't be transferred or sold",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30850,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - SMS terms must be accessible and compliant",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour SMS Terms and Conditions:\n\n- URL isn't accessible or returns an error\n- Content is missing required program details\n- Document is incomplete or lacks messaging-specific terms\n- SMS program details aren't clearly outlined\n\n### Possible solutions\n\n- Provide an accessible Terms and Conditions URL\n- Ensure your Terms include all required messaging program details:\n  - Program name\n  - Product description\n  - Customer care contact information\n  - Opt-out instructions\n  - \"Message and data rates may apply\" pricing disclosure\n  - Message frequency disclosure (for recurring programs)\n- Make your Terms publicly accessible without login requirements\n- Create a specific section for SMS/messaging if not already present\n",
    "causes": "Your SMS Terms and Conditions: - URL isn't accessible or returns an error\n- Content is missing required program details\n- Document is incomplete or lacks messaging-specific terms\n- SMS program details aren't clearly outlined",
    "solutions": "* Provide an accessible Terms and Conditions URL\n* Ensure your Terms include all required messaging program details:\n  * Program name\n  * Product description\n  * Customer care contact information\n  * Opt-out instructions\n  * \"Message and data rates may apply\" pricing disclosure\n  * Message frequency disclosure (for recurring programs)\n* Make your Terms publicly accessible without login requirements\n* Create a specific section for SMS/messaging if not already present",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30851,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Spam",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was reviewed and rejected because the business or message content appears to be associated with spam. The verification review considers the sending business, the stated use case, sample messages, web presence, opt-in and consent flow, and related terms and privacy policies.\n\n### Possible causes\n\n- The business appears to be associated with a known spam or fraudulent campaign.\n- The submitted use case, sample messages, or message content appear to match spam-like or otherwise prohibited messaging activity.\n\n### Possible solutions\n\n- Review your business type, use case, sample messages, and opt-in flow against the forbidden message categories for SMS and MMS in the United States and Canada. If your traffic falls into a disallowed category, do not resubmit the same use case for verification.\n- If you believe the rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business, your opt-in flow, and the messages you plan to send.\n- If the rejected submission is eligible for correction, update the verification details in Console or through the verification API and resubmit it as soon as possible. Resubmissions made within seven days receive priority review.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The business appears to be associated with a known spam or fraudulent campaign.\n* The submitted use case, sample messages, or message content appear to match spam-like or otherwise prohibited messaging activity.",
    "solutions": "* Review your business type, use case, sample messages, and opt-in flow against the forbidden message categories for SMS and MMS in the United States and Canada. If your traffic falls into a disallowed category, do not resubmit the same use case for verification.\n* If you believe the rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business, your opt-in flow, and the messages you plan to send.\n* If the rejected submission is eligible for correction, update the verification details in Console or through the verification API and resubmit it as soon as possible. Resubmissions made within seven days receive priority review.",
    "description": "Your verification submission was reviewed and rejected because the business or message content appears to be associated with spam. The verification review considers the sending business, the stated use case, sample messages, web presence, opt-in and consent flow, and related terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30852,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Fraud",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was rejected because the business or messaging program was associated with fraud or deceptive messaging. Messaging traffic on the phone number is blocked until the number is successfully verified for messaging to the United States and Canada.\n\n### Possible causes\n\n- The business, messaging program, or sample content in the submission was identified as associated with fraud, scams, or deceptive messaging.\n- The review raised compliance concerns after evaluating your business, stated use case, sample messages, web presence, opt-in or consent flow, and associated terms or privacy information.\n- The submission included a use case or message content that is not allowed for messaging under Twilio's messaging compliance requirements.\n- The details in the verification request didn't accurately represent how the phone number will be used.\n\n### Possible solutions\n\n- If you believe this rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business and messaging use case.\n- Review the rejected verification in Console under the number's `Regulatory Information` tab so you can confirm the rejection details and whether the request can be corrected and resubmitted.\n- Verify that your submission accurately reflects your business and messaging program, including fields such as `BusinessWebsite`, `UseCaseSummary`, `ProductionMessageSample`, `OptInType`, and any supporting opt-in evidence or additional information.\n- Remove any content, workflows, or sample messages that could appear deceptive, misleading, or inconsistent with your stated use case before you resubmit, if resubmission is allowed.\n- Make sure your messaging program complies with the Messaging Policy and the prohibited use case guidance for messaging.\n",
    "causes": "* The business, messaging program, or sample content in the submission was identified as associated with fraud, scams, or deceptive messaging.\n* The review raised compliance concerns after evaluating your business, stated use case, sample messages, web presence, opt-in or consent flow, and associated terms or privacy information.\n* The submission included a use case or message content that is not allowed for messaging under Twilio's messaging compliance requirements.\n* The details in the verification request didn't accurately represent how the phone number will be used.",
    "solutions": "* If you believe this rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business and messaging use case.\n* Review the rejected verification in Console under the number's `Regulatory Information` tab so you can confirm the rejection details and whether the request can be corrected and resubmitted.\n* Verify that your submission accurately reflects your business and messaging program, including fields such as `BusinessWebsite`, `UseCaseSummary`, `ProductionMessageSample`, `OptInType`, and any supporting opt-in evidence or additional information.\n* Remove any content, workflows, or sample messages that could appear deceptive, misleading, or inconsistent with your stated use case before you resubmit, if resubmission is allowed.\n* Make sure your messaging program complies with the Messaging Policy and the prohibited use case guidance for messaging.",
    "description": "Your verification submission was rejected because the business or messaging program was associated with fraud or deceptive messaging. Messaging traffic on the phone number is blocked until the number is successfully verified for messaging to the United States and Canada.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30853,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed - Phishing",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was rejected because the business or message content was associated with a known phishing campaign. Messaging traffic on the phone number is blocked, and phone numbers must be verified before they can send messages to the United States and Canada.\n\n### Possible causes\n\n- The business or message content in the submission was identified as associated with a known phishing campaign.\n- The review raised compliance concerns after evaluating the sending business, stated use case, sample content, web presence, opt-in or consent flow, and associated terms and privacy information.\n\n### Possible solutions\n\n- If you believe this rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n- Review the rejected verification in Console under the number's Regulatory Information tab so you can confirm the rejection details before you take next steps.\n- Verify that the information in your verification record accurately represents your business and use case, including fields such as `BusinessWebsite`, `UseCaseSummary`, `ProductionMessageSample`, `OptInType`, and any supporting opt-in evidence or additional information.\n",
    "causes": "* The business or message content in the submission was identified as associated with a known phishing campaign.\n* The review raised compliance concerns after evaluating the sending business, stated use case, sample content, web presence, opt-in or consent flow, and associated terms and privacy information.",
    "solutions": "* If you believe this rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n* Review the rejected verification in Console under the number's Regulatory Information tab so you can confirm the rejection details before you take next steps.\n* Verify that the information in your verification record accurately represents your business and use case, including fields such as `BusinessWebsite`, `UseCaseSummary`, `ProductionMessageSample`, `OptInType`, and any supporting opt-in evidence or additional information.",
    "description": "Your verification submission was rejected because the business or message content was associated with a known phishing campaign. Messaging traffic on the phone number is blocked, and phone numbers must be verified before they can send messages to the United States and Canada.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30854,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - High-risk domain reputation",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nThe website domain you provided has been flagged for a high-risk reputation, indicating potential association with:\n\n- Suspicious or questionable activities\n- Previously identified fraudulent behavior\n- Security concerns or compromised status\n- Misleading or deceptive content\n\n### Possible solutions\n\n- This content is ineligible for resubmission with the current domain\n- If you believe this is an error, contact Twilio Support with evidence of your domain's legitimacy\n- Future submissions must use a domain with a positive reputation and no security concerns\n- Ensure your website meets security best practices and contains accurate business information\n",
    "causes": "The website domain you provided has been flagged for a high-risk reputation, indicating potential association with: - Suspicious or questionable activities\n- Previously identified fraudulent behavior\n- Security concerns or compromised status\n- Misleading or deceptive content",
    "solutions": "* This content is ineligible for resubmission with the current domain\n* If you believe this is an error, contact Twilio Support with evidence of your domain's legitimacy\n* Future submissions must use a domain with a positive reputation and no security concerns\n* Ensure your website meets security best practices and contains accurate business information",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30855,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Potential fraud risk",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour verification submission has been flagged for potential fraud risk based on:\n\n- Risk assessment of business information provided\n- Suspicious patterns or inconsistencies in submission details\n- Association with previously identified fraudulent activity\n\n### Possible solutions\n\n- This content is ineligible for resubmission\n- Businesses associated with fraudulent activity aren't permitted on the network\n- Any future submissions must comply with fraud prevention requirements and pass security checks\n- If you believe this is an error, contact Twilio Support with documentation verifying your business legitimacy\n",
    "causes": "Your verification submission has been flagged for potential fraud risk based on: - Risk assessment of business information provided\n- Suspicious patterns or inconsistencies in submission details\n- Association with previously identified fraudulent activity",
    "solutions": "* This content is ineligible for resubmission\n* Businesses associated with fraudulent activity aren't permitted on the network\n* Any future submissions must comply with fraud prevention requirements and pass security checks\n* If you believe this is an error, contact Twilio Support with documentation verifying your business legitimacy",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30856,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - High Risk: Deceptive Marketing",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification request was rejected because the submission was classified as High Risk: Deceptive Marketing. The verification review considers the sending business, stated use case, sample message content, web presence, opt-in or consent flow, and associated privacy policy or terms information.\n\n### Possible causes\n\n- The submission indicates that the business or messaging program is associated with a forbidden messaging category classified as High Risk: Deceptive Marketing.\n- The stated use case, sample messages, website content, or opt-in materials appear misleading, deceptive, or inconsistent with the business being verified.\n- The verification review raised compliance concerns after evaluating the business, use case, sample content, web presence, consent collection, and related privacy or terms information.\n\n### Possible solutions\n\n- Review the rejection details for the phone number in the Regulatory Information tab in Console and confirm whether the verification is eligible for resubmission.\n- If you believe the rejection is incorrect, contact Support and provide additional information that clearly explains your business, messaging use case, and consent flow.\n- Verify that the submission accurately reflects your end business and use case, including `businessWebsite`, `useCaseSummary`, `productionMessageSample`, `optInType`, and any publicly hosted opt-in evidence. Include privacy policy and terms links when they apply to your program.\n- If the messaging program includes deceptive or otherwise forbidden marketing, stop using the phone number for that use case. Content and Messaging Policy rejections aren't eligible for resubmission.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The submission indicates that the business or messaging program is associated with a forbidden messaging category classified as High Risk: Deceptive Marketing.\n* The stated use case, sample messages, website content, or opt-in materials appear misleading, deceptive, or inconsistent with the business being verified.\n* The verification review raised compliance concerns after evaluating the business, use case, sample content, web presence, consent collection, and related privacy or terms information.",
    "solutions": "* Review the rejection details for the phone number in the Regulatory Information tab in Console and confirm whether the verification is eligible for resubmission.\n* If you believe the rejection is incorrect, contact Support and provide additional information that clearly explains your business, messaging use case, and consent flow.\n* Verify that the submission accurately reflects your end business and use case, including `businessWebsite`, `useCaseSummary`, `productionMessageSample`, `optInType`, and any publicly hosted opt-in evidence. Include privacy policy and terms links when they apply to your program.\n* If the messaging program includes deceptive or otherwise forbidden marketing, stop using the phone number for that use case. Content and Messaging Policy rejections aren't eligible for resubmission.",
    "description": "This error means your verification request was rejected because the submission was classified as High Risk: Deceptive Marketing. The verification review considers the sending business, stated use case, sample message content, web presence, opt-in or consent flow, and associated privacy policy or terms information.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30857,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - URL issues in sample message",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification was rejected because the URL in your sample message doesn't meet messaging requirements. Phone numbers must be verified before they can send messages to the United States and Canada.\n\n### Possible causes\n\n- Your sample message includes a shared public URL shortener instead of a branded domain your business owns.\n- Your sample message includes a non-secure URL.\n- The URL in the message, or a redirect from that URL, conceals or obscures your business identity.\n- The domain in the sample message doesn't align with the sender identified in the message.\n- The website linked in the message doesn't clearly identify the business owner or doesn't include contact information such as a mailing address.\n\n### Possible solutions\n\n- Replace the URL in your sample message with a branded URL on a domain your business controls.\n- Use a secure HTTPS URL in the sample message.\n- Remove public URL shorteners from your sample message and from any redirects behind the submitted URL.\n- Make sure the sender name in the message, the domain in the URL, and the landing page all identify the same business.\n- Update the landing page so it clearly identifies your business and includes contact information.\n- If you need shortened links, use Twilio Link Shortening with your own branded domain.\n- Edit the rejected verification and resubmit it with an updated sample message.\n\n#### Additional resources\n\n- [Link Shortening](/docs/messaging/features/link-shortening)\n",
    "causes": "* Your sample message includes a shared public URL shortener instead of a branded domain your business owns.\n* Your sample message includes a non-secure URL.\n* The URL in the message, or a redirect from that URL, conceals or obscures your business identity.\n* The domain in the sample message doesn't align with the sender identified in the message.\n* The website linked in the message doesn't clearly identify the business owner or doesn't include contact information such as a mailing address.",
    "solutions": "* Replace the URL in your sample message with a branded URL on a domain your business controls.\n* Use a secure HTTPS URL in the sample message.\n* Remove public URL shorteners from your sample message and from any redirects behind the submitted URL.\n* Make sure the sender name in the message, the domain in the URL, and the landing page all identify the same business.\n* Update the landing page so it clearly identifies your business and includes contact information.\n* If you need shortened links, use Twilio Link Shortening with your own branded domain.\n* Edit the rejected verification and resubmit it with an updated sample message.",
    "description": "Your verification was rejected because the URL in your sample message doesn't meet messaging requirements. Phone numbers must be verified before they can send messages to the United States and Canada.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30858,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - High Risk - Non-secured URL in sample message",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because the sample message includes a URL that doesn't use `https://`. Messaging traffic to the United States and Canada is blocked until the number is verified.\n\n### Possible causes\n\n- Your `productionMessageSample` includes a URL that uses `http://` instead of `https://`.\n- Your `productionMessageSample` includes a URL without the required `https://` prefix.\n\n### Possible solutions\n\n- Correct the URL in your sample message to use `https://` and resubmit the verification.\n- Ensure every URL you plan to send in message content is secured with `https://`.\n- If your rejected verification request can be edited, update the existing request and resubmit it. If it isn't eligible for resubmission, correct the sample message and submit a new verification request.\n",
    "causes": "* Your `productionMessageSample` includes a URL that uses `http://` instead of `https://`.\n* Your `productionMessageSample` includes a URL without the required `https://` prefix.",
    "solutions": "* Correct the URL in your sample message to use `https://` and resubmit the verification.\n* Ensure every URL you plan to send in message content is secured with `https://`.\n* If your rejected verification request can be edited, update the existing request and resubmit it. If it isn't eligible for resubmission, correct the sample message and submit a new verification request.",
    "description": "This error means your verification submission was rejected because the sample message includes a URL that doesn't use `https://`. Messaging traffic to the United States and Canada is blocked until the number is verified.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30859,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - High-risk domain issues",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nDomain provided was flagged for high-risk issues with the website URL provided, such as:\n\n- Recently registered domain with minimal history\n- Domain associated with suspicious activity\n- Security vulnerabilities or improper configuration\n- Misalignment between domain ownership and business details\n\n### Possible solutions\n\n- This content is ineligible for resubmission with the current domain\n- URLs that fail domain inspection are considered high risk and can't be approved\n- For future submissions, ensure your domain:\n  - Has been established for a reasonable period\n  - Is properly secured and configured\n  - Has clear ownership aligned with business details\n  - Maintains a positive reputation\n",
    "causes": "Domain provided was flagged for high-risk issues with the website URL provided, such as: - Recently registered domain with minimal history\n- Domain associated with suspicious activity\n- Security vulnerabilities or improper configuration\n- Misalignment between domain ownership and business details",
    "solutions": "* This content is ineligible for resubmission with the current domain\n* URLs that fail domain inspection are considered high risk and can't be approved\n* For future submissions, ensure your domain:\n  * Has been established for a reasonable period\n  * Is properly secured and configured\n  * Has clear ownership aligned with business details\n  * Maintains a positive reputation",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30860,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Cannabis/CBD",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification request was rejected because the business or messaging use case is associated with cannabis or CBD. Cannabis and CBD businesses are forbidden for SMS and MMS on Twilio in the United States and Canada, regardless of message content.\n\n### Possible causes\n\n- The verification submission identified the business as a cannabis or CBD business.\n- The website, use case description, sample messages, or opt-in flow indicated marketing, sales, account activity, or other messaging for cannabis or CBD products.\n- The business was classified under a forbidden message category for SMS and MMS in the United States and Canada.\n- The submission included a use case that isn't permitted even if the messages don't explicitly mention cannabis or CBD.\n\n### Possible solutions\n\n- If your business or use case is cannabis or CBD related, do not resubmit the same SMS or MMS use case. This category isn't eligible for approval.\n- If the rejection is incorrect, review the business website, message samples, opt-in description, and use case details. Correct any information that may have caused the submission to be misclassified, then resubmit if the request is eligible for resubmission.\n- If you need to clarify that your business doesn't fall into a forbidden category, provide clear additional information that explains your business model and messaging use case.\n- If you can't use SMS or MMS for this use case, move the workflow to another allowed channel that fits your compliance requirements.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The verification submission identified the business as a cannabis or CBD business.\n* The website, use case description, sample messages, or opt-in flow indicated marketing, sales, account activity, or other messaging for cannabis or CBD products.\n* The business was classified under a forbidden message category for SMS and MMS in the United States and Canada.\n* The submission included a use case that isn't permitted even if the messages don't explicitly mention cannabis or CBD.",
    "solutions": "* If your business or use case is cannabis or CBD related, do not resubmit the same SMS or MMS use case. This category isn't eligible for approval.\n* If the rejection is incorrect, review the business website, message samples, opt-in description, and use case details. Correct any information that may have caused the submission to be misclassified, then resubmit if the request is eligible for resubmission.\n* If you need to clarify that your business doesn't fall into a forbidden category, provide clear additional information that explains your business model and messaging use case.\n* If you can't use SMS or MMS for this use case, move the workflow to another allowed channel that fits your compliance requirements.",
    "description": "This error means your verification request was rejected because the business or messaging use case is associated with cannabis or CBD. Cannabis and CBD businesses are forbidden for SMS and MMS on Twilio in the United States and Canada, regardless of message content.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30861,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Illegal substances/articles",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because the business, use case, website, or sample messages indicate a forbidden messaging category related to illegal substances or articles.\n\nFor messaging in the US and Canada, Twilio reviews the business sending the messages, the stated use case, sample content, website, opt-in flow, and linked privacy policy and terms. Businesses associated with illegal substances or articles can't use Twilio SMS or MMS for these routes.\n\n### Possible causes\n\n- The business is associated with cannabis, CBD, kratom, drug paraphernalia, vape or e-cig products, or fireworks.\n- The website, use case summary, or sample messages suggest that the business promotes, sells, supports, or facilitates a forbidden category.\n- The submission was filed as a permitted use case such as notifications or 2FA, but the underlying business itself is in a prohibited category.\n- The submission included incomplete or misleading business details that caused the verification review to classify the use case as a forbidden category.\n- The business is in a category that Twilio doesn't allow on SMS or MMS in the US and Canada, even if the product or service is legal in some jurisdictions.\n\n### Possible solutions\n\n- If your business or messaging use case is actually related to illegal substances or articles, do not resubmit the verification for SMS or MMS. Twilio doesn't allow these use cases on US and Canada SMS and MMS routes.\n- If the rejection was caused by incorrect or unclear information, review your website URL, use case summary, sample messages, and supporting details. Make sure they clearly describe a permitted business and messaging use case.\n- If you believe the submission was classified incorrectly, contact Twilio Support and provide additional information that explains your business, the messages you send, and why the use case doesn't fall into a forbidden category.\n- Resubmit only if your business isn't in a forbidden category and you can correct the information that led to the rejection.\n- If you need another channel for an otherwise allowed use case, consider a different Twilio product where appropriate, such as SendGrid Email API or Programmable Voice.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The business is associated with cannabis, CBD, kratom, drug paraphernalia, vape or e-cig products, or fireworks.\n* The website, use case summary, or sample messages suggest that the business promotes, sells, supports, or facilitates a forbidden category.\n* The submission was filed as a permitted use case such as notifications or 2FA, but the underlying business itself is in a prohibited category.\n* The submission included incomplete or misleading business details that caused the verification review to classify the use case as a forbidden category.\n* The business is in a category that Twilio doesn't allow on SMS or MMS in the US and Canada, even if the product or service is legal in some jurisdictions.",
    "solutions": "* If your business or messaging use case is actually related to illegal substances or articles, do not resubmit the verification for SMS or MMS. Twilio doesn't allow these use cases on US and Canada SMS and MMS routes.\n* If the rejection was caused by incorrect or unclear information, review your website URL, use case summary, sample messages, and supporting details. Make sure they clearly describe a permitted business and messaging use case.\n* If you believe the submission was classified incorrectly, contact Twilio Support and provide additional information that explains your business, the messages you send, and why the use case doesn't fall into a forbidden category.\n* Resubmit only if your business isn't in a forbidden category and you can correct the information that led to the rejection.\n* If you need another channel for an otherwise allowed use case, consider a different Twilio product where appropriate, such as SendGrid Email API or Programmable Voice.",
    "description": "This error means your verification submission was rejected because the business, use case, website, or sample messages indicate a forbidden messaging category related to illegal substances or articles. For messaging in the US and Canada, Twilio reviews the business sending the messages, the stated use case, sample content, website, opt-in flow, and linked privacy policy and terms. Businesses associated with illegal substances or articles can't use Twilio SMS or MMS for these routes.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30862,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Loan Marketing",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because the business, sample messages, website, or consent materials indicate a disallowed loan marketing use case. The verification review considers the business sending the messages, the stated use case, sample content, web presence, opt-in flow, and related privacy or terms pages.\n\n### Possible causes\n\n- Your submission describes new loan solicitation or other high-risk financial services, including payday loans, short-term high-interest loans, third-party loans, or student loans. These categories are disallowed for SMS and MMS in the United States and Canada.\n- Your sample messages, website, or use case show promotional loan marketing instead of first-party, non-promotional loan servicing traffic. First-party loan content is allowed only when it isn't promotional messaging.\n- Your privacy policy or terms indicate that consumer data or opt-in information is shared or sold. That makes the submission noncompliant.\n\n### Possible solutions\n\n- If your messages are actually first-party and non-promotional, update the submission so your business description, sample messages, website, and opt-in details clearly show that approved use case. Resubmit only if the rejection is eligible for resubmission. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- If you believe the rejection is incorrect, contact Support and provide additional information that explains your use case and shows that the business sending the messages collects consent directly from the end user.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your submission describes new loan solicitation or other high-risk financial services, including payday loans, short-term high-interest loans, third-party loans, or student loans. These categories are disallowed for SMS and MMS in the United States and Canada.\n* Your sample messages, website, or use case show promotional loan marketing instead of first-party, non-promotional loan servicing traffic. First-party loan content is allowed only when it isn't promotional messaging.\n* Your privacy policy or terms indicate that consumer data or opt-in information is shared or sold. That makes the submission noncompliant.",
    "solutions": "* If your messages are actually first-party and non-promotional, update the submission so your business description, sample messages, website, and opt-in details clearly show that approved use case. Resubmit only if the rejection is eligible for resubmission. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* If you believe the rejection is incorrect, contact Support and provide additional information that explains your use case and shows that the business sending the messages collects consent directly from the end user.",
    "description": "This error means your verification submission was rejected because the business, sample messages, website, or consent materials indicate a disallowed loan marketing use case. The verification review considers the business sending the messages, the stated use case, sample content, web presence, opt-in flow, and related privacy or terms pages.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30863,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Third Party Debt Collection",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your verification request because the submitted business or messaging program falls into a forbidden messaging category for SMS and MMS in the United States and Canada. Twilio reviews the business sending the messages, the use case, sample messages, web presence, opt-in or consent flow, and related terms and privacy policy during verification.\n\n### Possible causes\n\n- Your submission states or implies that your business collects debt on behalf of another company, provider, or creditor.\n- Your website, terms, privacy policy, or sample messages indicate third-party debt collection activity.\n- Your use case includes debt consolidation, debt reduction, debt relief, or credit repair. These use cases are prohibited regardless of consent.\n- Your submission doesn't clearly show that the sender is the party owed the debt and that consent was collected directly from the end-user.\n\n### Possible solutions\n\n- Don't use SMS or MMS for third-party debt collection or for prohibited debt relief programs.\n- If you send first-party billing or account messages, update your verification details so they clearly identify the business that is owed the debt, explain how you collect consent directly from recipients, and match the sample messages and website content you submitted.\n- Review your website, terms, privacy policy, and message samples to make sure they don't suggest third-party collection, affiliate collection, or another prohibited debt-related use case.\n- If the rejection doesn't reflect your actual use case, contact Support and provide clear `additionalInformation` that explains your business model, consent flow, and message purpose. You can also review `rejectionReason`, `errorCode`, and `editAllowed` in the verification API response.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-Message-Categories-in-the-US-and-Canada-Short-Code--and-Long-Code)\n",
    "causes": "* Your submission states or implies that your business collects debt on behalf of another company, provider, or creditor.\n* Your website, terms, privacy policy, or sample messages indicate third-party debt collection activity.\n* Your use case includes debt consolidation, debt reduction, debt relief, or credit repair. These use cases are prohibited regardless of consent.\n* Your submission doesn't clearly show that the sender is the party owed the debt and that consent was collected directly from the end-user.",
    "solutions": "* Don't use SMS or MMS for third-party debt collection or for prohibited debt relief programs.\n* If you send first-party billing or account messages, update your verification details so they clearly identify the business that is owed the debt, explain how you collect consent directly from recipients, and match the sample messages and website content you submitted.\n* Review your website, terms, privacy policy, and message samples to make sure they don't suggest third-party collection, affiliate collection, or another prohibited debt-related use case.\n* If the rejection doesn't reflect your actual use case, contact Support and provide clear `additionalInformation` that explains your business model, consent flow, and message purpose. You can also review `rejectionReason`, `errorCode`, and `editAllowed` in the verification API response.",
    "description": "Twilio rejected your verification request because the submitted business or messaging program falls into a forbidden messaging category for SMS and MMS in the United States and Canada. Twilio reviews the business sending the messages, the use case, sample messages, web presence, opt-in or consent flow, and related terms and privacy policy during verification.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30864,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Gambling",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your verification request because the submitted business or messaging program was identified as a gambling use case. Gambling-related traffic is prohibited for SMS and MMS in the United States and Canada.\n\n### Possible causes\n\n- Your submission described a gambling business or a gambling-related messaging program. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- Your website, brand, or sample messages referenced a forbidden gambling category such as casino apps, gambling websites, sweepstakes, 50/50 raffles, or betting and sports picks. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n### Possible solutions\n\n- Do not submit or resubmit this phone number for SMS or MMS in the United States or Canada if your actual business or use case is gambling-related. Gambling traffic is prohibited on Short Code and Long Code routes in the United States and Canada. Rejections for content or Messaging Policy violations can't be resubmitted. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- If the rejection was incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n- Review your business description, website content, sample messages, opt-in flow, and policy links to make sure they accurately represent a compliant non-gambling use case before you submit a new verification request for an eligible program. This is an inference based on the information Twilio reviews during verification and the verification onboarding flow.\n- If you need to reach recipients for a use case that can't be approved for SMS or MMS, use a different channel only when the use case and channel meet the applicable policy requirements. For some forbidden SMS use cases, SendGrid Email API or Programmable Voice may be options. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your submission described a gambling business or a gambling-related messaging program. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* Your website, brand, or sample messages referenced a forbidden gambling category such as casino apps, gambling websites, sweepstakes, 50/50 raffles, or betting and sports picks. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "solutions": "* Do not submit or resubmit this phone number for SMS or MMS in the United States or Canada if your actual business or use case is gambling-related. Gambling traffic is prohibited on Short Code and Long Code routes in the United States and Canada. Rejections for content or Messaging Policy violations can't be resubmitted. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* If the rejection was incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n* Review your business description, website content, sample messages, opt-in flow, and policy links to make sure they accurately represent a compliant non-gambling use case before you submit a new verification request for an eligible program. This is an inference based on the information Twilio reviews during verification and the verification onboarding flow.\n* If you need to reach recipients for a use case that can't be approved for SMS or MMS, use a different channel only when the use case and channel meet the applicable policy requirements. For some forbidden SMS use cases, SendGrid Email API or Programmable Voice may be options. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "description": "Twilio rejected your verification request because the submitted business or messaging program was identified as a gambling use case. Gambling-related traffic is prohibited for SMS and MMS in the United States and Canada.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30865,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Sweepstakes",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was rejected because the submitted business or messaging use case was identified as sweepstakes-related traffic, which falls under a forbidden gambling category. During review, verification checks your business, stated use case, sample messages, web presence, opt-in flow, and related terms or privacy policies.\n\n### Possible causes\n\n- Your business offers sweepstakes, raffles, contests, betting, casino-related services, or similar gambling activity.\n- Your verification submission, website, or sample messages indicate a forbidden gambling use case such as sweepstakes or 50/50 raffles.\n- Your business type itself falls into a forbidden category for SMS or MMS in the United States or Canada, even if the individual message content isn't explicitly promotional. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n### Possible solutions\n\n- Do not submit or resubmit a verification request for sweepstakes or other gambling-related messaging. These use cases are prohibited for SMS and MMS in the United States and Canada. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- If you believe your business was misclassified and your use case doesn't fit a forbidden category, contact Support and provide additional information that clearly explains your business and messaging use case.\n- If you need to communicate for a use case that is prohibited on SMS or MMS, use another channel that fits your compliance requirements, such as SendGrid Email API or Programmable Voice. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your business offers sweepstakes, raffles, contests, betting, casino-related services, or similar gambling activity.\n* Your verification submission, website, or sample messages indicate a forbidden gambling use case such as sweepstakes or 50/50 raffles.\n* Your business type itself falls into a forbidden category for SMS or MMS in the United States or Canada, even if the individual message content isn't explicitly promotional. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "solutions": "* Do not submit or resubmit a verification request for sweepstakes or other gambling-related messaging. These use cases are prohibited for SMS and MMS in the United States and Canada. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* If you believe your business was misclassified and your use case doesn't fit a forbidden category, contact Support and provide additional information that clearly explains your business and messaging use case.\n* If you need to communicate for a use case that is prohibited on SMS or MMS, use another channel that fits your compliance requirements, such as SendGrid Email API or Programmable Voice. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "description": "Your verification submission was rejected because the submitted business or messaging use case was identified as sweepstakes-related traffic, which falls under a forbidden gambling category. During review, verification checks your business, stated use case, sample messages, web presence, opt-in flow, and related terms or privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30866,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Stock Alerts/Platforms",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your verification request because the submission matched the disallowed stock alerts or stock platforms category. During review, Twilio evaluates the business using the number, the messaging use case, sample messages, website presence, opt-in method, and associated privacy policy and terms.\n\n### Possible causes\n\n- Your submission identified the business or messaging program as stock alerts, stock trading, investing, or a similar high-risk financial service use case.\n- Your business appears to operate primarily in stocks, investing, or cryptocurrency, which isn't eligible for verification for promotional or alerting traffic.\n- Your use case summary, sample messages, website, or opt-in flow suggested prohibited stock alert or platform messaging instead of an eligible 2FA or transactional use case.\n\n### Possible solutions\n\n- If the submission was categorized incorrectly, contact Support and provide additional information that clearly explains your business, your actual messaging use case, and how recipients opt in.\n- If your business is a stock or investing platform, limit messaging to 2FA or transactional traffic only. Update your use case summary, sample messages, and website details so they reflect that use case accurately.\n- Review your verification details before submitting again. Make sure your website, opt-in materials, privacy policy, terms, and sample messages all align with the messaging program you want approved.\n- If your request is eligible for correction, update it from the Regulatory Information tab for the phone number and resubmit it within the allowed window. If it isn't eligible for resubmission, only create a new verification request after you have materially corrected the use case and supporting information.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your submission identified the business or messaging program as stock alerts, stock trading, investing, or a similar high-risk financial service use case.\n* Your business appears to operate primarily in stocks, investing, or cryptocurrency, which isn't eligible for verification for promotional or alerting traffic.\n* Your use case summary, sample messages, website, or opt-in flow suggested prohibited stock alert or platform messaging instead of an eligible 2FA or transactional use case.",
    "solutions": "* If the submission was categorized incorrectly, contact Support and provide additional information that clearly explains your business, your actual messaging use case, and how recipients opt in.\n* If your business is a stock or investing platform, limit messaging to 2FA or transactional traffic only. Update your use case summary, sample messages, and website details so they reflect that use case accurately.\n* Review your verification details before submitting again. Make sure your website, opt-in materials, privacy policy, terms, and sample messages all align with the messaging program you want approved.\n* If your request is eligible for correction, update it from the Regulatory Information tab for the phone number and resubmit it within the allowed window. If it isn't eligible for resubmission, only create a new verification request after you have materially corrected the use case and supporting information.",
    "description": "Twilio rejected your verification request because the submission matched the disallowed stock alerts or stock platforms category. During review, Twilio evaluates the business using the number, the messaging use case, sample messages, website presence, opt-in method, and associated privacy policy and terms.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30867,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Cryptocurrency",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was rejected because the business or messaging program in the submission appears to fall into a forbidden message category for U.S. and Canada SMS and MMS traffic. Twilio reviews the business, use case, sample messages, web presence, opt-in flow, and linked terms and privacy policy during verification.\n\n### Possible causes\n\n- The verification submission identified the business as being associated with cryptocurrency or another high-risk financial services use case.\n- The business website, use case description, sample messages, or opt-in details suggested that the phone number would be used for cryptocurrency-related messaging.\n- The submission didn't clearly show that the messaging program fits an allowed business use case.\n- The business primarily operates in a forbidden category for SMS and MMS messaging in the United States and Canada.\n\n### Possible solutions\n\n- Review the submission details and confirm whether the business or messaging program falls into a forbidden message category. If it does, do not use this phone number for that SMS or MMS use case.\n- If the rejection is incorrect, contact Twilio Support with additional information that clearly explains your business, messaging use case, recipient opt-in flow, and sample messages.\n- Update the business website, use case summary, opt-in description, and linked terms or privacy policy so they accurately reflect the messaging program you want to verify.\n- If your business has multiple lines of business, make sure the submission clearly describes the allowed messaging use case instead of emphasizing cryptocurrency-related activity.\n- Check the verification status in Console or through the verification API before making changes so you can determine whether the submission is eligible for correction and resubmission.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The verification submission identified the business as being associated with cryptocurrency or another high-risk financial services use case.\n* The business website, use case description, sample messages, or opt-in details suggested that the phone number would be used for cryptocurrency-related messaging.\n* The submission didn't clearly show that the messaging program fits an allowed business use case.\n* The business primarily operates in a forbidden category for SMS and MMS messaging in the United States and Canada.",
    "solutions": "* Review the submission details and confirm whether the business or messaging program falls into a forbidden message category. If it does, do not use this phone number for that SMS or MMS use case.\n* If the rejection is incorrect, contact Twilio Support with additional information that clearly explains your business, messaging use case, recipient opt-in flow, and sample messages.\n* Update the business website, use case summary, opt-in description, and linked terms or privacy policy so they accurately reflect the messaging program you want to verify.\n* If your business has multiple lines of business, make sure the submission clearly describes the allowed messaging use case instead of emphasizing cryptocurrency-related activity.\n* Check the verification status in Console or through the verification API before making changes so you can determine whether the submission is eligible for correction and resubmission.",
    "description": "Your verification submission was rejected because the business or messaging program in the submission appears to fall into a forbidden message category for U.S. and Canada SMS and MMS traffic. Twilio reviews the business, use case, sample messages, web presence, opt-in flow, and linked terms and privacy policy during verification.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30868,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Risk Investment/Get Rich Quick Schemes",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your verification submission because the business or messaging program was identified as a disallowed get rich quick or risk investment use case. During review, Twilio evaluates the business using the number, the stated messaging use case, sample messages, web presence, consent flow, and related privacy policy and terms.\n\n### Possible causes\n\n- Your submission described a forbidden get rich quick scheme, such as a risk investment opportunity, pyramid scheme, mystery shopping program, or deceptive work-from-home offer.\n- The business itself falls into a forbidden category for SMS and MMS in the United States and Canada, even if the sample messages were limited or transactional.\n- Your website, opt-in flow, or supporting details suggested minimal effort for maximum or guaranteed financial gain, which isn't permitted on carrier routes.\n\n### Possible solutions\n\n- Review your business model, website, opt-in flow, and sample messages to confirm that your use case isn't a forbidden get rich quick scheme.\n- If your business or messaging program was misclassified, contact Support and provide additional information that clearly explains your use case, consent flow, website context, and sample content.\n- If your use case does fall into this forbidden category, do not continue using SMS for that traffic. Use a permitted communication channel or change the messaging program so it aligns with Twilio's messaging policies.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-Message-Categories-in-the-US-and-Canada-Short-Code--and-Long-Code)\n",
    "causes": "* Your submission described a forbidden get rich quick scheme, such as a risk investment opportunity, pyramid scheme, mystery shopping program, or deceptive work-from-home offer.\n* The business itself falls into a forbidden category for SMS and MMS in the United States and Canada, even if the sample messages were limited or transactional.\n* Your website, opt-in flow, or supporting details suggested minimal effort for maximum or guaranteed financial gain, which isn't permitted on carrier routes.",
    "solutions": "* Review your business model, website, opt-in flow, and sample messages to confirm that your use case isn't a forbidden get rich quick scheme.\n* If your business or messaging program was misclassified, contact Support and provide additional information that clearly explains your use case, consent flow, website context, and sample content.\n* If your use case does fall into this forbidden category, do not continue using SMS for that traffic. Use a permitted communication channel or change the messaging program so it aligns with Twilio's messaging policies.",
    "description": "Twilio rejected your verification submission because the business or messaging program was identified as a disallowed get rich quick or risk investment use case. During review, Twilio evaluates the business using the number, the stated messaging use case, sample messages, web presence, consent flow, and related privacy policy and terms.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30869,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Debt Reduction",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification request was rejected because the submitted business or messaging use case was identified as debt reduction. Debt consolidation, debt reduction, and credit repair programs aren't eligible for verification, even when end users have provided consent.\n\n### Possible causes\n\n- Your verification submission described a debt reduction, debt consolidation, or credit repair business or use case.\n- Your sample messages, website, opt-in flow, or business details suggested a prohibited debt forgiveness or debt collection category.\n- Your submission was reviewed as a forbidden messaging category for messaging in the US and Canada.\n\n### Possible solutions\n\n- Do not use this phone number for debt reduction, debt consolidation, or credit repair traffic. These use cases aren't eligible for verification.\n- Review the business description, website, opt-in details, and sample messages in your submission to confirm they don't describe a prohibited financial or debt relief program.\n- If the rejection doesn't match your actual business or use case, contact Support and provide additional information that clearly explains your business model and messaging use case.\n- If the submission is eligible for resubmission in Console, correct the inaccurate information and resubmit it from the Regulatory Information tab. If you resubmit within seven days, the request goes to a priority review queue.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada (Short Code and Long Code)](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your verification submission described a debt reduction, debt consolidation, or credit repair business or use case.\n* Your sample messages, website, opt-in flow, or business details suggested a prohibited debt forgiveness or debt collection category.\n* Your submission was reviewed as a forbidden messaging category for messaging in the US and Canada.",
    "solutions": "* Do not use this phone number for debt reduction, debt consolidation, or credit repair traffic. These use cases aren't eligible for verification.\n* Review the business description, website, opt-in details, and sample messages in your submission to confirm they don't describe a prohibited financial or debt relief program.\n* If the rejection doesn't match your actual business or use case, contact Support and provide additional information that clearly explains your business model and messaging use case.\n* If the submission is eligible for resubmission in Console, correct the inaccurate information and resubmit it from the Regulatory Information tab. If you resubmit within seven days, the request goes to a priority review queue.",
    "description": "This error means your verification request was rejected because the submitted business or messaging use case was identified as debt reduction. Debt consolidation, debt reduction, and credit repair programs aren't eligible for verification, even when end users have provided consent.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30870,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Credit Repair",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was rejected because the business, use case, or submitted content indicates a prohibited credit or debt repair program.\n\n### Possible causes\n\n- The submission identifies the business or messaging program as credit repair, debt repair, debt consolidation, debt reduction, or debt relief. These use cases are prohibited for SMS and MMS in the United States and Canada, even when the business has first-party consent.\n- Your website, sample messages, or other verification details describe a business category that falls under the forbidden debt collection or forgiveness category. The verification review considers the sending business, stated use case, sample content, web presence, opt-in or consent flow, and related policy information.\n\n### Possible solutions\n\n- If your business actually offers credit repair or related debt reduction services, do not resubmit this verification for SMS or MMS. Use a permitted channel only if it fits your use case and compliance requirements. SendGrid Email API may be an option for many forbidden messaging categories, and Programmable Voice isn't subject to the same carrier restrictions as SMS.\n- If your business doesn't offer credit repair and the submission was categorized incorrectly, review and correct the verification record before resubmitting. Make sure your business description, website, sample messages, opt-in details, and any supporting information accurately describe the real use case.\n- If you submitted through the API, check the rejection response and only resubmit when `edit_allowed` is `true`. If the rejection isn't eligible for resubmission, create a new request only after you have corrected the underlying business or use case information.\n- If you believe the rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n",
    "causes": "* The submission identifies the business or messaging program as credit repair, debt repair, debt consolidation, debt reduction, or debt relief. These use cases are prohibited for SMS and MMS in the United States and Canada, even when the business has first-party consent.\n* Your website, sample messages, or other verification details describe a business category that falls under the forbidden debt collection or forgiveness category. The verification review considers the sending business, stated use case, sample content, web presence, opt-in or consent flow, and related policy information.",
    "solutions": "* If your business actually offers credit repair or related debt reduction services, do not resubmit this verification for SMS or MMS. Use a permitted channel only if it fits your use case and compliance requirements. SendGrid Email API may be an option for many forbidden messaging categories, and Programmable Voice isn't subject to the same carrier restrictions as SMS.\n* If your business doesn't offer credit repair and the submission was categorized incorrectly, review and correct the verification record before resubmitting. Make sure your business description, website, sample messages, opt-in details, and any supporting information accurately describe the real use case.\n* If you submitted through the API, check the rejection response and only resubmit when `edit_allowed` is `true`. If the rejection isn't eligible for resubmission, create a new request only after you have corrected the underlying business or use case information.\n* If you believe the rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.",
    "description": "Your verification submission was rejected because the business, use case, or submitted content indicates a prohibited credit or debt repair program.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30871,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Third-party Lead Generation",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification request was rejected because the submitted business or messaging use case was identified as third-party lead generation or marketing.\n\n### Possible causes\n\n- Your business, website, privacy policy, or terms indicate that you buy, sell, or share consumer information or mobile opt-in data. This is treated as a forbidden third-party lead generation use case.\n- Your submission describes affiliate marketing, affiliate lending, deceptive marketing, or another third-party lead generation model. These use cases aren't allowed for SMS and MMS in the United States and Canada.\n- Consent is collected by one business and then transferred to another business. Consent must be obtained directly from the end user by the business that sends the messages.\n- Your verification request doesn't clearly show a first-party use case and doesn't provide complete supporting information such as the business website, use case summary, sample messages, or public proof of opt-in. These fields are required for verification submissions.\n\n### Possible solutions\n\n- If your traffic depends on transferred, purchased, sold, or shared lead data, stop using this phone number for that messaging use case. Third-party lead generation is a forbidden category and isn't eligible for approval.\n- If your use case is actually first-party, update your website, privacy policy, terms, and opt-in flow so they clearly show that the end business collects consent directly and doesn't share or sell mobile opt-in data for marketing or promotional purposes.\n- Review your verification submission and make sure the business website, use case summary, production message sample, and publicly accessible opt-in images accurately match your live customer journey.\n- Review the rejection details in the phone number's Regulatory Information tab in Console. If the request is eligible for correction, make the required changes and resubmit. If you believe the rejection was made in error, contact Support with additional information that explains your business model and consent flow.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your business, website, privacy policy, or terms indicate that you buy, sell, or share consumer information or mobile opt-in data. This is treated as a forbidden third-party lead generation use case.\n* Your submission describes affiliate marketing, affiliate lending, deceptive marketing, or another third-party lead generation model. These use cases aren't allowed for SMS and MMS in the United States and Canada.\n* Consent is collected by one business and then transferred to another business. Consent must be obtained directly from the end user by the business that sends the messages.\n* Your verification request doesn't clearly show a first-party use case and doesn't provide complete supporting information such as the business website, use case summary, sample messages, or public proof of opt-in. These fields are required for verification submissions.",
    "solutions": "* If your traffic depends on transferred, purchased, sold, or shared lead data, stop using this phone number for that messaging use case. Third-party lead generation is a forbidden category and isn't eligible for approval.\n* If your use case is actually first-party, update your website, privacy policy, terms, and opt-in flow so they clearly show that the end business collects consent directly and doesn't share or sell mobile opt-in data for marketing or promotional purposes.\n* Review your verification submission and make sure the business website, use case summary, production message sample, and publicly accessible opt-in images accurately match your live customer journey.\n* Review the rejection details in the phone number's Regulatory Information tab in Console. If the request is eligible for correction, make the required changes and resubmit. If you believe the rejection was made in error, contact Support with additional information that explains your business model and consent flow.",
    "description": "This error means your verification request was rejected because the submitted business or messaging use case was identified as third-party lead generation or marketing.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30872,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: Non-federally compliant use case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\nYour messaging use case doesn't comply with federal regulations applicable across all 50 U.S. states. This may involve:\n\n- Content that is legal in some states but federally prohibited\n- Activities that violate federal communications laws\n- Products or services that are federally regulated but not properly licensed\n- Use cases explicitly prohibited by federal guidelines\n\n### Possible solutions\n\n- This content is ineligible for resubmission\n- Messaging use cases must comply with federal regulations applicable in all 50 U.S. states\n- State-level legality is insufficient if federal compliance isn't met\n- Future submissions must focus on use cases that are fully compliant with all applicable federal laws\n",
    "causes": "Your messaging use case doesn't comply with federal regulations applicable across all 50 U.S. states. This may involve: - Content that is legal in some states but federally prohibited\n- Activities that violate federal communications laws\n- Products or services that are federally regulated but not properly licensed\n- Use cases explicitly prohibited by federal guidelines",
    "solutions": "* This content is ineligible for resubmission\n* Messaging use cases must comply with federal regulations applicable in all 50 U.S. states\n* State-level legality is insufficient if federal compliance isn't met\n* Future submissions must focus on use cases that are fully compliant with all applicable federal laws",
    "description": "The verification submission has been reviewed and it was rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30873,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: SHAFT - Sex",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nWe rejected this verification request because the submission was associated with the SHAFT sex category. Sex-related use cases are forbidden for SMS and MMS in the United States and Canada.\n\n### Possible causes\n\n- The business, campaign, or messaging use case described in the verification request is sex-related.\n- The website, opt-in flow, or production message samples in the submission contain adult or sexual content, or make the use case appear to be sex-related.\n- The verification request doesn't meet verification requirements because the stated use case conflicts with forbidden message category rules for SMS and MMS in the United States and Canada.\n\n### Possible solutions\n\n- If your business or messaging program is sex-related, do not use this phone number for SMS or MMS traffic to the United States or Canada. This use case can't be approved for verification.\n- If the rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business, opt-in method, website, and representative message samples.\n- Review the submitted use case summary, website, and message samples before making changes. Make sure they accurately describe your business and don't contain content that could be interpreted as a forbidden sex-related use case.\n- If you still need to reach recipients for a use case that can't be approved for SMS or MMS, evaluate another channel such as SendGrid Email API or Programmable Voice if it fits your compliance requirements.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* The business, campaign, or messaging use case described in the verification request is sex-related.\n* The website, opt-in flow, or production message samples in the submission contain adult or sexual content, or make the use case appear to be sex-related.\n* The verification request doesn't meet verification requirements because the stated use case conflicts with forbidden message category rules for SMS and MMS in the United States and Canada.",
    "solutions": "* If your business or messaging program is sex-related, do not use this phone number for SMS or MMS traffic to the United States or Canada. This use case can't be approved for verification.\n* If the rejection is incorrect, contact Twilio Support and provide additional information that clearly explains your business, opt-in method, website, and representative message samples.\n* Review the submitted use case summary, website, and message samples before making changes. Make sure they accurately describe your business and don't contain content that could be interpreted as a forbidden sex-related use case.\n* If you still need to reach recipients for a use case that can't be approved for SMS or MMS, evaluate another channel such as SendGrid Email API or Programmable Voice if it fits your compliance requirements.",
    "description": "We rejected this verification request because the submission was associated with the SHAFT sex category. Sex-related use cases are forbidden for SMS and MMS in the United States and Canada.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30874,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: SHAFT - Hate",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your verification request because the submission indicates a forbidden SHAFT category related to hate. The verification review considers your business, use case, sample messages, web presence, opt-in flow, and related terms and privacy disclosures.\n\n### Possible causes\n\n- Your submission describes a business or messaging program associated with hate speech, abusive communications, or communications connected to a hate group.\n- Your website, sample messages, opt-in flow, or supporting business information suggests a hate-related use case during the verification review.\n- Your messaging use case falls into a forbidden message category for SMS and MMS in the United States or Canada.\n\n### Possible solutions\n\n- Stop using this phone number for any hate-related or otherwise forbidden messaging. If your use case falls into a forbidden category, it isn't eligible for approval.\n- Review your verification submission and remove any business description, website content, sample message, or consent flow that could make the use case appear to support hate-related communications. Make sure your submission accurately reflects a compliant messaging program.\n- If you believe this rejection is incorrect and your business doesn't fit a forbidden category, contact Twilio Support and provide additional information that clearly explains your use case.\n- Do not resubmit the same request without correcting the underlying compliance issue. Rejections for content or Messaging Policy violations are ineligible for resubmission.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-Message-Categories-in-the-US-and-Canada-Short-Code--and-Long-Code)\n",
    "causes": "* Your submission describes a business or messaging program associated with hate speech, abusive communications, or communications connected to a hate group.\n* Your website, sample messages, opt-in flow, or supporting business information suggests a hate-related use case during the verification review.\n* Your messaging use case falls into a forbidden message category for SMS and MMS in the United States or Canada.",
    "solutions": "* Stop using this phone number for any hate-related or otherwise forbidden messaging. If your use case falls into a forbidden category, it isn't eligible for approval.\n* Review your verification submission and remove any business description, website content, sample message, or consent flow that could make the use case appear to support hate-related communications. Make sure your submission accurately reflects a compliant messaging program.\n* If you believe this rejection is incorrect and your business doesn't fit a forbidden category, contact Twilio Support and provide additional information that clearly explains your use case.\n* Do not resubmit the same request without correcting the underlying compliance issue. Rejections for content or Messaging Policy violations are ineligible for resubmission.",
    "description": "Twilio rejected your verification request because the submission indicates a forbidden SHAFT category related to hate. The verification review considers your business, use case, sample messages, web presence, opt-in flow, and related terms and privacy disclosures.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30875,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: SHAFT - Alcohol",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because the business or messaging program was identified as alcohol-related and the submission doesn't meet verification requirements. During review, Twilio evaluates the business that is sending the messages, the stated use case, sample messages, web presence, opt-in or consent flow, and related terms and privacy policy.\n\n### Possible causes\n\n- Your submission identifies the business, website, or messaging program as alcohol-related.\n- Your website or opt-in flow doesn't use an acceptable age-verification process for alcohol-related messaging.\n- Your age gate relies on a simple yes or no confirmation instead of collecting the user's full date of birth.\n- Your website or landing page makes alcohol-related content available before the user passes the age gate.\n- Your verification submission doesn't clearly show how your website, opt-in flow, and sample messages enforce age restrictions.\n- You send, or plan to send, age-gated alcohol traffic to Canada without the required carrier exemption.\n\n### Possible solutions\n\n- Add a 21+ age gate to your website and opt-in flow before users can access alcohol-related content or enroll in messaging.\n- Require users to enter their full date of birth in `MM/DD/YYYY` format, or use a third-party age-verification service.\n- Remove any flow that exposes alcohol-related content before age verification is completed.\n- Update your verification submission so it clearly documents the age gate, opt-in flow, consent collection, and sample messages.\n- If you send messages to Canada, block age-gated alcohol traffic unless you have the required carrier exemption.\n- If the rejection is eligible for resubmission, correct the issue and resubmit from the phone number's Regulatory Information section in Console.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your submission identifies the business, website, or messaging program as alcohol-related.\n* Your website or opt-in flow doesn't use an acceptable age-verification process for alcohol-related messaging.\n* Your age gate relies on a simple yes or no confirmation instead of collecting the user's full date of birth.\n* Your website or landing page makes alcohol-related content available before the user passes the age gate.\n* Your verification submission doesn't clearly show how your website, opt-in flow, and sample messages enforce age restrictions.\n* You send, or plan to send, age-gated alcohol traffic to Canada without the required carrier exemption.",
    "solutions": "* Add a 21+ age gate to your website and opt-in flow before users can access alcohol-related content or enroll in messaging.\n* Require users to enter their full date of birth in `MM/DD/YYYY` format, or use a third-party age-verification service.\n* Remove any flow that exposes alcohol-related content before age verification is completed.\n* Update your verification submission so it clearly documents the age gate, opt-in flow, consent collection, and sample messages.\n* If you send messages to Canada, block age-gated alcohol traffic unless you have the required carrier exemption.\n* If the rejection is eligible for resubmission, correct the issue and resubmit from the phone number's Regulatory Information section in Console.",
    "description": "This error means your verification submission was rejected because the business or messaging program was identified as alcohol-related and the submission doesn't meet verification requirements. During review, Twilio evaluates the business that is sending the messages, the stated use case, sample messages, web presence, opt-in or consent flow, and related terms and privacy policy.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30876,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Alcohol promotions require age verification",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour verification submission was rejected because your messaging program involves alcohol-related content and the review didn't find an acceptable age-verification process. Messaging traffic on the phone number remains blocked until the number is verified.\n\nTwilio reviews the business that is sending the messages, the stated use case, sample content, web presence, opt-in or consent flow, and related terms and privacy policy when evaluating a verification submission.\n\n### Possible causes\n\n- Your opt-in flow or website doesn't use a robust age-verification process for alcohol-related messaging.\n- Your age gate relies on a simple confirmation such as \"Yes\" instead of collecting a full date of birth. Twilio requires age gating for alcohol-related traffic to mean that users enter their date of birth.\n- Your website or landing pages make alcohol-related content available before the user passes an age gate.\n- Your verification submission doesn't clearly show how your opt-in flow, website, and sample messages enforce legal age restrictions.\n- You intend to send age-gated alcohol traffic to Canada. Age-gated content into Canada must be blocked unless you have a special carrier exemption. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n### Possible solutions\n\n- Add a 21+ age gate to your website and opt-in flow before users can access alcohol-related content or enroll in messaging.\n- Require users to enter their full date of birth in `MM/DD/YYYY` format, or use a third-party age-verification service. Do not rely on a simple \"Yes\" confirmation as your only control.\n- Update your verification submission so it includes clear evidence of the revised age-verification flow, including where the age gate appears in the user journey and how consent is collected.\n- If the rejected submission is eligible for resubmission, correct the issue and resubmit from the phone number's Regulatory Information section in Console during the resubmission window when available.\n- If you send messages to Canada, block age-gated alcohol traffic unless you have the required carrier exemption. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your opt-in flow or website doesn't use a robust age-verification process for alcohol-related messaging.\n* Your age gate relies on a simple confirmation such as \"Yes\" instead of collecting a full date of birth. Twilio requires age gating for alcohol-related traffic to mean that users enter their date of birth.\n* Your website or landing pages make alcohol-related content available before the user passes an age gate.\n* Your verification submission doesn't clearly show how your opt-in flow, website, and sample messages enforce legal age restrictions.\n* You intend to send age-gated alcohol traffic to Canada. Age-gated content into Canada must be blocked unless you have a special carrier exemption. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "solutions": "* Add a 21+ age gate to your website and opt-in flow before users can access alcohol-related content or enroll in messaging.\n* Require users to enter their full date of birth in `MM/DD/YYYY` format, or use a third-party age-verification service. Do not rely on a simple \"Yes\" confirmation as your only control.\n* Update your verification submission so it includes clear evidence of the revised age-verification flow, including where the age gate appears in the user journey and how consent is collected.\n* If the rejected submission is eligible for resubmission, correct the issue and resubmit from the phone number's Regulatory Information section in Console during the resubmission window when available.\n* If you send messages to Canada, block age-gated alcohol traffic unless you have the required carrier exemption. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "description": "Your verification submission was rejected because your messaging program involves alcohol-related content and the review didn't find an acceptable age-verification process. Messaging traffic on the phone number remains blocked until the number is verified. Twilio reviews the business that is sending the messages, the stated use case, sample content, web presence, opt-in or consent flow, and related terms and privacy policy when evaluating a verification submission.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30877,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: SHAFT - Firearms",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and it was rejected.\n\n### Possible causes\n\nThe phone number can't be verified because the submission indicated that the business is associated with or the verification submission indicated a forbidden messaging category (SHAFT: Firearms and accessories).\n\nFirearms and accessories aren't allowed on Short Code or Long Code routes regardless of age gating.\n\n### Possible solutions\n\nIf you are confident that your business and messaging use case doesn't fit into forbidden message categories, contact Twilio Support to provide Additional Information that explains your use case.\n\n#### Additional resources\n\n- [Forbidden Message Categories](https://support.twilio.com/hc/en-us/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n- [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n",
    "causes": "The phone number can't be verified because the submission indicated that the business is associated with or the verification submission indicated a forbidden messaging category (SHAFT: Firearms and accessories). Firearms and accessories aren't allowed on Short Code or Long Code routes regardless of age gating.",
    "solutions": "If you are confident that your business and messaging use case doesn't fit into forbidden message categories, contact Twilio Support to provide Additional Information that explains your use case.",
    "description": "The verification submission has been reviewed and it was rejected.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30878,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Disallowed: SHAFT - Tobacco / Vape",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your verification request because the submission indicates a forbidden SHAFT use case involving tobacco, vape, or e-cigarettes. Twilio doesn't support these categories on SMS or MMS.\n\n### Possible causes\n\n- Your business description or stated use case indicates tobacco, vape, or e-cigarette messaging.\n- Your website, sample messages, opt-in details, or other verification data caused the request to be categorized as a forbidden SHAFT use case.\n- Your use case relies on age gating, but tobacco, vape, and e-cigarette traffic is not allowed on messaging regardless of age gating.\n\n### Possible solutions\n\n- Remove tobacco, vape, and e-cigarette traffic from the messaging use case. These categories aren't supported on messaging.\n- If the rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n- Check the verification record in the API or Console. If `edit_allowed` is `true`, update the request and resubmit it before `edit_expiration`. If the rejection is for content or Messaging Policy violations, the request isn't eligible for resubmission.\n\n#### Additional resources\n\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/hc/en-us/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your business description or stated use case indicates tobacco, vape, or e-cigarette messaging.\n* Your website, sample messages, opt-in details, or other verification data caused the request to be categorized as a forbidden SHAFT use case.\n* Your use case relies on age gating, but tobacco, vape, and e-cigarette traffic is not allowed on messaging regardless of age gating.",
    "solutions": "* Remove tobacco, vape, and e-cigarette traffic from the messaging use case. These categories aren't supported on messaging.\n* If the rejection is incorrect, contact Support and provide additional information that clearly explains your business and messaging use case.\n* Check the verification record in the API or Console. If `edit_allowed` is `true`, update the request and resubmit it before `edit_expiration`. If the rejection is for content or Messaging Policy violations, the request isn't eligible for resubmission.",
    "description": "Twilio rejected your verification request because the submission indicates a forbidden SHAFT use case involving tobacco, vape, or e-cigarettes. Twilio doesn't support these categories on SMS or MMS.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30879,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - Phone number not provisioned to Twilio",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification submission has been reviewed and rejected. Messaging traffic on this phone number is blocked until it's verified.\n\nVerification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.\n\n### Possible causes\n\n- The verification was submitted before the phone number completed porting to Twilio.\n- The phone number isn't provisioned to Twilio.\n\n### Possible solutions\n\n- If the number is or was with another messaging provider at the time of verification, ensure the porting or hosting process has been initiated and is complete. Then delete the rejected verification and submit a new request after the port completes.\n- If it's not a porting scenario, contact Twilio Support.\n",
    "causes": "* The verification was submitted before the phone number completed porting to Twilio.\n* The phone number isn't provisioned to Twilio.",
    "solutions": "* If the number is or was with another messaging provider at the time of verification, ensure the porting or hosting process has been initiated and is complete. Then delete the rejected verification and submit a new request after the port completes.\n* If it's not a porting scenario, contact Twilio Support.",
    "description": "The verification submission has been reviewed and rejected. Messaging traffic on this phone number is blocked until it's verified. Verification is one component of ensuring A2P SMS is used by businesses in a legal and compliant manner. The review process looks at the business sending messaging (not the software powering it), the use case, sample content, the web presence, the opt-in/consent collected and associated website terms and privacy policies.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30880,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Unknown Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign was rejected during manual vetting, but the review did not return a specific rejection reason you can act on directly. A failed campaign can include more than one error, so review the campaign details for any additional rejection codes that identify a more specific issue.\n\n### Possible causes\n\n- The campaign was rejected by an A2P ecosystem vetting party, but no specific rejection category was returned for this error.\n- Another issue in the same campaign or in the associated Brand caused the rejection, and a more specific error appears elsewhere in the campaign details.\n- The campaign details did not meet A2P 10DLC approval requirements for consistency, consent collection, or sample message quality, but the returned result did not identify which field failed review.\n\n### Possible solutions\n\n- Review the failed campaign in Console or in the API response and look for any additional error codes. Fix the more specific rejection reasons first if they are present.\n- Review the campaign submission against A2P 10DLC approval requirements. Make sure the Brand, website, message flow, use case, and sample messages all describe the same sender and the same messaging program.\n- Confirm that the registration includes a working website and a clear explanation of how end users opt in, opt out, and get help. Make sure sample messages reflect the actual traffic you plan to send.\n- If the rejection reason is still unclear, contact Twilio Support to investigate. If Support identifies a correctable campaign or Brand issue, update the registration and resubmit it for review. If you believe the rejection was incorrect, ask Support whether an appeal is appropriate.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The campaign was rejected by an A2P ecosystem vetting party, but no specific rejection category was returned for this error.\n* Another issue in the same campaign or in the associated Brand caused the rejection, and a more specific error appears elsewhere in the campaign details.\n* The campaign details did not meet A2P 10DLC approval requirements for consistency, consent collection, or sample message quality, but the returned result did not identify which field failed review.",
    "solutions": "* Review the failed campaign in Console or in the API response and look for any additional error codes. Fix the more specific rejection reasons first if they are present.\n* Review the campaign submission against A2P 10DLC approval requirements. Make sure the Brand, website, message flow, use case, and sample messages all describe the same sender and the same messaging program.\n* Confirm that the registration includes a working website and a clear explanation of how end users opt in, opt out, and get help. Make sure sample messages reflect the actual traffic you plan to send.\n* If the rejection reason is still unclear, contact Twilio Support to investigate. If Support identifies a correctable campaign or Brand issue, update the registration and resubmit it for review. If you believe the rejection was incorrect, ask Support whether an appeal is appropriate.",
    "description": "This error means your A2P 10DLC campaign was rejected during manual vetting, but the review did not return a specific rejection reason you can act on directly. A failed campaign can include more than one error, so review the campaign details for any additional rejection codes that identify a more specific issue.",
    "date_created": "2023-04-18T11:30:38Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30881,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Invalid Brand Support Email",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when your A2P 10DLC campaign is rejected during vetting because the brand support email in the registration is not valid for the brand you submitted. During campaign review, the email domain and the rest of the registration must consistently identify the same business, and the email address must use a valid domain that is not disposable.\n\n### Possible causes\n\n- The brand support email address is malformed, does not use a valid domain, or uses a disposable email domain.\n- The brand support email uses a public email domain that is not associated with the brand you registered.\n- The email domain does not align with the company name, website, or other campaign details in the registration.\n- If you are registering on behalf of a customer, the email belongs to your platform or agency instead of the actual business that will send the messages.\n\n### Possible solutions\n\n- Update the brand support email so it is a real, working address for the business you are registering and uses a domain associated with that brand. Do not use a disposable email address.\n- Review the brand name, website, campaign description, message flow, and sample messages so they all identify the same business and use case.\n- If you are an ISV or registering for a customer, replace your company contact details with the end customer's actual support email and brand information.\n- After you correct the email and related registration details, resubmit the campaign for review. If the failure is tied to brand information rather than the campaign itself, correct the associated brand information first and then recreate or update the campaign as needed.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The brand support email address is malformed, does not use a valid domain, or uses a disposable email domain.\n* The brand support email uses a public email domain that is not associated with the brand you registered.\n* The email domain does not align with the company name, website, or other campaign details in the registration.\n* If you are registering on behalf of a customer, the email belongs to your platform or agency instead of the actual business that will send the messages.",
    "solutions": "* Update the brand support email so it is a real, working address for the business you are registering and uses a domain associated with that brand. Do not use a disposable email address.\n* Review the brand name, website, campaign description, message flow, and sample messages so they all identify the same business and use case.\n* If you are an ISV or registering for a customer, replace your company contact details with the end customer's actual support email and brand information.\n* After you correct the email and related registration details, resubmit the campaign for review. If the failure is tied to brand information rather than the campaign itself, correct the associated brand information first and then recreate or update the campaign as needed.",
    "description": "This error appears when your A2P 10DLC campaign is rejected during vetting because the brand support email in the registration is not valid for the brand you submitted. During campaign review, the email domain and the rest of the registration must consistently identify the same business, and the email address must use a valid domain that is not disposable.",
    "date_created": "2023-04-18T11:31:42Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30882,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Terms & Conditions",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour campaign submission was rejected because the terms and conditions associated with the campaign do not meet A2P 10DLC review requirements. This can include campaigns whose use case conflicts with prohibited third-party marketing rules.\n\n### Possible causes\n\n- Your campaign registration request does not include a `TermsAndConditionsUrl`. This field is required for all new A2P 10DLC campaign submissions.\n- Your campaign involves affiliate marketing or another third-party lead generation or marketing use case. These use cases are forbidden for SMS and MMS in the United States and Canada.\n- Your terms and conditions or related policy language indicate that consumer data or message opt-in information is shared, sold, or bought by third parties or affiliates. Twilio treats that as noncompliant. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- Your campaign does not show direct, campaign-specific consumer consent. For A2P 10DLC, consent cannot be obscured in general terms and conditions or bundled into another agreement. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements))\n- Your campaign use case conflicts with A2P 10DLC campaign approval requirements or Twilio's Messaging Policy. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements))\n\n### Possible solutions\n\n- Add a `TermsAndConditionsUrl` to your campaign registration request. The URL must be publicly accessible, not behind a login, and point to terms and conditions relevant to your registered brand.\n- Update your terms and conditions and consent flow so end users give consent directly to your brand and mobile opt-in data is not shared with third parties or affiliates for marketing or promotional purposes. For more information, see [A2P 10DLC campaign approval requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements).\n- If your campaign uses a prohibited use case, such as affiliate marketing or third-party lead generation, resubmitting will not resolve the rejection. Remove the prohibited use case before submitting another campaign registration. For details, see [Forbidden message categories for SMS and MMS in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada).\n- After you update the terms and conditions and consent flow, resubmit the campaign for review in Console or retry the campaign submission through the API.\n- If you believe the rejection was made in error, contact [Twilio Support](https://help.twilio.com).\n\n#### Additional resources\n\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your campaign registration request does not include a `TermsAndConditionsUrl`. This field is required for all new A2P 10DLC campaign submissions.\n* Your campaign involves affiliate marketing or another third-party lead generation or marketing use case. These use cases are forbidden for SMS and MMS in the United States and Canada.\n* Your terms and conditions or related policy language indicate that consumer data or message opt-in information is shared, sold, or bought by third parties or affiliates. Twilio treats that as noncompliant. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* Your campaign does not show direct, campaign-specific consumer consent. For A2P 10DLC, consent cannot be obscured in general terms and conditions or bundled into another agreement. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements))\n* Your campaign use case conflicts with A2P 10DLC campaign approval requirements or Twilio's Messaging Policy. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements))",
    "solutions": "* Add a `TermsAndConditionsUrl` to your campaign registration request. The URL must be publicly accessible, not behind a login, and point to terms and conditions relevant to your registered brand.\n* Update your terms and conditions and consent flow so end users give consent directly to your brand and mobile opt-in data is not shared with third parties or affiliates for marketing or promotional purposes. For more information, see [A2P 10DLC campaign approval requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements).\n* If your campaign uses a prohibited use case, such as affiliate marketing or third-party lead generation, resubmitting will not resolve the rejection. Remove the prohibited use case before submitting another campaign registration. For details, see [Forbidden message categories for SMS and MMS in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada).\n* After you update the terms and conditions and consent flow, resubmit the campaign for review in Console or retry the campaign submission through the API.\n* If you believe the rejection was made in error, contact [Twilio Support](https://help.twilio.com).",
    "description": "Your campaign submission was rejected because the terms and conditions associated with the campaign do not meet A2P 10DLC review requirements. This can include campaigns whose use case conflicts with prohibited third-party marketing rules.",
    "date_created": "2023-04-18T11:32:41Z",
    "last_updated": "2026-07-02T08:00:41-07:00"
  },
  {
    "code": 30883,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Content Violation",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign was rejected during manual vetting because the submitted use case, sample messages, or business category was identified as prohibited content. Content violations include SHAFT-related material and marijuana or CBD.\n\n### Possible causes\n\n- Your campaign description or sample messages indicate prohibited content such as sexual content, hate speech, firearms, tobacco or vape content, marijuana, or other disallowed material.\n- Your business or messaging program falls into a forbidden category for SMS or MMS in the United States or Canada. Some prohibited categories are disallowed based on the business type itself, not only the message text. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- Your campaign was reviewed as a non-remediable content violation during A2P 10DLC vetting.\n\n### Possible solutions\n\n- Do not resubmit the same rejected campaign. This rejection type is not eligible for standard resubmission.\n- If you believe the rejection is incorrect, contact Twilio Support and request an appeal.\n- Review the forbidden message categories and A2P 10DLC campaign requirements before creating a new campaign. Only submit a new campaign if you can materially change the use case and content so the campaign is compliant. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n",
    "causes": "* Your campaign description or sample messages indicate prohibited content such as sexual content, hate speech, firearms, tobacco or vape content, marijuana, or other disallowed material.\n* Your business or messaging program falls into a forbidden category for SMS or MMS in the United States or Canada. Some prohibited categories are disallowed based on the business type itself, not only the message text. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* Your campaign was reviewed as a non-remediable content violation during A2P 10DLC vetting.",
    "solutions": "* Do not resubmit the same rejected campaign. This rejection type is not eligible for standard resubmission.\n* If you believe the rejection is incorrect, contact Twilio Support and request an appeal.\n* Review the forbidden message categories and A2P 10DLC campaign requirements before creating a new campaign. Only submit a new campaign if you can materially change the use case and content so the campaign is compliant. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "description": "This error means your A2P 10DLC campaign was rejected during manual vetting because the submitted use case, sample messages, or business category was identified as prohibited content. Content violations include SHAFT-related material and marijuana or CBD.",
    "date_created": "2023-04-18T11:33:31Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30884,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Spam/Phishing",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign was rejected during manual vetting because it was identified as a known spam or phishing campaign. A2P 10DLC vetting is required for US long code messaging to help prevent spam, fraud, and unwanted messaging.\n\n### Possible causes\n\n- The campaign appears to send spam, phishing, or messages that request confidential information from recipients.\n- The campaign sends unsolicited messages or does not demonstrate a clear, consent-based opt-in flow.\n- The submission misrepresents the sender or does not clearly match the registered brand, website, links, or sample messages, which can increase spam or phishing risk during review.\n\n### Possible solutions\n\n- Do not resubmit the same campaign. This rejection reason is ineligible for resubmission as submitted.\n- If you believe the rejection was made in error, contact Twilio Support to request an appeal.\n- Before you register a new campaign, materially change the campaign content, message flow, or associated brand details so the use case is legitimate, consent-based, and clearly identifies the sender.\n- Review your opt-in flow, sample messages, links, and campaign details to make sure they comply with Twilio Messaging Policy and A2P 10DLC approval requirements.\n\n#### Additional resources\n\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The campaign appears to send spam, phishing, or messages that request confidential information from recipients.\n* The campaign sends unsolicited messages or does not demonstrate a clear, consent-based opt-in flow.\n* The submission misrepresents the sender or does not clearly match the registered brand, website, links, or sample messages, which can increase spam or phishing risk during review.",
    "solutions": "* Do not resubmit the same campaign. This rejection reason is ineligible for resubmission as submitted.\n* If you believe the rejection was made in error, contact Twilio Support to request an appeal.\n* Before you register a new campaign, materially change the campaign content, message flow, or associated brand details so the use case is legitimate, consent-based, and clearly identifies the sender.\n* Review your opt-in flow, sample messages, links, and campaign details to make sure they comply with Twilio Messaging Policy and A2P 10DLC approval requirements.",
    "description": "This error means your A2P 10DLC campaign was rejected during manual vetting because it was identified as a known spam or phishing campaign. A2P 10DLC vetting is required for US long code messaging to help prevent spam, fraud, and unwanted messaging.",
    "date_created": "2023-04-18T11:34:23Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30885,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - High Risk",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when your A2P 10DLC campaign submission is rejected as high risk during vetting. This rejection is used for campaigns associated with potentially fraudulent activity and the rejected campaign is not eligible for standard resubmission.\n\n### Possible causes\n\n- Your proposed campaign use case was identified as other potentially fraudulent activity during manual campaign vetting.\n- Your campaign description, sample messages, website, or opt-in flow suggests deceptive marketing, phishing, or another prohibited messaging pattern.\n- Your registration pattern appears high risk, such as duplicative campaign attributes or an excessive number of brands registered with the same EIN or Tax ID. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements))\n\n### Possible solutions\n\n- Do not resubmit the same rejected campaign. This rejection category is not remediated by editing and resubmitting the existing campaign.\n- If you plan to register a different campaign, materially change the campaign content or use case and make sure it matches your actual opt-in flow, sample messages, and messaging practices.\n- Review your use case against Twilio Messaging Policy and prohibited message category guidance before you submit a new campaign.\n- If you believe this rejection was made in error, contact Twilio Support to appeal the decision.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements)\n",
    "causes": "* Your proposed campaign use case was identified as other potentially fraudulent activity during manual campaign vetting.\n* Your campaign description, sample messages, website, or opt-in flow suggests deceptive marketing, phishing, or another prohibited messaging pattern.\n* Your registration pattern appears high risk, such as duplicative campaign attributes or an excessive number of brands registered with the same EIN or Tax ID. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements))",
    "solutions": "* Do not resubmit the same rejected campaign. This rejection category is not remediated by editing and resubmitting the existing campaign.\n* If you plan to register a different campaign, materially change the campaign content or use case and make sure it matches your actual opt-in flow, sample messages, and messaging practices.\n* Review your use case against Twilio Messaging Policy and prohibited message category guidance before you submit a new campaign.\n* If you believe this rejection was made in error, contact Twilio Support to appeal the decision.",
    "description": "This error appears when your A2P 10DLC campaign submission is rejected as high risk during vetting. This rejection is used for campaigns associated with potentially fraudulent activity and the rejected campaign is not eligible for standard resubmission.",
    "date_created": "2023-04-18T11:35:06Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30886,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Invalid Campaign Description",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected during vetting because the Campaign Description field does not clearly explain the messaging program. Describe who is sending the messages, who receives them, and why the messages are being sent. Make sure the description matches your selected campaign use case, sample messages, and registered brand details.\n\n### Possible causes\n\n- The campaign description is too vague or incomplete.\n- The description does not explain who the sender is, who the recipients are, and why they are receiving messages.\n- The description does not align with the selected campaign use case.\n- The description does not match the sample messages, brand name, website, or other registration details.\n- If you are registering on behalf of customers, the description identifies your ISV or platform instead of the actual business sending the messages.\n- The description includes personal information instead of a general summary of the messaging program.\n\n### Possible solutions\n\n- Rewrite the campaign description so it clearly states the sender, the intended recipients, and the purpose of the messages.\n- Make the description specific enough to describe the real messaging program.\n- Verify that the description matches your selected use case and your sample messages.\n- Use the actual registered business or brand name in the description. If you are an ISV with a direct offering, say that clearly in the description.\n- Remove personal information and keep the description focused on the messaging program.\n- If your business is a financial institution engaged in direct, first-party lending, include Direct Lending in the description.\n- Update the failed campaign and resubmit it for review. Create a new campaign only if the selected use case is wrong or the failure is tied to the associated brand rather than the campaign details.\n\n#### Additional resources\n\n- [A2P 10DLC campaign approval best practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting and rectifying A2P campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n",
    "causes": "* The campaign description is too vague or incomplete.\n* The description does not explain who the sender is, who the recipients are, and why they are receiving messages.\n* The description does not align with the selected campaign use case.\n* The description does not match the sample messages, brand name, website, or other registration details.\n* If you are registering on behalf of customers, the description identifies your ISV or platform instead of the actual business sending the messages.\n* The description includes personal information instead of a general summary of the messaging program.",
    "solutions": "* Rewrite the campaign description so it clearly states the sender, the intended recipients, and the purpose of the messages.\n* Make the description specific enough to describe the real messaging program.\n* Verify that the description matches your selected use case and your sample messages.\n* Use the actual registered business or brand name in the description. If you are an ISV with a direct offering, say that clearly in the description.\n* Remove personal information and keep the description focused on the messaging program.\n* If your business is a financial institution engaged in direct, first-party lending, include Direct Lending in the description.\n* Update the failed campaign and resubmit it for review. Create a new campaign only if the selected use case is wrong or the failure is tied to the associated brand rather than the campaign details.",
    "description": "Your A2P 10DLC campaign was rejected during vetting because the Campaign  field does not clearly explain the messaging program. Describe who is sending the messages, who receives them, and why the messages are being sent. Make sure the description matches your selected campaign use case, sample messages, and registered brand details.",
    "date_created": "2023-04-18T11:35:53Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30887,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Opt-out Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign registration was rejected because the opt-out details in the submission do not clearly show how end users can stop receiving messages. If you manage opt-outs yourself, provide `opt_out_keywords` and an `opt_out_message` that acknowledges the opt-out request and confirms that no further messages will be sent.\n\n### Possible causes\n\n- The Call-to-Action or Message Flow does not clearly explain the opt-out process.\n- Your campaign indicates that you manage opt-outs yourself, but `opt_out_keywords` were not provided.\n- Your campaign indicates that you manage opt-outs yourself, but `opt_out_message` was not provided.\n- The `opt_out_message` does not acknowledge the end user's opt-out request.\n- The `opt_out_message` does not confirm that no further messages will be sent.\n- The opt-out workflow in your submission is incomplete or does not match the way end users actually interact with your campaign.\n\n### Possible solutions\n\n- Update your Call-to-Action and Message Flow so they clearly describe how an end user can opt out.\n- If you manage opt-outs yourself, provide every configured value for `opt_out_keywords`, such as STOP, UNSUBSCRIBE, END, QUIT, or HALT when those keywords are supported by your application.\n- Add an `opt_out_message` that acknowledges the opt-out request, confirms that no further messages will be sent, and includes your brand name.\n- Review your sample messages and consent flow to make sure the opt-out instructions match the real user experience.\n- If you use Twilio default opt-out handling or Advanced Opt-Out, use that configuration instead of submitting incomplete custom opt-out fields.\n- Resubmit the campaign after updating the opt-out workflow and messaging.\n\n#### Additional resources\n\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC required business information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC campaign approval best practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The Call-to-Action or Message Flow does not clearly explain the opt-out process.\n* Your campaign indicates that you manage opt-outs yourself, but `opt_out_keywords` were not provided.\n* Your campaign indicates that you manage opt-outs yourself, but `opt_out_message` was not provided.\n* The `opt_out_message` does not acknowledge the end user's opt-out request.\n* The `opt_out_message` does not confirm that no further messages will be sent.\n* The opt-out workflow in your submission is incomplete or does not match the way end users actually interact with your campaign.",
    "solutions": "* Update your Call-to-Action and Message Flow so they clearly describe how an end user can opt out.\n* If you manage opt-outs yourself, provide every configured value for `opt_out_keywords`, such as STOP, UNSUBSCRIBE, END, QUIT, or HALT when those keywords are supported by your application.\n* Add an `opt_out_message` that acknowledges the opt-out request, confirms that no further messages will be sent, and includes your brand name.\n* Review your sample messages and consent flow to make sure the opt-out instructions match the real user experience.\n* If you use Twilio default opt-out handling or Advanced Opt-Out, use that configuration instead of submitting incomplete custom opt-out fields.\n* Resubmit the campaign after updating the opt-out workflow and messaging.",
    "description": "Your A2P 10DLC campaign registration was rejected because the opt-out details in the submission do not clearly show how end users can stop receiving messages. If you manage opt-outs yourself, provide `opt_out_keywords` and an `opt_out_message` that acknowledges the opt-out request and confirms that no further messages will be sent.",
    "date_created": "2023-04-18T11:36:45Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30888,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Age Gate Not Present / Not Acceptable",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio rejected your campaign because you indicated that it includes age-gated content, but the website or opt-in flow submitted for review does not include an acceptable age gate. During A2P 10DLC review, Twilio checks the campaign details you submit, including how end users opt in and whether age-gated content is identified correctly.\n\n### Possible causes\n\n- The website URL in your campaign submission does not show an age gate before users can access age-restricted content.\n- The opt-in flow does not verify age before a user enrolls in messaging.\n- The age verification method is not acceptable, such as a simple yes or no prompt.\n- The submission says the campaign includes age-gated content, but the website, opt-in flow, or supporting materials do not clearly demonstrate the age gate.\n\n### Possible solutions\n\n- Add a robust age gate to your website or opt-in flow before users can access age-restricted content or opt in to messages.\n- Use an age verification method that can demonstrate the required minimum age, such as collecting a full date of birth or using a third-party age verification service.\n- Update your campaign submission so the message flow clearly explains where age verification happens and how it works.\n- Resubmit the campaign after you update the age gate information.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The website URL in your campaign submission does not show an age gate before users can access age-restricted content.\n* The opt-in flow does not verify age before a user enrolls in messaging.\n* The age verification method is not acceptable, such as a simple yes or no prompt.\n* The submission says the campaign includes age-gated content, but the website, opt-in flow, or supporting materials do not clearly demonstrate the age gate.",
    "solutions": "* Add a robust age gate to your website or opt-in flow before users can access age-restricted content or opt in to messages.\n* Use an age verification method that can demonstrate the required minimum age, such as collecting a full date of birth or using a third-party age verification service.\n* Update your campaign submission so the message flow clearly explains where age verification happens and how it works.\n* Resubmit the campaign after you update the age gate information.",
    "description": "Twilio rejected your campaign because you indicated that it includes age-gated content, but the website or opt-in flow submitted for review does not include an acceptable age gate. During A2P 10DLC review, Twilio checks the campaign details you submit, including how end users opt in and whether age-gated content is identified correctly.",
    "date_created": "2023-04-18T11:37:35Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30889,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Embedded Phone Number",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because the campaign indicates that messages include phone numbers, but your sample messages do not show that content. When you select the phone number option in Console or set `has_embedded_phone`, provide sample messages that reflect the actual messages you send and include representative phone numbers whenever possible so reviewers can verify them.\n\n### Possible causes\n\n- You selected **Messages will include phone numbers** in Console or set `has_embedded_phone` to `true`, but none of the submitted sample messages include a phone number.\n- Your sample messages are not representative of the actual traffic for this campaign, so reviewers cannot confirm that the embedded phone number setting is accurate.\n- Your sample messages do not align with the registered campaign details, including the declared message content and use case.\n\n### Possible solutions\n\n- If your campaign sends messages with phone numbers, update your sample messages so they include representative phone numbers that match the actual message content you plan to send.\n- Submit 2 to 5 clear sample messages that reflect your real traffic, and make sure at least one sample message identifies your brand by name or website.\n- If your campaign does not send phone numbers, clear the **Messages will include phone numbers** selection in Console or set `has_embedded_phone` to `false` before you resubmit the campaign.\n- Review the campaign description, use case, and sample messages together to make sure they are consistent before you submit again.\n\n#### Additional resources\n\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Gather the Required Business Information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* You selected **Messages will include phone numbers** in Console or set `has_embedded_phone` to `true`, but none of the submitted sample messages include a phone number.\n* Your sample messages are not representative of the actual traffic for this campaign, so reviewers cannot confirm that the embedded phone number setting is accurate.\n* Your sample messages do not align with the registered campaign details, including the declared message content and use case.",
    "solutions": "* If your campaign sends messages with phone numbers, update your sample messages so they include representative phone numbers that match the actual message content you plan to send.\n* Submit 2 to 5 clear sample messages that reflect your real traffic, and make sure at least one sample message identifies your brand by name or website.\n* If your campaign does not send phone numbers, clear the **Messages will include phone numbers** selection in Console or set `has_embedded_phone` to `false` before you resubmit the campaign.\n* Review the campaign description, use case, and sample messages together to make sure they are consistent before you submit again.",
    "description": "Your A2P 10DLC campaign was rejected because the campaign indicates that messages include phone numbers, but your sample messages do not show that content. When you select the phone number option in Console or set `has_embedded_phone`, provide sample messages that reflect the actual messages you send and include representative phone numbers whenever possible so reviewers can verify them.",
    "date_created": "2023-04-18T11:38:15Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30890,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Subscriber Help",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour campaign submission was rejected during A2P 10DLC vetting because the Subscriber Help information in your registration does not meet the required support guidance. If you provide a custom `help_message`, make sure it clearly guides end users to support and includes the brand name plus a phone number or email address they can use for help.\n\n### Possible causes\n\n- The `help_message` does not include your brand name.\n- The `help_message` does not include a support phone number or email address.\n- You indicated that end users can send a help keyword, but the help response does not clearly tell them who to contact for support.\n\n### Possible solutions\n\n- Update the `help_message` so it identifies your brand and includes a valid support phone number or email address.\n- Make sure the help response clearly tells end users how to get assistance after they reply with a help keyword.\n- If you manage help messages yourself, review your `help_message` and `help_keywords` against the A2P registration requirements before you resubmit the campaign. If you do not manage help messages yourself, use Twilio's default or Advanced Opt-Out features instead of submitting a custom help flow.\n\n#### Additional resources\n\n- [A2P 10DLC: Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The `help_message` does not include your brand name.\n* The `help_message` does not include a support phone number or email address.\n* You indicated that end users can send a help keyword, but the help response does not clearly tell them who to contact for support.",
    "solutions": "* Update the `help_message` so it identifies your brand and includes a valid support phone number or email address.\n* Make sure the help response clearly tells end users how to get assistance after they reply with a help keyword.\n* If you manage help messages yourself, review your `help_message` and `help_keywords` against the A2P registration requirements before you resubmit the campaign. If you do not manage help messages yourself, use Twilio's default or Advanced Opt-Out features instead of submitting a custom help flow.",
    "description": "Your campaign submission was rejected during A2P 10DLC vetting because the Subscriber Help information in your registration does not meet the required support guidance. If you provide a custom `help_message`, make sure it clearly guides end users to support and includes the brand name plus a phone number or email address they can use for help.",
    "date_created": "2023-04-18T11:39:03Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30891,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Invalid Website URL",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe campaign submission has been reviewed and it was rejected because of unverifiable website.\n\n### Possible causes\n\n- An invalid URL was provided during the registration process.\n- The website associated with the campaign is not functioning or inaccessible.\n- Opt-in flow is not found on website provided.\n- Lack of proper indication in the campaign description if the registration pertains to a pre-launch website.\n\n### Possible solutions\n\n- Verify that the provided website(s) are functioning correctly, and accessible. If the website(s) are geographic specific, please indicate this in the campaign description and provide a link to a screenshot.\n- If the registration is for a pre-launch website, instead include a publically accessible URL to view a screenshot of the SMS opt-in flow that will appear.\n- If opt-in occurs on website, provide the direct link in the Message Flow field.\n- If opt-in is collected through a paper form or behind a login, supply a hosted link to an image of the opt-in. If the opt-in occurs on a website, provide the relevant link.\n\nOnce you have made a change to address the issue, please resubmit the campaign for review.\n\nAdditional help resources\n\n- [A2P 10DLC campaign approval best practices](https://support.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* An invalid URL was provided during the registration process.\n* The website associated with the campaign is not functioning or inaccessible.\n* Opt-in flow is not found on website provided.\n* Lack of proper indication in the campaign description if the registration pertains to a pre-launch website.",
    "solutions": "* Verify that the provided website(s) are functioning correctly, and accessible. If the website(s) are geographic specific, please indicate this in the campaign description and provide a link to a screenshot.\n* If the registration is for a pre-launch website, instead include a publically accessible URL to view a screenshot of the SMS opt-in flow that will appear.\n* If opt-in occurs on website, provide the direct link in the Message Flow field.\n* If opt-in is collected through a paper form or behind a login, supply a hosted link to an image of the opt-in. If the opt-in occurs on a website, provide the relevant link. Once you have made a change to address the issue, please resubmit the campaign for review. Additional help resources * [A2P 10DLC campaign approval best practices](https://support.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n* [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)",
    "description": "The campaign submission has been reviewed and it was rejected because of unverifiable website.",
    "date_created": "2023-04-18T11:39:48Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30892,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Invalid Sample Message - Public URL Shorteners",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when your A2P 10DLC campaign is rejected during vetting because a sample message includes a public URL shortener or an unsecured website URL. For campaign submissions that include shortened links, use only a dedicated, branded short domain that belongs to your business. Public shorteners such as bit.ly or TinyURL can cause the campaign to be rejected.\n\n### Possible causes\n\n- A sample message includes a link from a shared public URL shortener instead of a business-owned branded short domain.\n- A sample message includes a website URL that is unsecured.\n- The URL in the sample message does not clearly identify your business, which increases the risk of rejection during campaign review.\n\n### Possible solutions\n\n- Remove any shared public shortener links from your sample messages and replace them with a direct business URL or a branded short URL that belongs to your business.\n- Update the sample message so every URL is secure and publicly accessible for review.\n- If you need shortened links, configure link shortening with your own branded domain through Messaging Services instead of using a free public shortener.\n- Review all sample messages before resubmitting the campaign to make sure the links match your business and the campaign you are registering.\n\n#### Additional resources\n\n- [A2P 10DLC overview](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [Link Shortening](/docs/messaging/features/link-shortening)\n",
    "causes": "* A sample message includes a link from a shared public URL shortener instead of a business-owned branded short domain.\n* A sample message includes a website URL that is unsecured.\n* The URL in the sample message does not clearly identify your business, which increases the risk of rejection during campaign review.",
    "solutions": "* Remove any shared public shortener links from your sample messages and replace them with a direct business URL or a branded short URL that belongs to your business.\n* Update the sample message so every URL is secure and publicly accessible for review.\n* If you need shortened links, configure link shortening with your own branded domain through Messaging Services instead of using a free public shortener.\n* Review all sample messages before resubmitting the campaign to make sure the links match your business and the campaign you are registering.",
    "description": "This error appears when your A2P 10DLC campaign is rejected during vetting because a sample message includes a public URL shortener or an unsecured website URL. For campaign submissions that include shortened links, use only a dedicated, branded short domain that belongs to your business. Public shorteners such as bit.ly or TinyURL can cause the campaign to be rejected.",
    "date_created": "2023-04-18T11:40:27Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30893,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Inconsistency between Sample Message and Use-case",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe campaign submission has been reviewed and rejected due to inconsistencies between the sample message and the intended use-case of the campaign.\n\n### Possible causes\n\n- Sample messages are missing, unclear, or their content does not match the campaign's use-case.\n- Invalid content within the sample messages.\n\n### Possible solutions\n\n- Verify that the sample messages are accurate, detailed, and reflective of the actual messages to be sent under the campaign.\n- Indicate templated fields within sample messages using brackets.\n- At least one of the sample messages should include your business name and opt-out message.\n- Ensure at least two sample messages are provided.\n- Ensure that the use-case and campaign description align with each other.\n\nOnce you have made a change to address the issue, please resubmit the campaign for review.\n\nAdditional help resources\n\n- [A2P 10DLC campaign approval best practices](https://support.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Sample messages are missing, unclear, or their content does not match the campaign's use-case.\n* Invalid content within the sample messages.",
    "solutions": "* Verify that the sample messages are accurate, detailed, and reflective of the actual messages to be sent under the campaign.\n* Indicate templated fields within sample messages using brackets.\n* At least one of the sample messages should include your business name and opt-out message.\n* Ensure at least two sample messages are provided.\n* Ensure that the use-case and campaign description align with each other. Once you have made a change to address the issue, please resubmit the campaign for review. Additional help resources * [A2P 10DLC campaign approval best practices](https://support.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n* [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)",
    "description": "The campaign submission has been reviewed and rejected due to inconsistencies between the sample message and the intended use-case of the campaign.",
    "date_created": "2023-04-18T11:41:18Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30894,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Invalid Brand Information",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error means your A2P 10DLC campaign was rejected during vetting because the brand information in the campaign submission does not match the business behind the messaging program. If you register on behalf of customers, make sure the campaign is tied to the actual sender and that the campaign details align with the registered brand.\n\n### Possible causes\n\n- The campaign was submitted under a brand that is not the business actually sending the messages.\n- If you are an ISV, the registration uses your platform or ISV details instead of your customer's business details.\n- The campaign description does not match the registered brand details, such as the sender identity, website, or business context. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements))\n- If you are an ISV registering a direct offering, the campaign description does not clearly indicate that the offering is direct.\n\n### Possible solutions\n\n- Register the campaign under the brand that actually sends the messages. If you are onboarding customers, use that customer's business details when you create the Customer Profile and Brand.\n- Update the campaign description so it clearly identifies who is sending the messages, who receives them, and why they are being sent. Make sure the description matches the registered brand details and the selected use case.\n- If you are an ISV with a direct offering, state that clearly in the campaign description before you resubmit the campaign.\n- Edit the failed campaign and resubmit it after correcting the brand information. Delete and recreate the campaign only if the failure is tied to the associated Brand rather than the Campaign details.\n\n#### Additional resources\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n",
    "causes": "* The campaign was submitted under a brand that is not the business actually sending the messages.\n* If you are an ISV, the registration uses your platform or ISV details instead of your customer's business details.\n* The campaign description does not match the registered brand details, such as the sender identity, website, or business context. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements))\n* If you are an ISV registering a direct offering, the campaign description does not clearly indicate that the offering is direct.",
    "solutions": "* Register the campaign under the brand that actually sends the messages. If you are onboarding customers, use that customer's business details when you create the Customer Profile and Brand.\n* Update the campaign description so it clearly identifies who is sending the messages, who receives them, and why they are being sent. Make sure the description matches the registered brand details and the selected use case.\n* If you are an ISV with a direct offering, state that clearly in the campaign description before you resubmit the campaign.\n* Edit the failed campaign and resubmit it after correcting the brand information. Delete and recreate the campaign only if the failure is tied to the associated Brand rather than the Campaign details.",
    "description": "This error means your A2P 10DLC campaign was rejected during vetting because the brand information in the campaign submission does not match the business behind the messaging program. If you register on behalf of customers, make sure the campaign is tied to the actual sender and that the campaign details align with the registered brand.",
    "date_created": "2023-04-18T11:41:54Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 30895,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Direct Lending - Campaign and Content Attribute Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC Campaign appears to involve direct lending or loan arrangements, but the Campaign registration did not identify that content correctly. If your business engages in direct, first-party lending, indicate Direct Lending in the Campaign description so the review team can set the correct attribute during review. This applies even if the Campaign use case is not directly offering loans, such as OTP or 2FA.\n\n### Possible causes\n\n- Your Campaign is associated with a financial institution or loan-arrangement use case, but the registration did not disclose direct lending.\n- The Campaign description did not include Direct Lending even though the business engages in direct, first-party lending. This can still cause rejection when the Campaign is for OTP or 2FA rather than loan offers.\n- The direct lending content setting was not selected during Console registration, or the direct lending indicator was not set correctly in the API request.\n- The Campaign description or sample messages suggest lending activity, but the registered content attributes do not match that use case. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requir%20ements))\n\n### Possible solutions\n\n- Edit the failed Campaign and update the Campaign description so it clearly states who is sending the messages, who receives them, and why. If the business engages in direct lending, include Direct Lending in that description.\n- If you resubmit in Console, select the message content option for direct lending or loan arrangements.\n- If you resubmit through the API, set the direct lending indicator correctly for the Campaign before submitting it again.\n- If the Campaign is not related to direct lending, revise the description so it accurately reflects the actual use case and does not imply lending activity. Make sure the description matches the selected Campaign use case and your sample messages. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requir%20ements))\n- Resubmit the same failed Campaign after you make the correction. Failed Campaigns can be edited and resubmitted, and the vetting fee is assessed only once per Campaign.\n\n#### Additional resources\n\n- [A2P 10DLC: Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements)\n",
    "causes": "* Your Campaign is associated with a financial institution or loan-arrangement use case, but the registration did not disclose direct lending.\n* The Campaign description did not include Direct Lending even though the business engages in direct, first-party lending. This can still cause rejection when the Campaign is for OTP or 2FA rather than loan offers.\n* The direct lending content setting was not selected during Console registration, or the direct lending indicator was not set correctly in the API request.\n* The Campaign description or sample messages suggest lending activity, but the registered content attributes do not match that use case. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requir%20ements))",
    "solutions": "* Edit the failed Campaign and update the Campaign description so it clearly states who is sending the messages, who receives them, and why. If the business engages in direct lending, include Direct Lending in that description.\n* If you resubmit in Console, select the message content option for direct lending or loan arrangements.\n* If you resubmit through the API, set the direct lending indicator correctly for the Campaign before submitting it again.\n* If the Campaign is not related to direct lending, revise the description so it accurately reflects the actual use case and does not imply lending activity. Make sure the description matches the selected Campaign use case and your sample messages. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requir%20ements))\n* Resubmit the same failed Campaign after you make the correction. Failed Campaigns can be edited and resubmitted, and the vetting fee is assessed only once per Campaign.",
    "description": "This error means your A2P 10DLC Campaign appears to involve direct lending or loan arrangements, but the Campaign registration did not identify that content correctly. If your business engages in direct, first-party lending, indicate Direct Lending in the Campaign description so the review team can set the correct attribute during review. This applies even if the Campaign use case is not directly offering loans, such as OTP or 2FA.",
    "date_created": "2023-04-18T11:42:31Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 30896,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Opt-in Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your campaign submission was rejected during review because the opt-in details you provided don't adequately show how end users consent to receive messages. Campaign registration requires a clear `message_flow`, and website-based opt-in flows must include the website URL, privacy policy, terms of service, and any hosted screenshots needed for review.\n\n### Possible causes\n\n- Your `message_flow` does not clearly explain who is opting in, where opt-in happens, or how consent is collected for this campaign.\n- You use more than one opt-in method, but you did not list every method in the campaign submission.\n- Your website opt-in flow is missing a public website link, a privacy policy link, terms of service, or hosted screenshots for a gated page, paper form, or other flow that a reviewer cannot access directly.\n- Your privacy policy does not include the required mobile-number non-sharing statement, message frequency, or a \"message and data rates may apply\" disclosure.\n- You indicate that users can opt in by texting a keyword, but you did not provide `opt_in_keywords` or a compliant `opt_in_message`.\n- Your opt-in description suggests consent is shared, transferred, or otherwise not collected specifically for this campaign.\n- You rely on verbal or offline opt-in, but the submission does not include enough detail for a reviewer to verify the flow.\n\n### Possible solutions\n\n- Rewrite the `message_flow` so it clearly explains how end users consent to receive messages. Include who is opting in, where the opt-in happens, and how the campaign collects consent. If you support more than one opt-in path, list every method.\n- If opt-in happens on a website, provide the website URL, a link to the privacy policy, and terms of service. If the opt-in flow is behind a login or collected on paper, provide a hosted screenshot or document that shows the exact opt-in language and form.\n- If users can subscribe by texting a keyword, provide `opt_in_keywords` and an `opt_in_message`. The opt-in response should include the brand name, confirmation of enrollment in a recurring campaign, how to get help, and clear opt-out instructions.\n- Update your privacy policy so it states that mobile numbers are not shared with third parties or affiliates for marketing or promotional purposes. Include message frequency and the required message and data rates disclosure.\n- Make sure your sample messages match the campaign use case and identify the brand in each sample. If possible, include opt-out language in at least one sample message to make review easier.\n- If you use verbal opt-in, describe the exact script or flow in enough detail that a reviewer can verify how consent is captured.\n\n### Pre-submission checklist\n\nRun through this list before submitting or resubmitting your campaign:\n\n- `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).\n- `message_flow` includes a link to your privacy policy and a link to your terms and conditions.\n- Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a \"message and data rates may apply\" disclosure.\n- If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.\n- If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.\n- If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.\n- Sample messages match the declared use case, identify the brand by name, and include opt-out language.\n- If you use verbal or offline opt-in, the `message_flow` describes the exact script or process in enough detail for a reviewer to verify how consent is captured.\n\n### Fix by opt-in concern\n\n#### Keyword opt-in\n\n<Warning>\n  The following submission would be rejected:\n\n  `message_flow`: `Customers can text us to sign up for alerts.`\n\n  `opt_in_keywords`: *(empty)* | `opt_in_message`: *(empty)*\n\n  Doesn't name the keyword or number, and omits the required `opt_in_keywords` and `opt_in_message` fields entirely.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  `message_flow`: `End users opt in by texting JOIN to (555) 123-4567. They immediately receive a confirmation reply. Message frequency varies. Msg & data rates may apply. Terms: www.acmesandwich.com/terms. Privacy: www.acmesandwich.com/privacy.`\n\n  `opt_in_keywords`: `JOIN, SUBSCRIBE` | `opt_in_message`: `Acme Sandwich Co: You're now subscribed to weekly deals. Msg frequency varies. Msg & data rates may apply. Reply HELP for help, STOP to cancel.`\n\n  Passes because it names the keyword and number, links to both legal pages, and populates `opt_in_keywords` and `opt_in_message` with matching content that includes brand name, frequency, rates, and opt-out instructions.\n</Info>\n\n#### Website opt-in\n\n<Warning>\n  The following `message_flow` would be rejected:\n\n  `End users opt in on our website by entering their phone number.`\n\n  Doesn't name the URL, link to a privacy policy or terms page, or describe what disclosures the user sees before submitting consent.\n</Warning>\n\n<Info>\n  The following `message_flow` would pass review:\n\n  `End users visit www.acmesandwich.com/sms-signup and enter their phone number. They check a box agreeing to receive recurring promotional text messages from Acme Sandwich Company. Below the form the page states: message frequency varies, message and data rates may apply. The checkbox label links to www.acmesandwich.com/terms (Terms and Conditions) and www.acmesandwich.com/privacy (Privacy Policy, which states mobile numbers are not shared with third parties or affiliates for marketing purposes).`\n\n  Passes because it names the URL, describes the consent action, and links to both legal pages with the required non-sharing and rate disclosures. See [Acceptable vs unacceptable privacy policy and T\\&C URLs](/docs/messaging/compliance/a2p-10dlc/collect-business-info#acceptable-vs-unacceptable-privacy-policy-and-tc-urls) for additional guidance on URL requirements.\n</Info>\n\n#### Offline or verbal opt-in\n\n<Warning>\n  The following `message_flow` would be rejected:\n\n  `We collect consent verbally when customers call our support line.`\n\n  Doesn't describe the script or provide any publicly accessible evidence a reviewer can use to verify the consent language.\n</Warning>\n\n<Info>\n  The following `message_flow` would pass review:\n\n  `End users opt in verbally when they call Acme Sandwich Co support at (555) 987-6543. The agent reads: \"Would you like to receive recurring promotional text messages from Acme Sandwich Company? Message frequency varies. Message and data rates may apply. You can reply STOP at any time to opt out.\" A copy of the agent script is hosted at www.acmesandwich.com/sms-consent-script.pdf. Privacy Policy: www.acmesandwich.com/privacy. Terms: www.acmesandwich.com/terms.`\n\n  Passes because it describes the exact consent script with all required disclosures and provides a publicly accessible URL where the reviewer can verify the script.\n</Info>\n\n### After you resubmit\n\nEdit the rejected campaign rather than deleting and recreating it. Resubmitting triggers a fresh review by The Campaign Registry (TCR).\n\n- **Vetting fee**: A vetting fee is assessed only once per campaign. Resubmitting the same campaign does not incur a new fee.\n- **Timeline**: Sole Proprietor campaigns are typically approved or rejected within hours to days. Standard campaigns go through several layers of vetting, which takes up to 5 business days for standard use cases.\n- **Check status**: Monitor your campaign status in **Console > Messaging > Regulatory Compliance > Campaigns**, or [fetch the UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource) and check the `campaign_status` field.\n\nFor detailed resubmission steps, see [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns).\n\n#### Additional resources\n\n- [A2P 10DLC Overview](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Acceptable vs unacceptable privacy policy and T\\&C URLs](/docs/messaging/compliance/a2p-10dlc/collect-business-info#acceptable-vs-unacceptable-privacy-policy-and-tc-urls)\n- [Twilio's Messaging Policy](https://www.twilio.com/en-us/legal/messaging-policy)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* Your `message_flow` does not clearly explain who is opting in, where opt-in happens, or how consent is collected for this campaign.\n* You use more than one opt-in method, but you did not list every method in the campaign submission.\n* Your website opt-in flow is missing a public website link, a privacy policy link, terms of service, or hosted screenshots for a gated page, paper form, or other flow that a reviewer cannot access directly.\n* Your privacy policy does not include the required mobile-number non-sharing statement, message frequency, or a \"message and data rates may apply\" disclosure.\n* You indicate that users can opt in by texting a keyword, but you did not provide `opt_in_keywords` or a compliant `opt_in_message`.\n* Your opt-in description suggests consent is shared, transferred, or otherwise not collected specifically for this campaign.\n* You rely on verbal or offline opt-in, but the submission does not include enough detail for a reviewer to verify the flow.",
    "solutions": "* Rewrite the `message_flow` so it clearly explains how end users consent to receive messages. Include who is opting in, where the opt-in happens, and how the campaign collects consent. If you support more than one opt-in path, list every method.\n* If opt-in happens on a website, provide the website URL, a link to the privacy policy, and terms of service. If the opt-in flow is behind a login or collected on paper, provide a hosted screenshot or document that shows the exact opt-in language and form.\n* If users can subscribe by texting a keyword, provide `opt_in_keywords` and an `opt_in_message`. The opt-in response should include the brand name, confirmation of enrollment in a recurring campaign, how to get help, and clear opt-out instructions.\n* Update your privacy policy so it states that mobile numbers are not shared with third parties or affiliates for marketing or promotional purposes. Include message frequency and the required message and data rates disclosure.\n* Make sure your sample messages match the campaign use case and identify the brand in each sample. If possible, include opt-out language in at least one sample message to make review easier.\n* If you use verbal opt-in, describe the exact script or flow in enough detail that a reviewer can verify how consent is captured.",
    "description": "This error means your campaign submission was rejected during review because the opt-in details you provided don't adequately show how end users consent to receive messages. Campaign registration requires a clear `message_flow`, and website-based opt-in flows must include the website URL, privacy policy, terms of service, and any hosted screenshots needed for review.",
    "date_created": "2023-04-18T11:43:14Z",
    "last_updated": "2026-10-27T16:46:31-04:00"
  },
  {
    "code": 30897,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Disallowed Content",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign was rejected during vetting because the submitted use case includes disallowed content. Campaigns that contain forbidden use cases or prohibited content cannot be approved.\n\n### Possible causes\n\n- The campaign promotes high-risk financial services such as loan marketing, stock alerts, cryptocurrency, or other risky investment content.\n- The campaign involves third-party debt collection, debt reduction, credit repair, or third-party lead generation.\n- The campaign includes gambling, sweepstakes, or federally illegal substances.\n- The campaign's business model or message content falls into a forbidden category for messaging in the US and Canada or otherwise violates Messaging Policy requirements. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n\n### Possible solutions\n\n- Do not resubmit the same campaign. Campaigns rejected for disallowed content are ineligible for resubmission.\n- Review your campaign use case, sample messages, and business model against the forbidden message categories and Messaging Policy before creating a different compliant campaign. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n- If you believe the rejection was made in error, contact Twilio Support.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Forbidden Message Categories in the US and Canada](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Requirements)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The campaign promotes high-risk financial services such as loan marketing, stock alerts, cryptocurrency, or other risky investment content.\n* The campaign involves third-party debt collection, debt reduction, credit repair, or third-party lead generation.\n* The campaign includes gambling, sweepstakes, or federally illegal substances.\n* The campaign's business model or message content falls into a forbidden category for messaging in the US and Canada or otherwise violates Messaging Policy requirements. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))",
    "solutions": "* Do not resubmit the same campaign. Campaigns rejected for disallowed content are ineligible for resubmission.\n* Review your campaign use case, sample messages, and business model against the forbidden message categories and Messaging Policy before creating a different compliant campaign. ([help.twilio.com](https://help.twilio.com/articles/360045004974-Forbidden-message-categories-for-SMS-and-MMS-in-the-US-and-Canada))\n* If you believe the rejection was made in error, contact Twilio Support.",
    "description": "This error means your A2P 10DLC campaign was rejected during vetting because the submitted use case includes disallowed content. Campaigns that contain forbidden use cases or prohibited content cannot be approved.",
    "date_created": "2023-04-18T11:44:01Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30898,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Excessive EIN",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign was rejected during manual vetting because the same EIN or tax ID has been used for too many Brand registrations, or because the registration appears duplicative without a clear business reason. Twilio reviews Campaigns for duplicate or high-risk Brand patterns, and Campaigns tied to excessive Brand registrations under one EIN can be rejected even when the Campaign details are otherwise valid.\n\n### Possible causes\n\n- You registered multiple Brands with the same EIN, and the number of Brand registrations exceeded what campaign vetting allows without a clear and valid business reason.\n- Your Campaign was submitted on a Brand that duplicates an existing business identity already registered under the same EIN.\n- You created separate Brands for traffic that should be grouped under an existing approved Brand and Campaign structure.\n\n### Possible solutions\n\n- Review all existing A2P 10DLC Brand registrations that use the same EIN. Remove unnecessary duplication and keep only the minimum number of Brands needed for distinct business identities or use cases.\n- Use an existing approved Brand when the business identity is the same, instead of creating another Brand with the same EIN. Then resubmit the Campaign under the correct Brand if needed.\n- If you need multiple Brands under one EIN, make sure you can show a clear and valid business reason before you resubmit.\n- Do not resubmit the rejected Campaign until you correct the underlying Brand registration issue. If you believe the rejection was made in error, contact Support to appeal after you verify your Brand structure and EIN usage.\n\n#### Additional resources\n\n- [US A2P 10DLC overview](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* You registered multiple Brands with the same EIN, and the number of Brand registrations exceeded what campaign vetting allows without a clear and valid business reason.\n* Your Campaign was submitted on a Brand that duplicates an existing business identity already registered under the same EIN.\n* You created separate Brands for traffic that should be grouped under an existing approved Brand and Campaign structure.",
    "solutions": "* Review all existing A2P 10DLC Brand registrations that use the same EIN. Remove unnecessary duplication and keep only the minimum number of Brands needed for distinct business identities or use cases.\n* Use an existing approved Brand when the business identity is the same, instead of creating another Brand with the same EIN. Then resubmit the Campaign under the correct Brand if needed.\n* If you need multiple Brands under one EIN, make sure you can show a clear and valid business reason before you resubmit.\n* Do not resubmit the rejected Campaign until you correct the underlying Brand registration issue. If you believe the rejection was made in error, contact Support to appeal after you verify your Brand structure and EIN usage.",
    "description": "This error means your A2P 10DLC campaign was rejected during manual vetting because the same EIN or tax ID has been used for too many Brand registrations, or because the registration appears duplicative without a clear business reason. Twilio reviews Campaigns for duplicate or high-risk Brand patterns, and Campaigns tied to excessive Brand registrations under one EIN can be rejected even when the Campaign details are otherwise valid.",
    "date_created": "2023-05-10T07:42:25Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30899,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign registration failed due to carrier rejection(s)",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means one or more carriers rejected your campaign registration. If the campaign `campaign_status` is `FAILED`, review the campaign `errors` array for any related rejection details, affected fields, and linked error pages.\n\n### Possible causes\n\n- Carrier review found inaccurate or inconsistent registration data, such as mismatches between your brand details, website, sample messages, and declared use case. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Your message flow or call to action did not clearly explain how end users opt in, or it did not include required disclosures such as opt-out instructions, customer care details, message frequency for recurring programs, or privacy policy information. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- The campaign appeared to involve prohibited, disallowed, or high-risk traffic, which can cause campaign rejection during ecosystem review. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n\n### Possible solutions\n\n- Fetch the `Usa2p` resource for the Messaging Service and review the `campaign_status` and `errors` fields to identify any related rejection codes, descriptions, and affected fields.\n- Update the campaign so the registered brand, website, sample messages, use case, and message flow are accurate, complete, and consistent. Make sure your opt-in flow and required disclosures are clearly documented before you resubmit. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Contact Twilio Support with your campaign SID, Messaging Service SID, and account details for resolution. If the rejection is not directly resubmittable, support can help you determine whether an appeal or a material campaign change is required.\n\n#### Additional resources\n\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [Usa2p resource API reference](/docs/messaging/api/usapptoperson-resource)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* Carrier review found inaccurate or inconsistent registration data, such as mismatches between your brand details, website, sample messages, and declared use case. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Your message flow or call to action did not clearly explain how end users opt in, or it did not include required disclosures such as opt-out instructions, customer care details, message frequency for recurring programs, or privacy policy information. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* The campaign appeared to involve prohibited, disallowed, or high-risk traffic, which can cause campaign rejection during ecosystem review. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))",
    "solutions": "* Fetch the `Usa2p` resource for the Messaging Service and review the `campaign_status` and `errors` fields to identify any related rejection codes, descriptions, and affected fields.\n* Update the campaign so the registered brand, website, sample messages, use case, and message flow are accurate, complete, and consistent. Make sure your opt-in flow and required disclosures are clearly documented before you resubmit. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Contact Twilio Support with your campaign SID, Messaging Service SID, and account details for resolution. If the rejection is not directly resubmittable, support can help you determine whether an appeal or a material campaign change is required.",
    "description": "This error means one or more carriers rejected your campaign registration. If the campaign `campaign_status` is `FAILED`, review the campaign `errors` array for any related rejection details, affected fields, and linked error pages.",
    "date_created": "2023-05-25T08:17:52Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30900,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejection - The campaign use case is ineligible for registration.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the A2P 10DLC campaign use case you submitted isn't eligible for the selected brand. You can only register a campaign with use cases that are available for that brand, and some use cases require additional carrier approval before registration can complete.\n\n### Possible causes\n\n- The submitted use case isn't supported for the selected brand. Use the A2P 10DLC Usecases subresource to retrieve valid use cases for a specific brand.\n- The selected use case isn't supported by one or more carriers, or it requires additional carrier review before approval.\n- The brand isn't qualified for the selected campaign use case.\n- The selected campaign falls outside the allowed sub-use case bounds for the brand.\n- A public, for-profit brand hasn't completed Authentication+, which is required before you can create a new campaign.\n\n### Possible solutions\n\n- Retrieve the available A2P 10DLC use cases for the brand and submit one of the returned `code` values.\n- Review your campaign description, message flow, sample messages, and opt-in and opt-out details. Make sure they match the selected `us_app_to_person_usecase`.\n- If the selected use case requires carrier review, wait for that review to complete or choose a different use case that accurately reflects your messaging program.\n- If you are registering a public, for-profit brand, update the `brand_contact_email` to use a company domain, complete Authentication+, and retry campaign registration. If you didn't receive the verification email, resend it from the Console or retrigger it with the 2FA verification resource after a failed verification.\n- If the campaign should be eligible and registration still fails, contact Support with your brand SID, Messaging Service SID, and campaign details.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC - Usecases subresource](/docs/messaging/api/usapptopersonusecase-resource)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The submitted use case isn't supported for the selected brand. Use the A2P 10DLC Usecases subresource to retrieve valid use cases for a specific brand.\n* The selected use case isn't supported by one or more carriers, or it requires additional carrier review before approval.\n* The brand isn't qualified for the selected campaign use case.\n* The selected campaign falls outside the allowed sub-use case bounds for the brand.\n* A public, for-profit brand hasn't completed Authentication+, which is required before you can create a new campaign.",
    "solutions": "* Retrieve the available A2P 10DLC use cases for the brand and submit one of the returned `code` values.\n* Review your campaign description, message flow, sample messages, and opt-in and opt-out details. Make sure they match the selected `us_app_to_person_usecase`.\n* If the selected use case requires carrier review, wait for that review to complete or choose a different use case that accurately reflects your messaging program.\n* If you are registering a public, for-profit brand, update the `brand_contact_email` to use a company domain, complete Authentication+, and retry campaign registration. If you didn't receive the verification email, resend it from the Console or retrigger it with the 2FA verification resource after a failed verification.\n* If the campaign should be eligible and registration still fails, contact Support with your brand SID, Messaging Service SID, and campaign details.",
    "description": "This error occurs when the A2P 10DLC campaign use case you submitted isn't eligible for the selected brand. You can only register a campaign with use cases that are available for that brand, and some use cases require additional carrier approval before registration can complete.",
    "date_created": "2023-05-25T08:29:40Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30901,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejection - The campaign registration request timed out.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nYour A2P 10DLC campaign registration request timed out before the review workflow completed. This usually means the campaign stayed under review too long or another party in the registration process did not return a decision within the expected service window. Check the current state in Console or by fetching the `UsAppToPerson` resource and reviewing `campaign_status`.\n\n### Possible causes\n\n- The campaign review did not complete before the request timed out.\n- A third party involved in A2P 10DLC registration did not respond within the expected service window.\n- The campaign required additional review because the use case, campaign description, sample messages, message flow, opt-in or opt-out details, website, or brand information was incomplete, unclear, or inconsistent.\n- The campaign was still in `PENDING` or `IN_PROGRESS` when the request timed out.\n\n### Possible solutions\n\n- Check the campaign in Messaging > Regulatory Compliance > Campaigns or fetch the `UsAppToPerson` resource. If `campaign_status` is `FAILED`, review the `errors` list to identify the rejected fields and correct them before you resubmit.\n- Review the campaign before you resubmit it. Make sure the selected use case matches your actual traffic and that the campaign description, sample messages, message flow, opt-in process, website, and brand details are complete and consistent.\n- If the campaign can be edited, update the existing failed campaign and resubmit it for approval instead of deleting it. Twilio allows repeated resubmissions, and the vetting fee is assessed only once per campaign.\n- Delete and recreate the campaign only when the selected use case is wrong or the failure is tied to the associated brand rather than the campaign details.\n- If the campaign remains pending beyond the current review window or repeated submissions continue to time out, contact Support with your account details, Messaging Service SID, and campaign information.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC - UsAppToPerson (Usa2p) resource](/docs/messaging/api/usapptoperson-resource)\n",
    "causes": "* The campaign review did not complete before the request timed out.\n* A third party involved in A2P 10DLC registration did not respond within the expected service window.\n* The campaign required additional review because the use case, campaign description, sample messages, message flow, opt-in or opt-out details, website, or brand information was incomplete, unclear, or inconsistent.\n* The campaign was still in `PENDING` or `IN_PROGRESS` when the request timed out.",
    "solutions": "* Check the campaign in Messaging > Regulatory Compliance > Campaigns or fetch the `UsAppToPerson` resource. If `campaign_status` is `FAILED`, review the `errors` list to identify the rejected fields and correct them before you resubmit.\n* Review the campaign before you resubmit it. Make sure the selected use case matches your actual traffic and that the campaign description, sample messages, message flow, opt-in process, website, and brand details are complete and consistent.\n* If the campaign can be edited, update the existing failed campaign and resubmit it for approval instead of deleting it. Twilio allows repeated resubmissions, and the vetting fee is assessed only once per campaign.\n* Delete and recreate the campaign only when the selected use case is wrong or the failure is tied to the associated brand rather than the campaign details.\n* If the campaign remains pending beyond the current review window or repeated submissions continue to time out, contact Support with your account details, Messaging Service SID, and campaign information.",
    "description": "Your A2P 10DLC campaign registration request timed out before the review workflow completed. This usually means the campaign stayed under review too long or another party in the registration process did not return a decision within the expected service window. Check the current state in Console or by fetching the `UsAppToPerson` resource and reviewing `campaign_status`.",
    "date_created": "2023-06-07T15:23:46Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 30902,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejection - A DCA2 rejected this campaign registration request.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign registration was rejected during third-party review. To approve a campaign, you must provide accurate campaign details that explain who is sending messages, who receives them, why the messages are sent, and how recipients opt in, opt out, and get help.\n\n### Possible causes\n\n- Your campaign description is too vague or does not clearly explain the sender, recipient, and purpose of the messages.\n- Your opt-in workflow or call to action is incomplete or unclear. Common gaps include missing consent details, missing opt-out instructions, missing HELP details, missing message frequency disclosure, missing privacy policy information, or missing \"message and data rates may apply\" language when required.\n- Your sample messages do not match the selected campaign use case, or they do not match the registered brand, website, or stated messaging purpose.\n- The website or business details in the registration are invalid, inaccessible, under construction, misspelled, or inconsistent with the business you are registering.\n- The campaign was flagged for prohibited or high-risk content, or for another non-compliant registration issue that cannot be approved as submitted.\n\n### Possible solutions\n\n- Review the campaign `failure_reason` in Console or API and update the specific fields that were rejected. In many cases, you can correct the campaign details and resubmit the same campaign for another review.\n- Rewrite your campaign description so it clearly states who is sending messages, who receives them, and why the messages are being sent.\n- Fix your opt-in flow so it clearly documents how recipients consent to messages. Include the required disclosures for your use case, along with clear HELP and STOP instructions where applicable.\n- Update your sample messages, use case selection, brand details, and website so they are accurate and consistent with each other and with the actual traffic you plan to send.\n- If the issue is tied to prohibited content, an unsupported use case, or a problem with the associated Brand rather than the campaign text itself, correct the underlying issue before submitting a new campaign. If you believe the rejection was made in error, contact Support with your campaign and account details.\n- If you only need to correct campaign details, resubmit the edited campaign instead of deleting and recreating it. Rejected campaigns can be updated and sent through vetting again.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* Your campaign description is too vague or does not clearly explain the sender, recipient, and purpose of the messages.\n* Your opt-in workflow or call to action is incomplete or unclear. Common gaps include missing consent details, missing opt-out instructions, missing HELP details, missing message frequency disclosure, missing privacy policy information, or missing \"message and data rates may apply\" language when required.\n* Your sample messages do not match the selected campaign use case, or they do not match the registered brand, website, or stated messaging purpose.\n* The website or business details in the registration are invalid, inaccessible, under construction, misspelled, or inconsistent with the business you are registering.\n* The campaign was flagged for prohibited or high-risk content, or for another non-compliant registration issue that cannot be approved as submitted.",
    "solutions": "* Review the campaign `failure_reason` in Console or API and update the specific fields that were rejected. In many cases, you can correct the campaign details and resubmit the same campaign for another review.\n* Rewrite your campaign description so it clearly states who is sending messages, who receives them, and why the messages are being sent.\n* Fix your opt-in flow so it clearly documents how recipients consent to messages. Include the required disclosures for your use case, along with clear HELP and STOP instructions where applicable.\n* Update your sample messages, use case selection, brand details, and website so they are accurate and consistent with each other and with the actual traffic you plan to send.\n* If the issue is tied to prohibited content, an unsupported use case, or a problem with the associated Brand rather than the campaign text itself, correct the underlying issue before submitting a new campaign. If you believe the rejection was made in error, contact Support with your campaign and account details.\n* If you only need to correct campaign details, resubmit the edited campaign instead of deleting and recreating it. Rejected campaigns can be updated and sent through vetting again.",
    "description": "This error means your A2P 10DLC campaign registration was rejected during third-party review. To approve a campaign, you must provide accurate campaign details that explain who is sending messages, who receives them, why the messages are sent, and how recipients opt in, opt out, and get help.",
    "date_created": "2023-07-12T20:28:38Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 30903,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejection - Incorrect Sole Prop Brand Registration",
    "secondary_message": null,
    "product": "Branded Comms, Trust-Hub",
    "products_used": [
      "messaging",
      "trust-hub"
    ],
    "docs": "\n## Description\n\nThis error occurs when you submit a campaign for a Sole Proprietor Brand that does not qualify for Sole Proprietor registration. Sole Proprietor Brands are only for businesses in the US or Canada that do not have an EIN, Canadian Business Number, or other tax ID. If the business has a tax ID, or if it is located outside the US or Canada, register it as a Low-Volume Standard or Standard Brand instead.\n\n### Possible causes\n\n- The business has an EIN or another tax ID, which makes it ineligible for Sole Proprietor registration.\n- The business is located outside the US or Canada. Sole Proprietor Brands and Campaigns are only intended for customers in the US or Canada without a tax ID.\n- The brand or profile submission includes incomplete, invalid, or inconsistent business information. Brand registrations can fail when business details are incomplete, formatted incorrectly, or do not match existing records.\n- The Sole Proprietor registration uses invalid registration details, such as a brand name that is not the real business name, a disposable email address, an invalid address, or a mobile number that cannot be used for verification.\n\n### Possible solutions\n\n- Confirm that the business is eligible for a Sole Proprietor Brand before you resubmit. If the business has a tax ID, register it as a Low-Volume Standard or Standard Brand instead.\n- Review the business details used for registration and correct them before resubmitting. Use the real business name or DBA, a valid email address, a valid US or Canadian address, and a valid US or Canadian mobile number for verification. Do not use a CPaaS number for the verification mobile number.\n- If the campaign failed because of brand or profile information, delete the failed campaign, correct the underlying brand or profile data, resubmit the brand, and then register a new campaign.\n- If you previously registered as a Sole Proprietor and now have an EIN or need Standard Brand capabilities, create a separate Customer Profile, Brand, and Campaign for a Standard or Low-Volume Standard registration.\n\n#### Additional resources\n\n- [US A2P 10DLC Overview](/docs/messaging/compliance/a2p-10dlc)\n- [Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Transition from a Sole Proprietor to a Standard Brand](/docs/messaging/compliance/a2p-10dlc/transition-sole-proprietor-to-standard-brand)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* The business has an EIN or another tax ID, which makes it ineligible for Sole Proprietor registration.\n* The business is located outside the US or Canada. Sole Proprietor Brands and Campaigns are only intended for customers in the US or Canada without a tax ID.\n* The brand or profile submission includes incomplete, invalid, or inconsistent business information. Brand registrations can fail when business details are incomplete, formatted incorrectly, or do not match existing records.\n* The Sole Proprietor registration uses invalid registration details, such as a brand name that is not the real business name, a disposable email address, an invalid address, or a mobile number that cannot be used for verification.",
    "solutions": "* Confirm that the business is eligible for a Sole Proprietor Brand before you resubmit. If the business has a tax ID, register it as a Low-Volume Standard or Standard Brand instead.\n* Review the business details used for registration and correct them before resubmitting. Use the real business name or DBA, a valid email address, a valid US or Canadian address, and a valid US or Canadian mobile number for verification. Do not use a CPaaS number for the verification mobile number.\n* If the campaign failed because of brand or profile information, delete the failed campaign, correct the underlying brand or profile data, resubmit the brand, and then register a new campaign.\n* If you previously registered as a Sole Proprietor and now have an EIN or need Standard Brand capabilities, create a separate Customer Profile, Brand, and Campaign for a Standard or Low-Volume Standard registration.",
    "description": "This error occurs when you submit a campaign for a Sole Proprietor Brand that does not qualify for Sole Proprietor registration. Sole Proprietor Brands are only for businesses in the US or Canada that do not have an EIN, Canadian Business Number, or other tax ID. If the business has a tax ID, or if it is located outside the US or Canada, register it as a Low-Volume Standard or Standard Brand instead.",
    "date_created": "2023-07-21T07:06:27Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30904,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Not Shared with Twilio",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nMessaging Service could not be associated with the Campaign because the specific Campaign was not found in Twilio's DCA records.\n\n### Possible causes\n\n- Campaign has not been shared with Twilio's DCA.\n- Provided campaignID is incorrect.\n\n### Possible solutions\n\n- Ensure that the Campaign has been successfully shared with Twilio as the DCA and has received approval.\n- Confirm that the entered CampaignID is accurate.\n- If needed, re-share the Campaign through TCR, await the CAMPAIGN\\_SHARE\\_ACCEPT webhook, and then proceed to assign the Messaging Service.\n\nAdditional help resources\n\n- [Changes to Externally Registered Campaign Submission](https://support.twilio.com/hc/en-us/articles/13097615242395-Changes-to-Externally-Registered-Campaign-Submission)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Campaign has not been shared with Twilio's DCA.\n* Provided campaignID is incorrect.",
    "solutions": "* Ensure that the Campaign has been successfully shared with Twilio as the DCA and has received approval.\n* Confirm that the entered CampaignID is accurate.\n* If needed, re-share the Campaign through TCR, await the CAMPAIGN\\_SHARE\\_ACCEPT webhook, and then proceed to assign the Messaging Service. Additional help resources * [Changes to Externally Registered Campaign Submission](https://support.twilio.com/hc/en-us/articles/13097615242395-Changes-to-Externally-Registered-Campaign-Submission)\n* [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)",
    "description": "Messaging Service could not be associated with the Campaign because the specific Campaign was not found in Twilio's DCA records.",
    "date_created": "2023-10-23T14:02:30Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30905,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Review Pending by Twilio",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nUnable to attach the Messaging Service to the Campaign as the Campaign is still under review and has not been accepted by Twilio's DCA.\n\n### Possible causes\n\n- Messaging Service was attempted to be associated before receiving the CAMPAIGN\\_SHARE\\_ACCEPT webhook from TCR.\n\n### Possible solutions\n\n- Await the CAMPAIGN\\_SHARE\\_ACCEPT webhook from TCR before assigning the Messaging Service to the CampaignID.\n- Note: Campaign will remain in a 'FAILED' state until the Messaging Service is successfully re-attached.\n\nAdditional help resources\n\n- [Changes to Externally Registered Campaign Submission](https://support.twilio.com/hc/en-us/articles/13097615242395-Changes-to-Externally-Registered-Campaign-Submission)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Messaging Service was attempted to be associated before receiving the CAMPAIGN\\_SHARE\\_ACCEPT webhook from TCR.",
    "solutions": "* Await the CAMPAIGN\\_SHARE\\_ACCEPT webhook from TCR before assigning the Messaging Service to the CampaignID.\n* Note: Campaign will remain in a 'FAILED' state until the Messaging Service is successfully re-attached. Additional help resources * [Changes to Externally Registered Campaign Submission](https://support.twilio.com/hc/en-us/articles/13097615242395-Changes-to-Externally-Registered-Campaign-Submission)\n* [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)",
    "description": "Unable to attach the Messaging Service to the Campaign as the Campaign is still under review and has not been accepted by Twilio's DCA.",
    "date_created": "2023-10-23T14:04:06Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30906,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Rejected by Twilio",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nMessaging Service could not be attached to the Campaign because Twilio's DCA declined the Campaign due to compliance violations.\n\n### Possible causes\n\n- Twilio identified compliance violations during the review process. The specific reason for rejection is provided in the CAMPAIGN\\_SHARE\\_DELETE webhook from TCR.\n\n### Possible solutions\n\n- Revise the Campaign details to address the compliance issues and re-share the Campaign with Twilio's DCA for another review.\n- For further clarification and resolution, contact Twilio Customer Support.\n\nAdditional help resources\n\n- [A2P 10DLC campaign approval best practices](https://support.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Changes to Externally Registered Campaign Submission](https://support.twilio.com/hc/en-us/articles/13097615242395-Changes-to-Externally-Registered-Campaign-Submission)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Twilio identified compliance violations during the review process. The specific reason for rejection is provided in the CAMPAIGN\\_SHARE\\_DELETE webhook from TCR.",
    "solutions": "* Revise the Campaign details to address the compliance issues and re-share the Campaign with Twilio's DCA for another review.\n* For further clarification and resolution, contact Twilio Customer Support. Additional help resources * [A2P 10DLC campaign approval best practices](https://support.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n* [Changes to Externally Registered Campaign Submission](https://support.twilio.com/hc/en-us/articles/13097615242395-Changes-to-Externally-Registered-Campaign-Submission)\n* [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)",
    "description": "Messaging Service could not be attached to the Campaign because Twilio's DCA declined the Campaign due to compliance violations.",
    "date_created": "2023-10-23T14:05:05Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30907,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Website URL Validation Issue",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign was rejected because the website URL in your registration doesn't match the brand, campaign purpose, consent flow, or sample messages you submitted. Reviewers compare the website, campaign description, opt-in flow, and sample messages to confirm that they all identify the same sender and the same messaging use case.\n\n### Possible causes\n\n- The submitted website URL doesn't represent the same business as the registered brand.\n- The website isn't functional or doesn't relate to the business name in the registration.\n- The website content describes a different business, product, or campaign purpose than the campaign details you submitted.\n- Your campaign description, `message_flow`, or sample messages reference a different brand name, domain, or use case than the website URL you provided.\n- Your sample messages don't identify the brand by name or website.\n- Your registration uses a website-based opt-in flow, but the required consent details are missing, not publicly accessible, or don't match the campaign.\n- If you are registering on behalf of a customer, you submitted your own platform or company website instead of the end customer's business website.\n\n### Possible solutions\n\n- Submit a live business website that represents the same business named in your brand registration.\n- Update the website URL, business name, campaign description, consent flow, and sample messages so they all describe the same sender and the same messaging use case.\n- If customers opt in on your website, include the website URL in `message_flow` and make sure the site includes both a privacy policy and terms of service.\n- Include a privacy policy link when the opt-in flow is website-based. Make sure the privacy policy covers non-sharing of mobile numbers, message frequency, and a message and data rates disclosure.\n- If the opt-in flow or other supporting content isn't publicly accessible on the website, provide a public URL to hosted screenshots of the relevant pages.\n- Update your sample messages so they align with the campaign description and identify the brand by name or website.\n- If you are an ISV, register the end customer's actual brand and business website instead of your own company website.\n- After you correct the registration details, update and resubmit the campaign for review.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The submitted website URL doesn't represent the same business as the registered brand.\n* The website isn't functional or doesn't relate to the business name in the registration.\n* The website content describes a different business, product, or campaign purpose than the campaign details you submitted.\n* Your campaign description, `message_flow`, or sample messages reference a different brand name, domain, or use case than the website URL you provided.\n* Your sample messages don't identify the brand by name or website.\n* Your registration uses a website-based opt-in flow, but the required consent details are missing, not publicly accessible, or don't match the campaign.\n* If you are registering on behalf of a customer, you submitted your own platform or company website instead of the end customer's business website.",
    "solutions": "* Submit a live business website that represents the same business named in your brand registration.\n* Update the website URL, business name, campaign description, consent flow, and sample messages so they all describe the same sender and the same messaging use case.\n* If customers opt in on your website, include the website URL in `message_flow` and make sure the site includes both a privacy policy and terms of service.\n* Include a privacy policy link when the opt-in flow is website-based. Make sure the privacy policy covers non-sharing of mobile numbers, message frequency, and a message and data rates disclosure.\n* If the opt-in flow or other supporting content isn't publicly accessible on the website, provide a public URL to hosted screenshots of the relevant pages.\n* Update your sample messages so they align with the campaign description and identify the brand by name or website.\n* If you are an ISV, register the end customer's actual brand and business website instead of your own company website.\n* After you correct the registration details, update and resubmit the campaign for review.",
    "description": "This error means your A2P 10DLC campaign was rejected because the website URL in your registration doesn't match the brand, campaign purpose, consent flow, or sample messages you submitted. Reviewers compare the website, campaign description, opt-in flow, and sample messages to confirm that they all identify the same sender and the same messaging use case.",
    "date_created": "2023-11-09T16:25:32Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30908,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign vetting rejection - Compliant Privacy Policy Required",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign submission was rejected during vetting because the privacy policy in your registration could not be verified as compliant. This usually means the privacy policy was missing from the website or `message_flow`, contained conflicting information, or did not include the required statement that mobile information and messaging consent are not shared with third parties or affiliates for marketing or promotional purposes.\n\n### Possible causes\n\n- Your campaign registration request does not include a `PrivacyPolicyUrl`. This field is required for all new A2P 10DLC campaign submissions.\n- A compliant privacy policy was not found on the website you submitted or in the `message_flow` details.\n- Your registration points to multiple privacy policies or inconsistent policy content, which prevents review from confirming which policy applies.\n- Your privacy policy says mobile information, opt-in data, or consent data is shared, sold, or otherwise provided to third parties or affiliates for marketing or promotional purposes.\n- Your privacy policy does not clearly explain what data you collect and how you use it for messaging.\n- Your website-based opt-in flow is missing required messaging disclosures in the privacy policy, such as message frequency or the \"message and data rates may apply\" disclosure.\n\n### Possible solutions\n\n- Add a `PrivacyPolicyUrl` to your campaign registration request. The URL must be publicly accessible, not behind a login, and point to a privacy policy relevant to your registered brand.\n- Add a publicly accessible privacy policy to the website used in your campaign registration and include the direct policy link in your `message_flow`. If you register through the API, provide the same public URL in `PrivacyPolicyUrl`.\n- Update the privacy policy so it clearly states that mobile information and messaging consent are not shared with third parties or affiliates for marketing or promotional purposes.\n- Make sure the privacy policy explains what customer data you collect and how that data is used in your messaging program.\n- If your opt-in flow happens on a website, include the required messaging disclosures in the privacy policy, including message frequency and \"message and data rates may apply.\"\n- Remove duplicate or conflicting privacy policies so reviewers can verify one clear policy for the registered brand and campaign.\n\n### Fix by cause\n\n#### Privacy policy missing the non-sharing statement\n\n<Warning>\n  The following privacy policy language would be rejected:\n\n  `We may share your personal information with third-party partners for marketing purposes.`\n\n  This directly contradicts the required non-sharing statement for mobile messaging consent data.\n</Warning>\n\n<Info>\n  The following privacy policy language would pass review:\n\n  `We do not share, sell, or provide your mobile phone number or messaging consent data to third parties or affiliates for marketing or promotional purposes.`\n\n  Passes because it explicitly states that mobile opt-in data is not shared with third parties for marketing.\n</Info>\n\n#### Multiple or conflicting privacy policies\n\n<Warning>\n  The following submission would be rejected:\n\n  A website with two different privacy policy pages that contain conflicting statements about data sharing. Reviewers cannot determine which policy applies.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  A single, clearly labeled privacy policy linked from the opt-in page at www.acmesandwich.com/privacy. The policy states mobile numbers are not shared, includes message frequency, and includes \"message and data rates may apply.\"\n\n  Passes because there is one unambiguous privacy policy that meets all disclosure requirements.\n</Info>\n\n#### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your campaign registration request does not include a `PrivacyPolicyUrl`. This field is required for all new A2P 10DLC campaign submissions.\n* A compliant privacy policy was not found on the website you submitted or in the `message_flow` details.\n* Your registration points to multiple privacy policies or inconsistent policy content, which prevents review from confirming which policy applies.\n* Your privacy policy says mobile information, opt-in data, or consent data is shared, sold, or otherwise provided to third parties or affiliates for marketing or promotional purposes.\n* Your privacy policy does not clearly explain what data you collect and how you use it for messaging.\n* Your website-based opt-in flow is missing required messaging disclosures in the privacy policy, such as message frequency or the \"message and data rates may apply\" disclosure.",
    "solutions": "* Add a `PrivacyPolicyUrl` to your campaign registration request. The URL must be publicly accessible, not behind a login, and point to a privacy policy relevant to your registered brand.\n* Add a publicly accessible privacy policy to the website used in your campaign registration and include the direct policy link in your `message_flow`. If you register through the API, provide the same public URL in `PrivacyPolicyUrl`.\n* Update the privacy policy so it clearly states that mobile information and messaging consent are not shared with third parties or affiliates for marketing or promotional purposes.\n* Make sure the privacy policy explains what customer data you collect and how that data is used in your messaging program.\n* If your opt-in flow happens on a website, include the required messaging disclosures in the privacy policy, including message frequency and \"message and data rates may apply.\"\n* Remove duplicate or conflicting privacy policies so reviewers can verify one clear policy for the registered brand and campaign.",
    "description": "Your A2P 10DLC campaign submission was rejected during vetting because the privacy policy in your registration could not be verified as compliant. This usually means the privacy policy was missing from the website or `message_flow`, contained conflicting information, or did not include the required statement that mobile information and messaging consent are not shared with third parties or affiliates for marketing or promotional purposes.",
    "date_created": "2023-11-09T16:26:34Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30909,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Campaign rejected: Message Flow or Call to Action incomplete/unverified",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "## Description\n\nThis error occurs when an A2P 10DLC campaign's Message Flow or Call to Action does not provide enough information to verify how users consent to receive messages. The Message Flow is the [`message_flow` field](/docs/messaging/api/usapptoperson-resource#usa2p-properties) on the UsAppToPerson resource. In the Twilio Console at `1console.twilio.com`, it appears as **How do end-users opt in to receive messages?** under **End user consent (message flow)**.\n\n<Info>\n  Your campaign rejection may also return a more specific error code. If you received one of these alongside or instead of 30909, follow the linked page for targeted guidance:\n\n  - [30543 - Live opt-in link not provided](/docs/api/errors/30543)\n  - [30544 - Call-to-Action does not state the message purpose](/docs/api/errors/30544)\n  - [30545 - Call-to-Action does not state message frequency](/docs/api/errors/30545)\n  - [30547 - Call-to-Action is missing opt-out instructions](/docs/api/errors/30547)\n  - [30549 - No Terms of Service link found in the opt-in flow](/docs/api/errors/30549)\n  - [30550 - No Privacy Policy link found in the opt-in flow](/docs/api/errors/30550)\n  - [30551 - Consent does not specify SMS or text messaging](/docs/api/errors/30551)\n  - [30556 - SMS consent is bundled with other communication channels](/docs/api/errors/30556)\n  - [30568 - Call-to-Action is missing the business or brand name](/docs/api/errors/30568)\n  - [30569 - Call-to-Action is missing the message and data rates disclosure](/docs/api/errors/30569)\n  - [30570 - Call-to-Action is missing customer-support instructions](/docs/api/errors/30570)\n  - [30896 - Opt-in Error](/docs/api/errors/30896)\n  - [30907 - Website URL Validation Issue](/docs/api/errors/30907)\n  - [30908 - Compliant Privacy Policy Required](/docs/api/errors/30908)\n  - [30917 - All opt-in methods must include complete workflow descriptions](/docs/api/errors/30917)\n  - [30919 - Website lacks sufficient business or messaging use case info](/docs/api/errors/30919)\n  - [30921 - Website requires authentication and cannot be reviewed](/docs/api/errors/30921)\n  - [30924 - Missing or non-compliant consent agreement language in opt-in flow](/docs/api/errors/30924)\n  - [30925 - Opt-in must be unchecked by default; active consent required](/docs/api/errors/30925)\n  - [30933 - Privacy Policy URL is required](/docs/api/errors/30933)\n  - [30934 - Terms and Conditions URL is required](/docs/api/errors/30934)\n\n  See [Why Was My A2P 10DLC Campaign Registration Rejected?](https://help.twilio.com/articles/15778026827291-A2P-10DLC-Campaign-Registration-Rejected) for the full list of rejection codes.\n</Info>\n\n### Possible causes\n\n- The `message_flow` does not clearly describe how users opt in, or does not describe every opt-in method the campaign uses.\n- A keyword flow omits the keyword, destination number, or where users encounter the opt-in instructions.\n- A paper, verbal, QR-code, in-store, or non-public opt-in flow lacks publicly accessible supporting evidence.\n- A verbal opt-in is described with a one-line summary instead of the full script.\n\n### Possible solutions\n\n1. Open the rejected campaign and update its message flow:\n\n   - In the Twilio Console at `1console.twilio.com`, open [A2P 10DLC Campaigns](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/a2p-campaigns/campaigns). Select the campaign, select **Edit & resubmit**, and then select **Start**. Update the **Message Flow: How do end-users consent to receive messages?** field.\n   - In the Legacy Console, go to **Messaging > Regulatory Compliance > Campaigns** and select the failed campaign. Select **Fix Campaign**, then update **How do end-users consent to receive messages? (40-2048 characters)** in the **Edit A2P Campaign Details** dialog.\n   - If you use the API, update the corresponding `message_flow` field.\n\n   Provide a complete, end-to-end description of each opt-in path in 40 to 2048 characters.\n2. Make sure the consent language users see at opt-in names your brand and states what messages they'll receive, and describe it in `message_flow`. A missing brand name returns [30568](/docs/api/errors/30568). A missing message purpose returns [30544](/docs/api/errors/30544).\n3. For keyword opt-in, include the exact keyword, destination number, and where the instructions appear. Populate [`opt_in_keywords`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#opt_in_keywords) and [`opt_in_message`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#opt_in_message), which are required when users can subscribe by texting a keyword.\n4. For website opt-in, provide the page URL and ensure that the consent experience:\n   - Clearly requests permission to send SMS messages.\n   - If it uses a checkbox or similar consent control, the control is optional and unchecked by default.\n   - Includes message frequency, a \"message and data rates may apply\" disclosure, opt-out instructions such as \"Reply STOP to unsubscribe,\" and customer-support instructions such as \"Reply HELP for help.\"\n5. For paper, verbal, in-store, or other offline opt-in, describe the complete process and provide a publicly accessible URL with supporting evidence, such as hosted screenshots, a photo of the form, or the verbal script. For verbal opt-in, provide the full script that staff read to users, not a one-line summary.\n6. Provide publicly accessible Privacy Policy and Terms and Conditions URLs. In the Legacy Console and the Twilio Console at `1console.twilio.com`, include them in the opt-in description. If you use the API, set the [`privacy_policy_url` and `terms_and_conditions_url`](/docs/messaging/api/usapptoperson-resource#usa2p-properties) fields. A missing Privacy Policy URL returns [30933](/docs/api/errors/30933), and a missing Terms and Conditions URL returns [30934](/docs/api/errors/30934). The Privacy Policy must state that mobile numbers aren't shared with third parties and include the messaging disclosures. The Terms and Conditions page must be publicly accessible and hosted on the business website. See [Acceptable vs. unacceptable privacy policy and T\\&C URLs](/docs/messaging/compliance/a2p-10dlc/collect-business-info#acceptable-vs-unacceptable-privacy-policy-and-tc-urls).\n7. Correct every rejection reason, then review and resubmit the campaign:\n   - In the Twilio Console at `1console.twilio.com`, select **I confirm the information entered here is ready to submit for review**, select **Run error check (1-2 min)**, and follow the prompts to resubmit.\n   - In the Legacy Console, review and select the agreement below the campaign fields, then select **Update**.\n\n<Info>\n  These changes make the consent flow easier to verify, but they do not guarantee approval. Review the rejection details for any additional or more specific error codes.\n</Info>\n\n### Examples\n\n#### Website opt-in\n\n```text\nCustomers visit www.acmecoffee.example/sms, enter their phone number, and select an optional checkbox that is unchecked by default to agree to recurring promotional messages from Acme Coffee.\nMessage frequency varies. Message and data rates may apply. Reply STOP to unsubscribe. Reply HELP for help.\nTerms: www.acmecoffee.example/terms. Privacy Policy: www.acmecoffee.example/privacy.\n```\n\n#### Multiple opt-in paths\n\n```text\nCustomers opt in by either (1) visiting www.acmecoffee.example/sms and selecting the optional, unchecked SMS consent box, or (2) following instructions on Acme Coffee receipts to text JOIN to (555) 123-4567.\nThe keyword flow sends a confirmation of enrollment in recurring Acme Coffee promotional messages.\nMessage frequency varies. Message and data rates may apply. Reply STOP to unsubscribe. Reply HELP for help.\nTerms: www.acmecoffee.example/terms. Privacy Policy: www.acmecoffee.example/privacy.\n```\n\nAdapt the description to your actual consent process. Do not describe an opt-in path that users do not encounter.\n\n### Resubmit the campaign\n\nFollow the Console-specific steps in [Possible solutions](#possible-solutions) to edit and resubmit the existing campaign. Resubmitting retains the campaign and avoids a second vetting fee, but it starts a new review that takes up to 5 business days for standard use cases. You can also [fetch the UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource) and check `campaign_status`.\n\nAPI-based campaign updates are available only to accounts with access to the relevant Private Beta. Without access, API customers can delete and recreate the campaign, but the replacement campaign incurs a new vetting fee.\n\nFor detailed instructions, see [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1).\n\n### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Why Was My A2P 10DLC Campaign Registration Rejected?](https://help.twilio.com/articles/15778026827291-A2P-10DLC-Campaign-Registration-Rejected)\n- [A2P 10DLC Campaign Vetting and Messaging Compliance (video)](https://www.youtube.com/watch?v=IUXJbMD7Qz4)\n",
    "causes": "* The `message_flow` does not clearly describe how users opt in, or does not describe every opt-in method the campaign uses.\n* A keyword flow omits the keyword, destination number, or where users encounter the opt-in instructions.\n* A paper, verbal, QR-code, in-store, or non-public opt-in flow lacks publicly accessible supporting evidence.\n* A verbal opt-in is described with a one-line summary instead of the full script.",
    "solutions": "1. Open the rejected campaign and update its message flow:\n\n   * In the Twilio Console at `1console.twilio.com`, open [A2P 10DLC Campaigns](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/a2p-campaigns/campaigns). Select the campaign, select **Edit & resubmit**, and then select **Start**. Update the **Message Flow: How do end-users consent to receive messages?** field.\n   * In the Legacy Console, go to **Messaging > Regulatory Compliance > Campaigns** and select the failed campaign. Select **Fix Campaign**, then update **How do end-users consent to receive messages? (40-2048 characters)** in the **Edit A2P Campaign Details** dialog.\n   * If you use the API, update the corresponding `message_flow` field.\n\n   Provide a complete, end-to-end description of each opt-in path in 40 to 2048 characters.\n2. Make sure the consent language users see at opt-in names your brand and states what messages they'll receive, and describe it in `message_flow`. A missing brand name returns [30568](/docs/api/errors/30568). A missing message purpose returns [30544](/docs/api/errors/30544).\n3. For keyword opt-in, include the exact keyword, destination number, and where the instructions appear. Populate [`opt_in_keywords`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#opt_in_keywords) and [`opt_in_message`](/docs/messaging/compliance/a2p-10dlc/collect-business-info#opt_in_message), which are required when users can subscribe by texting a keyword.\n4. For website opt-in, provide the page URL and ensure that the consent experience:\n   * Clearly requests permission to send SMS messages.\n   * If it uses a checkbox or similar consent control, the control is optional and unchecked by default.\n   * Includes message frequency, a \"message and data rates may apply\" disclosure, opt-out instructions such as \"Reply STOP to unsubscribe,\" and customer-support instructions such as \"Reply HELP for help.\"\n5. For paper, verbal, in-store, or other offline opt-in, describe the complete process and provide a publicly accessible URL with supporting evidence, such as hosted screenshots, a photo of the form, or the verbal script. For verbal opt-in, provide the full script that staff read to users, not a one-line summary.\n6. Provide publicly accessible Privacy Policy and Terms and Conditions URLs. In the Legacy Console and the Twilio Console at `1console.twilio.com`, include them in the opt-in description. If you use the API, set the [`privacy_policy_url` and `terms_and_conditions_url`](/docs/messaging/api/usapptoperson-resource#usa2p-properties) fields. A missing Privacy Policy URL returns [30933](/docs/api/errors/30933), and a missing Terms and Conditions URL returns [30934](/docs/api/errors/30934). The Privacy Policy must state that mobile numbers aren't shared with third parties and include the messaging disclosures. The Terms and Conditions page must be publicly accessible and hosted on the business website. See [Acceptable vs. unacceptable privacy policy and T\\&C URLs](/docs/messaging/compliance/a2p-10dlc/collect-business-info#acceptable-vs-unacceptable-privacy-policy-and-tc-urls).\n7. Correct every rejection reason, then review and resubmit the campaign:\n   * In the Twilio Console at `1console.twilio.com`, select **I confirm the information entered here is ready to submit for review**, select **Run error check (1-2 min)**, and follow the prompts to resubmit.\n   * In the Legacy Console, review and select the agreement below the campaign fields, then select **Update**. <Info>\n  These changes make the consent flow easier to verify, but they do not guarantee approval. Review the rejection details for any additional or more specific error codes.\n</Info>",
    "description": "This error occurs when an A2P 10DLC campaign's Message Flow or Call to Action does not provide enough information to verify how users consent to receive messages. The Message Flow is the [`message_flow` field](/docs/messaging/api/usapptoperson-resource#usa2p-properties) on the UsAppToPerson resource. In the Twilio Console at `1console.twilio.com`, it appears as **How do end-users opt in to receive messages?** under **End user consent (message flow)**. <Info>\n  Your campaign rejection may also return a more specific error code. If you received one of these alongside or instead of 30909, follow the linked page for targeted guidance: - [30543 - Live opt-in link not provided](/docs/api/errors/30543)\n- [30544 - Call-to-Action does not state the message purpose](/docs/api/errors/30544)\n- [30545 - Call-to-Action does not state message frequency](/docs/api/errors/30545)\n- [30547 - Call-to-Action is missing opt-out instructions](/docs/api/errors/30547)\n- [30549 - No Terms of Service link found in the opt-in flow](/docs/api/errors/30549)\n- [30550 - No Privacy Policy link found in the opt-in flow](/docs/api/errors/30550)\n- [30551 - Consent does not specify SMS or text messaging](/docs/api/errors/30551)\n- [30556 - SMS consent is bundled with other communication channels](/docs/api/errors/30556)\n- [30568 - Call-to-Action is missing the business or brand name](/docs/api/errors/30568)\n- [30569 - Call-to-Action is missing the message and data rates disclosure](/docs/api/errors/30569)\n- [30570 - Call-to-Action is missing customer-support instructions](/docs/api/errors/30570)\n- [30896 - Opt-in Error](/docs/api/errors/30896)\n- [30907 - Website URL Validation Issue](/docs/api/errors/30907)\n- [30908 - Compliant Privacy Policy Required](/docs/api/errors/30908)\n- [30917 - All opt-in methods must include complete workflow descriptions](/docs/api/errors/30917)\n- [30919 - Website lacks sufficient business or messaging use case info](/docs/api/errors/30919)\n- [30921 - Website requires authentication and cannot be reviewed](/docs/api/errors/30921)\n- [30924 - Missing or non-compliant consent agreement language in opt-in flow](/docs/api/errors/30924)\n- [30925 - Opt-in must be unchecked by default; active consent required](/docs/api/errors/30925)\n- [30933 - Privacy Policy URL is required](/docs/api/errors/30933)\n- [30934 - Terms and Conditions URL is required](/docs/api/errors/30934) See [Why Was My A2P 10DLC Campaign Registration Rejected?](https://help.twilio.com/articles/15778026827291-A2P-10DLC-Campaign-Registration-Rejected) for the full list of rejection codes. </Info>",
    "date_created": "2023-11-09T16:27:25Z",
    "last_updated": "2026-10-27T16:46:31-04:00"
  },
  {
    "code": 30910,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: A2P 10DLC campaigns must be submitted in English",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio rejects your A2P 10DLC campaign when campaign registration fields include non-English content. Submit the campaign description, `message_flow`, sample messages, and related registration details in English so reviewers can verify your use case and consent flow.\n\n### Possible causes\n\n- The campaign description includes text in a language other than English.\n- The `message_flow` field includes non-English opt-in details or disclosures without an English translation for review. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- One or more sample messages are written in another language without an English translation.\n- Registration fields contain mixed-language content that does not clearly describe the campaign for verification.\n\n### Possible solutions\n\n- Rewrite all campaign registration fields in English before you resubmit the campaign.\n- If your end-user disclosures or message samples are presented in another language, include an English translation in the registration details and in `message_flow` for verification. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Make sure your sample messages match the registered use case, identify the brand, and include required opt-out language where applicable.\n- Review the campaign details requirements, update the rejected fields, and then resubmit the campaign for review.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The campaign description includes text in a language other than English.\n* The `message_flow` field includes non-English opt-in details or disclosures without an English translation for review. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* One or more sample messages are written in another language without an English translation.\n* Registration fields contain mixed-language content that does not clearly describe the campaign for verification.",
    "solutions": "* Rewrite all campaign registration fields in English before you resubmit the campaign.\n* If your end-user disclosures or message samples are presented in another language, include an English translation in the registration details and in `message_flow` for verification. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Make sure your sample messages match the registered use case, identify the brand, and include required opt-out language where applicable.\n* Review the campaign details requirements, update the rejected fields, and then resubmit the campaign for review.",
    "description": "Twilio rejects your A2P 10DLC campaign when campaign registration fields include non-English content. Submit the campaign description, `message_flow`, sample messages, and related registration details in English so reviewers can verify your use case and consent flow.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30911,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Duplicate template text; each field must be unique",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when your A2P 10DLC campaign reuses the same or nearly identical text across multiple registration fields. Write the campaign description, message flow, and sample messages as separate, field-specific explanations so reviewers can verify your use case, consent flow, and representative message content.\n\n### Possible causes\n\n- You used the same boilerplate text in `description`, `message_flow`, and `message_samples` instead of providing a distinct explanation for each field.\n- Your campaign description is too generic and does not clearly explain who is sending the messages, who will receive them, and why the messages are sent.\n- Your message flow does not clearly describe how end users opt in, or it repeats text from another field instead of documenting the consent workflow.\n- Your sample messages do not reflect the actual campaign, do not align with the registered use case, or do not show representative message variations.\n\n### Possible solutions\n\n- Rewrite each registration field for its specific purpose. In `description`, explain who sends the messages, who receives them, and why the messages are sent.\n- Update `message_flow` with a complete, verifiable opt-in workflow. List every opt-in method you use, and include the relevant website, terms, privacy policy, or hosted screenshots when the opt-in flow is not publicly accessible.\n- Replace duplicate sample text with representative sample messages that match the campaign use case. Provide two to five sample messages, identify the brand in each message, and use `[]` to mark variable content.\n- Include opt-out language in at least one sample message, and review the full registration for consistency across the brand, website, use case, and sample content before you resubmit. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n\n#### Additional resources\n\n- [A2P 10DLC registration application quickstart](/docs/messaging/compliance/a2p-10dlc/quickstart)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* You used the same boilerplate text in `description`, `message_flow`, and `message_samples` instead of providing a distinct explanation for each field.\n* Your campaign description is too generic and does not clearly explain who is sending the messages, who will receive them, and why the messages are sent.\n* Your message flow does not clearly describe how end users opt in, or it repeats text from another field instead of documenting the consent workflow.\n* Your sample messages do not reflect the actual campaign, do not align with the registered use case, or do not show representative message variations.",
    "solutions": "* Rewrite each registration field for its specific purpose. In `description`, explain who sends the messages, who receives them, and why the messages are sent.\n* Update `message_flow` with a complete, verifiable opt-in workflow. List every opt-in method you use, and include the relevant website, terms, privacy policy, or hosted screenshots when the opt-in flow is not publicly accessible.\n* Replace duplicate sample text with representative sample messages that match the campaign use case. Provide two to five sample messages, identify the brand in each message, and use `[]` to mark variable content.\n* Include opt-out language in at least one sample message, and review the full registration for consistency across the brand, website, use case, and sample content before you resubmit. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))",
    "description": "This error occurs when your A2P 10DLC campaign reuses the same or nearly identical text across multiple registration fields. Write the campaign description, message flow, and sample messages as separate, field-specific explanations so reviewers can verify your use case, consent flow, and representative message content.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30912,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: A2P 10DLC is for application-to-person messaging only",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because the campaign details describe personal or peer-to-peer messaging instead of business messaging sent from an application to a person. A2P 10DLC campaigns must represent a valid application-driven business use case.\n\n### Possible causes\n\n- The campaign description suggests personal communication between individuals instead of messages sent by a business application to end users.\n- The campaign description does not clearly explain who the sender is, who the recipients are, and why the recipients are receiving messages.\n- The selected use case, message flow, or sample messages do not match a valid A2P business campaign. Campaign details must align with the registered use case and the actual messages you plan to send.\n\n### Possible solutions\n\n- Update the campaign description so it clearly explains the business or application sending the messages, the intended recipients, and the reason each recipient receives them. Make sure the description aligns with the selected `us_app_to_person_usecase`.\n- Describe the application layer in your submission. Explain what system, software, or workflow triggers the messages, because A2P messaging must be sent from an application rather than from one individual to another.\n- Review and revise your `message_flow` and `message_samples` so they match the actual business use case and consent flow for the campaign. If the campaign failed review in Console, edit the failed campaign details and resubmit after correcting the flagged fields.\n- If your traffic is truly personal or peer-to-peer, do not submit it as an A2P 10DLC campaign. Use A2P 10DLC only for business messaging sent from an application to end users.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The campaign description suggests personal communication between individuals instead of messages sent by a business application to end users.\n* The campaign description does not clearly explain who the sender is, who the recipients are, and why the recipients are receiving messages.\n* The selected use case, message flow, or sample messages do not match a valid A2P business campaign. Campaign details must align with the registered use case and the actual messages you plan to send.",
    "solutions": "* Update the campaign description so it clearly explains the business or application sending the messages, the intended recipients, and the reason each recipient receives them. Make sure the description aligns with the selected `us_app_to_person_usecase`.\n* Describe the application layer in your submission. Explain what system, software, or workflow triggers the messages, because A2P messaging must be sent from an application rather than from one individual to another.\n* Review and revise your `message_flow` and `message_samples` so they match the actual business use case and consent flow for the campaign. If the campaign failed review in Console, edit the failed campaign details and resubmit after correcting the flagged fields.\n* If your traffic is truly personal or peer-to-peer, do not submit it as an A2P 10DLC campaign. Use A2P 10DLC only for business messaging sent from an application to end users.",
    "description": "Your A2P 10DLC campaign was rejected because the campaign details describe personal or peer-to-peer messaging instead of business messaging sent from an application to a person. A2P 10DLC campaigns must represent a valid application-driven business use case.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30913,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Marketing and informational consent must be separate",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio rejects this A2P 10DLC campaign when your opt-in flow combines consent for marketing messages with consent for informational or transactional messages. For marketing use cases, collect explicit written consent that is separate from any non-marketing consent. Consent applies only to the specific campaign and sender.\n\n### Possible causes\n\n- A single checkbox, form, or agreement covers both marketing messages and informational or transactional messages.\n- Your call to action or signup language groups all message types together and does not give end users a separate choice for marketing messages.\n- The campaign uses a Marketing use case, but the opt-in process relies on verbal consent instead of written consent.\n- The `message_flow` does not clearly explain how marketing consent is collected separately, or it does not give reviewers enough evidence to verify the opt-in process.\n\n### Possible solutions\n\n- Create a separate opt-in control for marketing messages, such as its own unchecked checkbox, signed form section, or text-in keyword flow.\n- Keep informational or transactional consent separate from marketing consent. If your campaign uses more than one opt-in method, list every method in `message_flow`.\n- For Marketing campaigns, collect written consent. A website checkbox, signed paper form, or text-in opt-in can satisfy this requirement.\n- If your opt-in flow is on a website, include the website URL, terms of service, privacy policy link, message frequency, and the \"message and data rates may apply\" disclosure.\n- If reviewers cannot access the opt-in flow directly, provide a publicly accessible URL with hosted screenshots or other evidence that shows the separate marketing consent flow.\n- After you update the opt-in process and campaign details, resubmit the campaign for review.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC required business information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* A single checkbox, form, or agreement covers both marketing messages and informational or transactional messages.\n* Your call to action or signup language groups all message types together and does not give end users a separate choice for marketing messages.\n* The campaign uses a Marketing use case, but the opt-in process relies on verbal consent instead of written consent.\n* The `message_flow` does not clearly explain how marketing consent is collected separately, or it does not give reviewers enough evidence to verify the opt-in process.",
    "solutions": "* Create a separate opt-in control for marketing messages, such as its own unchecked checkbox, signed form section, or text-in keyword flow.\n* Keep informational or transactional consent separate from marketing consent. If your campaign uses more than one opt-in method, list every method in `message_flow`.\n* For Marketing campaigns, collect written consent. A website checkbox, signed paper form, or text-in opt-in can satisfy this requirement.\n* If your opt-in flow is on a website, include the website URL, terms of service, privacy policy link, message frequency, and the \"message and data rates may apply\" disclosure.\n* If reviewers cannot access the opt-in flow directly, provide a publicly accessible URL with hosted screenshots or other evidence that shows the separate marketing consent flow.\n* After you update the opt-in process and campaign details, resubmit the campaign for review.",
    "description": "Twilio rejects this A2P 10DLC campaign when your opt-in flow combines consent for marketing messages with consent for informational or transactional messages. For marketing use cases, collect explicit written consent that is separate from any non-marketing consent. Consent applies only to the specific campaign and sender.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30914,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: sole proprietor campaign title does not match sole proprietor name",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because the title used in the sole proprietor campaign doesn't match the registered sole proprietor name on file. For sole proprietor registrations, the campaign details must be consistent with the brand identity verified during registration. A mismatch between the campaign title and the sole proprietor name raises verification concerns.\n\n### Possible causes\n\n- The campaign title references a business name, DBA, or alias that does not match the sole proprietor name submitted during brand registration.\n- The campaign title uses a shortened or informal version of the sole proprietor name.\n- The sole proprietor brand was registered with a name that does not match the name being used in the campaign.\n\n### Fields that must match\n\nFor sole proprietor campaigns, reviewers compare the campaign title against the name on your Brand registration. Both values must refer to the same person.\n\n| Field in campaign submission     | Field on Brand registration                         | Must match                                                                                               |\n| -------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |\n| Campaign title                   | Sole proprietor name (first and last name on Brand) | Exact match or close variant (for example, full legal name versus a common abbreviation of a first name) |\n| Brand name displayed in messages | Sole proprietor name                                | Same identity: no unrelated business names or DBAs                                                       |\n\n<Warning>\n  The following campaign title would be rejected:\n\n  **Brand registration name**: `Maria Johnson`\\\n  **Campaign title**: `MJ's Pet Grooming`\n\n  Rejected because the campaign title uses a business name that doesn't match the registered sole proprietor name. Reviewers cannot verify that \"MJ's Pet Grooming\" is the same identity as \"Maria Johnson.\"\n</Warning>\n\n<Info>\n  The following campaign title would pass review:\n\n  **Brand registration name**: `Maria Johnson`\\\n  **Campaign title**: `Maria Johnson`\n\n  Passes because the campaign title exactly matches the registered sole proprietor name. If you operate under a DBA, register as a standard (non-sole-proprietor) brand instead.\n</Info>\n\n### Possible solutions\n\n- Match the campaign title to your registered name. Resubmit the campaign with a title that matches or closely aligns with the sole proprietor name registered with your brand.\n- Update your brand registration. If your sole proprietor name has changed, update your brand registration first, then resubmit the campaign.\n- Review sole proprietor requirements. Visit the [A2P 10DLC Campaign Registration Guide](/docs/messaging/compliance/a2p-10dlc) for details on sole proprietor campaign requirements.\n- If you believe this rejection is incorrect, contact [Twilio support](https://support.twilio.com).\n\n### After you resubmit\n\nEdit the rejected campaign rather than deleting and recreating it. Resubmitting triggers a fresh review by The Campaign Registry (TCR).\n\n- **Vetting fee**: A vetting fee is assessed only once per campaign. Resubmitting the same campaign does not incur a new fee.\n- **Timeline**: Sole Proprietor campaigns are typically approved or rejected within hours to days. Standard campaigns go through several layers of vetting, which takes up to 5 business days for standard use cases.\n- **Check status**: Monitor your campaign status in **Console > Messaging > Regulatory Compliance > Campaigns**, or [fetch the UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource) and check the `campaign_status` field.\n\nFor detailed resubmission steps, see [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns).\n\n#### Additional resources\n\n- [A2P 10DLC Campaign Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting Sole Proprietor Brand registration failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n",
    "causes": "* The campaign title references a business name, DBA, or alias that does not match the sole proprietor name submitted during brand registration.\n* The campaign title uses a shortened or informal version of the sole proprietor name.\n* The sole proprietor brand was registered with a name that does not match the name being used in the campaign.",
    "solutions": "* Match the campaign title to your registered name. Resubmit the campaign with a title that matches or closely aligns with the sole proprietor name registered with your brand.\n* Update your brand registration. If your sole proprietor name has changed, update your brand registration first, then resubmit the campaign.\n* Review sole proprietor requirements. Visit the [A2P 10DLC Campaign Registration Guide](/docs/messaging/compliance/a2p-10dlc) for details on sole proprietor campaign requirements.\n* If you believe this rejection is incorrect, contact [Twilio support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because the title used in the sole proprietor campaign doesn't match the registered sole proprietor name on file. For sole proprietor registrations, the campaign details must be consistent with the brand identity verified during registration. A mismatch between the campaign title and the sole proprietor name raises verification concerns.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T16:46:31-04:00"
  },
  {
    "code": 30915,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sole Proprietor classification is invalid - business is a registered legal entity",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers, Trust-Hub",
    "products_used": [
      "messaging",
      "phone-numbers",
      "trust-hub"
    ],
    "docs": "\n## Description\n\nThis error occurs when a registration is submitted under a Sole Proprietor classification, but on review the business information provided indicates the business does not align with a sole proprietorship — typically because it is a registered legal entity (for example an LLC, corporation, or other incorporated business). This applies to both A2P 10DLC campaign registration and Toll-Free Verification.\n\nSole Proprietor registration is only for businesses in the United States or Canada that do not have an EIN, Canadian Business Number (BN), or other tax ID. If the business is a registered legal entity or has a tax ID, register it as a Standard or Low-Volume Standard Brand (A2P 10DLC) or submit it as the correct business type (Toll-Free Verification) instead. For A2P 10DLC sole proprietor registrations, `first_name`, `last_name`, and `email` must belong to the proprietor.\n\nThis rejection is eligible for resubmission. Correct the business classification or the submitted information, and resubmit.\n\n### Possible causes\n\n- The legal business name (for A2P 10DLC, the `brand_name`) includes a corporate or registered entity identifier such as LLC, Inc., or Corp. instead of the sole proprietor's individual identity.\n- The business website or public records indicate that the business is a registered corporation or legal entity rather than a sole proprietorship.\n- Tax documents, business registration documents, or the public business footprint reflect a legal structure that does not match the declared Sole Proprietor business type.\n- The business has an EIN or Canadian Business Number and should be registered as a Standard or Low-Volume Standard Brand instead of a Sole Proprietor Brand.\n- The submission mixes sole proprietor details with business entity details, creating a mismatch between the business name, the individual proprietor's identity, and the business type selected during onboarding. For A2P 10DLC, this appears as a mismatch between `brand_name`, `first_name`, `last_name`, and the business type selected during onboarding.\n\n### Possible solutions\n\nIf the business is a registered legal entity, correct the business type and provide documentation that matches the legal entity. If it is a true sole proprietor, resubmit with the proprietor's individual identity and remove any corporate or registered entity name. Follow the program-specific guidance below.\n\n#### A2P 10DLC\n\n- If the business is an LLC, corporation, partnership, or any other entity with a tax ID (EIN or Canadian Business Number), register it as a Standard or Low-Volume Standard Brand instead of using the Sole Proprietor flow.\n- If you are a true sole proprietor, resubmit the registration with the proprietor's first and last name, and make sure `first_name`, `last_name`, and `email` reflect that same individual.\n- Provide valid business registration documentation that matches the legal business entity.\n- Review the business information in your Trust Hub profile and A2P 10DLC registration before resubmitting, and use accurate, consistent details that match the brand you are sending messages for.\n\n#### Toll-Free Verification\n\n- Select the correct business type for the submission instead of Sole Proprietor if the business is a registered legal entity.\n- Provide business registration documentation and a website that match the declared business entity.\n- Make sure the business name and supporting information are consistent across the submission before resubmitting for verification.\n\n#### Additional resources\n\n- [A2P 10DLC: Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Direct Sole Proprietor Registration Overview](/docs/messaging/compliance/a2p-10dlc/direct-sole-proprietor-registration-overview)\n- [Toll-Free Verification Overview](/docs/messaging/compliance/toll-free/console-onboarding)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The legal business name (for A2P 10DLC, the `brand_name`) includes a corporate or registered entity identifier such as LLC, Inc., or Corp. instead of the sole proprietor's individual identity.\n* The business website or public records indicate that the business is a registered corporation or legal entity rather than a sole proprietorship.\n* Tax documents, business registration documents, or the public business footprint reflect a legal structure that does not match the declared Sole Proprietor business type.\n* The business has an EIN or Canadian Business Number and should be registered as a Standard or Low-Volume Standard Brand instead of a Sole Proprietor Brand.\n* The submission mixes sole proprietor details with business entity details, creating a mismatch between the business name, the individual proprietor's identity, and the business type selected during onboarding. For A2P 10DLC, this appears as a mismatch between `brand_name`, `first_name`, `last_name`, and the business type selected during onboarding.",
    "solutions": "If the business is a registered legal entity, correct the business type and provide documentation that matches the legal entity. If it is a true sole proprietor, resubmit with the proprietor's individual identity and remove any corporate or registered entity name. Follow the program-specific guidance below.",
    "description": "This error occurs when a registration is submitted under a Sole Proprietor classification, but on review the business information provided indicates the business does not align with a sole proprietorship — typically because it is a registered legal entity (for example an LLC, corporation, or other incorporated business). This applies to both A2P 10DLC campaign registration and Toll-Free Verification. Sole Proprietor registration is only for businesses in the United States or Canada that do not have an EIN, Canadian Business Number (BN), or other tax ID. If the business is a registered legal entity or has a tax ID, register it as a Standard or Low-Volume Standard Brand (A2P 10DLC) or submit it as the correct business type (Toll-Free Verification) instead. For A2P 10DLC sole proprietor registrations, `first_name`, `last_name`, and `email` must belong to the proprietor. This rejection is eligible for resubmission. Correct the business classification or the submitted information, and resubmit.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30916,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Use case mismatch between lead generation and lead nurture",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when your A2P 10DLC campaign submission does not describe a single, consistent use case. The selected campaign use case, the `description`, and the `message_samples` must match. If the campaign is registered as Lead Generation but the submission describes Lead Nurture activity, or the reverse, the campaign can be rejected.\n\n### Possible causes\n\n- The selected `us_app_to_person_usecase` is Lead Generation, but the `description` or `message_samples` describe follow-up or ongoing messaging that does not match that use case.\n- The selected `us_app_to_person_usecase` is Lead Nurture, but the `description` or `message_samples` describe initial outreach or another use case.\n- The `description` does not clearly explain who is sending the messages, who will receive them, and why the messages are being sent.\n- The `message_samples` are unclear or do not reflect the actual traffic you plan to send.\n- The submission mixes more than one messaging objective into a single campaign.\n\n### Possible solutions\n\n- Select the use case that best represents the actual traffic for the campaign.\n- Rewrite the `description` so it clearly identifies the sender, the recipients, and the purpose of the messages.\n- Update the `message_samples` so they match the selected use case and reflect the real messages you plan to send.\n- Include your business name in at least one sample message.\n- Use brackets for templated fields in sample messages when applicable.\n- If you send more than one distinct type of traffic, register separate campaigns so each campaign has one clear use case.\n- If the campaign is already in a `FAILED` state, edit and resubmit it in Console. If needed, delete the failed campaign and create a new one with the correct use case.\n\n#### Additional resources\n\n- [A2P 10DLC overview](/docs/messaging/compliance/a2p-10dlc)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshoot and rectify A2P 10DLC campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The selected `us_app_to_person_usecase` is Lead Generation, but the `description` or `message_samples` describe follow-up or ongoing messaging that does not match that use case.\n* The selected `us_app_to_person_usecase` is Lead Nurture, but the `description` or `message_samples` describe initial outreach or another use case.\n* The `description` does not clearly explain who is sending the messages, who will receive them, and why the messages are being sent.\n* The `message_samples` are unclear or do not reflect the actual traffic you plan to send.\n* The submission mixes more than one messaging objective into a single campaign.",
    "solutions": "* Select the use case that best represents the actual traffic for the campaign.\n* Rewrite the `description` so it clearly identifies the sender, the recipients, and the purpose of the messages.\n* Update the `message_samples` so they match the selected use case and reflect the real messages you plan to send.\n* Include your business name in at least one sample message.\n* Use brackets for templated fields in sample messages when applicable.\n* If you send more than one distinct type of traffic, register separate campaigns so each campaign has one clear use case.\n* If the campaign is already in a `FAILED` state, edit and resubmit it in Console. If needed, delete the failed campaign and create a new one with the correct use case.",
    "description": "This error occurs when your A2P 10DLC campaign submission does not describe a single, consistent use case. The selected campaign use case, the `description`, and the `message_samples` must match. If the campaign is registered as Lead Generation but the submission describes Lead Nurture activity, or the reverse, the campaign can be rejected.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30917,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: All opt-in methods must include complete workflow descriptions",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign registration was rejected because one or more selected opt-in methods were not fully described. If you use more than one consent path, such as a website, keyword, paper form, QR code, or verbal consent, include a complete workflow for each method so the opt-in can be reviewed and verified.\n\n### Possible causes\n\n- You selected multiple opt-in methods but described only some of them.\n- One or more opt-in descriptions do not explain where the opt-in happens, what the consumer sees, and what action the consumer takes to provide consent.\n- The opt-in description is too generic and does not include enough detail to verify the consent flow.\n- The opt-in evidence cannot be reviewed because it is behind a login or was not provided as a publicly accessible screenshot, image, or video.\n- You indicated SMS keyword opt-in but did not include the related keyword flow or opt-in confirmation details.\n\n### Possible solutions\n\n- For each opt-in method you selected, describe the full end-user journey from the first prompt through the consent action.\n- Explain where the opt-in occurs, what disclosure language the consumer sees, and what specific action confirms consent.\n- If opt-in happens on a website, provide the public URL and make sure the site includes a privacy policy and terms of service.\n- If opt-in happens on a paper form or behind a login, provide a public link to hosted screenshots, images, or a video that shows the consent flow.\n- If opt-in happens by SMS keyword, include the opt-in keyword and the opt-in confirmation message. If you do not use SMS opt-in, leave those fields blank instead of providing partial information.\n- Remove any opt-in methods you do not actually use, then resubmit the campaign after you update the registration.\n\n### Pre-submission checklist\n\nRun through this list before submitting or resubmitting your campaign:\n\n- `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).\n- `message_flow` includes a link to your privacy policy and a link to your terms and conditions.\n- Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a \"message and data rates may apply\" disclosure.\n- If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.\n- If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.\n- If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.\n- Sample messages match the declared use case, identify the brand by name, and include opt-out language.\n- Every opt-in method you selected has its own workflow paragraph in `message_flow` explaining where, what, and how consent is collected.\n- No opt-in method is selected without a corresponding description. If you do not use a method, deselect it rather than leaving its description empty.\n\n### Fix by cause\n\n#### Incomplete workflow for one of multiple opt-in paths\n\n<Warning>\n  The following `message_flow` would be rejected:\n\n  `End users opt in on our website or by texting us.`\n\n  Two methods are claimed (website and keyword), but neither is described with enough detail to verify.\n</Warning>\n\n<Info>\n  The following `message_flow` would pass review:\n\n  `End users opt in by (1) visiting www.acme.com/sms-signup and entering their phone number, checking a box agreeing to receive recurring promotional messages from Acme Co, or (2) texting JOIN to (555) 123-4567 and receiving an auto-reply confirming enrollment. Message frequency varies. Msg & data rates may apply. Terms: www.acme.com/terms. Privacy: www.acme.com/privacy.`\n\n  Passes because each opt-in path has its own workflow describing where consent happens, what the consumer sees, and what action confirms consent. Both paths include the required disclosures.\n</Info>\n\n#### Gated or non-public opt-in flow with no evidence\n\n<Warning>\n  The following `message_flow` would be rejected:\n\n  `Customers opt in through our mobile app after logging in.`\n\n  Reviewers cannot access a login-gated flow. No public evidence is provided.\n</Warning>\n\n<Info>\n  The following `message_flow` would pass review:\n\n  `End users opt in through the Acme Co mobile app after signing in. The consent screen asks users to check a box labeled \"I agree to receive recurring SMS updates from Acme Co.\" Message frequency varies. Msg & data rates may apply. Reply STOP to cancel. Screenshots of the full consent screen are hosted at www.acme.com/sms-consent-evidence. Privacy: www.acme.com/privacy. Terms: www.acme.com/terms.`\n\n  Passes because it provides a publicly accessible URL where reviewers can verify the consent flow even though the app itself requires authentication.\n</Info>\n\n#### Retry after fixing\n\nEdit the rejected campaign rather than deleting and recreating it. Resubmitting triggers a fresh review by The Campaign Registry (TCR).\n\n- **Vetting fee**: A vetting fee is assessed only once per campaign. Resubmitting the same campaign does not incur a new fee.\n- **Timeline**: Sole Proprietor campaigns are typically approved or rejected within hours to days. Standard campaigns go through several layers of vetting, which takes up to 5 business days for standard use cases.\n- **Check status**: Monitor your campaign status in **Console > Messaging > Regulatory Compliance > Campaigns**, or [fetch the UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource) and check the `campaign_status` field.\n\nTo resubmit in Console, go to **Messaging > Regulatory Compliance > Campaigns**, click the failed campaign, then click **Edit Campaign** to correct the fields and resubmit. To resubmit via API, update the campaign resource with corrected field values. See [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns) for detailed instructions.\n\n#### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [message\\_flow field reference](/docs/messaging/compliance/a2p-10dlc/collect-business-info#message_flow)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n",
    "causes": "* You selected multiple opt-in methods but described only some of them.\n* One or more opt-in descriptions do not explain where the opt-in happens, what the consumer sees, and what action the consumer takes to provide consent.\n* The opt-in description is too generic and does not include enough detail to verify the consent flow.\n* The opt-in evidence cannot be reviewed because it is behind a login or was not provided as a publicly accessible screenshot, image, or video.\n* You indicated SMS keyword opt-in but did not include the related keyword flow or opt-in confirmation details.",
    "solutions": "* For each opt-in method you selected, describe the full end-user journey from the first prompt through the consent action.\n* Explain where the opt-in occurs, what disclosure language the consumer sees, and what specific action confirms consent.\n* If opt-in happens on a website, provide the public URL and make sure the site includes a privacy policy and terms of service.\n* If opt-in happens on a paper form or behind a login, provide a public link to hosted screenshots, images, or a video that shows the consent flow.\n* If opt-in happens by SMS keyword, include the opt-in keyword and the opt-in confirmation message. If you do not use SMS opt-in, leave those fields blank instead of providing partial information.\n* Remove any opt-in methods you do not actually use, then resubmit the campaign after you update the registration.",
    "description": "Your A2P 10DLC campaign registration was rejected because one or more selected opt-in methods were not fully described. If you use more than one consent path, such as a website, keyword, paper form, QR code, or verbal consent, include a complete workflow for each method so the opt-in can be reviewed and verified.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T16:46:31-04:00"
  },
  {
    "code": 30918,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: DBA name does not match the legal business name on file",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when an A2P 10DLC campaign is rejected because the DBA name in the campaign does not match the legal business name on the associated brand registration. For US entities, the legal business name must exactly match the name registered with the EIN on the CP 575 notice or 147c letter.\n\n### Possible causes\n\n- The campaign uses a DBA, trade name, subsidiary name, or product brand instead of the exact legal business name on the brand registration.\n- The business name in the campaign or brand contains spelling, spacing, punctuation, or abbreviation differences from the legal name on the CP 575 notice or 147c letter.\n- The website, campaign description, or sample messages identify a business name that does not match the registered brand information. Twilio requires campaign data to be accurate and consistent. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- The brand was recently registered with a new EIN or tax ID and the validation data has not fully propagated yet.\n\n### Possible solutions\n\n- Update the brand or campaign so the business name matches the exact legal business name on the CP 575 notice or 147c letter. Do not use the legal business name from a W2 or W9 for US entity registration.\n- If you operate under a different customer-facing name, update your brand registration to include the DBA before you resubmit the campaign.\n- Review the website, campaign description, and sample messages so they consistently identify the same business. Include your business name in at least one sample message. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- If you recently received a new EIN or equivalent tax ID, wait for the registration data to propagate before resubmitting. If you need urgent review, provide the CP 575 notice or 147c letter when requesting manual assistance.\n- Resubmit the campaign after you correct the mismatch.\n\n#### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The campaign uses a DBA, trade name, subsidiary name, or product brand instead of the exact legal business name on the brand registration.\n* The business name in the campaign or brand contains spelling, spacing, punctuation, or abbreviation differences from the legal name on the CP 575 notice or 147c letter.\n* The website, campaign description, or sample messages identify a business name that does not match the registered brand information. Twilio requires campaign data to be accurate and consistent. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* The brand was recently registered with a new EIN or tax ID and the validation data has not fully propagated yet.",
    "solutions": "* Update the brand or campaign so the business name matches the exact legal business name on the CP 575 notice or 147c letter. Do not use the legal business name from a W2 or W9 for US entity registration.\n* If you operate under a different customer-facing name, update your brand registration to include the DBA before you resubmit the campaign.\n* Review the website, campaign description, and sample messages so they consistently identify the same business. Include your business name in at least one sample message. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* If you recently received a new EIN or equivalent tax ID, wait for the registration data to propagate before resubmitting. If you need urgent review, provide the CP 575 notice or 147c letter when requesting manual assistance.\n* Resubmit the campaign after you correct the mismatch.",
    "description": "Twilio returns this error when an A2P 10DLC campaign is rejected because the DBA name in the campaign does not match the legal business name on the associated brand registration. For US entities, the legal business name must exactly match the name registered with the EIN on the CP 575 notice or 147c letter.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 30919,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Website lacks sufficient business or messaging use case info",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC Campaign registration was rejected because the website URL you submitted does not give reviewers enough information to validate your business and messaging use case. When you use a website to support registration or collect opt-in, make sure it is publicly accessible and clearly shows who you are, what your business does, and how customers consent to receive messages.\n\n### Possible causes\n\n- The website is empty, under development, private, password-protected, misspelled, or otherwise inaccessible to reviewers.\n- The website does not clearly identify the business, such as the business name, contact details, or a description of the services you provide.\n- The website does not explain the messaging program, including who receives messages and why messages are sent.\n- The website-based opt-in flow is incomplete or unclear. Reviewers cannot verify how end users consent to receive messages.\n- Required compliance disclosures are missing from the opt-in experience or linked policies, such as message frequency for recurring programs, \"message and data rates may apply,\" opt-out instructions, privacy policy details, or terms and conditions.\n- The privacy policy does not clearly state that mobile opt-in data will not be shared or sold to third parties or lead generators.\n\n### Possible solutions\n\n- Update the website so it clearly shows your business name, contact information, and a clear description of your products or services.\n- Make the messaging use case explicit. Explain what messages you send, who receives them, and how customers opt in. Align this with the Campaign description you submit.\n- If customers opt in on your website, include a publicly accessible link to the opt-in page, a privacy policy link, and terms and conditions.\n- Add the required opt-in disclosures to the call to action. Include the program or brand name, message frequency for recurring programs, \"message and data rates may apply,\" and opt-out instructions such as replying STOP.\n- Update the privacy policy so it is easy to find and states that mobile opt-in data will not be shared with third parties or affiliates for marketing or promotional purposes.\n- If the relevant opt-in flow or disclosures are not publicly accessible at the main website URL, provide a URL with hosted screenshots of the relevant pages.\n- Correct any broken or misspelled URL. Remove login requirements or other access restrictions before you resubmit the Campaign.\n- If your main website is unavailable or still under construction, provide a publicly available business page that reviewers can use to validate your business presence.\n\n### Pre-submission checklist\n\nRun through this list before submitting or resubmitting your campaign:\n\n- `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).\n- `message_flow` includes a link to your privacy policy and a link to your terms and conditions.\n- Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a \"message and data rates may apply\" disclosure.\n- If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.\n- If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.\n- If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.\n- Sample messages match the declared use case, identify the brand by name, and include opt-out language.\n- The website URL loads without authentication and clearly identifies your business name, contact information, and products or services.\n- The website explains the messaging use case and how customers opt in, consistent with the campaign description you submit.\n\n### Fix by cause\n\n#### Website does not identify the business\n\n<Warning>\n  The following submission would be rejected:\n\n  A website URL that leads to a generic landing page with no business name, no contact details, and no description of services.\n\n  Reviewers cannot verify your business identity or messaging use case from this URL.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  A website at www.acmesandwich.com that shows the business name, a description of services (sandwich delivery), contact information, and an SMS opt-in form with the required disclosures. Privacy Policy: www.acmesandwich.com/privacy. Terms: www.acmesandwich.com/terms.\n\n  Passes because reviewers can verify the business identity and confirm the messaging program matches the campaign description.\n</Info>\n\n#### Website is private or inaccessible\n\n<Warning>\n  The following submission would be rejected:\n\n  A website URL that requires a login or returns a 404 error.\n\n  Reviewers cannot verify any business or opt-in details from an inaccessible URL.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  If the opt-in flow is behind a login, provide a publicly accessible URL with hosted screenshots showing the business context and opt-in experience. Include: www.acmesandwich.com/sms-consent-evidence.\n\n  Passes because reviewers can access and verify the business context and consent flow at the public URL.\n</Info>\n\n#### Additional resources\n\n- [A2P 10DLC overview](/docs/messaging/compliance/a2p-10dlc)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The website is empty, under development, private, password-protected, misspelled, or otherwise inaccessible to reviewers.\n* The website does not clearly identify the business, such as the business name, contact details, or a description of the services you provide.\n* The website does not explain the messaging program, including who receives messages and why messages are sent.\n* The website-based opt-in flow is incomplete or unclear. Reviewers cannot verify how end users consent to receive messages.\n* Required compliance disclosures are missing from the opt-in experience or linked policies, such as message frequency for recurring programs, \"message and data rates may apply,\" opt-out instructions, privacy policy details, or terms and conditions.\n* The privacy policy does not clearly state that mobile opt-in data will not be shared or sold to third parties or lead generators.",
    "solutions": "* Update the website so it clearly shows your business name, contact information, and a clear description of your products or services.\n* Make the messaging use case explicit. Explain what messages you send, who receives them, and how customers opt in. Align this with the Campaign description you submit.\n* If customers opt in on your website, include a publicly accessible link to the opt-in page, a privacy policy link, and terms and conditions.\n* Add the required opt-in disclosures to the call to action. Include the program or brand name, message frequency for recurring programs, \"message and data rates may apply,\" and opt-out instructions such as replying STOP.\n* Update the privacy policy so it is easy to find and states that mobile opt-in data will not be shared with third parties or affiliates for marketing or promotional purposes.\n* If the relevant opt-in flow or disclosures are not publicly accessible at the main website URL, provide a URL with hosted screenshots of the relevant pages.\n* Correct any broken or misspelled URL. Remove login requirements or other access restrictions before you resubmit the Campaign.\n* If your main website is unavailable or still under construction, provide a publicly available business page that reviewers can use to validate your business presence.",
    "description": "Your A2P 10DLC Campaign registration was rejected because the website URL you submitted does not give reviewers enough information to validate your business and messaging use case. When you use a website to support registration or collect opt-in, make sure it is publicly accessible and clearly shows who you are, what your business does, and how customers consent to receive messages.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30920,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Website is only a form; insufficient business context",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign registration was rejected because the website URL in your submission does not provide enough public business context for review. When you use a website in campaign registration, submit a real, functional business website and provide a verifiable opt-in flow with publicly accessible privacy policy and terms information when required.\n\n### Possible causes\n\n- The submitted URL points to a landing page or standalone form and does not clearly identify the business behind the campaign.\n- The page does not provide enough information to validate the brand and messaging program in the registration.\n- If you use the website for opt-in, the opt-in flow or required disclosures are missing or not publicly accessible.\n\n### Possible solutions\n\n- Submit your main business website instead of a campaign-specific landing page or lead capture form.\n- Add clear business information that identifies the brand behind the campaign and explains how end users consent to receive messages.\n- If the website is used for opt-in, make sure the opt-in flow is publicly accessible and include links to your privacy policy and terms of service.\n- If the relevant pages are behind a login or are not yet public, provide a publicly accessible URL with hosted screenshots of the opt-in flow and required disclosures.\n- Make sure your campaign description and sample messages match the business and use case shown on the website.\n\n### Pre-submission checklist\n\nRun through this list before submitting or resubmitting your campaign:\n\n- `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).\n- `message_flow` includes a link to your privacy policy and a link to your terms and conditions.\n- Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a \"message and data rates may apply\" disclosure.\n- If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.\n- If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.\n- If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.\n- Sample messages match the declared use case, identify the brand by name, and include opt-out language.\n- The submitted URL is your main business website, not a standalone form or landing page.\n- The website clearly identifies the brand behind the campaign and explains how end users consent to receive messages.\n\n### Fix by cause\n\n#### URL is a form-only page with no business context\n\n<Warning>\n  The following submission would be rejected:\n\n  A URL that points to a standalone lead-capture form with no business name, navigation, or description of services.\n\n  Reviewers cannot validate the brand or messaging program from a form alone.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  Submit your main business website (www.acmesandwich.com) that includes your business name, description of services, and navigation to a clearly labeled opt-in page with the required disclosures.\n\n  Passes because the website provides enough context for reviewers to validate the brand and messaging use case.\n</Info>\n\n#### Additional resources\n\n- [A2P 10DLC registration application quickstart](/docs/messaging/compliance/a2p-10dlc/quickstart)\n- [A2P 10DLC - Gather the required business information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The submitted URL points to a landing page or standalone form and does not clearly identify the business behind the campaign.\n* The page does not provide enough information to validate the brand and messaging program in the registration.\n* If you use the website for opt-in, the opt-in flow or required disclosures are missing or not publicly accessible.",
    "solutions": "* Submit your main business website instead of a campaign-specific landing page or lead capture form.\n* Add clear business information that identifies the brand behind the campaign and explains how end users consent to receive messages.\n* If the website is used for opt-in, make sure the opt-in flow is publicly accessible and include links to your privacy policy and terms of service.\n* If the relevant pages are behind a login or are not yet public, provide a publicly accessible URL with hosted screenshots of the opt-in flow and required disclosures.\n* Make sure your campaign description and sample messages match the business and use case shown on the website.",
    "description": "Your A2P 10DLC campaign registration was rejected because the website URL in your submission does not provide enough public business context for review. When you use a website in campaign registration, submit a real, functional business website and provide a verifiable opt-in flow with publicly accessible privacy policy and terms information when required.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30921,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Website requires authentication and cannot be reviewed",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign registration was rejected because the website URL you submitted requires a login or other authentication to review. Reviewers must be able to access and verify your business website and consent flow without credentials. If your opt-in mechanism or other required details are not publicly accessible at the website URL you provide, submit a publicly accessible URL that hosts screenshots of the relevant pages.\n\n### Possible causes\n\n- The website URL points to a page that requires a username, password, single sign-on, or another authentication step before reviewers can view the content.\n- The URL points to an internal tool, staging site, admin portal, or development environment that is not publicly accessible. Twilio requires a verifiable, publicly accessible opt-in method for campaign review.\n- The website does not expose the business details, opt-in flow, or required disclosures in a way reviewers can verify.\n\n### Possible solutions\n\n- Submit a publicly accessible website URL that reviewers can open without signing in.\n- If your opt-in flow or required information is behind a login or not yet live, provide a publicly accessible URL with hosted screenshots of the relevant pages in your `message_flow` or **Call to Action** details.\n- If you use a development website that is not live, provide a publicly accessible video or other publicly accessible proof that shows the opt-in process.\n- Make sure the submission clearly shows how end users consent to receive messages and includes any required public links, such as your privacy policy and terms of service when the website is used for opt-in.\n- If your primary product experience is gated, create a public page that explains your business and messaging program so reviewers can verify the campaign. If the actual opt-in flow remains gated, add publicly accessible screenshots of that flow.\n\n### Pre-submission checklist\n\nRun through this list before submitting or resubmitting your campaign:\n\n- `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).\n- `message_flow` includes a link to your privacy policy and a link to your terms and conditions.\n- Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a \"message and data rates may apply\" disclosure.\n- If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.\n- If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.\n- If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.\n- Sample messages match the declared use case, identify the brand by name, and include opt-out language.\n- The website URL loads without a login, password, single sign-on, or other authentication requirement.\n- If the opt-in flow is behind a login, you have provided a publicly accessible URL with hosted screenshots of the relevant pages.\n\n### Fix by cause\n\n#### Website requires authentication\n\n<Warning>\n  The following submission would be rejected:\n\n  A URL that redirects to a login page before reviewers can view the business or consent content.\n\n  Reviewers cannot verify your business or opt-in flow without publicly accessible content.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  Provide a public landing page at www.acmesandwich.com that explains the business and messaging program. If the opt-in flow itself is behind a login, host screenshots of the consent screen at www.acmesandwich.com/sms-consent-evidence and include that URL in `message_flow`.\n\n  Passes because reviewers can verify both the business identity and the consent flow from publicly accessible URLs.\n</Info>\n\n#### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC registration application quickstart](/docs/messaging/compliance/a2p-10dlc/quickstart)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The website URL points to a page that requires a username, password, single sign-on, or another authentication step before reviewers can view the content.\n* The URL points to an internal tool, staging site, admin portal, or development environment that is not publicly accessible. Twilio requires a verifiable, publicly accessible opt-in method for campaign review.\n* The website does not expose the business details, opt-in flow, or required disclosures in a way reviewers can verify.",
    "solutions": "* Submit a publicly accessible website URL that reviewers can open without signing in.\n* If your opt-in flow or required information is behind a login or not yet live, provide a publicly accessible URL with hosted screenshots of the relevant pages in your `message_flow` or **Call to Action** details.\n* If you use a development website that is not live, provide a publicly accessible video or other publicly accessible proof that shows the opt-in process.\n* Make sure the submission clearly shows how end users consent to receive messages and includes any required public links, such as your privacy policy and terms of service when the website is used for opt-in.\n* If your primary product experience is gated, create a public page that explains your business and messaging program so reviewers can verify the campaign. If the actual opt-in flow remains gated, add publicly accessible screenshots of that flow.",
    "description": "Your A2P 10DLC campaign registration was rejected because the website URL you submitted requires a login or other authentication to review. Reviewers must be able to access and verify your business website and consent flow without credentials. If your opt-in mechanism or other required details are not publicly accessible at the website URL you provide, submit a publicly accessible URL that hosts screenshots of the relevant pages.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30922,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Website does not meet campaign verification requirements",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign registration was rejected because the website in your submission could not be verified or did not provide enough information to validate your business and consent flow. Use a real, functional business website that matches your registered Brand and campaign details. If your website is part of the opt-in process, make sure reviewers can verify that flow from the information you provide.\n\n### Possible causes\n\n- The website URL does not load, times out, or is not publicly accessible.\n- The website does not clearly identify the same business, sender, or campaign use case described in your Brand and campaign registration.\n- The website does not provide enough information for reviewers to verify how end users opt in to receive messages.\n- Your `message_flow` does not include the direct website link for the opt-in process.\n- The opt-in flow or supporting pages are behind a login or otherwise not publicly visible, and you did not provide a public URL to hosted screenshots or other proof reviewers can access.\n- If the website is used for opt-in, the required supporting pages such as privacy policy or terms of service are missing or cannot be found.\n\n### Possible solutions\n\n- Submit a live, publicly accessible business website that loads correctly and clearly represents your business.\n- Make sure the website matches the business name, campaign description, sample messages, and opt-in method in your registration.\n- If end users opt in on your website, include the direct opt-in link in `message_flow` rather than only linking to a homepage.\n- If the relevant opt-in content is not publicly accessible, provide a public URL to hosted screenshots or a publicly accessible recording that shows the opt-in flow.\n- If your website is used for opt-in, make sure it includes accessible links to your privacy policy and terms of service.\n- Review your campaign details for consistency and update the website or registration information as needed.\n\n### After you resubmit\n\nEdit the rejected campaign rather than deleting and recreating it. Resubmitting triggers a fresh review by The Campaign Registry (TCR).\n\n- **Vetting fee**: A vetting fee is assessed only once per campaign. Resubmitting the same campaign does not incur a new fee.\n- **Timeline**: Sole Proprietor campaigns are typically approved or rejected within hours to days. Standard campaigns go through several layers of vetting, which takes up to 5 business days for standard use cases.\n- **Check status**: Monitor your campaign status in **Console > Messaging > Regulatory Compliance > Campaigns**, or [fetch the UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource) and check the `campaign_status` field.\n\nFor detailed resubmission steps, see [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns).\n\n### Pre-submission checklist\n\nRun through this list before submitting or resubmitting your campaign:\n\n- `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).\n- `message_flow` includes a link to your privacy policy and a link to your terms and conditions.\n- Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a \"message and data rates may apply\" disclosure.\n- If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.\n- If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.\n- If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.\n- Sample messages match the declared use case, identify the brand by name, and include opt-out language.\n- The website URL loads correctly and is publicly accessible.\n- The website clearly identifies the same business, sender, and use case described in your brand and campaign registration.\n- If the opt-in flow is not publicly visible, you have provided a public URL with hosted screenshots or other proof reviewers can access.\n\n### Fix by cause\n\n#### Website does not match campaign registration\n\n<Warning>\n  The following submission would be rejected:\n\n  A website URL that loads but shows a different business name or use case than what is described in the campaign registration.\n\n  Reviewers reject campaigns when the website and registration details are inconsistent.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  A website at www.acmesandwich.com that matches the registered brand name (Acme Sandwich Company), shows the declared messaging use case (promotional sandwich deals), and includes a direct link to the opt-in page with required disclosures.\n\n  Passes because the website, brand registration, and campaign details are consistent and verifiable.\n</Info>\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n",
    "causes": "* The website URL does not load, times out, or is not publicly accessible.\n* The website does not clearly identify the same business, sender, or campaign use case described in your Brand and campaign registration.\n* The website does not provide enough information for reviewers to verify how end users opt in to receive messages.\n* Your `message_flow` does not include the direct website link for the opt-in process.\n* The opt-in flow or supporting pages are behind a login or otherwise not publicly visible, and you did not provide a public URL to hosted screenshots or other proof reviewers can access.\n* If the website is used for opt-in, the required supporting pages such as privacy policy or terms of service are missing or cannot be found.",
    "solutions": "* Submit a live, publicly accessible business website that loads correctly and clearly represents your business.\n* Make sure the website matches the business name, campaign description, sample messages, and opt-in method in your registration.\n* If end users opt in on your website, include the direct opt-in link in `message_flow` rather than only linking to a homepage.\n* If the relevant opt-in content is not publicly accessible, provide a public URL to hosted screenshots or a publicly accessible recording that shows the opt-in flow.\n* If your website is used for opt-in, make sure it includes accessible links to your privacy policy and terms of service.\n* Review your campaign details for consistency and update the website or registration information as needed.",
    "description": "This error means your A2P 10DLC campaign registration was rejected because the website in your submission could not be verified or did not provide enough information to validate your business and consent flow. Use a real, functional business website that matches your registered Brand and campaign details. If your website is part of the opt-in process, make sure reviewers can verify that flow from the information you provide.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T16:46:31-04:00"
  },
  {
    "code": 30923,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Message consent cannot be required for service use",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because your opt-in flow makes consent to receive messages a required condition for using your service, creating an account, or completing a transaction. For A2P 10DLC, campaign reviewers must be able to verify that end users knowingly agree to receive messages, that the consent applies to the specific campaign, and that the opt-in experience is voluntary and clearly documented.\n\n### Possible causes\n\n- Your sign-up, checkout, or account flow requires a user to agree to receive SMS or MMS messages before they can continue. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Your messaging consent is bundled with general terms of service or another required agreement, so the user cannot accept the service terms without also opting in to messaging.\n- Your web form uses a checkbox for messaging consent that is preselected, or the user cannot clearly choose to decline messaging and still complete the form. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Your `message_flow` does not clearly explain how the user opts in, or it does not include every opt-in method used for the campaign.\n- The website used for opt-in does not include accessible Terms and Conditions and Privacy Policy links, or the opt-in flow is not publicly verifiable.\n\n### Possible solutions\n\n- Update your opt-in flow so users can access the service, create an account, or complete a purchase without being required to consent to messaging. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Separate messaging consent from required service terms. Use a distinct opt-in action that specifically covers the messages you plan to send.\n- If you use a checkbox, leave it unchecked by default and label it clearly as optional. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- In your call to action, clearly disclose the messaging program details and make clear that consent is not a condition of purchase when that language applies to your flow. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Update the campaign `message_flow` to describe every opt-in method in detail. If opt-in happens on a website, include the website URL, the Privacy Policy URL, and the Terms and Conditions URL. If the flow is behind a login or not yet public, provide a publicly accessible URL to screenshots of the relevant pages.\n- Keep records of consent for each recipient so you can show when and how the user agreed to receive messages for this specific campaign. After you correct the flow, resubmit the campaign for review.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your sign-up, checkout, or account flow requires a user to agree to receive SMS or MMS messages before they can continue. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Your messaging consent is bundled with general terms of service or another required agreement, so the user cannot accept the service terms without also opting in to messaging.\n* Your web form uses a checkbox for messaging consent that is preselected, or the user cannot clearly choose to decline messaging and still complete the form. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Your `message_flow` does not clearly explain how the user opts in, or it does not include every opt-in method used for the campaign.\n* The website used for opt-in does not include accessible Terms and Conditions and Privacy Policy links, or the opt-in flow is not publicly verifiable.",
    "solutions": "* Update your opt-in flow so users can access the service, create an account, or complete a purchase without being required to consent to messaging. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Separate messaging consent from required service terms. Use a distinct opt-in action that specifically covers the messages you plan to send.\n* If you use a checkbox, leave it unchecked by default and label it clearly as optional. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* In your call to action, clearly disclose the messaging program details and make clear that consent is not a condition of purchase when that language applies to your flow. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Update the campaign `message_flow` to describe every opt-in method in detail. If opt-in happens on a website, include the website URL, the Privacy Policy URL, and the Terms and Conditions URL. If the flow is behind a login or not yet public, provide a publicly accessible URL to screenshots of the relevant pages.\n* Keep records of consent for each recipient so you can show when and how the user agreed to receive messages for this specific campaign. After you correct the flow, resubmit the campaign for review.",
    "description": "Your A2P 10DLC campaign was rejected because your opt-in flow makes consent to receive messages a required condition for using your service, creating an account, or completing a transaction. For A2P 10DLC, campaign reviewers must be able to verify that end users knowingly agree to receive messages, that the consent applies to the specific campaign, and that the opt-in experience is voluntary and clearly documented.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30924,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Missing or non-compliant consent agreement language in opt-in flow",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "## Description\n\nYour A2P 10DLC campaign was rejected because the opt-in flow you provided doesn't contain compliant consent agreement language. Carriers require that consumers are clearly informed about what types of messages they will receive, the frequency of messages, and how to opt out before they provide consent. Your submitted opt-in evidence is either missing this language entirely or the language present does not meet TCPA and CTIA compliance requirements.\n\n### Possible causes\n\n- **Missing consent disclosure:** The opt-in flow does not include language informing the consumer about the nature of the messages they will receive.\n- **No frequency disclosure:** The opt-in does not state the expected message frequency (for example, \"Up to 5 messages per month\").\n- **Missing opt-out instructions:** The consent language does not include instructions on how to stop receiving messages (for example, \"Reply STOP to unsubscribe\").\n- **No \"message and data rates may apply\" disclosure:** The opt-in is missing the standard rate disclosure language.\n\n### Possible solutions\n\n- **Complete `message_flow`:** Describe how the consent language at each point of opt-in identifies your brand and states the types of messages users agree to receive.\n- **Add compliant consent language** to your opt-in flow that includes: (1) your brand name, (2) the type of messages the consumer will receive, (3) message frequency, (4) \"Message and data rates may apply,\" (5) opt-out instructions such as \"Reply STOP to unsubscribe,\" and (6) customer-support instructions such as \"Reply HELP for help.\"\n- **Review CTIA guidelines** for short code and messaging compliance to ensure your consent language meets industry standards.\n- **Provide a screenshot or URL** showing the complete consent language as it appears to the consumer at the point of opt-in.\n- **Consult the registration guide:** [A2P 10DLC Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- **Contact support** if you believe this rejection is incorrect: [Twilio Support](https://support.twilio.com).\n\n### Pre-submission checklist\n\nRun through this list before submitting or resubmitting your campaign:\n\n- `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).\n- At each point of opt-in, the consent language identifies the brand and states the message type. `message_flow` describes that consent language.\n- In the Legacy Console and the Twilio Console at `1console.twilio.com`, `message_flow` includes a link to your privacy policy and a link to your terms and conditions. If you use the API, set the [`privacy_policy_url` and `terms_and_conditions_url`](/docs/messaging/api/usapptoperson-resource#usa2p-properties) fields.\n- Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a \"message and data rates may apply\" disclosure.\n- If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.\n- If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.\n- If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.\n- Sample messages match the declared use case, identify the brand by name, and include opt-out language.\n- The consent language includes customer-support instructions such as \"Reply HELP for help.\"\n- The consent language appears at or immediately adjacent to the consent control (checkbox, button) — not buried in a linked document.\n- You have provided a public URL or hosted screenshot showing the complete consent language as it appears to the consumer.\n\n### Fix by cause\n\n#### Consent language missing entirely\n\n<Warning>\n  The following opt-in flow would be rejected:\n\n  Checkbox label: `I agree to the Terms of Service.`\n\n  No mention of SMS messaging, frequency, rates, or how to opt out. General Terms of Service acceptance does not constitute messaging consent.\n</Warning>\n\n<Info>\n  The following example includes the consent details described above:\n\n  Checkbox label: `I agree to receive recurring promotional text messages from Acme Co. Message frequency varies. Message and data rates may apply. Reply STOP to unsubscribe. Reply HELP for help. Terms: www.acme.com/terms. Privacy: www.acme.com/privacy.`\n\n  The consent language at the checkbox covers message type, frequency, rates, and opt-out, and it is visible before the consumer takes action. This example does not guarantee approval.\n</Info>\n\n#### Frequency or rates disclosure missing\n\n<Warning>\n  The following consent language would be rejected:\n\n  `By checking this box you agree to receive text messages from Acme Co. Reply STOP to cancel.`\n\n  Has opt-out instructions but is missing message frequency and the \"message and data rates may apply\" disclosure.\n</Warning>\n\n<Info>\n  The following example includes the consent details described above:\n\n  `By checking this box you agree to receive recurring text messages from Acme Co. Message frequency varies. Message and data rates may apply. Reply STOP to cancel. Reply HELP for help.`\n\n  It includes message type (recurring text messages), frequency, rates, and opt-out. This example does not guarantee approval.\n</Info>\n\n#### Retry after fixing\n\nEdit the rejected campaign rather than deleting and recreating it. Resubmitting triggers a fresh review by The Campaign Registry (TCR).\n\n- **Vetting fee**: A vetting fee is assessed only once per campaign. Resubmitting the same campaign does not incur a new fee.\n- **Timeline**: Sole Proprietor campaigns are typically approved or rejected within hours to days. Standard campaigns go through several layers of vetting, which takes up to 5 business days for standard use cases.\n- **Check status**: In the Legacy Console, go to **Messaging > Regulatory Compliance > Campaigns**. In the Twilio Console at `1console.twilio.com`, open [A2P 10DLC Campaigns](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/a2p-campaigns/campaigns). You can also [fetch the UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource) and check the `campaign_status` field.\n\nTo resubmit in the Legacy Console, go to **Messaging > Regulatory Compliance > Campaigns**, click the failed campaign, then click **Edit Campaign** to correct the fields and resubmit. API-based campaign updates require access to the relevant Private Beta. Without access, API customers can delete and recreate the campaign, but the replacement campaign incurs a new vetting fee. See [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1) for detailed instructions.\n\n#### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [message\\_flow field reference](/docs/messaging/compliance/a2p-10dlc/collect-business-info#message_flow)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Missing consent disclosure:** The opt-in flow does not include language informing the consumer about the nature of the messages they will receive.\n* **No frequency disclosure:** The opt-in does not state the expected message frequency (for example, \"Up to 5 messages per month\").\n* **Missing opt-out instructions:** The consent language does not include instructions on how to stop receiving messages (for example, \"Reply STOP to unsubscribe\").\n* **No \"message and data rates may apply\" disclosure:** The opt-in is missing the standard rate disclosure language.",
    "solutions": "* **Complete `message_flow`:** Describe how the consent language at each point of opt-in identifies your brand and states the types of messages users agree to receive.\n* **Add compliant consent language** to your opt-in flow that includes: (1) your brand name, (2) the type of messages the consumer will receive, (3) message frequency, (4) \"Message and data rates may apply,\" (5) opt-out instructions such as \"Reply STOP to unsubscribe,\" and (6) customer-support instructions such as \"Reply HELP for help.\"\n* **Review CTIA guidelines** for short code and messaging compliance to ensure your consent language meets industry standards.\n* **Provide a screenshot or URL** showing the complete consent language as it appears to the consumer at the point of opt-in.\n* **Consult the registration guide:** [A2P 10DLC Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n* **Contact support** if you believe this rejection is incorrect: [Twilio Support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because the opt-in flow you provided doesn't contain compliant consent agreement language. Carriers require that consumers are clearly informed about what types of messages they will receive, the frequency of messages, and how to opt out before they provide consent. Your submitted opt-in evidence is either missing this language entirely or the language present does not meet TCPA and CTIA compliance requirements.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T16:46:31-04:00"
  },
  {
    "code": 30925,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Opt-in must be unchecked by default; active consent required",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "## Description\n\nYour A2P 10DLC campaign was rejected because the opt-in flow you provided does not show clear, affirmative consent for messaging. For website-based opt-in, the consumer must actively choose to receive messages. A checkbox or similar consent control cannot be pre-selected by default.\n\n### Possible causes\n\n- Your web form does not include a separate consent control for the consumer to actively opt in to messaging.\n- The messaging consent checkbox or toggle is pre-selected, so the consumer is opted in by default.\n- Your form only captures acceptance of general Terms of Service or Privacy Policy and does not capture separate consent to receive messages.\n- Your submission does not provide enough publicly accessible evidence of the opt-in flow, such as a live page or hosted screenshots.\n\n### Possible solutions\n\n- Add a separate checkbox or similar control for messaging consent. Leave it unchecked by default and require the consumer to actively select it.\n- Keep messaging consent separate from acceptance of general Terms of Service or Privacy Policy.\n- If you collect opt-in on a website, include the website URL in your campaign `message_flow` and make sure the site includes publicly accessible Terms of Service and Privacy Policy links.\n- Make sure your privacy policy includes the required messaging disclosures, including non-sharing of mobile numbers, message frequency, and a \"message and data rates may apply\" disclosure.\n- If the opt-in flow is behind a login or is not yet public, host screenshots of the form and consent language on a publicly accessible URL and submit that evidence when you resubmit the campaign.\n\n### Pre-submission checklist\n\nRun through this list before submitting or resubmitting your campaign:\n\n- `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).\n- At each point of opt-in, the consent language identifies the brand and states the message type. `message_flow` describes that consent language.\n- In the Legacy Console and the Twilio Console at `1console.twilio.com`, `message_flow` includes a link to your privacy policy and a link to your terms and conditions. If you use the API, set the [`privacy_policy_url` and `terms_and_conditions_url`](/docs/messaging/api/usapptoperson-resource#usa2p-properties) fields.\n- Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a \"message and data rates may apply\" disclosure.\n- If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.\n- If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.\n- If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.\n- Sample messages match the declared use case, identify the brand by name, and include opt-out language.\n- The consent language includes customer-support instructions such as \"Reply HELP for help.\"\n- The messaging consent checkbox or toggle is unchecked by default — the consumer must actively select it.\n- Messaging consent is captured by a separate control, not bundled with general Terms of Service or Privacy Policy acceptance.\n\n### Fix by cause\n\n#### Pre-checked consent box\n\n<Warning>\n  The following opt-in flow would be rejected:\n\n  A form where the \"Send me text updates\" checkbox is checked by default when the page loads. The consumer can uncheck it, but consent is assumed unless they act.\n\n  Pre-selected consent does not meet TCPA or CTIA requirements. The consumer must take an affirmative action to opt in.\n</Warning>\n\n<Info>\n  The following example shows active messaging consent:\n\n  A form where the \"I agree to receive recurring promotional text messages from Acme Co. Message frequency varies. Msg & data rates may apply. Reply STOP to unsubscribe. Reply HELP for help.\" checkbox is unchecked by default. The consumer must actively check the box before submitting the form.\n\n  Consent requires an affirmative action because the checkbox starts unchecked and the consumer deliberately selects it. This example does not guarantee approval.\n</Info>\n\n#### Messaging consent bundled with general terms acceptance\n\n<Warning>\n  The following opt-in flow would be rejected:\n\n  A single checkbox labeled: `I agree to the Terms of Service and Privacy Policy.`\n\n  Even if the Terms of Service mention SMS messaging, a single general-purpose checkbox does not capture separate, affirmative messaging consent.\n</Warning>\n\n<Info>\n  The following example keeps messaging consent separate:\n\n  Two separate checkboxes:\n\n  1. `I agree to the Terms of Service and Privacy Policy.` (required for account creation)\n  2. `I agree to receive recurring promotional text messages from Acme Co. Message frequency varies. Msg & data rates may apply. Reply STOP to unsubscribe. Reply HELP for help.` (unchecked by default, optional)\n\n  Messaging consent is captured by a dedicated control that is unchecked by default and includes the required disclosures. This example does not guarantee approval.\n</Info>\n\n#### Retry after fixing\n\nEdit the rejected campaign rather than deleting and recreating it. Resubmitting triggers a fresh review by The Campaign Registry (TCR).\n\n- **Vetting fee**: A vetting fee is assessed only once per campaign. Resubmitting the same campaign does not incur a new fee.\n- **Timeline**: Sole Proprietor campaigns are typically approved or rejected within hours to days. Standard campaigns go through several layers of vetting, which takes up to 5 business days for standard use cases.\n- **Check status**: In the Legacy Console, go to **Messaging > Regulatory Compliance > Campaigns**. In the Twilio Console at `1console.twilio.com`, open [A2P 10DLC Campaigns](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/a2p-campaigns/campaigns). You can also [fetch the UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource) and check the `campaign_status` field.\n\nTo resubmit in the Legacy Console, go to **Messaging > Regulatory Compliance > Campaigns**, click the failed campaign, then click **Edit Campaign** to correct the fields and resubmit. API-based campaign updates require access to the relevant Private Beta. Without access, API customers can delete and recreate the campaign, but the replacement campaign incurs a new vetting fee. See [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1) for detailed instructions.\n\n#### Additional resources\n\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [message\\_flow field reference](/docs/messaging/compliance/a2p-10dlc/collect-business-info#message_flow)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your web form does not include a separate consent control for the consumer to actively opt in to messaging.\n* The messaging consent checkbox or toggle is pre-selected, so the consumer is opted in by default.\n* Your form only captures acceptance of general Terms of Service or Privacy Policy and does not capture separate consent to receive messages.\n* Your submission does not provide enough publicly accessible evidence of the opt-in flow, such as a live page or hosted screenshots.",
    "solutions": "* Add a separate checkbox or similar control for messaging consent. Leave it unchecked by default and require the consumer to actively select it.\n* Keep messaging consent separate from acceptance of general Terms of Service or Privacy Policy.\n* If you collect opt-in on a website, include the website URL in your campaign `message_flow` and make sure the site includes publicly accessible Terms of Service and Privacy Policy links.\n* Make sure your privacy policy includes the required messaging disclosures, including non-sharing of mobile numbers, message frequency, and a \"message and data rates may apply\" disclosure.\n* If the opt-in flow is behind a login or is not yet public, host screenshots of the form and consent language on a publicly accessible URL and submit that evidence when you resubmit the campaign.",
    "description": "Your A2P 10DLC campaign was rejected because the opt-in flow you provided does not show clear, affirmative consent for messaging. For website-based opt-in, the consumer must actively choose to receive messages. A checkbox or similar consent control cannot be pre-selected by default.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T16:46:31-04:00"
  },
  {
    "code": 30926,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Multiple companies cannot share a single campaign",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error occurs when your A2P 10DLC campaign submission represents more than one company or brand. A2P 10DLC registration requires you to register a Brand that identifies the sender and a Campaign that represents a single messaging use case for that Brand. For ISVs, each Brand belongs to a single Customer Profile, and each Campaign belongs to one Brand.\n\n### Possible causes\n\n- Your campaign description, website, opt-in flow, or sample messages reference more than one company, or they do not consistently identify the same brand. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- You registered your own company as the Brand, but you actually send messages on behalf of customer brands that should be registered separately. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- You tried to use one campaign for multiple subsidiaries, franchises, or client businesses with different brand identities. A Campaign belongs to one Brand, so this structure is rejected during review.\n\n### Possible solutions\n\n- Register a separate Brand for each company or client that sends messages. Then create each Campaign under the correct Brand.\n- Update the campaign so the brand name, website, consent materials, and sample messages all describe the same sender. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- Make sure each sample message identifies the brand by name or website and matches the selected campaign use case.\n- If one company has multiple legitimate messaging programs, keep them under the same Brand and create separate Campaigns for each use case instead of combining multiple brands in one Campaign. Standard and Low-Volume Standard Brands can register up to five Campaigns.\n\n#### Additional resources\n\n- [A2P 10DLC overview](/docs/messaging/compliance/a2p-10dlc)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your campaign description, website, opt-in flow, or sample messages reference more than one company, or they do not consistently identify the same brand. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* You registered your own company as the Brand, but you actually send messages on behalf of customer brands that should be registered separately. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* You tried to use one campaign for multiple subsidiaries, franchises, or client businesses with different brand identities. A Campaign belongs to one Brand, so this structure is rejected during review.",
    "solutions": "* Register a separate Brand for each company or client that sends messages. Then create each Campaign under the correct Brand.\n* Update the campaign so the brand name, website, consent materials, and sample messages all describe the same sender. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* Make sure each sample message identifies the brand by name or website and matches the selected campaign use case.\n* If one company has multiple legitimate messaging programs, keep them under the same Brand and create separate Campaigns for each use case instead of combining multiple brands in one Campaign. Standard and Low-Volume Standard Brands can register up to five Campaigns.",
    "description": "This error occurs when your A2P 10DLC campaign submission represents more than one company or brand. A2P 10DLC registration requires you to register a Brand that identifies the sender and a Campaign that represents a single messaging use case for that Brand. For ISVs, each Brand belongs to a single Customer Profile, and each Campaign belongs to one Brand.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30927,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Opt-in evidence is for a different company",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign was rejected because the opt-in evidence you submitted identifies a company that does not match the brand registered for the campaign. This mismatch can appear in the opt-in flow, consent language, website, or other proof of consent you provide during campaign registration. A2P 10DLC campaign submissions must clearly show who is sending the messages and how end users consent. If you collect consent on a website, provide a working URL and make sure the required opt-in details are publicly visible. If they are not publicly visible, provide a URL that hosts screenshots of the relevant pages.\n\n### Possible causes\n\n- You submitted an opt-in screenshot, website, or consent example that belongs to a different campaign or a different brand in your organization.\n- The company name shown in your opt-in materials does not match the brand registered for this campaign.\n- You registered one company as the brand, but the messages and consent flow actually belong to another company.\n- Your opt-in evidence still shows older branding that was not updated before you submitted the campaign.\n\n### Fields that must match\n\nReviewers compare the company identity in your opt-in evidence against your Brand registration and Business Profile. Every piece of evidence must point to the same company.\n\n| Field in campaign submission                                | Field on Brand / Business Profile | Must match                                                  |\n| ----------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------- |\n| Company name in opt-in evidence (website, form, screenshot) | Brand name on Brand registration  | Same company: no references to a different organization     |\n| Website URL in opt-in evidence                              | `WebsiteUrl` on Business Profile  | Same domain or a page clearly owned by the registered brand |\n| Brand name in `message_samples`                             | Brand name on Brand registration  | Exact brand name identifying who sends the messages         |\n| Brand name in `opt_in_message`                              | Brand name on Brand registration  | Confirmation message must name the registered brand         |\n\n<Warning>\n  The following submission would be rejected:\n\n  **Brand registration:** `Acme Sandwich Company`\\\n  **Opt-in evidence website:** Shows consent form with the header \"GreenLeaf Catering — Sign up for text alerts\"\n\n  Rejected because the opt-in evidence identifies a different company (\"GreenLeaf Catering\") than the registered brand (\"Acme Sandwich Company\"). Reviewers cannot confirm that consent was collected on behalf of the brand that will send the messages.\n</Warning>\n\n<Info>\n  The following submission would pass review:\n\n  **Brand registration**: `Acme Sandwich Company`\\\n  **Opt-in evidence website**: Shows consent form with the header \"Acme Sandwich Company — Sign up for text alerts\" at `www.acmesandwich.com/sms-signup`\n\n  Passes because the company name in the opt-in evidence, the website domain, and the registered brand all refer to the same organization.\n</Info>\n\n### Possible solutions\n\n- Submit opt-in evidence that exactly matches the registered brand name and branding for the campaign. Make sure the company name, logo, and website shown in the evidence are consistent with the brand registration.\n- Review the brand registration details first, then update the campaign submission so the brand and campaign information refer to the same company.\n- If end users opt in on a website, make sure the website call to action identifies your brand and includes clear opt-in language. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n- If the website does not publicly display the required opt-in details, provide a URL with hosted screenshots of the relevant opt-in pages.\n- Update your `message_samples` and any applicable `opt_in_message` so they identify the correct brand. Twilio requires sample messages to identify the brand by name, website, or both, and keyword-based opt-in confirmation messages should include the brand name.\n- If the opt-in flow belongs to a different company, register that company as its own brand and create a separate campaign for it.\n\n### Required fields and what reviewers verify\n\n| API field         | What TCR checks                                                                 | Details                                                                                                                                                             |\n| ----------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `message_flow`    | End-to-end description of every opt-in path; links to privacy policy and terms  | 40 to 2049 characters. [Field reference](/docs/messaging/compliance/a2p-10dlc/collect-business-info#message_flow)                                                   |\n| `opt_in_message`  | Auto-reply confirming enrollment, including Brand name and opt-out instructions | 20 to 320 characters. Required when keyword opt-in is offered. [Field reference](/docs/messaging/compliance/a2p-10dlc/collect-business-info#opt_in_message)         |\n| `help_message`    | Auto-reply with support options when users send a help keyword                  | 20 to 320 characters. Required when managing help replies independently. [Field reference](/docs/messaging/compliance/a2p-10dlc/collect-business-info#help_message) |\n| `opt_out_message` | Acknowledgment of opt-out and confirmation no further messages will be sent     | 20 to 320 characters. Required when managing opt-out independently. [Field reference](/docs/messaging/compliance/a2p-10dlc/collect-business-info#opt_out_message)   |\n\n#### Additional resources\n\n- [US A2P 10DLC overview](/docs/messaging/compliance/a2p-10dlc)\n- [Gather the required business information for A2P 10DLC](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* You submitted an opt-in screenshot, website, or consent example that belongs to a different campaign or a different brand in your organization.\n* The company name shown in your opt-in materials does not match the brand registered for this campaign.\n* You registered one company as the brand, but the messages and consent flow actually belong to another company.\n* Your opt-in evidence still shows older branding that was not updated before you submitted the campaign.",
    "solutions": "* Submit opt-in evidence that exactly matches the registered brand name and branding for the campaign. Make sure the company name, logo, and website shown in the evidence are consistent with the brand registration.\n* Review the brand registration details first, then update the campaign submission so the brand and campaign information refer to the same company.\n* If end users opt in on a website, make sure the website call to action identifies your brand and includes clear opt-in language. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n* If the website does not publicly display the required opt-in details, provide a URL with hosted screenshots of the relevant opt-in pages.\n* Update your `message_samples` and any applicable `opt_in_message` so they identify the correct brand. Twilio requires sample messages to identify the brand by name, website, or both, and keyword-based opt-in confirmation messages should include the brand name.\n* If the opt-in flow belongs to a different company, register that company as its own brand and create a separate campaign for it.",
    "description": "This error means your A2P 10DLC campaign was rejected because the opt-in evidence you submitted identifies a company that does not match the brand registered for the campaign. This mismatch can appear in the opt-in flow, consent language, website, or other proof of consent you provide during campaign registration. A2P 10DLC campaign submissions must clearly show who is sending the messages and how end users consent. If you collect consent on a website, provide a working URL and make sure the required opt-in details are publicly visible. If they are not publicly visible, provide a URL that hosts screenshots of the relevant pages.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30928,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Social influencer/public figure use case not permitted",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because the registered campaign use case is for social influencer or public figure communications. Register A2P 10DLC campaigns for business-to-consumer messaging by a registered business. A campaign whose sole purpose is letting a social influencer or public figure message followers does not qualify for this use case.\n\n### Possible causes\n\n- The campaign description says the sender is a social influencer or public figure and the recipients are followers, fans, or subscribers.\n- The registered brand is presented as a personal brand or individual identity instead of a business with a valid consumer messaging use case.\n- The sample messages describe follower communications such as personal updates, shoutouts, or fan outreach instead of business messaging tied to a registered business.\n\n### Possible solutions\n\n- If the sender operates a legitimate business, register that business and submit a campaign that reflects the business use case, such as customer care, account notifications, or marketing.\n- Update the campaign description, sample messages, and consent details so they clearly identify the business, the recipients, and why the messages are being sent.\n- If the campaign use case itself needs to change, delete the rejected campaign and create a new campaign with the correct use case.\n- If the messaging remains influencer or public figure outreach, use another eligible Twilio product or channel for that communication pattern instead of A2P 10DLC.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The campaign description says the sender is a social influencer or public figure and the recipients are followers, fans, or subscribers.\n* The registered brand is presented as a personal brand or individual identity instead of a business with a valid consumer messaging use case.\n* The sample messages describe follower communications such as personal updates, shoutouts, or fan outreach instead of business messaging tied to a registered business.",
    "solutions": "* If the sender operates a legitimate business, register that business and submit a campaign that reflects the business use case, such as customer care, account notifications, or marketing.\n* Update the campaign description, sample messages, and consent details so they clearly identify the business, the recipients, and why the messages are being sent.\n* If the campaign use case itself needs to change, delete the rejected campaign and create a new campaign with the correct use case.\n* If the messaging remains influencer or public figure outreach, use another eligible Twilio product or channel for that communication pattern instead of A2P 10DLC.",
    "description": "Your A2P 10DLC campaign was rejected because the registered campaign use case is for social influencer or public figure communications. Register A2P 10DLC campaigns for business-to-consumer messaging by a registered business. A campaign whose sole purpose is letting a social influencer or public figure message followers does not qualify for this use case.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30929,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Emergency alert notifications are not a permitted use case",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYou receive this error when your A2P 10DLC campaign submission describes emergency alert notifications in a way carriers do not accept for the campaign type you registered. In A2P 10DLC, emergency messaging is handled as the `EMERGENCY` special use case and can require additional carrier review. If your traffic is not true public safety or health emergency messaging, register the campaign under the correct business use case and remove emergency alert language from your campaign details and sample messages.\n\n### Possible causes\n\n- Your campaign description says you will send emergency or public safety alerts.\n- Your sample messages include emergency language such as evacuation notices, severe weather warnings, AMBER alerts, or similar public safety notifications.\n- The selected campaign use case does not match the traffic you plan to send.\n- Your use case may qualify only as the `EMERGENCY` special use case, which requires additional review and is not interchangeable with standard campaign types.\n- Your campaign uses emergency wording for messages that are actually business notifications such as account updates, fraud alerts, or service notices.\n\n### Possible solutions\n\n- If your messages are not true emergency notifications, update the campaign to the business use case that matches your traffic, such as `SECURITY_ALERT`, `ACCOUNT_NOTIFICATION`, or `PUBLIC_SERVICE_ANNOUNCEMENT`.\n- Rewrite the campaign description and sample messages so they clearly reflect the actual purpose of the messaging and do not describe emergency alerting if that is not your use case.\n- If your traffic is legitimate public safety or health emergency messaging, review the requirements for the `EMERGENCY` special use case and complete any required approval steps before resubmitting.\n- Make sure your campaign description, message flow, and sample messages are consistent with each other and with the selected use case.\n- If you are sending one-time passcodes only, consider using Twilio Verify instead of registering that traffic under a different A2P 10DLC use case.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your campaign description says you will send emergency or public safety alerts.\n* Your sample messages include emergency language such as evacuation notices, severe weather warnings, AMBER alerts, or similar public safety notifications.\n* The selected campaign use case does not match the traffic you plan to send.\n* Your use case may qualify only as the `EMERGENCY` special use case, which requires additional review and is not interchangeable with standard campaign types.\n* Your campaign uses emergency wording for messages that are actually business notifications such as account updates, fraud alerts, or service notices.",
    "solutions": "* If your messages are not true emergency notifications, update the campaign to the business use case that matches your traffic, such as `SECURITY_ALERT`, `ACCOUNT_NOTIFICATION`, or `PUBLIC_SERVICE_ANNOUNCEMENT`.\n* Rewrite the campaign description and sample messages so they clearly reflect the actual purpose of the messaging and do not describe emergency alerting if that is not your use case.\n* If your traffic is legitimate public safety or health emergency messaging, review the requirements for the `EMERGENCY` special use case and complete any required approval steps before resubmitting.\n* Make sure your campaign description, message flow, and sample messages are consistent with each other and with the selected use case.\n* If you are sending one-time passcodes only, consider using Twilio Verify instead of registering that traffic under a different A2P 10DLC use case.",
    "description": "You receive this error when your A2P 10DLC campaign submission describes emergency alert notifications in a way carriers do not accept for the campaign type you registered. In A2P 10DLC, emergency messaging is handled as the `EMERGENCY` special use case and can require additional carrier review. If your traffic is not true public safety or health emergency messaging, register the campaign under the correct business use case and remove emergency alert language from your campaign details and sample messages.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30930,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Brand campaign limit of 100 reached",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign registration was rejected because the associated brand has already reached the maximum of 100 campaigns. The Campaign Registry enforces this limit per brand.\n\n### Possible causes\n\n- The brand already has 100 registered campaigns.\n- Campaigns that are no longer needed are still registered and count toward the brand limit.\n- Similar messaging programs were registered as separate campaigns instead of being consolidated where appropriate.\n\n### Possible solutions\n\n- Review the brand's existing campaigns in Twilio Console or through the API and identify campaigns you no longer need.\n- Delete only unused campaigns before you submit another campaign registration.\n- Consolidate overlapping campaigns when the same brand and use case can be managed with fewer registrations.\n- If you delete an approved campaign, expect A2P 10DLC messaging from the associated Messaging Service to stop until you create and receive approval for a new campaign.\n- If you need help reviewing or managing existing campaign registrations, contact Twilio Support.\n\n#### Additional resources\n\n- [US A2P 10DLC overview](/docs/messaging/compliance/a2p-10dlc)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The brand already has 100 registered campaigns.\n* Campaigns that are no longer needed are still registered and count toward the brand limit.\n* Similar messaging programs were registered as separate campaigns instead of being consolidated where appropriate.",
    "solutions": "* Review the brand's existing campaigns in Twilio Console or through the API and identify campaigns you no longer need.\n* Delete only unused campaigns before you submit another campaign registration.\n* Consolidate overlapping campaigns when the same brand and use case can be managed with fewer registrations.\n* If you delete an approved campaign, expect A2P 10DLC messaging from the associated Messaging Service to stop until you create and receive approval for a new campaign.\n* If you need help reviewing or managing existing campaign registrations, contact Twilio Support.",
    "description": "Your A2P 10DLC campaign registration was rejected because the associated brand has already reached the maximum of 100 campaigns. The Campaign Registry enforces this limit per brand.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30931,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Opt-in process must allow consumers to decline",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign registration was rejected because the opt-in workflow does not let end users decline SMS consent and still complete the primary action. Consent must be explicit and voluntary. If you collect opt-in on a website or in an app, the messaging consent flow must be clearly described, verifiable, and separate from required actions such as creating an account, completing a purchase, or accepting required policies.\n\n### Possible causes\n\n- The consumer must agree to receive SMS messages to complete a purchase, registration, signup, or another required step.\n- The web or app form does not provide a real way to decline messaging and still continue.\n- A checkbox or similar control is preselected, locked, or cannot be cleared by the consumer.\n- SMS consent is bundled with required acceptance of Terms of Service, a privacy policy, or another mandatory agreement.\n- A single button or action grants both messaging consent and other required permissions with no separate consent choice.\n- The submitted `message_flow`, website URL, or screenshots do not clearly show that messaging consent is optional.\n\n### Possible solutions\n\n- Make SMS consent optional so the consumer can complete the main action without joining the messaging campaign.\n- Use a separate consent step for messaging. If you use a checkbox, leave it unchecked by default.\n- Separate SMS consent from required Terms of Service, privacy policy acceptance, and any other mandatory permissions.\n- If you collect opt-in on a website, provide a verifiable public URL or hosted screenshots that clearly show the opt-in language and the ability to decline.\n- Update the opt-in language anywhere you collect phone numbers so it clearly states that the user is agreeing to receive text messages from your business.\n- For web opt-in, include the required disclosures and make sure your site includes a compliant privacy policy and terms of service.\n- If your campaign supports keyword-based opt-in, provide the `opt_in_keywords` and a compliant `opt_in_message`.\n- After you update the consent flow, resubmit the campaign with revised evidence that shows users can decline messaging and still proceed.\n\n#### Additional resources\n\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC registration application quickstart](/docs/messaging/compliance/a2p-10dlc/quickstart)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The consumer must agree to receive SMS messages to complete a purchase, registration, signup, or another required step.\n* The web or app form does not provide a real way to decline messaging and still continue.\n* A checkbox or similar control is preselected, locked, or cannot be cleared by the consumer.\n* SMS consent is bundled with required acceptance of Terms of Service, a privacy policy, or another mandatory agreement.\n* A single button or action grants both messaging consent and other required permissions with no separate consent choice.\n* The submitted `message_flow`, website URL, or screenshots do not clearly show that messaging consent is optional.",
    "solutions": "* Make SMS consent optional so the consumer can complete the main action without joining the messaging campaign.\n* Use a separate consent step for messaging. If you use a checkbox, leave it unchecked by default.\n* Separate SMS consent from required Terms of Service, privacy policy acceptance, and any other mandatory permissions.\n* If you collect opt-in on a website, provide a verifiable public URL or hosted screenshots that clearly show the opt-in language and the ability to decline.\n* Update the opt-in language anywhere you collect phone numbers so it clearly states that the user is agreeing to receive text messages from your business.\n* For web opt-in, include the required disclosures and make sure your site includes a compliant privacy policy and terms of service.\n* If your campaign supports keyword-based opt-in, provide the `opt_in_keywords` and a compliant `opt_in_message`.\n* After you update the consent flow, resubmit the campaign with revised evidence that shows users can decline messaging and still proceed.",
    "description": "Your A2P 10DLC campaign registration was rejected because the opt-in workflow does not let end users decline SMS consent and still complete the primary action. Consent must be explicit and voluntary. If you collect opt-in on a website or in an app, the messaging consent flow must be clearly described, verifiable, and separate from required actions such as creating an account, completing a purchase, or accepting required policies.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30932,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Privacy policy must disclose third-party data sharing",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nTwilio rejects this A2P 10DLC campaign when your privacy policy or opt-in flow shows that mobile opt-in data may be shared with third parties, affiliates, or lead generators, or when your submission does not include the required non-sharing disclosure for mobile information. For A2P 10DLC registration, make your privacy policy publicly accessible and state that mobile information will not be shared with third parties or affiliates for marketing or promotional purposes.\n\n### Possible causes\n\n- Your privacy policy says that mobile information, SMS consent, or opt-in data may be shared, sold, rented, or transferred to third parties, affiliates, or other organizations.\n- Your privacy policy does not include a clear statement that mobile numbers and opt-in data will not be shared for marketing or promotional purposes.\n- Your `message_flow` or call to action does not link to a publicly accessible privacy policy, or the privacy policy cannot be reviewed as part of the campaign submission.\n- Your campaign treats consent as transferable between businesses, affiliates, or downstream recipients instead of collecting consent for the specific campaign and sender. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n\n### Possible solutions\n\n- Update your privacy policy to clearly state that mobile opt-in data and consent will not be shared or sold to third parties, affiliates, or lead generators for marketing or promotional purposes.\n- Remove or revise any privacy policy language that suggests SMS consent can be shared, rented, transferred, or sold.\n- Make your privacy policy publicly accessible and include that link in your `message_flow` description when you submit the campaign.\n- Describe every opt-in method used for the campaign and make sure each method includes the required privacy disclosure.\n- If more than one business will send messages, collect consent separately for each sender instead of passing consent between recipients. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))\n\n#### Additional resources\n\n- [A2P 10DLC registration application quickstart](/docs/messaging/compliance/a2p-10dlc/quickstart)\n- [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [A2P 10DLC Campaign Approval Requirements](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Your privacy policy says that mobile information, SMS consent, or opt-in data may be shared, sold, rented, or transferred to third parties, affiliates, or other organizations.\n* Your privacy policy does not include a clear statement that mobile numbers and opt-in data will not be shared for marketing or promotional purposes.\n* Your `message_flow` or call to action does not link to a publicly accessible privacy policy, or the privacy policy cannot be reviewed as part of the campaign submission.\n* Your campaign treats consent as transferable between businesses, affiliates, or downstream recipients instead of collecting consent for the specific campaign and sender. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))",
    "solutions": "* Update your privacy policy to clearly state that mobile opt-in data and consent will not be shared or sold to third parties, affiliates, or lead generators for marketing or promotional purposes.\n* Remove or revise any privacy policy language that suggests SMS consent can be shared, rented, transferred, or sold.\n* Make your privacy policy publicly accessible and include that link in your `message_flow` description when you submit the campaign.\n* Describe every opt-in method used for the campaign and make sure each method includes the required privacy disclosure.\n* If more than one business will send messages, collect consent separately for each sender instead of passing consent between recipients. ([help.twilio.com](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices))",
    "description": "Twilio rejects this A2P 10DLC campaign when your privacy policy or opt-in flow shows that mobile opt-in data may be shared with third parties, affiliates, or lead generators, or when your submission does not include the required non-sharing disclosure for mobile information. For A2P 10DLC registration, make your privacy policy publicly accessible and state that mobile information will not be shared with third parties or affiliates for marketing or promotional purposes.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30933,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign registration rejected: Privacy Policy URL is required for A2P 10DLC campaign",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign registration was rejected because the `PrivacyPolicyUrl` field was not included in the API request. Starting June 30, 2026, the `PrivacyPolicyUrl` parameter is required when creating a campaign via the Twilio REST API. This field must contain a valid, publicly accessible URL to the privacy policy for the business registering the campaign.\n\nThis error is distinct from [Error 30908](/docs/api/errors/30908), which indicates that a privacy policy was provided but its content did not pass compliance review. Error 30933 means the URL field itself was missing from the request.\n\n### Possible Causes\n\n- **Field omitted from API request:** The `PrivacyPolicyUrl` parameter was not included in the `POST` request to the campaign creation endpoint (`/v1/Services/{MessagingServiceSid}/Compliance/Usa2p`).\n- **Integration not updated:** Your integration code was written before June 30, 2026 when this field was optional, and has not been updated to include it.\n- **ISV onboarding flow missing field:** If you are an ISV registering campaigns on behalf of customers, your onboarding flow may not collect the privacy policy URL from end customers.\n- **Empty or null value:** The field was included in the request but with an empty string or null value.\n\n### Possible Solutions\n\n- **Add `PrivacyPolicyUrl` to your API request:** Include the `PrivacyPolicyUrl` parameter in every campaign creation request. The value must be a valid, publicly accessible HTTPS URL pointing to the business's privacy policy page.\n- **Collect privacy policy URLs from your customers:** If you are an ISV, update your customer onboarding flow to require a privacy policy URL before submitting campaign registrations.\n- **Verify the URL is valid:** Ensure the URL uses `https://`, is publicly accessible without authentication, and points to a page containing an actual privacy policy relevant to the business.\n- **Resubmit the campaign:** Once you have added the `PrivacyPolicyUrl` field, submit a new campaign registration request.\n\nAdditional help resources\n\n- [ISV API Onboarding Guide — Privacy Policy and Terms & Conditions URLs](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api)\n- [UsAppToPerson Resource API Reference](/docs/messaging/api/usapptoperson-resource)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [A2P 10DLC — Gather Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": null,
    "solutions": null,
    "description": "Your A2P 10DLC campaign registration was rejected because the `PrivacyPolicyUrl` field was not included in the API request. Starting June 30, 2026, the `PrivacyPolicyUrl` parameter is required when creating a campaign via the Twilio REST API. This field must contain a valid, publicly accessible URL to the privacy policy for the business registering the campaign. This error is distinct from [Error 30908](/docs/api/errors/30908), which indicates that a privacy policy was provided but its content did not pass compliance review. Error 30933 means the URL field itself was missing from the request.",
    "date_created": "2026-04-01T13:57:11-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30934,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign registration rejected: Terms and Conditions URL is required for A2P 10DLC",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign registration was rejected because the `TermsAndConditionsUrl` field was not included in the API request. Starting June 30, 2026, the `TermsAndConditionsUrl` parameter is required when creating a campaign via the Twilio REST API. This field must contain a valid, publicly accessible URL to the terms and conditions for the business registering the campaign.\n\nThis error is distinct from [Error 30882](/docs/api/errors/30882), which indicates that terms and conditions content did not pass compliance review. Error 30934 means the URL field itself was missing from the request.\n\n### Possible Causes\n\n- **Field omitted from API request:** The `TermsAndConditionsUrl` parameter was not included in the `POST` request to the campaign creation endpoint (`/v1/Services/{MessagingServiceSid}/Compliance/Usa2p`).\n- **Integration not updated:** Your integration code was written before June 30, 2026 when this field was optional, and has not been updated to include it.\n- **ISV onboarding flow missing field:** If you are an ISV registering campaigns on behalf of customers, your onboarding flow may not collect the terms and conditions URL from end customers.\n- **Empty or null value:** The field was included in the request but with an empty string or null value.\n\n### Possible Solutions\n\n- **Add `TermsAndConditionsUrl` to your API request:** Include the `TermsAndConditionsUrl` parameter in every campaign creation request. The value must be a valid, publicly accessible HTTPS URL pointing to the business's terms and conditions page.\n- **Collect terms and conditions URLs from your customers:** If you are an ISV, update your customer onboarding flow to require a terms and conditions URL before submitting campaign registrations.\n- **Verify the URL is valid:** Ensure the URL uses `https://`, is publicly accessible without authentication, and points to a page containing actual terms and conditions relevant to the business.\n- **Resubmit the campaign:** Once you have added the `TermsAndConditionsUrl` field, submit a new campaign registration request.\n\nAdditional help resources\n\n- [ISV API Onboarding Guide — Privacy Policy and Terms & Conditions URLs](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api)\n- [UsAppToPerson Resource API Reference](/docs/messaging/api/usapptoperson-resource)\n- [A2P 10DLC Campaign Approval Best Practices](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [A2P 10DLC — Gather Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": null,
    "solutions": null,
    "description": "Your A2P 10DLC campaign registration was rejected because the `TermsAndConditionsUrl` field was not included in the API request. Starting June 30, 2026, the `TermsAndConditionsUrl` parameter is required when creating a campaign via the Twilio REST API. This field must contain a valid, publicly accessible URL to the terms and conditions for the business registering the campaign. This error is distinct from [Error 30882](/docs/api/errors/30882), which indicates that terms and conditions content did not pass compliance review. Error 30934 means the URL field itself was missing from the request.",
    "date_created": "2026-04-01T13:57:11-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30935,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification - Requested Cancellation",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe verification request was canceled after a cancellation request was submitted.\n\n### Possible causes\n\n- A customer submitted a request to cancel the verification.\n\n### Possible solutions\n\n- Submit a new verification request if you still need to verify the number.\n",
    "causes": "* A customer submitted a request to cancel the verification.",
    "solutions": "* Submit a new verification request if you still need to verify the number.",
    "description": "The verification request was canceled after a cancellation request was submitted.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30936,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification rejection - HELP keyword response must meet requirements",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your verification submission was rejected because the `HELP` keyword response in the submission doesn't meet requirements. Messaging traffic on this phone number is blocked until the number is verified.\n\n### Possible causes\n\n- The `HELP` keyword response doesn't include customer contact details such as a phone number, email address, or website.\n- The `HELP` keyword response doesn't include your business or brand name.\n- The `HELP` keyword response doesn't provide clear support information.\n- The `HELP` keyword response uses formatting or content that doesn't meet requirements.\n\n### Possible solutions\n\n- Update your submitted `HELP` keyword response to include your business or brand name and at least one customer contact method, such as a phone number, email address, or website.\n- Make sure the `HELP` response tells users how to get assistance.\n- Resubmit the verification request after you correct the `HELP` response.\n",
    "causes": "* The `HELP` keyword response doesn't include customer contact details such as a phone number, email address, or website.\n* The `HELP` keyword response doesn't include your business or brand name.\n* The `HELP` keyword response doesn't provide clear support information.\n* The `HELP` keyword response uses formatting or content that doesn't meet requirements.",
    "solutions": "* Update your submitted `HELP` keyword response to include your business or brand name and at least one customer contact method, such as a phone number, email address, or website.\n* Make sure the `HELP` response tells users how to get assistance.\n* Resubmit the verification request after you correct the `HELP` response.",
    "description": "This error means your verification submission was rejected because the `HELP` keyword response in the submission doesn't meet requirements. Messaging traffic on this phone number is blocked until the number is verified.",
    "date_created": "2026-05-01T09:41:06-06:00",
    "last_updated": "2026-05-01T09:41:06-06:00"
  },
  {
    "code": 30937,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone number association rejection - Phone number limit exceeded for registration",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe request to add a phone number to a registration was rejected because the registration has reached the maximum number of phone numbers allowed.\n\n### Possible causes\n\n- The registration already has the maximum number of phone numbers associated with it.\n- Multiple phone numbers were added to the registration without awareness of the per-registration limit.\n\n### Possible solutions\n\n- Create a new registration for the additional phone numbers instead of adding them to the existing registration.\n- Review the phone numbers currently associated with the registration and remove any that are no longer needed before adding new ones.\n",
    "causes": "* The registration already has the maximum number of phone numbers associated with it.\n* Multiple phone numbers were added to the registration without awareness of the per-registration limit.",
    "solutions": "* Create a new registration for the additional phone numbers instead of adding them to the existing registration.\n* Review the phone numbers currently associated with the registration and remove any that are no longer needed before adding new ones.",
    "description": "The request to add a phone number to a registration was rejected because the registration has reached the maximum number of phone numbers allowed.",
    "date_created": "2026-07-09T16:14:54-06:00",
    "last_updated": "2026-07-09T16:14:54-06:00"
  },
  {
    "code": 30940,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Cannabis, CBD, or illegal substance content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains content related to cannabis, CBD, marijuana, or other illegal substances. Under carrier policies and CTIA guidelines, A2P messaging campaigns that promote, advertise, or facilitate the sale of cannabis, CBD products, marijuana, or controlled substances are prohibited regardless of state-level legality. These restrictions reflect federal law classifications and carrier acceptable use policies.\n\n### Possible causes\n\n- **Cannabis or marijuana promotion:** The campaign description, sample messages, or website promotes the sale or delivery of cannabis or marijuana products.\n- **CBD product marketing:** The campaign involves marketing or advertising CBD oils, edibles, or other CBD-derived products via SMS/MMS messaging.\n- **Illegal substance references:** The campaign content references controlled or illegal substances, including synthetic drugs or drug paraphernalia.\n- **Dispensary or delivery service messaging:** The campaign is associated with a cannabis dispensary, delivery service, or related business that facilitates substance transactions.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving cannabis, CBD, marijuana, or illegal substance content are prohibited under carrier guidelines.\n- Review the CTIA Short Code Monitoring Handbook and carrier acceptable use policies for the full list of prohibited content categories before registering future campaigns.\n- Consider alternative communication channels that may support your business use case outside of A2P 10DLC messaging.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Cannabis or marijuana promotion:** The campaign description, sample messages, or website promotes the sale or delivery of cannabis or marijuana products.\n* **CBD product marketing:** The campaign involves marketing or advertising CBD oils, edibles, or other CBD-derived products via SMS/MMS messaging.\n* **Illegal substance references:** The campaign content references controlled or illegal substances, including synthetic drugs or drug paraphernalia.\n* **Dispensary or delivery service messaging:** The campaign is associated with a cannabis dispensary, delivery service, or related business that facilitates substance transactions.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving cannabis, CBD, marijuana, or illegal substance content are prohibited under carrier guidelines.\n* Review the CTIA Short Code Monitoring Handbook and carrier acceptable use policies for the full list of prohibited content categories before registering future campaigns.\n* Consider alternative communication channels that may support your business use case outside of A2P 10DLC messaging.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains content related to cannabis, CBD, marijuana, or other illegal substances. Under carrier policies and CTIA guidelines, A2P messaging campaigns that promote, advertise, or facilitate the sale of cannabis, CBD products, marijuana, or controlled substances are prohibited regardless of state-level legality. These restrictions reflect federal law classifications and carrier acceptable use policies.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30941,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Prescription drug or controlled substance content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains content related to prescription drug marketing or controlled substances. Carrier policies and CTIA guidelines prohibit A2P messaging campaigns that promote, advertise, or facilitate the sale or distribution of prescription medications or controlled substances. This includes direct-to-consumer pharmaceutical marketing, online pharmacy promotions, and messaging related to controlled substance availability.\n\n### Possible causes\n\n- **Prescription drug advertising:** The campaign promotes or advertises specific prescription medications directly to consumers via SMS/MMS.\n- **Online pharmacy promotion:** The campaign is associated with an online pharmacy or mail-order prescription service that markets medications through messaging.\n- **Controlled substance references:** The campaign content references the availability, pricing, or distribution of controlled substances as classified by the DEA.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving prescription drug marketing or controlled substance content are prohibited under carrier guidelines.\n- Note that transactional messages such as prescription refill reminders from a licensed pharmacy to existing patients may be permissible under a different campaign use case. Consult Twilio documentation for guidance on compliant healthcare messaging.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Prescription drug advertising:** The campaign promotes or advertises specific prescription medications directly to consumers via SMS/MMS.\n* **Online pharmacy promotion:** The campaign is associated with an online pharmacy or mail-order prescription service that markets medications through messaging.\n* **Controlled substance references:** The campaign content references the availability, pricing, or distribution of controlled substances as classified by the DEA.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving prescription drug marketing or controlled substance content are prohibited under carrier guidelines.\n* Note that transactional messages such as prescription refill reminders from a licensed pharmacy to existing patients may be permissible under a different campaign use case. Consult Twilio documentation for guidance on compliant healthcare messaging.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains content related to prescription drug marketing or controlled substances. Carrier policies and CTIA guidelines prohibit A2P messaging campaigns that promote, advertise, or facilitate the sale or distribution of prescription medications or controlled substances. This includes direct-to-consumer pharmaceutical marketing, online pharmacy promotions, and messaging related to controlled substance availability.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30942,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Loan marketing content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains direct loan marketing content. Carrier policies prohibit A2P messaging campaigns that promote or solicit lending products such as payday loans, auto title loans, personal loans, or similar financial products. These restrictions apply to direct-to-consumer loan solicitations and promotional lending messages sent via SMS/MMS.\n\n### Possible causes\n\n- **Payday loan promotion:** The campaign promotes payday lending, cash advance services, or short-term high-interest loan products.\n- **Auto title or personal loan marketing:** The campaign advertises auto title loans, personal loans, or other consumer lending products via messaging.\n- **Loan lead generation:** The campaign collects consumer information for the purpose of connecting them with loan providers or lending marketplaces.\n- **Promotional lending offers:** The campaign sample messages or description include loan offers, interest rate promotions, or pre-approval solicitations.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving direct loan marketing content are prohibited under carrier guidelines.\n- Note that transactional messages such as payment reminders, account notifications, or servicing communications to existing borrowers may be permissible under a different campaign use case. Consult Twilio documentation for compliant financial services messaging.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Payday loan promotion:** The campaign promotes payday lending, cash advance services, or short-term high-interest loan products.\n* **Auto title or personal loan marketing:** The campaign advertises auto title loans, personal loans, or other consumer lending products via messaging.\n* **Loan lead generation:** The campaign collects consumer information for the purpose of connecting them with loan providers or lending marketplaces.\n* **Promotional lending offers:** The campaign sample messages or description include loan offers, interest rate promotions, or pre-approval solicitations.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving direct loan marketing content are prohibited under carrier guidelines.\n* Note that transactional messages such as payment reminders, account notifications, or servicing communications to existing borrowers may be permissible under a different campaign use case. Consult Twilio documentation for compliant financial services messaging.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains direct loan marketing content. Carrier policies prohibit A2P messaging campaigns that promote or solicit lending products such as payday loans, auto title loans, personal loans, or similar financial products. These restrictions apply to direct-to-consumer loan solicitations and promotional lending messages sent via SMS/MMS.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30943,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Third-party debt collection content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it involves third-party debt collection messaging. Carrier policies prohibit A2P messaging campaigns where a third-party entity attempts to collect debts on behalf of another creditor via SMS/MMS. Third-party debt collection is heavily regulated under the Fair Debt Collection Practices Act (FDCPA) and is classified as a prohibited use case for A2P 10DLC campaigns.\n\n### Possible causes\n\n- **Third-party collection agency messaging:** The campaign is registered by a debt collection agency that collects debts owed to other companies or creditors.\n- **Debt recovery solicitation:** The campaign content references debt recovery, past-due account collection, or payment demands on behalf of a third party.\n- **FDCPA-regulated communications:** The campaign involves communications that fall under FDCPA third-party debt collection regulations, including balance notifications or settlement offers from a non-original creditor.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving third-party debt collection are prohibited under carrier guidelines.\n- Note that first-party debt communications (where the original creditor contacts their own customers about outstanding balances) may be permissible under a different campaign use case. Consult Twilio documentation for guidance.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Third-party collection agency messaging:** The campaign is registered by a debt collection agency that collects debts owed to other companies or creditors.\n* **Debt recovery solicitation:** The campaign content references debt recovery, past-due account collection, or payment demands on behalf of a third party.\n* **FDCPA-regulated communications:** The campaign involves communications that fall under FDCPA third-party debt collection regulations, including balance notifications or settlement offers from a non-original creditor.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving third-party debt collection are prohibited under carrier guidelines.\n* Note that first-party debt communications (where the original creditor contacts their own customers about outstanding balances) may be permissible under a different campaign use case. Consult Twilio documentation for guidance.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it involves third-party debt collection messaging. Carrier policies prohibit A2P messaging campaigns where a third-party entity attempts to collect debts on behalf of another creditor via SMS/MMS. Third-party debt collection is heavily regulated under the Fair Debt Collection Practices Act (FDCPA) and is classified as a prohibited use case for A2P 10DLC campaigns.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30944,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Gambling or betting content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains gambling or betting-related content. Carrier policies and CTIA guidelines prohibit A2P messaging campaigns that promote, advertise, or facilitate gambling, sports betting, casino games, or other wagering activities. This restriction applies regardless of whether the gambling activity is licensed or legal in a particular jurisdiction.\n\n### Possible causes\n\n- **Sports betting promotion:** The campaign promotes sports betting platforms, wagering offers, or betting odds via SMS/MMS messaging.\n- **Casino or online gambling marketing:** The campaign advertises online casinos, poker platforms, slot games, or other gambling services.\n- **Wagering facilitation:** The campaign facilitates placing bets, managing wagers, or distributing gambling-related promotional offers such as free bets or deposit bonuses.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving gambling or betting content are prohibited under carrier guidelines.\n- Review carrier acceptable use policies for the full list of prohibited content categories before registering future campaigns.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Sports betting promotion:** The campaign promotes sports betting platforms, wagering offers, or betting odds via SMS/MMS messaging.\n* **Casino or online gambling marketing:** The campaign advertises online casinos, poker platforms, slot games, or other gambling services.\n* **Wagering facilitation:** The campaign facilitates placing bets, managing wagers, or distributing gambling-related promotional offers such as free bets or deposit bonuses.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving gambling or betting content are prohibited under carrier guidelines.\n* Review carrier acceptable use policies for the full list of prohibited content categories before registering future campaigns.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains gambling or betting-related content. Carrier policies and CTIA guidelines prohibit A2P messaging campaigns that promote, advertise, or facilitate gambling, sports betting, casino games, or other wagering activities. This restriction applies regardless of whether the gambling activity is licensed or legal in a particular jurisdiction.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30945,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Sweepstakes or contest content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains sweepstakes, contest, or prize promotion content. Carrier policies prohibit A2P messaging campaigns that promote or facilitate sweepstakes, contests, giveaways, or prize-based promotions via SMS/MMS. These restrictions apply due to the high abuse potential and regulatory complexity associated with prize promotions in messaging channels.\n\n### Possible causes\n\n- **Sweepstakes promotion:** The campaign promotes a sweepstakes, raffle, or random-draw prize giveaway through messaging.\n- **Contest or competition messaging:** The campaign facilitates entry into contests, competitions, or other promotional events that award prizes.\n- **Prize notification messages:** The campaign sends messages informing recipients that they have won or may win prizes, rewards, or free items.\n- **Incentivized opt-in with prizes:** The campaign uses prize offers or giveaways as incentives to drive consumer opt-in to messaging.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving sweepstakes or contest content are prohibited under carrier guidelines.\n- Review the CTIA guidelines and carrier acceptable use policies for the complete list of prohibited promotional content categories.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Sweepstakes promotion:** The campaign promotes a sweepstakes, raffle, or random-draw prize giveaway through messaging.\n* **Contest or competition messaging:** The campaign facilitates entry into contests, competitions, or other promotional events that award prizes.\n* **Prize notification messages:** The campaign sends messages informing recipients that they have won or may win prizes, rewards, or free items.\n* **Incentivized opt-in with prizes:** The campaign uses prize offers or giveaways as incentives to drive consumer opt-in to messaging.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving sweepstakes or contest content are prohibited under carrier guidelines.\n* Review the CTIA guidelines and carrier acceptable use policies for the complete list of prohibited promotional content categories.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains sweepstakes, contest, or prize promotion content. Carrier policies prohibit A2P messaging campaigns that promote or facilitate sweepstakes, contests, giveaways, or prize-based promotions via SMS/MMS. These restrictions apply due to the high abuse potential and regulatory complexity associated with prize promotions in messaging channels.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30946,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Stock alert content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains stock alert or investment signal content. Carrier policies prohibit A2P messaging campaigns that distribute stock tips, trading alerts, buy/sell signals, or other securities-related investment advice via SMS/MMS. These restrictions exist due to the high potential for fraud, market manipulation, and violations of SEC regulations associated with unsolicited stock tip messaging.\n\n### Possible causes\n\n- **Stock tip distribution:** The campaign sends stock picks, trading recommendations, or buy/sell alerts to recipients via messaging.\n- **Investment signal service:** The campaign operates as a subscription-based stock alert or trading signal service delivered through SMS/MMS.\n- **Penny stock or microcap promotion:** The campaign promotes penny stocks, microcap securities, or other speculative investment opportunities through messaging.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving stock alert content are prohibited under carrier guidelines.\n- Review SEC and FINRA regulations regarding electronic communications and investment advice before considering alternative communication channels.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Stock tip distribution:** The campaign sends stock picks, trading recommendations, or buy/sell alerts to recipients via messaging.\n* **Investment signal service:** The campaign operates as a subscription-based stock alert or trading signal service delivered through SMS/MMS.\n* **Penny stock or microcap promotion:** The campaign promotes penny stocks, microcap securities, or other speculative investment opportunities through messaging.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving stock alert content are prohibited under carrier guidelines.\n* Review SEC and FINRA regulations regarding electronic communications and investment advice before considering alternative communication channels.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains stock alert or investment signal content. Carrier policies prohibit A2P messaging campaigns that distribute stock tips, trading alerts, buy/sell signals, or other securities-related investment advice via SMS/MMS. These restrictions exist due to the high potential for fraud, market manipulation, and violations of SEC regulations associated with unsolicited stock tip messaging.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30947,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Cryptocurrency content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains cryptocurrency-related content. Carrier policies prohibit A2P messaging campaigns that promote, advertise, or facilitate cryptocurrency trading, initial coin offerings (ICOs), token sales, or other digital asset promotions via SMS/MMS. These restrictions reflect the high incidence of fraud and consumer harm associated with cryptocurrency promotion through messaging channels.\n\n### Possible causes\n\n- **Cryptocurrency trading promotion:** The campaign promotes cryptocurrency exchanges, trading platforms, or specific digital asset purchases.\n- **ICO or token sale marketing:** The campaign advertises initial coin offerings, token launches, NFT drops, or other digital asset sale events.\n- **Crypto investment signals:** The campaign distributes cryptocurrency price alerts, trading signals, or investment recommendations via messaging.\n- **DeFi or yield promotion:** The campaign promotes decentralized finance platforms, staking rewards, yield farming, or other crypto-based financial products.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving cryptocurrency content are prohibited under carrier guidelines.\n- Review carrier acceptable use policies for the full list of prohibited financial content categories before registering future campaigns.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Cryptocurrency trading promotion:** The campaign promotes cryptocurrency exchanges, trading platforms, or specific digital asset purchases.\n* **ICO or token sale marketing:** The campaign advertises initial coin offerings, token launches, NFT drops, or other digital asset sale events.\n* **Crypto investment signals:** The campaign distributes cryptocurrency price alerts, trading signals, or investment recommendations via messaging.\n* **DeFi or yield promotion:** The campaign promotes decentralized finance platforms, staking rewards, yield farming, or other crypto-based financial products.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving cryptocurrency content are prohibited under carrier guidelines.\n* Review carrier acceptable use policies for the full list of prohibited financial content categories before registering future campaigns.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains cryptocurrency-related content. Carrier policies prohibit A2P messaging campaigns that promote, advertise, or facilitate cryptocurrency trading, initial coin offerings (ICOs), token sales, or other digital asset promotions via SMS/MMS. These restrictions reflect the high incidence of fraud and consumer harm associated with cryptocurrency promotion through messaging channels.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30948,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: High-risk investment content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains high-risk investment content. Carrier policies prohibit A2P messaging campaigns that promote or facilitate high-risk investment opportunities such as forex trading, binary options, contracts for difference (CFDs), or other speculative financial instruments via SMS/MMS. These investment categories carry significant consumer risk and are frequently associated with fraudulent schemes.\n\n### Possible causes\n\n- **Forex trading promotion:** The campaign promotes foreign exchange trading platforms, forex signals, or currency trading opportunities.\n- **Binary options or CFD marketing:** The campaign advertises binary options, contracts for difference, or other derivative financial products to consumers.\n- **High-yield investment schemes:** The campaign promotes investment opportunities promising unusually high or guaranteed returns, which are characteristic of fraudulent schemes.\n- **Unregistered securities offerings:** The campaign markets investment products that are not registered with appropriate financial regulatory authorities.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving high-risk investment content are prohibited under carrier guidelines.\n- Review applicable SEC, CFTC, and FINRA regulations regarding the promotion of financial products through electronic communications.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Forex trading promotion:** The campaign promotes foreign exchange trading platforms, forex signals, or currency trading opportunities.\n* **Binary options or CFD marketing:** The campaign advertises binary options, contracts for difference, or other derivative financial products to consumers.\n* **High-yield investment schemes:** The campaign promotes investment opportunities promising unusually high or guaranteed returns, which are characteristic of fraudulent schemes.\n* **Unregistered securities offerings:** The campaign markets investment products that are not registered with appropriate financial regulatory authorities.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving high-risk investment content are prohibited under carrier guidelines.\n* Review applicable SEC, CFTC, and FINRA regulations regarding the promotion of financial products through electronic communications.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains high-risk investment content. Carrier policies prohibit A2P messaging campaigns that promote or facilitate high-risk investment opportunities such as forex trading, binary options, contracts for difference (CFDs), or other speculative financial instruments via SMS/MMS. These investment categories carry significant consumer risk and are frequently associated with fraudulent schemes.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30949,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Debt reduction or consolidation content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains debt reduction or consolidation content. Carrier policies prohibit A2P messaging campaigns that promote or solicit debt reduction, debt consolidation, or debt settlement services via SMS/MMS. These services are frequently associated with deceptive practices and consumer harm, leading carriers to classify them as prohibited content for A2P messaging.\n\n### Possible causes\n\n- **Debt consolidation promotion:** The campaign promotes debt consolidation loans or programs that combine multiple debts into a single payment.\n- **Debt settlement solicitation:** The campaign advertises debt settlement or debt negotiation services that claim to reduce the total amount owed.\n- **Debt relief lead generation:** The campaign collects consumer information for the purpose of connecting them with debt reduction or consolidation service providers.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving debt reduction or consolidation content are prohibited under carrier guidelines.\n- Note that existing creditors communicating with their own customers about account management or payment options may be permissible under a different campaign use case. Consult Twilio documentation for guidance.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Debt consolidation promotion:** The campaign promotes debt consolidation loans or programs that combine multiple debts into a single payment.\n* **Debt settlement solicitation:** The campaign advertises debt settlement or debt negotiation services that claim to reduce the total amount owed.\n* **Debt relief lead generation:** The campaign collects consumer information for the purpose of connecting them with debt reduction or consolidation service providers.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving debt reduction or consolidation content are prohibited under carrier guidelines.\n* Note that existing creditors communicating with their own customers about account management or payment options may be permissible under a different campaign use case. Consult Twilio documentation for guidance.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains debt reduction or consolidation content. Carrier policies prohibit A2P messaging campaigns that promote or solicit debt reduction, debt consolidation, or debt settlement services via SMS/MMS. These services are frequently associated with deceptive practices and consumer harm, leading carriers to classify them as prohibited content for A2P messaging.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30950,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Credit repair content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains credit repair content. Carrier policies prohibit A2P messaging campaigns that promote or solicit credit repair services via SMS/MMS. Credit repair messaging is classified as a prohibited content category due to the high prevalence of deceptive practices, consumer complaints, and regulatory enforcement actions associated with credit repair solicitations through messaging channels.\n\n### Possible causes\n\n- **Credit repair service promotion:** The campaign promotes services that claim to improve, fix, or repair consumer credit scores or credit reports.\n- **Credit score improvement solicitation:** The campaign advertises programs that promise to remove negative items from credit reports or rapidly increase credit scores.\n- **Credit repair lead generation:** The campaign collects consumer information for the purpose of marketing credit repair or credit restoration services.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving credit repair content are prohibited under carrier guidelines.\n- Review the Credit Repair Organizations Act (CROA) and FTC guidelines regarding credit repair service marketing before considering alternative communication channels.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Credit repair service promotion:** The campaign promotes services that claim to improve, fix, or repair consumer credit scores or credit reports.\n* **Credit score improvement solicitation:** The campaign advertises programs that promise to remove negative items from credit reports or rapidly increase credit scores.\n* **Credit repair lead generation:** The campaign collects consumer information for the purpose of marketing credit repair or credit restoration services.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving credit repair content are prohibited under carrier guidelines.\n* Review the Credit Repair Organizations Act (CROA) and FTC guidelines regarding credit repair service marketing before considering alternative communication channels.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains credit repair content. Carrier policies prohibit A2P messaging campaigns that promote or solicit credit repair services via SMS/MMS. Credit repair messaging is classified as a prohibited content category due to the high prevalence of deceptive practices, consumer complaints, and regulatory enforcement actions associated with credit repair solicitations through messaging channels.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30951,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Third-party lead generation or MLM content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains third-party lead generation or multi-level marketing (MLM) content. Carrier policies prohibit A2P messaging campaigns that involve generating leads for third-party businesses or promoting MLM/network marketing opportunities via SMS/MMS. These use cases are prohibited due to consent chain issues, high complaint rates, and the deceptive nature frequently associated with these messaging patterns.\n\n### Possible causes\n\n- **Third-party lead generation:** The campaign collects consumer information (phone numbers, personal details) to sell or distribute to other businesses as sales leads.\n- **MLM or network marketing recruitment:** The campaign promotes multi-level marketing, network marketing, or direct sales recruitment opportunities via messaging.\n- **Affiliate lead capture:** The campaign operates as an affiliate or intermediary, capturing consumer interest for products or services offered by unrelated third parties.\n- **Shared or resold consent:** The campaign uses consumer consent obtained for one purpose to send messages on behalf of different, unrelated businesses.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving third-party lead generation or MLM content are prohibited under carrier guidelines.\n- Ensure that messaging consent is specific to your brand and use case. Consent obtained for one business cannot be transferred to or shared with another entity.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Third-party lead generation:** The campaign collects consumer information (phone numbers, personal details) to sell or distribute to other businesses as sales leads.\n* **MLM or network marketing recruitment:** The campaign promotes multi-level marketing, network marketing, or direct sales recruitment opportunities via messaging.\n* **Affiliate lead capture:** The campaign operates as an affiliate or intermediary, capturing consumer interest for products or services offered by unrelated third parties.\n* **Shared or resold consent:** The campaign uses consumer consent obtained for one purpose to send messages on behalf of different, unrelated businesses.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving third-party lead generation or MLM content are prohibited under carrier guidelines.\n* Ensure that messaging consent is specific to your brand and use case. Consent obtained for one business cannot be transferred to or shared with another entity.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains third-party lead generation or multi-level marketing (MLM) content. Carrier policies prohibit A2P messaging campaigns that involve generating leads for third-party businesses or promoting MLM/network marketing opportunities via SMS/MMS. These use cases are prohibited due to consent chain issues, high complaint rates, and the deceptive nature frequently associated with these messaging patterns.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30952,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Non-federally compliant use case detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because the described use case does not comply with federal regulations. Carrier policies require that all A2P messaging campaigns operate within the bounds of applicable federal laws and regulations. Your campaign was identified as involving a use case that violates or cannot be reconciled with federal regulatory requirements, making it ineligible for A2P 10DLC messaging.\n\n### Possible causes\n\n- **Federally prohibited activity:** The campaign involves messaging for a use case that is prohibited under federal law, even if it may be permitted at the state or local level.\n- **Regulatory non-compliance:** The campaign use case conflicts with specific federal regulations governing the industry or activity described in the campaign registration.\n- **Unverifiable compliance claims:** The campaign claims compliance with federal regulations but the registration materials do not provide sufficient evidence to verify this claim.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving use cases that do not comply with federal regulations are prohibited under carrier guidelines.\n- Review all applicable federal regulations for your industry and messaging use case to understand why the campaign was classified as non-compliant.\n- Consult with legal counsel familiar with telecommunications and messaging regulations to evaluate whether your use case can be restructured to meet federal compliance requirements.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Federally prohibited activity:** The campaign involves messaging for a use case that is prohibited under federal law, even if it may be permitted at the state or local level.\n* **Regulatory non-compliance:** The campaign use case conflicts with specific federal regulations governing the industry or activity described in the campaign registration.\n* **Unverifiable compliance claims:** The campaign claims compliance with federal regulations but the registration materials do not provide sufficient evidence to verify this claim.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. A2P 10DLC campaigns involving use cases that do not comply with federal regulations are prohibited under carrier guidelines.\n* Review all applicable federal regulations for your industry and messaging use case to understand why the campaign was classified as non-compliant.\n* Consult with legal counsel familiar with telecommunications and messaging regulations to evaluate whether your use case can be restructured to meet federal compliance requirements.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because the described use case does not comply with federal regulations. Carrier policies require that all A2P messaging campaigns operate within the bounds of applicable federal laws and regulations. Your campaign was identified as involving a use case that violates or cannot be reconciled with federal regulatory requirements, making it ineligible for A2P 10DLC messaging.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30953,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: sex or adult content violation detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains sex or adult content that violates CTIA SHAFT guidelines. The Cellular Telecommunications Industry Association (CTIA) prohibits sexual, pornographic, or adult-oriented content in A2P messaging campaigns. This restriction applies to campaign descriptions, sample messages, website content, and any linked URLs.\n\n### Possible causes\n\n- **Explicit or suggestive content in campaign fields:** Campaign description, sample messages, or use case details contain sexually explicit, suggestive, or adult-oriented language.\n- **Adult content on linked website or landing page:** The website URL provided in the campaign registration hosts or links to pornographic, escort, dating, or adult entertainment content.\n- **Promotion of adult products or services:** The campaign promotes adult products, services, or content that falls under the CTIA sex/adult content prohibition.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. Sex and adult content is a prohibited content category under CTIA SHAFT guidelines and cannot be sent via A2P 10DLC messaging.\n- Review the [CTIA Messaging Principles and Best Practices](https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-principles-and-best-practices) for full details on prohibited content categories.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Explicit or suggestive content in campaign fields:** Campaign description, sample messages, or use case details contain sexually explicit, suggestive, or adult-oriented language.\n* **Adult content on linked website or landing page:** The website URL provided in the campaign registration hosts or links to pornographic, escort, dating, or adult entertainment content.\n* **Promotion of adult products or services:** The campaign promotes adult products, services, or content that falls under the CTIA sex/adult content prohibition.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. Sex and adult content is a prohibited content category under CTIA SHAFT guidelines and cannot be sent via A2P 10DLC messaging.\n* Review the [CTIA Messaging Principles and Best Practices](https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-principles-and-best-practices) for full details on prohibited content categories.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains sex or adult content that violates CTIA SHAFT guidelines. The Cellular Telecommunications Industry Association (CTIA) prohibits sexual, pornographic, or adult-oriented content in A2P messaging campaigns. This restriction applies to campaign descriptions, sample messages, website content, and any linked URLs.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30954,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: hate speech or violent content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains hate speech or violent content that violates CTIA SHAFT guidelines. The CTIA prohibits messaging campaigns that promote hatred, violence, harassment, or discrimination against individuals or groups. This includes content that incites violence, threatens harm, or uses derogatory language targeting protected characteristics.\n\n### Possible causes\n\n- **Hate speech or discriminatory language:** Campaign description, sample messages, or related content contains language that targets individuals or groups based on race, ethnicity, religion, gender, sexual orientation, disability, or other protected characteristics.\n- **Violent or threatening content:** The campaign includes content that promotes, glorifies, or incites violence, threats, or physical harm.\n- **Harassing or intimidating messaging:** Campaign content is designed to harass, bully, or intimidate recipients.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. Hate speech and violent content is a prohibited content category under CTIA SHAFT guidelines and cannot be sent via A2P 10DLC messaging.\n- Review your messaging use case to ensure it does not contain content that could be interpreted as hateful, violent, or discriminatory before considering a new campaign registration.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Hate speech or discriminatory language:** Campaign description, sample messages, or related content contains language that targets individuals or groups based on race, ethnicity, religion, gender, sexual orientation, disability, or other protected characteristics.\n* **Violent or threatening content:** The campaign includes content that promotes, glorifies, or incites violence, threats, or physical harm.\n* **Harassing or intimidating messaging:** Campaign content is designed to harass, bully, or intimidate recipients.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. Hate speech and violent content is a prohibited content category under CTIA SHAFT guidelines and cannot be sent via A2P 10DLC messaging.\n* Review your messaging use case to ensure it does not contain content that could be interpreted as hateful, violent, or discriminatory before considering a new campaign registration.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains hate speech or violent content that violates CTIA SHAFT guidelines. The CTIA prohibits messaging campaigns that promote hatred, violence, harassment, or discrimination against individuals or groups. This includes content that incites violence, threatens harm, or uses derogatory language targeting protected characteristics.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30955,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: alcohol promotion content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains alcohol promotion content that violates CTIA SHAFT guidelines. The CTIA restricts alcohol-related messaging campaigns unless strict compliance requirements are met, including robust age-gating mechanisms and adherence to applicable federal and state regulations. Campaigns that promote alcohol sales, consumption, or marketing without meeting these requirements are prohibited.\n\n### Possible causes\n\n- **Direct alcohol promotion without compliance:** The campaign promotes alcohol sales, deals, or consumption without demonstrating compliance with CTIA age-gating and regulatory requirements.\n- **Missing or insufficient age verification:** The campaign's linked website or opt-in flow does not include a compliant age verification mechanism to confirm recipients are of legal drinking age.\n- **Non-compliant marketing content:** Campaign sample messages or descriptions contain alcohol marketing that does not meet industry self-regulatory standards.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. Alcohol content is a restricted category under CTIA SHAFT guidelines and requires strict compliance measures that were not met.\n- If you are a legitimate alcohol brand or retailer, ensure your website implements robust 21+ age-gate verification and that your campaign registration clearly demonstrates compliance before registering a new campaign.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Direct alcohol promotion without compliance:** The campaign promotes alcohol sales, deals, or consumption without demonstrating compliance with CTIA age-gating and regulatory requirements.\n* **Missing or insufficient age verification:** The campaign's linked website or opt-in flow does not include a compliant age verification mechanism to confirm recipients are of legal drinking age.\n* **Non-compliant marketing content:** Campaign sample messages or descriptions contain alcohol marketing that does not meet industry self-regulatory standards.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. Alcohol content is a restricted category under CTIA SHAFT guidelines and requires strict compliance measures that were not met.\n* If you are a legitimate alcohol brand or retailer, ensure your website implements robust 21+ age-gate verification and that your campaign registration clearly demonstrates compliance before registering a new campaign.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains alcohol promotion content that violates CTIA SHAFT guidelines. The CTIA restricts alcohol-related messaging campaigns unless strict compliance requirements are met, including robust age-gating mechanisms and adherence to applicable federal and state regulations. Campaigns that promote alcohol sales, consumption, or marketing without meeting these requirements are prohibited.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30956,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: alcohol content without required age verification detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains alcohol-related content without the required age verification mechanisms. CTIA SHAFT guidelines require that any alcohol-related messaging campaign implement robust 21+ age-gate verification on all linked websites and opt-in flows. Without verified age-gating, alcohol-related campaigns cannot be approved for A2P 10DLC messaging.\n\n### Possible causes\n\n- **No age-gate on website:** The website URL provided in the campaign registration does not include an age verification gate that confirms visitors are 21 years of age or older.\n- **Insufficient age verification method:** The website uses a simple checkbox or date-of-birth field that does not meet the CTIA standard for robust age-gate verification.\n- **Age-gate bypassed or non-functional:** The age verification mechanism on the linked website can be easily bypassed, is broken, or does not appear consistently on all entry points.\n- **Opt-in flow lacks age confirmation:** The SMS opt-in process does not include a step to verify the subscriber's age before enrollment.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. The campaign was rejected specifically because the required 21+ age-gate verification was missing or insufficient.\n- Implement a robust age-gate verification system on your website that meets CTIA standards before registering a new campaign. The age-gate must appear before any alcohol content is accessible and must verify users are 21 or older.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **No age-gate on website:** The website URL provided in the campaign registration does not include an age verification gate that confirms visitors are 21 years of age or older.\n* **Insufficient age verification method:** The website uses a simple checkbox or date-of-birth field that does not meet the CTIA standard for robust age-gate verification.\n* **Age-gate bypassed or non-functional:** The age verification mechanism on the linked website can be easily bypassed, is broken, or does not appear consistently on all entry points.\n* **Opt-in flow lacks age confirmation:** The SMS opt-in process does not include a step to verify the subscriber's age before enrollment.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. The campaign was rejected specifically because the required 21+ age-gate verification was missing or insufficient.\n* Implement a robust age-gate verification system on your website that meets CTIA standards before registering a new campaign. The age-gate must appear before any alcohol content is accessible and must verify users are 21 or older.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains alcohol-related content without the required age verification mechanisms. CTIA SHAFT guidelines require that any alcohol-related messaging campaign implement robust 21+ age-gate verification on all linked websites and opt-in flows. Without verified age-gating, alcohol-related campaigns cannot be approved for A2P 10DLC messaging.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30957,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: firearms or explosives content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains content related to firearms, explosives, or related weapons that violates CTIA SHAFT guidelines. The CTIA prohibits A2P messaging campaigns that promote the sale, distribution, or marketing of firearms, ammunition, fireworks, explosives, or other weapons. This restriction applies regardless of whether the sale would be legal in certain jurisdictions.\n\n### Possible causes\n\n- **Firearms or ammunition promotion:** The campaign promotes the sale, marketing, or distribution of guns, rifles, handguns, ammunition, or firearm accessories.\n- **Explosives or fireworks content:** Campaign content references the sale or promotion of explosives, fireworks, pyrotechnics, or related materials.\n- **Weapons-related website content:** The website URL provided in the campaign registration hosts content related to firearms sales, gun shows, weapons auctions, or similar offerings.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. Firearms and explosives content is a prohibited content category under CTIA SHAFT guidelines and cannot be sent via A2P 10DLC messaging.\n- Review the CTIA prohibited content categories to understand the full scope of restricted weapons-related content before considering alternative campaign use cases.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Firearms or ammunition promotion:** The campaign promotes the sale, marketing, or distribution of guns, rifles, handguns, ammunition, or firearm accessories.\n* **Explosives or fireworks content:** Campaign content references the sale or promotion of explosives, fireworks, pyrotechnics, or related materials.\n* **Weapons-related website content:** The website URL provided in the campaign registration hosts content related to firearms sales, gun shows, weapons auctions, or similar offerings.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. Firearms and explosives content is a prohibited content category under CTIA SHAFT guidelines and cannot be sent via A2P 10DLC messaging.\n* Review the CTIA prohibited content categories to understand the full scope of restricted weapons-related content before considering alternative campaign use cases.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains content related to firearms, explosives, or related weapons that violates CTIA SHAFT guidelines. The CTIA prohibits A2P messaging campaigns that promote the sale, distribution, or marketing of firearms, ammunition, fireworks, explosives, or other weapons. This restriction applies regardless of whether the sale would be legal in certain jurisdictions.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30958,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: tobacco or vape content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains content related to tobacco or vaping products that violates CTIA SHAFT guidelines. The CTIA prohibits A2P messaging campaigns that promote the sale, marketing, or distribution of tobacco products, e-cigarettes, vape devices, or related accessories. This restriction applies to all tobacco and nicotine delivery products regardless of local legality.\n\n### Possible causes\n\n- **Tobacco product promotion:** The campaign promotes the sale or marketing of cigarettes, cigars, chewing tobacco, or other traditional tobacco products.\n- **Vape or e-cigarette content:** Campaign content references the sale, promotion, or marketing of vape devices, e-cigarettes, vape juice, pods, or related accessories.\n- **Tobacco or vape-related website:** The website URL provided in the campaign registration hosts or links to content promoting tobacco or vaping products.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. Tobacco and vape content is a prohibited content category under CTIA SHAFT guidelines and cannot be sent via A2P 10DLC messaging.\n- Review the CTIA prohibited content categories for the full scope of restricted tobacco and nicotine-related content before considering alternative campaign use cases.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Tobacco product promotion:** The campaign promotes the sale or marketing of cigarettes, cigars, chewing tobacco, or other traditional tobacco products.\n* **Vape or e-cigarette content:** Campaign content references the sale, promotion, or marketing of vape devices, e-cigarettes, vape juice, pods, or related accessories.\n* **Tobacco or vape-related website:** The website URL provided in the campaign registration hosts or links to content promoting tobacco or vaping products.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. Tobacco and vape content is a prohibited content category under CTIA SHAFT guidelines and cannot be sent via A2P 10DLC messaging.\n* Review the CTIA prohibited content categories for the full scope of restricted tobacco and nicotine-related content before considering alternative campaign use cases.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains content related to tobacco or vaping products that violates CTIA SHAFT guidelines. The CTIA prohibits A2P messaging campaigns that promote the sale, marketing, or distribution of tobacco products, e-cigarettes, vape devices, or related accessories. This restriction applies to all tobacco and nicotine delivery products regardless of local legality.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30959,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: fraudulent or misleading content detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it was identified as containing fraudulent or intentionally misleading content. Campaign reviewers determined that the campaign description, sample messages, website, or associated business information contains indicators of fraud or deliberate deception. Fraudulent campaigns pose a direct threat to consumer trust and violate carrier and CTIA messaging policies.\n\n### Possible causes\n\n- **Fraudulent business information:** The business details provided during campaign registration do not match legitimate business records, or the business entity appears to be fabricated.\n- **Misleading campaign content:** Sample messages or campaign descriptions contain false claims, fabricated offers, or intentionally deceptive information designed to mislead consumers.\n- **Scam indicators detected:** The campaign exhibits patterns commonly associated with known fraud schemes, such as fake prize notifications, impersonation of legitimate brands, or advance-fee fraud.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. The campaign was identified as fraudulent or intentionally misleading, which is a permanent disqualification from A2P 10DLC messaging.\n- Ensure your business registration details are accurate and match your legal business entity before registering any new campaigns.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Fraudulent business information:** The business details provided during campaign registration do not match legitimate business records, or the business entity appears to be fabricated.\n* **Misleading campaign content:** Sample messages or campaign descriptions contain false claims, fabricated offers, or intentionally deceptive information designed to mislead consumers.\n* **Scam indicators detected:** The campaign exhibits patterns commonly associated with known fraud schemes, such as fake prize notifications, impersonation of legitimate brands, or advance-fee fraud.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. The campaign was identified as fraudulent or intentionally misleading, which is a permanent disqualification from A2P 10DLC messaging.\n* Ensure your business registration details are accurate and match your legal business entity before registering any new campaigns.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it was identified as containing fraudulent or intentionally misleading content. Campaign reviewers determined that the campaign description, sample messages, website, or associated business information contains indicators of fraud or deliberate deception. Fraudulent campaigns pose a direct threat to consumer trust and violate carrier and CTIA messaging policies.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30960,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: known phishing campaign detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it was identified as a phishing attempt. Campaign reviewers determined that the campaign is designed to deceive consumers into revealing sensitive personal information, credentials, or financial data. Phishing campaigns are a serious violation of carrier messaging policies and applicable laws, and represent a direct threat to consumer safety.\n\n### Possible causes\n\n- **Credential harvesting URLs:** The campaign links to websites designed to impersonate legitimate services and capture login credentials, Social Security numbers, or other sensitive data.\n- **Brand impersonation:** The campaign impersonates a bank, government agency, technology company, or other trusted entity to trick recipients into providing personal information.\n- **Deceptive urgency tactics:** Sample messages use false urgency (for example, \"Your account will be suspended\") to pressure recipients into clicking malicious links or sharing sensitive information.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. Phishing campaigns are permanently prohibited and may result in account-level enforcement actions.\n- If you are a legitimate business, ensure your campaign content does not resemble phishing patterns. Use your verified business domain, avoid urgency-based language that mimics social engineering, and clearly identify your brand.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Credential harvesting URLs:** The campaign links to websites designed to impersonate legitimate services and capture login credentials, Social Security numbers, or other sensitive data.\n* **Brand impersonation:** The campaign impersonates a bank, government agency, technology company, or other trusted entity to trick recipients into providing personal information.\n* **Deceptive urgency tactics:** Sample messages use false urgency (for example, \"Your account will be suspended\") to pressure recipients into clicking malicious links or sharing sensitive information.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. Phishing campaigns are permanently prohibited and may result in account-level enforcement actions.\n* If you are a legitimate business, ensure your campaign content does not resemble phishing patterns. Use your verified business domain, avoid urgency-based language that mimics social engineering, and clearly identify your brand.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it was identified as a phishing attempt. Campaign reviewers determined that the campaign is designed to deceive consumers into revealing sensitive personal information, credentials, or financial data. Phishing campaigns are a serious violation of carrier messaging policies and applicable laws, and represent a direct threat to consumer safety.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30961,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: high-risk domain reputation detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because one or more URLs in the campaign have a poor domain reputation or are flagged in threat intelligence databases. Campaign reviewers evaluate the reputation of all domains referenced in campaign content, including website URLs and sample messages. Domains associated with malware distribution, spam, phishing, or other malicious activity are grounds for campaign rejection.\n\n### Possible causes\n\n- **Domain flagged in threat databases:** The website URL associated with your campaign appears in one or more threat intelligence or domain reputation databases as malicious or suspicious.\n- **Recently registered or disposable domain:** The domain used in the campaign was recently registered, has no established reputation, or uses a disposable domain service commonly associated with fraudulent activity.\n- **Compromised or previously abused domain:** The domain may have been previously compromised or used for spam, malware distribution, or other abuse, resulting in a poor reputation score.\n- **Shared hosting with malicious sites:** The domain is hosted on infrastructure shared with known malicious websites, resulting in a negative reputation by association.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. The domain's reputation score does not meet the minimum threshold required for A2P 10DLC campaign approval.\n- Check your domain reputation using publicly available tools (for example, Google Safe Browsing, VirusTotal) and work to remediate any issues before registering a new campaign with a clean domain.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Domain flagged in threat databases:** The website URL associated with your campaign appears in one or more threat intelligence or domain reputation databases as malicious or suspicious.\n* **Recently registered or disposable domain:** The domain used in the campaign was recently registered, has no established reputation, or uses a disposable domain service commonly associated with fraudulent activity.\n* **Compromised or previously abused domain:** The domain may have been previously compromised or used for spam, malware distribution, or other abuse, resulting in a poor reputation score.\n* **Shared hosting with malicious sites:** The domain is hosted on infrastructure shared with known malicious websites, resulting in a negative reputation by association.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. The domain's reputation score does not meet the minimum threshold required for A2P 10DLC campaign approval.\n* Check your domain reputation using publicly available tools (for example, Google Safe Browsing, VirusTotal) and work to remediate any issues before registering a new campaign with a clean domain.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because one or more URLs in the campaign have a poor domain reputation or are flagged in threat intelligence databases. Campaign reviewers evaluate the reputation of all domains referenced in campaign content, including website URLs and sample messages. Domains associated with malware distribution, spam, phishing, or other malicious activity are grounds for campaign rejection.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30962,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: deceptive marketing practices detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains deceptive marketing practices. Campaign reviewers identified content that uses misleading claims, fabricated urgency, bait-and-switch tactics, false endorsements, or other deceptive techniques designed to manipulate consumers. These practices violate carrier messaging policies and may also violate FTC regulations governing commercial communications.\n\n### Possible causes\n\n- **Misleading or unsubstantiated claims:** Campaign content makes false health claims, exaggerated product benefits, fake testimonials, or guarantees that cannot be verified.\n- **Fabricated urgency or scarcity:** Sample messages use artificial countdown timers, fake limited-time offers, or false scarcity claims (\"Only 2 left!\") to pressure consumers into immediate action.\n- **Bait-and-switch tactics:** The campaign advertises one product, price, or offer but the linked website delivers a different product, higher price, or unrelated content.\n- **False endorsements or affiliations:** Campaign content falsely claims endorsement by celebrities, government agencies, or well-known brands without authorization.\n\n### Possible solutions\n\n- The rejected campaign is **not eligible for resubmission**. The campaign was identified as using deceptive marketing practices that violate A2P 10DLC messaging policies.\n- Ensure all marketing claims in your campaigns are truthful, substantiated, and comply with FTC guidelines before registering a new campaign.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Misleading or unsubstantiated claims:** Campaign content makes false health claims, exaggerated product benefits, fake testimonials, or guarantees that cannot be verified.\n* **Fabricated urgency or scarcity:** Sample messages use artificial countdown timers, fake limited-time offers, or false scarcity claims (\"Only 2 left!\") to pressure consumers into immediate action.\n* **Bait-and-switch tactics:** The campaign advertises one product, price, or offer but the linked website delivers a different product, higher price, or unrelated content.\n* **False endorsements or affiliations:** Campaign content falsely claims endorsement by celebrities, government agencies, or well-known brands without authorization.",
    "solutions": "* The rejected campaign is **not eligible for resubmission**. The campaign was identified as using deceptive marketing practices that violate A2P 10DLC messaging policies.\n* Ensure all marketing claims in your campaigns are truthful, substantiated, and comply with FTC guidelines before registering a new campaign.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains deceptive marketing practices. Campaign reviewers identified content that uses misleading claims, fabricated urgency, bait-and-switch tactics, false endorsements, or other deceptive techniques designed to manipulate consumers. These practices violate carrier messaging policies and may also violate FTC regulations governing commercial communications.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30963,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: public URL shortener detected in campaign",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains public URL shorteners in campaign content or sample messages. Public URL shortening services such as bit.ly, tinyurl.com, goo.gl, and similar services are not permitted in A2P 10DLC campaigns because they mask the true destination URL. Carriers require full transparency into linked destinations to protect consumers from malicious content.\n\n### Possible causes\n\n- **Public URL shortener in sample messages:** One or more sample messages contain shortened URLs from public services like bit.ly, tinyurl.com, t.co, ow.ly, or similar shortening platforms.\n- **URL shortener in campaign description:** The campaign description or use case fields reference shortened URLs instead of full destination URLs.\n- **Redirecting domain detected:** The campaign uses a domain that functions as a URL redirect service, behaving similarly to a public URL shortener even if it is a custom domain.\n\n### Possible solutions\n\n- This URL failure is eligible for correction and resubmission after all affected URLs comply. Public URL shorteners remain prohibited.\n- Replace all shortened URLs with full destination URLs using your own branded domain before resubmitting the corrected campaign for review. Branded short domains owned and operated by your business (for example, yourcompany.link) are generally acceptable.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Public URL shortener in sample messages:** One or more sample messages contain shortened URLs from public services like bit.ly, tinyurl.com, t.co, ow.ly, or similar shortening platforms.\n* **URL shortener in campaign description:** The campaign description or use case fields reference shortened URLs instead of full destination URLs.\n* **Redirecting domain detected:** The campaign uses a domain that functions as a URL redirect service, behaving similarly to a public URL shortener even if it is a custom domain.",
    "solutions": "* This URL failure is eligible for correction and resubmission after all affected URLs comply. Public URL shorteners remain prohibited.\n* Replace all shortened URLs with full destination URLs using your own branded domain before resubmitting the corrected campaign for review. Branded short domains owned and operated by your business (for example, yourcompany.link) are generally acceptable.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains public URL shorteners in campaign content or sample messages. Public URL shortening services such as bit.ly, tinyurl.com, goo.gl, and similar services are not permitted in A2P 10DLC campaigns because they mask the true destination URL. Carriers require full transparency into linked destinations to protect consumers from malicious content.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30964,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: non-secured URL (http://) detected",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because it contains URLs that use the insecure HTTP protocol instead of HTTPS. All URLs included in A2P 10DLC campaigns, whether in sample messages, campaign descriptions, or opt-in flows, must use HTTPS to ensure encrypted communication between consumers and your website. Non-secured HTTP URLs expose consumers to man-in-the-middle attacks and data interception.\n\n### Possible causes\n\n- **HTTP URLs in sample messages:** One or more sample messages contain URLs using `http://` instead of `https://`.\n- **Non-secured website URL in campaign registration:** The website URL provided during campaign registration uses HTTP rather than HTTPS.\n- **Mixed content on landing page:** While the main URL may use HTTPS, the landing page loads resources or redirects through insecure HTTP connections.\n\n### Possible solutions\n\n- This URL failure is eligible for correction and resubmission after all affected URLs comply. Campaign URLs must use HTTPS.\n- Ensure your website has a valid SSL/TLS certificate installed and that all URLs in your campaign use `https://` before resubmitting the corrected campaign for review.\n- If you believe this rejection was made in error, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **HTTP URLs in sample messages:** One or more sample messages contain URLs using `http://` instead of `https://`.\n* **Non-secured website URL in campaign registration:** The website URL provided during campaign registration uses HTTP rather than HTTPS.\n* **Mixed content on landing page:** While the main URL may use HTTPS, the landing page loads resources or redirects through insecure HTTP connections.",
    "solutions": "* This URL failure is eligible for correction and resubmission after all affected URLs comply. Campaign URLs must use HTTPS.\n* Ensure your website has a valid SSL/TLS certificate installed and that all URLs in your campaign use `https://` before resubmitting the corrected campaign for review.\n* If you believe this rejection was made in error, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because it contains URLs that use the insecure HTTP protocol instead of HTTPS. All URLs included in A2P 10DLC campaigns, whether in sample messages, campaign descriptions, or opt-in flows, must use HTTPS to ensure encrypted communication between consumers and your website. Non-secured HTTP URLs expose consumers to man-in-the-middle attacks and data interception.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30971,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Business contact email cannot be verified",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThe contact email address cannot be verified as associated with your business. Use an official business-domain address where available. A free-provider address may be accepted when its association with the business can be verified from the evidence described below.\n\n### Possible causes\n\n- A personal or free email domain (such as @gmail.com) was provided instead of a business domain, and it cannot be verified on your website.\n- The email domain does not correspond to your business name.\n- The email domain provided does not match the official business email domain listed on your corporate website.\n\n### Possible solutions\n\n- Use an email address on your business's official domain (for example, name@yourcompany.com).\n- If you use a free-provider address, provide evidence that verifies its association with the business.\n- If you use a free provider address, make sure that exact address is published on your official website or social media so it can be verified.\n\n### Additional resources\n\n- [A2P 10DLC Campaign Onboarding Guide](https://help.twilio.com/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* A personal or free email domain (such as @gmail.com) was provided instead of a business domain, and it cannot be verified on your website.\n* The email domain does not correspond to your business name.\n* The email domain provided does not match the official business email domain listed on your corporate website.",
    "solutions": "* Use an email address on your business's official domain (for example, name@yourcompany.com).\n* If you use a free-provider address, provide evidence that verifies its association with the business.\n* If you use a free provider address, make sure that exact address is published on your official website or social media so it can be verified.",
    "description": "The contact email address cannot be verified as associated with your business. Use an official business-domain address where available. A free-provider address may be accepted when its association with the business can be verified from the evidence described below.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30972,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign rejected: Contact must be an authorized business representative",
    "secondary_message": null,
    "product": "Branded Comms, Phone Numbers",
    "products_used": [
      "messaging",
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nYour A2P 10DLC campaign was rejected because the listed contact person could not be verified as an authorized representative of the registered business. The Campaign Registry (TCR) and carriers require that the individual associated with a campaign registration be an authorized representative who can act on behalf of the business. This verification helps prevent unauthorized parties from registering campaigns under a business they do not represent.\n\n### Possible causes\n\n- **Contact not associated with the business:** The contact person listed in the registration cannot be verified as an employee or authorized agent of the registered business.\n- **Mismatched contact information:** The contact name, email, or phone number does not align with publicly available business records or the company's official domain.\n- **Third-party registration without authorization:** A third party submitted the registration without proper documentation showing they are authorized to act on behalf of the business.\n\n### Possible solutions\n\n- **Use an authorized representative:** Update the campaign registration with the name and contact details of someone who is a verified employee or officer of the business.\n- **Ensure email matches business domain:** The contact email should use the company's official domain and match the individual listed.\n- **Provide authorization documentation:** If a third party is registering on behalf of the business, include a letter of authorization or similar documentation.\n- **Verify business records:** Ensure the contact information is consistent with what is on file in public business registries and your company website.\n- Once corrected, resubmit your campaign for review.\n- If you need assistance, [contact support](https://support.twilio.com).\n\n### Additional resources\n\n- [A2P 10DLC Registration Guide](/docs/messaging/compliance/a2p-10dlc)\n- [Campaign Registration Best Practices](https://help.twilio.com/hc/en-us/articles/11847054539547-A2P-10DLC-Campaign-Approval-Best-Practices)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* **Contact not associated with the business:** The contact person listed in the registration cannot be verified as an employee or authorized agent of the registered business.\n* **Mismatched contact information:** The contact name, email, or phone number does not align with publicly available business records or the company's official domain.\n* **Third-party registration without authorization:** A third party submitted the registration without proper documentation showing they are authorized to act on behalf of the business.",
    "solutions": "* **Use an authorized representative:** Update the campaign registration with the name and contact details of someone who is a verified employee or officer of the business.\n* **Ensure email matches business domain:** The contact email should use the company's official domain and match the individual listed.\n* **Provide authorization documentation:** If a third party is registering on behalf of the business, include a letter of authorization or similar documentation.\n* **Verify business records:** Ensure the contact information is consistent with what is on file in public business registries and your company website.\n* Once corrected, resubmit your campaign for review.\n* If you need assistance, [contact support](https://support.twilio.com).",
    "description": "Your A2P 10DLC campaign was rejected because the listed contact person could not be verified as an authorized representative of the registered business. The Campaign Registry (TCR) and carriers require that the individual associated with a campaign registration be an authorized representative who can act on behalf of the business. This verification helps prevent unauthorized parties from registering campaigns under a business they do not represent.",
    "date_created": "2026-03-23T10:08:55-04:00",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30990,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Suspension",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means your A2P 10DLC campaign is suspended. Twilio halts messaging for the campaign, and you can't add or remove phone numbers until the suspension is resolved.\n\n### Possible causes\n\n- Your campaign was suspended after a carrier or ecosystem review found that your live traffic does not match the registered campaign.\n- Your traffic included spam, phishing, controlled substances, illicit content, fraudulent content, affiliate marketing, promotional gambling, illegal sweepstakes, or another prohibited use case.\n- Your campaign generated excessive consumer complaints.\n- Your campaign requires age gating and does not include it.\n- The associated Brand is suspended, which also suspends every campaign attached to that Brand.\n\n### Possible solutions\n\n- Check your email and the Twilio Support Center for the suspension notice and the next steps to resolve it.\n- Review the suspension reason and correct the underlying compliance issue before you try to use the campaign again.\n- Make sure your live traffic matches the registered use case, campaign description, sample messages, and consent flow for the campaign.\n- If the associated Brand is suspended, resolve the Brand suspension first because all campaigns on that Brand remain suspended until the Brand issue is addressed.\n- Do not try to send similar traffic through another existing or new campaign while the suspension is under review. That can lead to additional enforcement on your account.\n- If you did not receive guidance, contact Twilio Support for more details about the suspension and the required remediation steps.\n\n#### Additional resources\n\n- [US A2P 10DLC Overview](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* Your campaign was suspended after a carrier or ecosystem review found that your live traffic does not match the registered campaign.\n* Your traffic included spam, phishing, controlled substances, illicit content, fraudulent content, affiliate marketing, promotional gambling, illegal sweepstakes, or another prohibited use case.\n* Your campaign generated excessive consumer complaints.\n* Your campaign requires age gating and does not include it.\n* The associated Brand is suspended, which also suspends every campaign attached to that Brand.",
    "solutions": "* Check your email and the Twilio Support Center for the suspension notice and the next steps to resolve it.\n* Review the suspension reason and correct the underlying compliance issue before you try to use the campaign again.\n* Make sure your live traffic matches the registered use case, campaign description, sample messages, and consent flow for the campaign.\n* If the associated Brand is suspended, resolve the Brand suspension first because all campaigns on that Brand remain suspended until the Brand issue is addressed.\n* Do not try to send similar traffic through another existing or new campaign while the suspension is under review. That can lead to additional enforcement on your account.\n* If you did not receive guidance, contact Twilio Support for more details about the suspension and the required remediation steps.",
    "description": "This error means your A2P 10DLC campaign is suspended. Twilio halts messaging for the campaign, and you can't add or remove phone numbers until the suspension is resolved.",
    "date_created": "2023-12-06T20:44:20Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 30991,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Registration Failed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to register an A2P 10DLC Campaign for a Brand whose identity is unverified. Register the Brand successfully first, then submit the Campaign after the Brand is in an approved and verified state.\n\n### Possible causes\n\n- The Brand linked to the Campaign has an `identity_status` of `UNVERIFIED`.\n- The Brand registration did not verify because the business information was incomplete, formatted incorrectly, or did not match existing records.\n- The Brand is not yet in an `APPROVED` registration state, which is required before you can register Campaigns.\n\n### Possible solutions\n\n- Check the Brand in Console or retrieve the BrandRegistration resource and review the `status` and `identity_status` fields.\n- Update the Brand details so they exactly match your legal business records, including your legal company name and tax identifier, then resubmit the Brand registration.\n- If the Brand is in an `unverified` or `FAILED` state, resubmit it through Console or the Trust Hub API. Twilio supports up to three self-service resubmissions for Standard and Low-Volume Standard Brands.\n- Retry Campaign registration only after the Brand is `APPROVED`.\n\n#### Additional resources\n\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n- [Troubleshooting Sole Proprietor Brand Registration Failures](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-sole-proprietor-brand-registration-failures)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The Brand linked to the Campaign has an `identity_status` of `UNVERIFIED`.\n* The Brand registration did not verify because the business information was incomplete, formatted incorrectly, or did not match existing records.\n* The Brand is not yet in an `APPROVED` registration state, which is required before you can register Campaigns.",
    "solutions": "* Check the Brand in Console or retrieve the BrandRegistration resource and review the `status` and `identity_status` fields.\n* Update the Brand details so they exactly match your legal business records, including your legal company name and tax identifier, then resubmit the Brand registration.\n* If the Brand is in an `unverified` or `FAILED` state, resubmit it through Console or the Trust Hub API. Twilio supports up to three self-service resubmissions for Standard and Low-Volume Standard Brands.\n* Retry Campaign registration only after the Brand is `APPROVED`.",
    "description": "This error occurs when you try to register an A2P 10DLC Campaign for a Brand whose identity is unverified. Register the Brand successfully first, then submit the Campaign after the Brand is in an approved and verified state.",
    "date_created": "2024-07-12T11:26:20Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30992,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Registration Failed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nConnectivity partner migration process was cancelled.\n\nThis refers to The Campaign Registry Connectivity Partner Migration flow used to share externally registered campaigns to Twilio.\n\n### Possible causes\n\n- The user cancelled the Connectivity Partner Migration CNP process before it could complete.\n\n### Possible solutions\n\n- Start the Connectivity Partner Migration to Twilio for the affected campaign and allow the process to complete, then retry the registration.\n- After the campaign is accepted by Twilio, associate it with a Messaging Service and if using the API set the CnpMigration parameter to True to indicate the campaign was shared through CNP migration.\n- For minimal disruption, complete number migration before initiating campaign migration and ensure SMS traffic is available on Twilio for the ported number.\n\n#### Additional resources\n\n- [A2P 10DLC - Use Externally Registered Campaigns](/docs/messaging/compliance/a2p-10dlc/externally-registered-campaigns-api)\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The user cancelled the Connectivity Partner Migration CNP process before it could complete.",
    "solutions": "* Start the Connectivity Partner Migration to Twilio for the affected campaign and allow the process to complete, then retry the registration.\n* After the campaign is accepted by Twilio, associate it with a Messaging Service and if using the API set the CnpMigration parameter to True to indicate the campaign was shared through CNP migration.\n* For minimal disruption, complete number migration before initiating campaign migration and ensure SMS traffic is available on Twilio for the ported number.",
    "description": "Connectivity partner migration process was cancelled. This refers to The Campaign Registry Connectivity Partner Migration flow used to share externally registered campaigns to Twilio.",
    "date_created": "2024-07-19T08:29:22Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30993,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Registration Failed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a campaign's Connectivity Partner CNP migration does not complete within the expected timeframe, indicating the external campaign association and approvals did not finalize.\n\n### Possible causes\n\n- Required secondary DCA reviews or carrier specific approvals in the CNP migration chain are still pending, so the migration cannot complete.\n- The external campaign association has not reached a verified state yet, so the campaign remains unready to send.\n- The associated external campaign API call exceeded its rate limit and the asynchronous retries exhausted, moving the campaign to a failed status.\n\n### Possible solutions\n\n- Confirm all CNP migration approvals are complete and verify the campaign is ready by fetching campaign details and ensuring the campaign status is verified before sending.\n- If the association failed due to rate limiting or similar asynchronous failure, delete the external campaign association in Twilio, reshare the campaign to Twilio via TCR, then re associate it.\n- When migrating via CNP, set the CnpMigration parameter accordingly when associating the external campaign with a Twilio Messaging Service.\n- For best results, migrate numbers first and ensure SMS traffic is active on Twilio for the ported numbers before starting campaign migration.\n- If vetting remains in progress beyond typical review windows and the migration still does not complete, contact Twilio Support for assistance.\n\n#### Additional resources\n\n- [A2P 10DLC Use Externally Registered Campaigns](/docs/messaging/compliance/a2p-10dlc/externally-registered-campaigns-api)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [U.S. A2P 10DLC Launching Support for CNP Migration](https://www.twilio.com/en-us/changelog/-u-s--a2p-10dlc--launching-support-for-cnp-migration-)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* Required secondary DCA reviews or carrier specific approvals in the CNP migration chain are still pending, so the migration cannot complete.\n* The external campaign association has not reached a verified state yet, so the campaign remains unready to send.\n* The associated external campaign API call exceeded its rate limit and the asynchronous retries exhausted, moving the campaign to a failed status.",
    "solutions": "* Confirm all CNP migration approvals are complete and verify the campaign is ready by fetching campaign details and ensuring the campaign status is verified before sending.\n* If the association failed due to rate limiting or similar asynchronous failure, delete the external campaign association in Twilio, reshare the campaign to Twilio via TCR, then re associate it.\n* When migrating via CNP, set the CnpMigration parameter accordingly when associating the external campaign with a Twilio Messaging Service.\n* For best results, migrate numbers first and ensure SMS traffic is active on Twilio for the ported numbers before starting campaign migration.\n* If vetting remains in progress beyond typical review windows and the migration still does not complete, contact Twilio Support for assistance.",
    "description": "Twilio returns this error when a campaign's Connectivity Partner CNP migration does not complete within the expected timeframe, indicating the external campaign association and approvals did not finalize.",
    "date_created": "2024-07-25T08:08:36Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30994,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Campaign Registration Failed",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to register a US A2P 10DLC campaign before the associated brand is ready. Register campaigns only after the brand reaches `APPROVED`. If you are registering a public brand, campaign creation can also be blocked until the brand contact completes Authentication+ email verification.\n\n### Possible causes\n\n- The associated brand is still in a pending review state such as `PENDING` or `IN_REVIEW`, so campaign registration cannot continue yet.\n- The brand has not reached `APPROVED`. Twilio only allows campaign registration after brand registration is complete.\n- If you are registering a public brand, the brand contact has not completed the required Authentication+ verification email.\n- The Authentication+ email could not be completed because the link expired, the email was undeliverable, the verification timed out, or the brand contact email domain could not be validated.\n\n### Possible solutions\n\n- Check the brand status in Console or with the `BrandRegistration` API. Retry campaign registration only after the brand status is `APPROVED`.\n- If you are registering a public brand, ask the brand contact to complete the Authentication+ email verification. The verification email is required before you can register new campaigns for that brand.\n- If the brand contact did not receive the 2FA email, resend the Authentication+ email from Console.\n- If Authentication+ failed, update `brand_contact_email` to a business email domain associated with your brand and then retrigger 2FA verification. You can retrigger verification from Console or by sending a `POST` request to the Brand 2FA Verification resource.\n- If the brand status changes to `FAILED` or `SUSPENDED`, correct the brand registration issues and resubmit the brand before you try to register the campaign again.\n\n#### Additional resources\n\n- [Direct Standard and Low-Volume Standard Registration](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Brand 2FA Verification Resource](/docs/messaging/api/brand-2fa-verify)\n- [Authentication+ for Public Brand A2P 10DLC Registrations](https://help.twilio.com/articles/29499398652059-Authentication-for-Public-Brand-A2P-10DLC-Registrations)\n- [Troubleshooting and rectifying Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)\n",
    "causes": "* The associated brand is still in a pending review state such as `PENDING` or `IN_REVIEW`, so campaign registration cannot continue yet.\n* The brand has not reached `APPROVED`. Twilio only allows campaign registration after brand registration is complete.\n* If you are registering a public brand, the brand contact has not completed the required Authentication+ verification email.\n* The Authentication+ email could not be completed because the link expired, the email was undeliverable, the verification timed out, or the brand contact email domain could not be validated.",
    "solutions": "* Check the brand status in Console or with the `BrandRegistration` API. Retry campaign registration only after the brand status is `APPROVED`.\n* If you are registering a public brand, ask the brand contact to complete the Authentication+ email verification. The verification email is required before you can register new campaigns for that brand.\n* If the brand contact did not receive the 2FA email, resend the Authentication+ email from Console.\n* If Authentication+ failed, update `brand_contact_email` to a business email domain associated with your brand and then retrigger 2FA verification. You can retrigger verification from Console or by sending a `POST` request to the Brand 2FA Verification resource.\n* If the brand status changes to `FAILED` or `SUSPENDED`, correct the brand registration issues and resubmit the brand before you try to register the campaign again.",
    "description": "This error occurs when you try to register a US A2P 10DLC campaign before the associated brand is ready. Register campaigns only after the brand reaches `APPROVED`. If you are registering a public brand, campaign creation can also be blocked until the brand contact completes Authentication+ email verification.",
    "date_created": "2024-09-18T20:18:13Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 30995,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Messaging Service size limit reached",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create a new Messaging Service after your account has reached the default limit of 10,000 Messaging Services.\n\n### Possible causes\n\n- Your account already has the maximum number of Messaging Services allowed by default.\n- You are creating a new Messaging Service for a use case that could be handled by reusing an existing service and updating its sender pool or configuration.\n\n### Possible solutions\n\n- Delete Messaging Services you no longer use, then retry the request.\n- Review how you organize Messaging Services in your account. Reuse an existing service when the same sender pool, features, and configuration apply.\n- Add senders to an existing Messaging Service instead of creating another service when you don't need a separate configuration boundary.\n- If you need more than the default limit, contact Support and include your use case and the number of Messaging Services you need.\n\n#### Additional resources\n\n- [Messaging Services](/docs/messaging/services)\n- [Services resource](/docs/messaging/api/service-resource)\n- [Get started with Messaging Services](/docs/messaging/tutorials/send-messages-with-messaging-services)\n",
    "causes": "* Your account already has the maximum number of Messaging Services allowed by default.\n* You are creating a new Messaging Service for a use case that could be handled by reusing an existing service and updating its sender pool or configuration.",
    "solutions": "* Delete Messaging Services you no longer use, then retry the request.\n* Review how you organize Messaging Services in your account. Reuse an existing service when the same sender pool, features, and configuration apply.\n* Add senders to an existing Messaging Service instead of creating another service when you don't need a separate configuration boundary.\n* If you need more than the default limit, contact Support and include your use case and the number of Messaging Services you need.",
    "description": "This error occurs when you try to create a new Messaging Service after your account has reached the default limit of 10,000 Messaging Services.",
    "date_created": "2025-12-12T18:23:28.61Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 31000,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Generic error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nError 31000 is a generic Programmable Voice error in the 310xx series. More details are often available in the Twilio Debugger or, for the JavaScript SDK, in the `twilioError` field.\n\n### Possible causes\n\n- A non-specific condition occurred in the Programmable Voice SDK or platform during call setup or operation, and no more-specific 31xxx code was emitted. Refer to the Twilio Debugger details or the SDK's `twilioError` field for additional context.\n- The underlying issue surfaced elsewhere in logs as a related 31xxx error, for example connection or signaling problems, which should be identified and addressed based on the more specific code shown in your logs.\n\n### Possible solutions\n\n- Check Twilio Debugger error logs in **Console** under **Monitor** > **Logs** > **Error logs** to review the event, its description, potential causes, and suggested solutions.\n- If you use the Voice JavaScript SDK, inspect the `twilioError` field on emitted errors for diagnostics that explain the generic 31000 condition.\n- Use the troubleshooting guidance for Programmable Voice to examine request and response details, identify failing webhooks or TwiML, and isolate where the issue occurs in the call flow.\n- When you open a support case, include recent Call SIDs, Notification SIDs, relevant error codes, and SDK logs so that Support can investigate quickly.\n\n#### Additional resources\n\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Troubleshooting Voice Calls](/docs/voice/troubleshooting)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": "* A non-specific condition occurred in the Programmable Voice SDK or platform during call setup or operation, and no more-specific 31xxx code was emitted. Refer to the Twilio Debugger details or the SDK's `twilioError` field for additional context.\n* The underlying issue surfaced elsewhere in logs as a related 31xxx error, for example connection or signaling problems, which should be identified and addressed based on the more specific code shown in your logs.",
    "solutions": "* Check Twilio Debugger error logs in **Console** under **Monitor** > **Logs** > **Error logs** to review the event, its description, potential causes, and suggested solutions.\n* If you use the Voice JavaScript SDK, inspect the `twilioError` field on emitted errors for diagnostics that explain the generic 31000 condition.\n* Use the troubleshooting guidance for Programmable Voice to examine request and response details, identify failing webhooks or TwiML, and isolate where the issue occurs in the call flow.\n* When you open a support case, include recent Call SIDs, Notification SIDs, relevant error codes, and SDK logs so that Support can investigate quickly.",
    "description": "Error 31000 is a generic Programmable Voice error in the 310xx series. More details are often available in the Twilio Debugger or, for the JavaScript SDK, in the `twilioError` field.",
    "date_created": "2017-10-05T22:56:56Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Application not found.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a call flow tries to use a TwiML App resource that Twilio can't find. In the Voice SDK error list, error 31001 appears as TwiML application not found. In the Error and Warning Dictionary, the same code appears as Application not found (Voice).\n\n### Possible causes\n\n- The Voice SDK Access Token doesn't include a valid TwiML App SID in the `grants.voice.outgoing.application_sid` property, which Twilio needs to route outbound SDK calls through a TwiML App.\n- The required TwiML App resource was never created in the account, so there is no Application SID for Twilio to reference.\n- A workflow dials a TwiML App via `<Dial><Application>` but references an app that does not exist in the target account.\n\n### Possible solutions\n\n- Verify and regenerate the Voice SDK Access Token so that the `grants.voice.outgoing.application_sid` property contains the correct TwiML App SID for your application.\n- Create a TwiML App and use its Application SID in your token or configuration, ensuring the Voice URL is set to return valid Voice TwiML. You can create and manage TwiML Apps via the API.\n- If you are using `<Dial><Application>` to connect to another Twilio account, confirm the referenced TwiML App exists in that receiving account and is configured to accept calls from other accounts.\n- Check Twilio's Debugger error logs to confirm the exact error context and retry after correcting your configuration.\n\n#### Additional resources\n\n- [Voice SDKs](/docs/voice/sdks)\n- [REST API: Applications](/docs/usage/api/applications)\n- [Getting Started with the Voice Android SDK](/docs/voice/sdks/android/get-started)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The Voice SDK Access Token doesn't include a valid TwiML App SID in the `grants.voice.outgoing.application_sid` property, which Twilio needs to route outbound SDK calls through a TwiML App.\n* The required TwiML App resource was never created in the account, so there is no Application SID for Twilio to reference.\n* A workflow dials a TwiML App via `<Dial><Application>` but references an app that does not exist in the target account.",
    "solutions": "* Verify and regenerate the Voice SDK Access Token so that the `grants.voice.outgoing.application_sid` property contains the correct TwiML App SID for your application.\n* Create a TwiML App and use its Application SID in your token or configuration, ensuring the Voice URL is set to return valid Voice TwiML. You can create and manage TwiML Apps via the API.\n* If you are using `<Dial><Application>` to connect to another Twilio account, confirm the referenced TwiML App exists in that receiving account and is configured to accept calls from other accounts.\n* Check Twilio's Debugger error logs to confirm the exact error context and retry after correcting your configuration.",
    "description": "Twilio returns this error when a call flow tries to use a TwiML App resource that Twilio can't find. In the Voice SDK error list, error 31001 appears as TwiML application not found. In the Error and Warning Dictionary, the same code appears as Application not found (Voice).",
    "date_created": "2019-01-24T20:36:49Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Connection declined.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nError 31002 is a Voice error that means Twilio declined the connection. Use the Debugger to view details about the underlying cause.\n\n### Possible causes\n\n- The called party or application rejected the incoming call—for example, by calling `call.reject()` in the Voice JavaScript SDK or by returning TwiML that uses the `<Reject>` verb.\n- The call was declined at the signaling layer and surfaced to the SDK as a declined connection. Twilio Voice SDKs document a decline as a SIP server error with code `31603`, and the JavaScript SDK maps the `ConnectionDeclinedError` exception to error 31002.\n\n### Possible solutions\n\n- Use the Twilio Debugger to inspect the event details and any linked error codes to determine why the connection was declined.\n- If your client app unintentionally rejects calls, update the logic to accept incoming calls and avoid calling `call.reject()` unless the user explicitly declines.\n- If your server application is returning `<Reject>`, remove or adjust that TwiML so legitimate calls are accepted.\n- For the Voice JavaScript SDK, consider enabling improved signaling error precision and update your error handling to recognize 31002 for declined connections instead of generic errors.\n\n#### Additional resources\n\n- [Voice JavaScript SDK: Changelog](/docs/voice/sdks/javascript/changelog)\n- [TwiML Voice: \\<Reject>](/docs/voice/twiml/reject)\n- [Voice JavaScript SDK: Twilio.Call](/docs/voice/sdks/javascript/twiliocall)\n",
    "causes": "* The called party or application rejected the incoming call—for example, by calling `call.reject()` in the Voice JavaScript SDK or by returning TwiML that uses the `<Reject>` verb.\n* The call was declined at the signaling layer and surfaced to the SDK as a declined connection. Twilio Voice SDKs document a decline as a SIP server error with code `31603`, and the JavaScript SDK maps the `ConnectionDeclinedError` exception to error 31002.",
    "solutions": "* Use the Twilio Debugger to inspect the event details and any linked error codes to determine why the connection was declined.\n* If your client app unintentionally rejects calls, update the logic to accept incoming calls and avoid calling `call.reject()` unless the user explicitly declines.\n* If your server application is returning `<Reject>`, remove or adjust that TwiML so legitimate calls are accepted.\n* For the Voice JavaScript SDK, consider enabling improved signaling error precision and update your error handling to recognize 31002 for declined connections instead of generic errors.",
    "description": "Error 31002 is a Voice error that means Twilio declined the connection. Use the Debugger to view details about the underlying cause.",
    "date_created": "2019-01-24T20:38:09Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31003,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Connection timeout",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nError 31003 (Connection timeout) occurs in the Voice SDK when a call can't establish or maintain connectivity. You see this error when a Voice SDK call can't establish or maintain connectivity within the expected interval. In Voice JavaScript SDK version 2.0 or later, ICE failures map to error 53405. You might still see 31003 in legacy references.\n\n### Possible causes\n\n- ICE negotiation can't find viable candidates because restrictive networks or firewalls block the required media paths.\n- An established media connection is interrupted and the ICE state changes from connected to failed, causing the call to drop and return 31003.\n- Browser or SDK retry attempts to recover media through an ICE restart exceed internal timeouts, resulting in a disconnect with 31003.\n\n### Possible solutions\n\n- Check that the network is ready for the Voice SDK and adjust firewall rules to allow outbound and return TCP and UDP traffic to Twilio.\n- If UDP is restricted, supply TURN servers from the Twilio Network Traversal Service in the `iceServers` array when you connect or accept calls.\n- On restrictive networks, specify a single Twilio Edge to reduce the set of media IPs that must be allowed.\n- For Mobile SDK scenarios that involve VPNs or unusual interfaces, enable ICE gathering on any address so the SDK can collect candidates from all interfaces.\n- Prompt the user or application to retry the call after a transient 31003; the failure is often temporary.\n- Where supported, enable ICE restart behavior to help recover from brief network disruptions during an active call.\n\n#### Additional resources\n\n- [Voice SDKs Network Connectivity Requirements](/docs/voice/sdks/network-connectivity-requirements)\n- [What are ICE errors?](https://help.twilio.com/articles/223133067)\n",
    "causes": "* ICE negotiation can't find viable candidates because restrictive networks or firewalls block the required media paths.\n* An established media connection is interrupted and the ICE state changes from connected to failed, causing the call to drop and return 31003.\n* Browser or SDK retry attempts to recover media through an ICE restart exceed internal timeouts, resulting in a disconnect with 31003.",
    "solutions": "* Check that the network is ready for the Voice SDK and adjust firewall rules to allow outbound and return TCP and UDP traffic to Twilio.\n* If UDP is restricted, supply TURN servers from the Twilio Network Traversal Service in the `iceServers` array when you connect or accept calls.\n* On restrictive networks, specify a single Twilio Edge to reduce the set of media IPs that must be allowed.\n* For Mobile SDK scenarios that involve VPNs or unusual interfaces, enable ICE gathering on any address so the SDK can collect candidates from all interfaces.\n* Prompt the user or application to retry the call after a transient 31003; the failure is often temporary.\n* Where supported, enable ICE restart behavior to help recover from brief network disruptions during an active call.",
    "description": "Error 31003 (Connection timeout) occurs in the Voice SDK when a call can't establish or maintain connectivity. You see this error when a Voice SDK call can't establish or maintain connectivity within the expected interval. In Voice JavaScript SDK version 2.0 or later, ICE failures map to error 53405. You might still see 31003 in legacy references.",
    "date_created": "2019-01-24T19:26:00Z",
    "last_updated": "2026-03-23T10:48:25-07:00"
  },
  {
    "code": 31005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Connection error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe WebSocket connection to the Twilio signaling servers closed unexpectedly during the call. If this issue occurs consistently, verify that the provided hostname resolves correctly. If you specify the `region` parameter during Device setup, ensure that the value is valid.\n\n### Possible causes\n\n- DNS or hostname resolution problems for the Twilio signaling endpoint cause the signaling WebSocket to close.\n- An invalid `region` value in Device setup.\n- Underlying network conditions can drop or block the WebSocket—for example, DNS failures, restrictive firewalls, the client going offline, or an unreachable Edge.\n\n### Possible solutions\n\n- Verify that the signaling hostname you provided resolves correctly in your environment.\n- If you specify the `region` parameter during Device setup, ensure that the value is valid. In newer SDKs, use a specific `edge` instead of the deprecated `region` parameter.\n- Confirm that your firewall and network allow outbound TCP port 443 to the Twilio Voice signaling gateways and related endpoints, as documented in the Voice SDKs Network Connectivity Requirements.\n- If the WebSocket drops because of a network change, allow the SDK to reconnect. You can also configure `maxCallSignalingTimeoutMs` to permit up to 30 seconds of reconnection attempts.\n\n#### Additional resources\n\n- [Voice SDKs Network Connectivity Requirements](/docs/voice/sdks/network-connectivity-requirements)\n- [Voice JavaScript SDK: Edge Locations](/docs/voice/sdks/javascript/edges)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": "* DNS or hostname resolution problems for the Twilio signaling endpoint cause the signaling WebSocket to close.\n* An invalid `region` value in Device setup.\n* Underlying network conditions can drop or block the WebSocket—for example, DNS failures, restrictive firewalls, the client going offline, or an unreachable Edge.",
    "solutions": "* Verify that the signaling hostname you provided resolves correctly in your environment.\n* If you specify the `region` parameter during Device setup, ensure that the value is valid. In newer SDKs, use a specific `edge` instead of the deprecated `region` parameter.\n* Confirm that your firewall and network allow outbound TCP port 443 to the Twilio Voice signaling gateways and related endpoints, as documented in the Voice SDKs Network Connectivity Requirements.\n* If the WebSocket drops because of a network change, allow the SDK to reconnect. You can also configure `maxCallSignalingTimeoutMs` to permit up to 30 seconds of reconnection attempts.",
    "description": "The WebSocket connection to the Twilio signaling servers closed unexpectedly during the call. If this issue occurs consistently, verify that the provided hostname resolves correctly. If you specify the `region` parameter during Device setup, ensure that the value is valid.",
    "date_created": "2019-01-24T19:28:32Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31006,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Audio device error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio raises this Voice error when it can't start the audio device.\n\n### Possible causes\n\n- The browser has not been granted microphone access.\n- A USB headset is disconnected or faulty.\n- Headset driver issues are preventing the audio device from starting.\n\n### Possible solutions\n\n- Ask for microphone access before you create the `Device` object by calling `navigator.mediaDevices.getUserMedia({ audio: true })`, and stop the tracks right away if you only need the device list. This helps surface `getUserMedia` errors early.\n- Update your device picker when `device.audio.on('deviceChange', ...)` fires so the UI reflects microphones or headsets that are plugged in, unplugged, or relabeled.\n- If users select a specific microphone, call `device.audio.setInputDevice()` before `device.connect()` or `call.accept()`, then call `device.audio.unsetInputDevice()` after the call disconnects so future calls can fall back to the default input device.\n- If you use Flex, keep initial audio device check enabled so Flex verifies device health at startup, on browser refresh, and when the available device list changes.\n\n#### Additional resources\n\n- [Voice JavaScript SDK: Best Practices](/docs/voice/sdks/javascript/best-practices)\n- [Twilio.Device.audio](/docs/voice/sdks/javascript/twiliodevice/device-audio)\n- [Initial Audio Device Check](/docs/flex/end-user-guide/initial-audio-device-check)\n",
    "causes": "* The browser has not been granted microphone access.\n* A USB headset is disconnected or faulty.\n* Headset driver issues are preventing the audio device from starting.",
    "solutions": "* Ask for microphone access before you create the `Device` object by calling `navigator.mediaDevices.getUserMedia({ audio: true })`, and stop the tracks right away if you only need the device list. This helps surface `getUserMedia` errors early.\n* Update your device picker when `device.audio.on('deviceChange', ...)` fires so the UI reflects microphones or headsets that are plugged in, unplugged, or relabeled.\n* If users select a specific microphone, call `device.audio.setInputDevice()` before `device.connect()` or `call.accept()`, then call `device.audio.unsetInputDevice()` after the call disconnects so future calls can fall back to the default input device.\n* If you use Flex, keep initial audio device check enabled so Flex verifies device health at startup, on browser refresh, and when the available device list changes.",
    "description": "Twilio raises this Voice error when it can't start the audio device.",
    "date_created": "2019-01-24T19:29:27Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Twilio Client: Voice JavaScript SDK version not supported",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio Voice JavaScript SDK 1.x has been shut down. If you are receiving this error, you must upgrade your application to 2.x to restore functionality.\n\n### Possible causes\n\n- You are using Voice JavaScript SDK version 1.x in your application\n- You are using Twilio Flex UI version 1.x in your contact center\n\n### Possible solutions\n\n- Upgrade your application to Twilio Voice JavaScript SDK 2.x\n- Follow the [Flex migration guide](/docs/flex/developer/ui/migration-guide) to upgrade your Flex instance to UI 2.x\n",
    "causes": "* You are using Voice JavaScript SDK version 1.x in your application\n* You are using Twilio Flex UI version 1.x in your contact center",
    "solutions": "* Upgrade your application to Twilio Voice JavaScript SDK 2.x\n* Follow the [Flex migration guide](/docs/flex/developer/ui/migration-guide) to upgrade your Flex instance to UI 2.x",
    "description": "Twilio Voice JavaScript SDK 1.x has been shut down. If you are receiving this error, you must upgrade your application to 2.x to restore functionality.",
    "date_created": "2018-08-27T20:31:01Z",
    "last_updated": "2026-03-23T10:48:25-07:00"
  },
  {
    "code": 31008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call cancelled",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Call cancelled\n\nUnable to answer because the call has ended\n\n### Possible causes\n\nThis error indicates that the incoming call was cancelled because it was not answered in time or it was accepted/rejected by another application instance registered with the same identity.\n\n### Possible solutions\n\nN/A\n",
    "causes": "This error indicates that the incoming call was cancelled because it was not answered in time or it was accepted/rejected by another application instance registered with the same identity.",
    "solutions": "N/A",
    "description": "",
    "date_created": "2019-01-24T19:30:23Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transport error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the Programmable Voice SDK cannot establish a transport to send or receive messages. In practice, this usually means the client cannot reach the required Twilio signaling or media infrastructure, or the selected edge does not match the network path available to the SDK.\n\n### Possible causes\n\n- Outbound TLS connectivity to the required Twilio signaling gateways on TCP port 443 is blocked, so the SDK cannot establish signaling transport. For mobile SDKs, the client may also be unable to reach the Insights gateway and registration server on TCP port 443.\n- UDP connectivity to Twilio media servers on ports 10000 through 60000 is blocked, which prevents the SDK from establishing secure media connectivity.\n- The SDK is using Global Low Latency routing, but the upstream DNS resolver, VPN, or network path causes Twilio to select an edge that is not allowed by your network policy or is not the best match for the user's actual location.\n- The client is on a restrictive NAT or firewall and does not have TURN connectivity available, so media cannot traverse the network when direct UDP paths are unavailable.\n- The deployment uses a Mobile Voice SDK version earlier than 3.x, which requires signaling on port 10194 instead of 443, and that port is closed.\n\n### Possible solutions\n\n- Allow the outbound destinations and ports required by the Voice SDK you use. Open TCP port 443 to the Twilio signaling gateways and Insights logging endpoints. For mobile SDKs, also allow the registration server on TCP port 443. Allow UDP ports 10000 through 60000 to Twilio media IP ranges for secure media traffic.\n- If your network restricts UDP, provide TURN credentials from Network Traversal Service and pass the returned `iceServers` to the client so the SDK can relay media over TURN when needed.\n- Set a specific `edge` instead of relying on Global Low Latency when users are behind VPNs, use remote DNS infrastructure, or operate on a restricted network that allows only specific Twilio edges.\n- Upgrade legacy Mobile Voice SDK deployments to version 3.x or later so signaling uses TCP port 443. If you cannot upgrade yet, open TCP port 10194 for those older mobile clients.\n- Run a Preflight test before placing calls to verify connectivity and collect diagnostics. Use `Device.runPreflight(token, options)` for web applications. Use the mobile Preflight APIs such as `runPreflight` on Android, `runPreflightTestWithAccessToken` on iOS, or `Voice.runPreflight` for React Native.\n\n#### Additional resources\n\n- [Voice SDKs Network Connectivity Requirements](/docs/voice/sdks/network-connectivity-requirements)\n- [Voice JavaScript SDK: Twilio.PreflightTest](/docs/voice/sdks/javascript/twiliopreflighttest)\n- [Network Traversal Service](/docs/stun-turn)\n",
    "causes": "* Outbound TLS connectivity to the required Twilio signaling gateways on TCP port 443 is blocked, so the SDK cannot establish signaling transport. For mobile SDKs, the client may also be unable to reach the Insights gateway and registration server on TCP port 443.\n* UDP connectivity to Twilio media servers on ports 10000 through 60000 is blocked, which prevents the SDK from establishing secure media connectivity.\n* The SDK is using Global Low Latency routing, but the upstream DNS resolver, VPN, or network path causes Twilio to select an edge that is not allowed by your network policy or is not the best match for the user's actual location.\n* The client is on a restrictive NAT or firewall and does not have TURN connectivity available, so media cannot traverse the network when direct UDP paths are unavailable.\n* The deployment uses a Mobile Voice SDK version earlier than 3.x, which requires signaling on port 10194 instead of 443, and that port is closed.",
    "solutions": "* Allow the outbound destinations and ports required by the Voice SDK you use. Open TCP port 443 to the Twilio signaling gateways and Insights logging endpoints. For mobile SDKs, also allow the registration server on TCP port 443. Allow UDP ports 10000 through 60000 to Twilio media IP ranges for secure media traffic.\n* If your network restricts UDP, provide TURN credentials from Network Traversal Service and pass the returned `iceServers` to the client so the SDK can relay media over TURN when needed.\n* Set a specific `edge` instead of relying on Global Low Latency when users are behind VPNs, use remote DNS infrastructure, or operate on a restricted network that allows only specific Twilio edges.\n* Upgrade legacy Mobile Voice SDK deployments to version 3.x or later so signaling uses TCP port 443. If you cannot upgrade yet, open TCP port 10194 for those older mobile clients.\n* Run a Preflight test before placing calls to verify connectivity and collect diagnostics. Use `Device.runPreflight(token, options)` for web applications. Use the mobile Preflight APIs such as `runPreflight` on Android, `runPreflightTestWithAccessToken` on iOS, or `Voice.runPreflight` for React Native.",
    "description": "Twilio returns this error when the Programmable Voice SDK cannot establish a transport to send or receive messages. In practice, this usually means the client cannot reach the required Twilio signaling or media infrastructure, or the selected edge does not match the network path available to the SDK.",
    "date_created": "2019-05-16T23:55:54Z",
    "last_updated": "2026-04-16T22:29:02+01:00"
  },
  {
    "code": 31100,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Malformed request",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n31100 indicates a generic malformed request in the Twilio Programmable Voice context. The 311xx series represents malformed requests in the Voice SDKs, with 31100 serving as the generic catchall before a more specific 3111x code is identified. The Error and Warning Dictionary lists 31100 as Malformed request under Voice.\n\n### Possible causes\n\n- Required parameter array is missing in the request, which maps to 31101 in the same malformed request family.\n- Authorization token is missing from the request, corresponding to 31102.\n- The total length of parameters exceeds the maximum allowed value, corresponding to 31103.\n- Invalid bridge token supplied, corresponding to 31104.\n- Invalid client name identity, such as using disallowed characters or exceeding 256 characters, corresponding to 31105. Voice identities may include only alphanumeric and underscore characters and have a maximum length of 256.\n\n### Possible solutions\n\n- Validate request structure and include the required parameter array and fields before sending, aligning with 31101 guidance.\n- Ensure the request includes a valid authorization token or Voice Access Token when initiating SDK connections, aligning with 31102.\n- Keep the total parameter size under the documented maximum to avoid 31103 conditions.\n- Verify the client identity follows Voice rules: only alphanumeric and underscore characters and a maximum length of 256. Regenerate tokens if needed.\n- Use Twilio Monitor Error Logs and Alerts to inspect error details and the request or response involved, and consult Voice troubleshooting guidance to diagnose malformed requests. Enable SDK debugging as needed for additional context.\n\n#### Additional resources\n\n- [Monitor REST API Alerts](/docs/usage/monitor-alert)\n- [Troubleshooting Voice Calls](/docs/voice/troubleshooting)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": "* Required parameter array is missing in the request, which maps to 31101 in the same malformed request family.\n* Authorization token is missing from the request, corresponding to 31102.\n* The total length of parameters exceeds the maximum allowed value, corresponding to 31103.\n* Invalid bridge token supplied, corresponding to 31104.\n* Invalid client name identity, such as using disallowed characters or exceeding 256 characters, corresponding to 31105. Voice identities may include only alphanumeric and underscore characters and have a maximum length of 256.",
    "solutions": "* Validate request structure and include the required parameter array and fields before sending, aligning with 31101 guidance.\n* Ensure the request includes a valid authorization token or Voice Access Token when initiating SDK connections, aligning with 31102.\n* Keep the total parameter size under the documented maximum to avoid 31103 conditions.\n* Verify the client identity follows Voice rules: only alphanumeric and underscore characters and a maximum length of 256. Regenerate tokens if needed.\n* Use Twilio Monitor Error Logs and Alerts to inspect error details and the request or response involved, and consult Voice troubleshooting guidance to diagnose malformed requests. Enable SDK debugging as needed for additional context.",
    "description": "31100 indicates a generic malformed request in the Twilio Programmable Voice context. The 311xx series represents malformed requests in the Voice SDKs, with 31100 serving as the generic catchall before a more specific 3111x code is identified. The Error and Warning Dictionary lists 31100 as Malformed request under Voice.",
    "date_created": "2019-01-24T19:56:33Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31101,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Missing parameter array in request",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis is a Programmable Voice SDK malformed request error indicating that the request did not include the expected parameter array. Twilio lists 31101 in the 311xx malformed request series as \"The request is missing the parameter array,\" and the Error and Warning Dictionary enumerates 31101 as a Voice error.\n\n### Possible causes\n\n- A malformed Voice SDK request was sent without the parameters array required for that operation, which falls under the 311xx malformed request series.\n- When initiating an outgoing call with the Voice JavaScript SDK, the ConnectOptions payload was built incorrectly so the SDK did not include params as the key or did not provide a JavaScript object of key and value pairs.\n\n### Possible solutions\n\n- Ensure the request includes a parameters array. For Voice JavaScript SDK calls, pass custom parameters as a params object when invoking device.connect, for example `{ params: { To: \"+15551234567\" } }`.\n- Verify that your application logic constructs ConnectOptions correctly and retry. Confirm the parameters you intended to send are present by checking call.customParameters after connecting.\n- If you are on an older SDK, upgrade to the Voice JavaScript SDK 2.x and review recent changes that provide more descriptive errors to help identify malformed requests during development.\n\n#### Additional resources\n\n- [Voice JavaScript SDK: Twilio.Device](/docs/voice/sdks/javascript/twiliodevice)\n- [Voice JavaScript SDK: Twilio.Call](/docs/voice/sdks/javascript/twiliocall)\n",
    "causes": "* A malformed Voice SDK request was sent without the parameters array required for that operation, which falls under the 311xx malformed request series.\n* When initiating an outgoing call with the Voice JavaScript SDK, the ConnectOptions payload was built incorrectly so the SDK did not include params as the key or did not provide a JavaScript object of key and value pairs.",
    "solutions": "* Ensure the request includes a parameters array. For Voice JavaScript SDK calls, pass custom parameters as a params object when invoking device.connect, for example `{ params: { To: \"+15551234567\" } }`.\n* Verify that your application logic constructs ConnectOptions correctly and retry. Confirm the parameters you intended to send are present by checking call.customParameters after connecting.\n* If you are on an older SDK, upgrade to the Voice JavaScript SDK 2.x and review recent changes that provide more descriptive errors to help identify malformed requests during development.",
    "description": "This is a Programmable Voice SDK malformed request error indicating that the request did not include the expected parameter array. Twilio lists 31101 in the 311xx malformed request series as \"The request is missing the parameter array,\" and the Error and Warning Dictionary enumerates 31101 as a Voice error.",
    "date_created": "2019-01-24T20:41:46Z",
    "last_updated": "2026-03-23T10:48:25-07:00"
  },
  {
    "code": 31102,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Authorization token missing in request",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis Voice SDK error indicates the request was malformed because it lacked an authorization token. In the Voice SDK error taxonomy, 311xx denotes malformed requests and 31102 is explicitly defined as Authorization token missing from the request.\n\n### Possible causes\n\n- The client did not supply an Access Token when initializing the Voice SDK or before attempting to connect, so no authorization token reached Twilio. For example, the JavaScript SDK requires a token when creating a Device or during setup.\n- The application attempted to run a Voice SDK operation that requires a token, such as a preflight test, without providing an Access Token.\n- The app failed to retrieve a token from its server-side token endpoint and proceeded without passing a token to the SDK, resulting in a malformed request. Twilio's Voice SDKs require AccessTokens as credentials for end users.\n\n### Possible solutions\n\n- Generate a valid Access Token on your server using an API Key and Secret and include the appropriate Voice grant, then provide that token to the client before calling Voice SDK methods. Access Tokens are the required authentication mechanism for Twilio client-side SDKs.\n- Ensure the client initializes the SDK with a nonempty token and passes it when establishing a connection for calls. For example, instantiate or set up the Device with a token prior to use.\n- Verify your token vending flow works as documented so the client reliably fetches a token before attempting any Voice SDK requests. A typical pattern is exposing a /token endpoint that returns an Access Token to the app.\n- If your application still uses deprecated Capability Tokens, migrate to Access Tokens to align with current authentication requirements for the Voice SDK.\n- Use Twilio Debugger Error Logs to confirm 31102 events and gather context while testing your token flow.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Voice JavaScript SDK: Twilio.Device](/docs/voice/sdks/javascript/twiliodevice)\n- [Migrate Capability Tokens to Access Tokens](/docs/voice/sdks/javascript/migrating-capability-token)\n",
    "causes": "* The client did not supply an Access Token when initializing the Voice SDK or before attempting to connect, so no authorization token reached Twilio. For example, the JavaScript SDK requires a token when creating a Device or during setup.\n* The application attempted to run a Voice SDK operation that requires a token, such as a preflight test, without providing an Access Token.\n* The app failed to retrieve a token from its server-side token endpoint and proceeded without passing a token to the SDK, resulting in a malformed request. Twilio's Voice SDKs require AccessTokens as credentials for end users.",
    "solutions": "* Generate a valid Access Token on your server using an API Key and Secret and include the appropriate Voice grant, then provide that token to the client before calling Voice SDK methods. Access Tokens are the required authentication mechanism for Twilio client-side SDKs.\n* Ensure the client initializes the SDK with a nonempty token and passes it when establishing a connection for calls. For example, instantiate or set up the Device with a token prior to use.\n* Verify your token vending flow works as documented so the client reliably fetches a token before attempting any Voice SDK requests. A typical pattern is exposing a /token endpoint that returns an Access Token to the app.\n* If your application still uses deprecated Capability Tokens, migrate to Access Tokens to align with current authentication requirements for the Voice SDK.\n* Use Twilio Debugger Error Logs to confirm 31102 events and gather context while testing your token flow.",
    "description": "This Voice SDK error indicates the request was malformed because it lacked an authorization token. In the Voice SDK error taxonomy, 311xx denotes malformed requests and 31102 is explicitly defined as Authorization token missing from the request.",
    "date_created": "2019-01-24T20:42:24Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31103,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Length of parameters cannot exceed MAX_PARAM_LENGTH.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis Programmable Voice error indicates the request was rejected because the total length of custom parameters exceeded the allowed maximum. In Twilio's Voice SDKs, this corresponds to the 311xx malformed request family and specifically to \"The total length of parameters exceeds MAX\\_PARAM\\_LENGTH.\"\n\nFor the Voice JavaScript SDK, the combined size of all params you pass when connecting a call must not exceed 800 bytes. Exceeding this limit triggers this error.\n\n### Possible causes\n\n- The params object passed to device.connect in the Voice JavaScript SDK exceeds the documented 800 byte combined limit.\n- Sending large key or value strings as custom parameters during call setup causes the total to surpass recommended limits for custom parameters.\n\n### Possible solutions\n\n- Reduce the total size of all custom parameters to under 800 bytes when initiating a call with the Voice JavaScript SDK.\n- Keep custom parameters minimal and rely on your application's TwiML webhook to receive those parameters and fetch any additional context server side after Twilio appends them to your request.\n- Ensure you are using the correct parameter structure when placing calls, for example ConnectOptions.params in the Voice JavaScript SDK, to avoid related malformed request errors.\n\n#### Additional resources\n\n- [Voice JavaScript SDK: Twilio.Device](/docs/voice/sdks/javascript/twiliodevice)\n- [How to Share Information Between Your Applications](/docs/voice/how-share-information-between-your-applications)\n",
    "causes": "* The params object passed to device.connect in the Voice JavaScript SDK exceeds the documented 800 byte combined limit.\n* Sending large key or value strings as custom parameters during call setup causes the total to surpass recommended limits for custom parameters.",
    "solutions": "* Reduce the total size of all custom parameters to under 800 bytes when initiating a call with the Voice JavaScript SDK.\n* Keep custom parameters minimal and rely on your application's TwiML webhook to receive those parameters and fetch any additional context server side after Twilio appends them to your request.\n* Ensure you are using the correct parameter structure when placing calls, for example ConnectOptions.params in the Voice JavaScript SDK, to avoid related malformed request errors.",
    "description": "This Programmable Voice error indicates the request was rejected because the total length of custom parameters exceeded the allowed maximum. In Twilio's Voice SDKs, this corresponds to the 311xx malformed request family and specifically to \"The total length of parameters exceeds MAX\\_PARAM\\_LENGTH.\" For the Voice JavaScript SDK, the combined size of all params you pass when connecting a call must not exceed 800 bytes. Exceeding this limit triggers this error.",
    "date_created": "2019-01-24T20:43:12Z",
    "last_updated": "2026-03-23T10:48:25-07:00"
  },
  {
    "code": 31104,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid bridge token.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio lists 31104 as \"Invalid bridge token\" within the Voice SDK error space and groups 311xx codes under malformed requests, indicating the client sent a malformed request that included an invalid bridge token.\n\n### Possible causes\n\n- The Voice SDK request contained an invalid bridge token and was rejected as a malformed request\n- Twilio classifies 311xx as malformed requests and defines 31104 as \"Invalid bridge token.\"\n\n### Possible solutions\n\n- Generate a fresh Access Token for the client and retry, since Access Tokens authenticate Voice SDK clients and Twilio recommends checking them first when SDK errors occur\n- Verify the Access Token's contents and grants are valid for your account and use case, and ensure the token has not expired\n- Capture SDK error details and client logs, and review Twilio Debugger error logs to pinpoint malformed parameters before retrying\n- If the issue persists after the above checks, contact Twilio Support with recent Call SIDs and debug logs for investigation\n\nThese steps reflect Twilio guidance to check AccessTokens first for Voice SDK errors, the short‑lived nature and validation of Access Tokens, the SDK's emitted error detail, and use of Debugger logs.\n\n#### Additional resources\n\n- [Voice SDKs](/docs/voice/sdks)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": "* The Voice SDK request contained an invalid bridge token and was rejected as a malformed request\n* Twilio classifies 311xx as malformed requests and defines 31104 as \"Invalid bridge token.\"",
    "solutions": "* Generate a fresh Access Token for the client and retry, since Access Tokens authenticate Voice SDK clients and Twilio recommends checking them first when SDK errors occur\n* Verify the Access Token's contents and grants are valid for your account and use case, and ensure the token has not expired\n* Capture SDK error details and client logs, and review Twilio Debugger error logs to pinpoint malformed parameters before retrying\n* If the issue persists after the above checks, contact Twilio Support with recent Call SIDs and debug logs for investigation These steps reflect Twilio guidance to check AccessTokens first for Voice SDK errors, the short‑lived nature and validation of Access Tokens, the SDK's emitted error detail, and use of Debugger logs.",
    "description": "Twilio lists 31104 as \"Invalid bridge token\" within the Voice SDK error space and groups 311xx codes under malformed requests, indicating the client sent a malformed request that included an invalid bridge token.",
    "date_created": "2019-01-24T20:44:13Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31105,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid client name",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the client identifier used for a Voice connection violates Twilio's rules for the `<Client>` noun or related Voice SDK identity requirements. The client identifier must be no longer than 256 characters and should not contain control, space, delimiter, or unwise characters. For Mobile SDKs, the identifier must use only alphanumeric characters and underscore.\n\n### Possible causes\n\n- The client identifier includes control, space, delimiter, or unwise characters.\n- The client identifier exceeds the 256 character limit.\n- When using a Mobile Voice SDK, the identifier contains special characters other than underscore.\n\n### Possible solutions\n\n- Remove all control characters, spaces, delimiters, and unwise characters from the client identifier.\n- Shorten the client identifier to 256 characters or fewer.\n- For Mobile SDK implementations, restrict the identifier to alphanumeric characters and underscore.\n- Verify that the identity you set in your Voice AccessToken or TwiML `<Client>` noun matches these requirements before generating or refreshing tokens.\n\n#### Additional resources\n\n- [TwiML Voice: \\<Client>](/docs/voice/twiml/client)\n- [Voice SDKs](/docs/voice/sdks)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": "* The client identifier includes control, space, delimiter, or unwise characters.\n* The client identifier exceeds the 256 character limit.\n* When using a Mobile Voice SDK, the identifier contains special characters other than underscore.",
    "solutions": "* Remove all control characters, spaces, delimiters, and unwise characters from the client identifier.\n* Shorten the client identifier to 256 characters or fewer.\n* For Mobile SDK implementations, restrict the identifier to alphanumeric characters and underscore.\n* Verify that the identity you set in your Voice AccessToken or TwiML `<Client>` noun matches these requirements before generating or refreshing tokens.",
    "description": "This error occurs when the client identifier used for a Voice connection violates Twilio's rules for the `<Client>` noun or related Voice SDK identity requirements. The client identifier must be no longer than 256 characters and should not contain control, space, delimiter, or unwise characters. For Mobile SDKs, the identifier must use only alphanumeric characters and underscore.",
    "date_created": "2019-01-24T20:44:47Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid data",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n31106 means the data passed to the Voice SDK was not valid. On Android, `Voice.handleMessage(context, data)` returns `false` when the data is not a Twilio Voice push message, and `CallInvite.isValid(...)` validates whether a payload is a valid notification sent by Twilio.\n\n### Possible causes\n\n- You passed a payload to `Voice.handleMessage(context, data)` that is not a Twilio Voice push message.\n- The payload does not pass `CallInvite.isValid(...)` for a Twilio Voice notification.\n\n### Possible solutions\n\n- Call `CallInvite.isValid(...)` before you process the payload, and only continue when it returns `true`.\n- Use `Voice.handleMessage(context, data)` only for Twilio Voice push messages, and treat a `false` return value as non-Voice data.\n\n#### Additional resources\n\n- [Voice SDK Error Codes](/docs/voice/sdks/error-codes)\n- [Voice Android SDK Changelog](/docs/voice/sdks/android/3x-changelog)\n- [Getting Started with the Voice Android SDK](/docs/voice/sdks/android/get-started)\n",
    "causes": "* You passed a payload to `Voice.handleMessage(context, data)` that is not a Twilio Voice push message.\n* The payload does not pass `CallInvite.isValid(...)` for a Twilio Voice notification.",
    "solutions": "* Call `CallInvite.isValid(...)` before you process the payload, and only continue when it returns `true`.\n* Use `Voice.handleMessage(context, data)` only for Twilio Voice push messages, and treat a `false` return value as non-Voice data.",
    "description": "31106 means the data passed to the Voice SDK was not valid. On Android, `Voice.handleMessage(context, data)` returns `false` when the data is not a Twilio Voice push message, and `CallInvite.isValid(...)` validates whether a payload is a valid notification sent by Twilio.",
    "date_created": "2019-01-24T19:53:51Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31201,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Twilio Client: Error occurred while accessing microphone",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error is emitted by the Voice JavaScript SDK, formerly Twilio Client, when the browser has granted permission but getUserMedia fails to acquire the microphone during actions such as device.connect or connection.accept. In Voice JS SDK 2.x, this condition maps to error 31402 UserMedia Acquisition Failed.\n\n### Possible causes\n\n- The browser granted permission but getUserMedia couldn't create an input audio stream when initiating or accepting a call.\n- The microphone deviceId specified via Device.audio.setInputDevice is invalid or no longer available, producing a NotFoundError.\n- Disconnected or faulty headset or driver issues prevent the SDK from accessing the microphone.\n- Another application temporarily takes control of the microphone, causing loss of access until the app regains focus and reacquires input.\n\n### Possible solutions\n\n- Select a valid input device or clear any stale selection, for example by using Device.audio.setInputDevice or unsetting constraints, then retry the call.\n- Reconnect or replace the microphone and resolve headset driver problems, then retry.\n- Close other applications that may be using the microphone and, when focus returns to your app, reacquire the microphone before placing or resuming a call.\n- Use the Voice JS SDK PreflightTest to validate device and network before starting calls and review the report for capture issues.\n- If your app has migrated to Voice JS SDK 2.x, handle error 31402 for the same underlying user media acquisition failure.\n\n#### Additional resources\n\n- [Twilio.Device.audio](/docs/voice/sdks/javascript/twiliodevice/device-audio)\n- [Voice JavaScript SDK: Twilio.PreflightTest](/docs/voice/sdks/javascript/twiliopreflighttest)\n- [Migration to Voice JavaScript SDK 2.0](/docs/voice/sdks/javascript)\n",
    "causes": "* The browser granted permission but getUserMedia couldn't create an input audio stream when initiating or accepting a call.\n* The microphone deviceId specified via Device.audio.setInputDevice is invalid or no longer available, producing a NotFoundError.\n* Disconnected or faulty headset or driver issues prevent the SDK from accessing the microphone.\n* Another application temporarily takes control of the microphone, causing loss of access until the app regains focus and reacquires input.",
    "solutions": "* Select a valid input device or clear any stale selection, for example by using Device.audio.setInputDevice or unsetting constraints, then retry the call.\n* Reconnect or replace the microphone and resolve headset driver problems, then retry.\n* Close other applications that may be using the microphone and, when focus returns to your app, reacquire the microphone before placing or resuming a call.\n* Use the Voice JS SDK PreflightTest to validate device and network before starting calls and review the report for capture issues.\n* If your app has migrated to Voice JS SDK 2.x, handle error 31402 for the same underlying user media acquisition failure.",
    "description": "This error is emitted by the Voice JavaScript SDK, formerly Twilio Client, when the browser has granted permission but getUserMedia fails to acquire the microphone during actions such as device.connect or connection.accept. In Voice JS SDK 2.x, this condition maps to error 31402 UserMedia Acquisition Failed.",
    "date_created": "2018-04-10T03:35:58Z",
    "last_updated": "2026-04-01T15:03:58+01:00"
  },
  {
    "code": 31202,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Signature validation failed.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio rejected the provided Access Token because its JWT signature couldn't be validated against the API Key secret associated with the token's issuer. The Voice SDK classifies 31202 as a JWT signature validation failure, and Access Tokens use a signature computed from the token header and payload using your API Key secret.\n\n### Possible causes\n\n- The Access Token wasn't signed with the API Key secret that corresponds to the API Key SID in the token's iss claim, so Twilio cannot verify the signature.\n- The JWT header alg isn't HS256, which is the required algorithm for Twilio Access Tokens.\n\n### Possible solutions\n\n- Regenerate the Access Token using a Twilio SDK and provide the correct Account SID, API Key SID, and matching API Key Secret as documented. This ensures the token is constructed and signed correctly.\n- Ensure the JWT header explicitly uses alg set to HS256 before signing the token.\n- Verify you are using the exact API Key Secret that was issued for the API Key SID in iss and that it's securely stored and current. If the secret was rotated, update your server configuration and regenerate tokens.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Voice JavaScript SDK: Twilio.PreflightTest](/docs/voice/sdks/javascript/twiliopreflighttest)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": "* The Access Token wasn't signed with the API Key secret that corresponds to the API Key SID in the token's iss claim, so Twilio cannot verify the signature.\n* The JWT header alg isn't HS256, which is the required algorithm for Twilio Access Tokens.",
    "solutions": "* Regenerate the Access Token using a Twilio SDK and provide the correct Account SID, API Key SID, and matching API Key Secret as documented. This ensures the token is constructed and signed correctly.\n* Ensure the JWT header explicitly uses alg set to HS256 before signing the token.\n* Verify you are using the exact API Key Secret that was issued for the API Key SID in iss and that it's securely stored and current. If the secret was rotated, update your server configuration and regenerate tokens.",
    "description": "Twilio rejected the provided Access Token because its JWT signature couldn't be validated against the API Key secret associated with the token's issuer. The Voice SDK classifies 31202 as a JWT signature validation failure, and Access Tokens use a signature computed from the token header and payload using your API Key secret.",
    "date_created": "2019-01-24T20:45:37Z",
    "last_updated": "2026-04-01T15:03:58+01:00"
  },
  {
    "code": 31203,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "No valid account.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nProgrammable Voice error 31203 indicates Twilio could not validate a usable Twilio account for the request.\n\n### Possible Causes\n\n- The Voice Access Token was created with API Key credentials that don't belong to the same Twilio account or subaccount referenced by the token, which is unsupported because API keys and secrets aren't shareable across main and subaccounts and the token's sub claim must scope to a specific Twilio Account SID.\n- The Voice Access Token is missing required grants or fields for Voice SDKs, such as the VoiceGrant or the required outgoingApplicationSid for making outgoing calls.\n- The Twilio account isn't in good standing or Voice calling is disabled on the project, which prevents Voice operations from succeeding.\n- Attempting to build Access Tokens with a Restricted API Key, which Twilio does not support for Access Token creation.\n\n### Possible Solutions\n\n- Verify the project is active and permitted to use Voice, and resolve account status issues before retrying. If your account is disabled or Voice calling has been disabled, follow the actions outlined for errors 10001 and 10005.\n- Regenerate the Voice Access Token using the correct Account SID together with an API Key and Secret that belong to that same account or subaccount, and include both an identity and a VoiceGrant with the required parameters.\n- If you use subaccounts, generate the API Key in the exact subaccount you scope the token to and ensure you're using the matching key and secret when signing the token.\n- If the issue persists after issuing a new token, collect SDK logs and review Twilio's Voice troubleshooting steps to isolate configuration or environment problems, then retry with a fresh token.\n\n#### Additional resources\n\n- [Voice JS SDK v1: Troubleshooting & Common Errors](/docs/voice/sdks/javascript)\n- [Troubleshooting Voice Calls](/docs/voice/troubleshooting)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": null,
    "solutions": null,
    "description": "Programmable Voice error 31203 indicates Twilio could not validate a usable Twilio account for the request.",
    "date_created": "2019-01-24T20:46:12Z",
    "last_updated": "2026-04-01T15:03:58+01:00"
  },
  {
    "code": 31204,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid JWT token.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe Twilio Voice SDK reports this error when the JSON Web Token presented for authentication is invalid. Voice SDK authorization errors list 31204 as \"Invalid JWT token,\" and Voice Access Tokens are the JWTs used to authenticate Voice SDK clients.\n\n### Possible Causes\n\n- The Access Token isn't a properly formed JWT, so it can't be parsed or validated by Twilio.\n- The Access Token was generated with an incorrect Account SID or API Key, making the issuer or subject invalid for Twilio's verification.\n- The token is missing required Voice SDK fields such as an identity grant and a VoiceGrant.\n\n### Possible Solutions\n\n- Regenerate a new Voice Access Token on your server using your Account SID and a valid API Key and Secret, and include the required VoiceGrant and identity before passing it to the SDK.\n- Decode and inspect the token to verify header, payload, signature, and grants, using a JWT decoder as recommended in the Voice SDKs documentation.\n- Verify the token's issuer and subject map to the correct API Key and Account SID to satisfy Twilio's validation requirements.\n- Use Main or Standard API Keys to create Access Tokens, as Restricted API Keys aren't supported for Access Token generation.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Voice SDKs](/docs/voice/sdks)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": null,
    "solutions": null,
    "description": "The Twilio Voice SDK reports this error when the JSON Web Token presented for authentication is invalid. Voice SDK authorization errors list 31204 as \"Invalid JWT token,\" and Voice Access Tokens are the JWTs used to authenticate Voice SDK clients.",
    "date_created": "2019-01-24T20:46:52Z",
    "last_updated": "2026-04-01T15:03:58+01:00"
  },
  {
    "code": 31205,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "JWT token has expired",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio Voice SDKs emit error 31205 when the Access Token used for authentication has expired. In the Voice SDK error catalog, 31205 is listed under authorization errors with the description JWT token has expired. The Voice JS SDK v1 notes that when the token expires, signaling, DTMF and Insights stop working until the application supplies a fresh token.\n\n### Possible causes\n\n- The Access Token's configured lifetime elapsed and the token reached its exp timestamp, which limits tokens to short lifetimes up to 24 hours.\n- The application didn't refresh and update the SDK with a new token before the old token expired, so the SDK reported 31205.\n- The token was minted with a very short ttl, causing it to expire during or shortly after initialization.\n- Long‑running sessions or backgrounded apps missed the recommended pre‑expiry refresh window provided by the SDK, leading to expiry during an active session.\n\n### Possible solutions\n\n- Implement an automatic token refresh flow. In the Voice JavaScript SDK, handle the tokenWillExpire event and call device.updateToken with a freshly minted server token before expiry.\n- For applications using Voice JS SDK v1, create a new token on your server and reinitialize the device with the new token before the prior token expires.\n- Mint tokens with an appropriate ttl that balances security and session length. Tokens can be configured up to 24 hours but should be as short as feasible for your use case.\n- Verify your token generation uses the correct API key and secret, includes a VoiceGrant, and sets a nonempty identity to avoid related authorization issues when refreshing.\n\n#### Additional resources\n\n- [Voice JS SDK v1: Troubleshooting and Common Errors](/docs/voice/sdks/javascript)\n- [Access Tokens](/docs/iam/access-tokens)\n- [Common Twilio Programmable Voice SDK Error Codes and Debugging Help](https://www.twilio.com/en-us/blog/programmable-voice-common-sdk-error-codes-debugging-help)\n",
    "causes": "* The Access Token's configured lifetime elapsed and the token reached its exp timestamp, which limits tokens to short lifetimes up to 24 hours.\n* The application didn't refresh and update the SDK with a new token before the old token expired, so the SDK reported 31205.\n* The token was minted with a very short ttl, causing it to expire during or shortly after initialization.\n* Long‑running sessions or backgrounded apps missed the recommended pre‑expiry refresh window provided by the SDK, leading to expiry during an active session.",
    "solutions": "* Implement an automatic token refresh flow. In the Voice JavaScript SDK, handle the tokenWillExpire event and call device.updateToken with a freshly minted server token before expiry.\n* For applications using Voice JS SDK v1, create a new token on your server and reinitialize the device with the new token before the prior token expires.\n* Mint tokens with an appropriate ttl that balances security and session length. Tokens can be configured up to 24 hours but should be as short as feasible for your use case.\n* Verify your token generation uses the correct API key and secret, includes a VoiceGrant, and sets a nonempty identity to avoid related authorization issues when refreshing.",
    "description": "Twilio Voice SDKs emit error 31205 when the Access Token used for authentication has expired. In the Voice SDK error catalog, 31205 is listed under authorization errors with the description JWT token has expired. The Voice JS SDK v1 notes that when the token expires, signaling, DTMF and Insights stop working until the application supplies a fresh token.",
    "date_created": "2019-01-24T20:47:32Z",
    "last_updated": "2026-04-01T15:03:58+01:00"
  },
  {
    "code": 31206,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Rate exceeded authorized limit.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nError 31206 is returned by Twilio Programmable Voice when the client's request rate exceeds the authorized limit. It appears in the Voice error catalog and the Voice SDK error set as an authorization error described as the request rate exceeding the allowed limit.\n\n### Possible causes\n\n- Your application is making Voice SDK operations in rapid succession so the request rate to Twilio's Voice platform exceeds allowed limits, triggering this authorization error.\n- Bursts of outbound call starts that exceed Twilio's documented throughput can lead to rate limiting during voice operations, for example the default 1 call per second outbound rate noted in Twilio Help.\n- If your workflow mixes SDK actions with REST API calls, concurrent API activity may also be throttled by Twilio platform protections, which can surface as rate limit errors in client flows.\n- When using Voice SDK Call Message Events during a call, sending many messages in a short interval can contribute to hitting platform limits for messaging over the signaling channel. Ensure this feature is used only on active calls.\n\n### Possible solutions\n\n- Throttle or queue Voice SDK operations such as initiating connections or sending call messages to keep request rates under platform limits. Implement client‑side pacing to avoid bursts.\n- Apply retry policies with exponential backoff for actions retried after a rate event to prevent immediate re‑saturation. Twilio recommends backoff when encountering platform rate limits.\n- If you require higher sustained throughput for voice calling, engage Twilio to request a throughput increase as documented in Help Center guidance on call limits.\n- Use Twilio debugging tools to verify and monitor rate errors in real time, including the Debugger, Error Logs, or a Debugging Events Webhook, so you can identify the specific operations that are exceeding limits and adjust accordingly.\n- For Call Message Events, send messages only while a call is active and avoid rapid‑fire messaging patterns to reduce the likelihood of rate issues on the signaling channel.\n\n#### Additional resources\n\n- [Voice SDK Call Message Events](/docs/voice/sdks/call-message-events)\n- [Debugging your Twilio application](/docs/usage/troubleshooting/debugging-your-application)\n- [Sending and Receiving Limitations on Calls and SMS Messages](https://help.twilio.com/articles/223183648)\n",
    "causes": "* Your application is making Voice SDK operations in rapid succession so the request rate to Twilio's Voice platform exceeds allowed limits, triggering this authorization error.\n* Bursts of outbound call starts that exceed Twilio's documented throughput can lead to rate limiting during voice operations, for example the default 1 call per second outbound rate noted in Twilio Help.\n* If your workflow mixes SDK actions with REST API calls, concurrent API activity may also be throttled by Twilio platform protections, which can surface as rate limit errors in client flows.\n* When using Voice SDK Call Message Events during a call, sending many messages in a short interval can contribute to hitting platform limits for messaging over the signaling channel. Ensure this feature is used only on active calls.",
    "solutions": "* Throttle or queue Voice SDK operations such as initiating connections or sending call messages to keep request rates under platform limits. Implement client‑side pacing to avoid bursts.\n* Apply retry policies with exponential backoff for actions retried after a rate event to prevent immediate re‑saturation. Twilio recommends backoff when encountering platform rate limits.\n* If you require higher sustained throughput for voice calling, engage Twilio to request a throughput increase as documented in Help Center guidance on call limits.\n* Use Twilio debugging tools to verify and monitor rate errors in real time, including the Debugger, Error Logs, or a Debugging Events Webhook, so you can identify the specific operations that are exceeding limits and adjust accordingly.\n* For Call Message Events, send messages only while a call is active and avoid rapid‑fire messaging patterns to reduce the likelihood of rate issues on the signaling channel.",
    "description": "Error 31206 is returned by Twilio Programmable Voice when the client's request rate exceeds the authorized limit. It appears in the Voice error catalog and the Voice SDK error set as an authorization error described as the request rate exceeding the allowed limit.",
    "date_created": "2019-01-24T20:48:09Z",
    "last_updated": "2026-04-01T15:03:58+01:00"
  },
  {
    "code": 31207,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "JWT token expiration interval is too long",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe Programmable Voice SDK emits this authorization error when the JWT Access Token presented to the SDK is created with an expiration interval that exceeds Twilio's allowed maximum. The Voice SDK error list defines 31207 as JWT token expiration interval is too long and Access Tokens have a maximum lifetime of 24 hours. Twilio recommends issuing tokens for the shortest feasible time.\n\n### Possible causes\n\n- The Access Token ttl value or exp claim is set beyond Twilio's maximum of 24 hours.\n- The effective expiration interval exceeds the limit because exp was computed more than 86,400 seconds from the token's issued at time. The Voice SDK FAQs note the maximum expiry duration allowed is 24 hours and advise keeping expiry less than or equal to 86,400 minus 1 second.\n\n### Possible solutions\n\n- Regenerate the Access Token with a ttl that doesn't exceed 24 hours, for example ensure ttl is less than or equal to 86,399 seconds.\n- Follow Twilio guidance to keep Access Tokens short lived and refresh them as needed rather than extending their lifetime.\n- Implement token refresh in your client by listening for the tokenWillExpire event and updating the token before it expires using device.updateToken, supported in the Voice JavaScript SDK. This enables shorter ttls without disrupting sessions.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Voice iOS SDK FAQ](/docs/voice/sdks/ios/faq)\n- [Migration to Voice JavaScript SDK 2.0](/docs/voice/sdks/javascript)\n",
    "causes": "* The Access Token ttl value or exp claim is set beyond Twilio's maximum of 24 hours.\n* The effective expiration interval exceeds the limit because exp was computed more than 86,400 seconds from the token's issued at time. The Voice SDK FAQs note the maximum expiry duration allowed is 24 hours and advise keeping expiry less than or equal to 86,400 minus 1 second.",
    "solutions": "* Regenerate the Access Token with a ttl that doesn't exceed 24 hours, for example ensure ttl is less than or equal to 86,399 seconds.\n* Follow Twilio guidance to keep Access Tokens short lived and refresh them as needed rather than extending their lifetime.\n* Implement token refresh in your client by listening for the tokenWillExpire event and updating the token before it expires using device.updateToken, supported in the Voice JavaScript SDK. This enables shorter ttls without disrupting sessions.",
    "description": "The Programmable Voice SDK emits this authorization error when the JWT Access Token presented to the SDK is created with an expiration interval that exceeds Twilio's allowed maximum. The Voice SDK error list defines 31207 as JWT token expiration interval is too long and Access Tokens have a maximum lifetime of 24 hours. Twilio recommends issuing tokens for the shortest feasible time.",
    "date_created": "2019-01-24T20:48:52Z",
    "last_updated": "2026-04-01T15:03:58+01:00"
  },
  {
    "code": 31208,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "User denied access to microphone.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nEmitted by the Twilio Voice SDK when the browser or end user denies microphone permission during getUserMedia, preventing acquisition of an input audio track. In Voice JavaScript SDK 2.x this condition is reported as error 31401 UserMedia Permission Denied.\n\n### Possible Causes\n\n- The user clicked Block or otherwise denied the browser permission prompt for microphone access, so the SDK couldn't obtain an input audio track.\n- The browser has a saved deny or policy that blocks getUserMedia for the site, resulting in a permission denial.\n- On mobile or desktop, operating system level microphone permission for the browser or app is disabled.\n\n### Possible Solutions\n\n- Ask the user to reload the page and grant microphone permission when prompted so the SDK can acquire user media.\n- Instruct the user to allow microphone access in their browser site permissions if a previous deny was saved, then retry.\n- Ensure the device or mobile OS has granted microphone permission to the browser or app before attempting a call.\n- If your application uses Voice JavaScript SDK 2.x, handle error 31401 as the equivalent of 31208 and guide the user to enable microphone access.\n\n#### Additional resources\n\n- [Voice JS SDK v1: Troubleshooting & Common Errors](/docs/voice/sdks/javascript)\n- [Migration to Voice JavaScript SDK 2.0](/docs/voice/sdks/javascript)\n- [Details: Voice Insights SDK Events](/docs/voice/voice-insights/api/call/details-sdk-call-quality-events)\n",
    "causes": null,
    "solutions": null,
    "description": "Emitted by the Twilio Voice SDK when the browser or end user denies microphone permission during getUserMedia, preventing acquisition of an input audio track. In Voice JavaScript SDK 2.x this condition is reported as error 31401 UserMedia Permission Denied.",
    "date_created": "2019-01-24T20:49:47Z",
    "last_updated": "2026-04-01T15:03:58+01:00"
  },
  {
    "code": 31209,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Reconnect attempt error.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nReconnect attempt is not authorized.\n\n### Possible causes\n\nThe new identity for the reconnection and the old identity for the original call does not match.\n\n### Possible solutions\n\nPlease use same identity as the original call for the reconnection attempt.\n",
    "causes": "The new identity for the reconnection and the old identity for the original call does not match.",
    "solutions": "Please use same identity as the original call for the reconnection attempt.",
    "description": "Reconnect attempt is not authorized.",
    "date_created": "2022-11-07T23:45:21Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31210,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call Message Event Type is invalid.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe Message Type used for sending Call Message Event is invalid. Please see Twilio's [Voice SDK Call Message Events Documentation](/docs/voice/sdks/call-message-events/) for more information on valid Message Type.\n\n### Possible causes\n\nThe Message Type used for sending Call Message Event is invalid.\n\n### Possible solutions\n\n- Verify that Message Type being sent with Call Message Event is a value supported by Twilio Programmable Voice\n- Use one of the [supported Message Types](/docs/voice/sdks/call-message-events/) to call a Twilio function.\n",
    "causes": "The Message Type used for sending Call Message Event is invalid.",
    "solutions": "* Verify that Message Type being sent with Call Message Event is a value supported by Twilio Programmable Voice\n* Use one of the [supported Message Types](/docs/voice/sdks/call-message-events/) to call a Twilio function.",
    "description": "The Message Type used for sending Call Message Event is invalid. Please see Twilio's [Voice SDK Call Message Events Documentation](/docs/voice/sdks/call-message-events/) for more information on valid Message Type.",
    "date_created": "2024-04-11T20:08:29Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31211,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call is not in the expected state.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nCall is not in the expected state.\n\n### Possible causes\n\nThe Call should be at least in the Ringing state to Subscribe and send Call Message.\n\n### Possible solutions\n\nEnsure the Call is at least in the Ringing state and the Subscription is successful and try again.\n",
    "causes": "The Call should be at least in the Ringing state to Subscribe and send Call Message.",
    "solutions": "Ensure the Call is at least in the Ringing state and the Subscription is successful and try again.",
    "description": "Call is not in the expected state.",
    "date_created": "2024-05-23T20:41:29Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31212,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call Message Event Payload size exceeded authorized limit.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nCall Message Event Payload size exceeded authorized limit.\n\n### Possible causes\n\nThe payload size of Call Message Event exceeds the authorized limit.\n\n### Possible solutions\n\nReduce payload size of Call Message Event to be within the authorized limit and try again.\n",
    "causes": "The payload size of Call Message Event exceeds the authorized limit.",
    "solutions": "Reduce payload size of Call Message Event to be within the authorized limit and try again.",
    "description": "Call Message Event Payload size exceeded authorized limit.",
    "date_created": "2024-06-20T20:29:31Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31301,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Registration error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when registration for incoming call push notifications fails. Set up your push certificate in the Console, register the app with `Voice.register(...)`, and use an Access Token that includes a `VoiceGrant` and a non-empty `identity`.\n\n### Possible causes\n\n- Your app is not set up with a push certificate in the Console, or it is not registering for incoming calls with `Voice.register(...)`.\n- The Access Token does not include a `VoiceGrant`, or the API key and secret used to generate the token are incorrect.\n- The device token has changed, or the registration has not been refreshed in more than 6 months.\n- The Access Token does not include a non-empty `identity`.\n\n### Possible solutions\n\n- Set up the push certificate in the Console and call `Voice.register(...)` when the app launches so the device can receive incoming calls.\n- Generate the Access Token with a `VoiceGrant`, and verify that you are using the correct API key and secret pair.\n- Re-register the device token whenever it changes, and register again if `Voice.register(...)` was last called more than 6 months ago.\n- Make sure the Access Token includes a non-empty `identity`.\n\n#### Additional resources\n\n- [Voice Android SDK FAQ](/docs/voice/sdks/android/faq)\n- [Voice Mobile SDKs: Best Practices](/docs/voice/sdks/mobile-best-practices)\n",
    "causes": "* Your app is not set up with a push certificate in the Console, or it is not registering for incoming calls with `Voice.register(...)`.\n* The Access Token does not include a `VoiceGrant`, or the API key and secret used to generate the token are incorrect.\n* The device token has changed, or the registration has not been refreshed in more than 6 months.\n* The Access Token does not include a non-empty `identity`.",
    "solutions": "* Set up the push certificate in the Console and call `Voice.register(...)` when the app launches so the device can receive incoming calls.\n* Generate the Access Token with a `VoiceGrant`, and verify that you are using the correct API key and secret pair.\n* Re-register the device token whenever it changes, and register again if `Voice.register(...)` was last called more than 6 months ago.\n* Make sure the Access Token includes a non-empty `identity`.",
    "description": "This error occurs when registration for incoming call push notifications fails. Set up your push certificate in the Console, register the app with `Voice.register(...)`, and use an Access Token that includes a `VoiceGrant` and a non-empty `identity`.",
    "date_created": "2019-01-24T19:32:46Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31302,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported Cancel Message Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis version of the SDK no longer supports processing cancel push notification messages. You must register via Voice.register(...) on Android or \\[TwilioVoice registerWithAccessToken:deviceToken:completion:] on iOS with this version of the SDK to stop receiving cancel push notification messages. Cancellations are now handled internally and reported to you on behalf of the SDK.\n\n### Possible causes\n\nThe identity associated with the Twilio Voice SDK is still registered to receive cancel push notification messages.\n\n### Possible solutions\n\nThe application must register via Voice.register(...) on Android or \\[TwilioVoice registerWithAccessToken:deviceToken:completion:] on iOS to stop receiving cancel push notification messages.\n",
    "causes": "The identity associated with the Twilio Voice SDK is still registered to receive cancel push notification messages.",
    "solutions": "The application must register via Voice.register(...) on Android or \\[TwilioVoice registerWithAccessToken:deviceToken:completion:] on iOS to stop receiving cancel push notification messages.",
    "description": "This version of the SDK no longer supports processing cancel push notification messages. You must register via Voice.register(...) on Android or \\[TwilioVoice registerWithAccessToken:deviceToken:completion:] on iOS with this version of the SDK to stop receiving cancel push notification messages. Cancellations are now handled internally and reported to you on behalf of the SDK.",
    "date_created": "2019-09-13T17:39:18Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31400,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Bad Request",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error means Twilio could not understand the request because the syntax was malformed. 31400 is a Voice error with the message Bad Request.\n\n### Possible causes\n\n- The request body or parameters are malformed, so Twilio cannot parse the request.\n- The request uses an unsupported content type instead of `application/x-www-form-urlencoded` or `multipart/form-data`.\n- If you are using `device.connect()`, the `params` value is not a JavaScript object of key/value pairs, or the call data you send does not match what the Voice SDK expects.\n\n### Possible solutions\n\n- Rebuild the request with valid syntax and include every required field before you send it.\n- Send Twilio API requests with a supported content type.\n- If you are using `device.connect()`, pass `params` as a JavaScript object of key/value pairs, and keep the total length within 800 bytes.\n\n#### Additional resources\n\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [Voice SDK Error Codes](/docs/voice/sdks/error-codes)\n",
    "causes": "* The request body or parameters are malformed, so Twilio cannot parse the request.\n* The request uses an unsupported content type instead of `application/x-www-form-urlencoded` or `multipart/form-data`.\n* If you are using `device.connect()`, the `params` value is not a JavaScript object of key/value pairs, or the call data you send does not match what the Voice SDK expects.",
    "solutions": "* Rebuild the request with valid syntax and include every required field before you send it.\n* Send Twilio API requests with a supported content type.\n* If you are using `device.connect()`, pass `params` as a JavaScript object of key/value pairs, and keep the total length within 800 bytes.",
    "description": "This error means Twilio could not understand the request because the syntax was malformed. 31400 is a Voice error with the message Bad Request.",
    "date_created": "2019-05-22T22:11:40Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31401,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "UserMedia Permission Denied",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Voice JavaScript SDK cannot access the microphone because the browser or end user denied the `getUserMedia()` request. Twilio uses microphone input for browser-based Voice SDK calls, so the SDK cannot acquire input audio when access is blocked.\n\n### Possible causes\n\n- The end user denied the browser prompt for microphone access.\n- The browser has a saved deny setting or site-level permission that blocks microphone access for the current address.\n- Your application requests microphone access only when `device.connect()` or `call.accept()` runs, so the permission failure appears at call time instead of earlier in the flow.\n- The mobile device operating system or browser has not granted microphone access.\n\n### Possible solutions\n\n- Request microphone access before creating `Device` by calling `navigator.mediaDevices.getUserMedia({ audio: true })`. This lets you capture permission errors earlier and improve the calling experience.\n- If you call `getUserMedia()` before a call starts, stop the returned media tracks until you are ready to use the microphone so the user does not think the mic is active.\n- Review microphone permissions for the current site in the browser and remove any saved deny setting, then allow microphone access the next time the browser prompts for it.\n- Confirm that microphone access is enabled for the browser or app at the operating system level, especially on mobile devices.\n- After permission is granted, verify that an input device is available. Browsers can return incomplete or unlabeled device information until `getUserMedia()` access is approved.\n\n#### Additional resources\n\n- [Voice JavaScript SDK: Best Practices](/docs/voice/sdks/javascript/best-practices)\n- [Voice JavaScript SDK: Twilio.Device](/docs/voice/sdks/javascript/twiliodevice)\n- [Voice JavaScript SDK quickstart](/docs/voice/sdks/javascript/get-started)\n",
    "causes": "* The end user denied the browser prompt for microphone access.\n* The browser has a saved deny setting or site-level permission that blocks microphone access for the current address.\n* Your application requests microphone access only when `device.connect()` or `call.accept()` runs, so the permission failure appears at call time instead of earlier in the flow.\n* The mobile device operating system or browser has not granted microphone access.",
    "solutions": "* Request microphone access before creating `Device` by calling `navigator.mediaDevices.getUserMedia({ audio: true })`. This lets you capture permission errors earlier and improve the calling experience.\n* If you call `getUserMedia()` before a call starts, stop the returned media tracks until you are ready to use the microphone so the user does not think the mic is active.\n* Review microphone permissions for the current site in the browser and remove any saved deny setting, then allow microphone access the next time the browser prompts for it.\n* Confirm that microphone access is enabled for the browser or app at the operating system level, especially on mobile devices.\n* After permission is granted, verify that an input device is available. Browsers can return incomplete or unlabeled device information until `getUserMedia()` access is approved.",
    "description": "This error occurs when the Voice JavaScript SDK cannot access the microphone because the browser or end user denied the `getUserMedia()` request. Twilio uses microphone input for browser-based Voice SDK calls, so the SDK cannot acquire input audio when access is blocked.",
    "date_created": "2024-07-25T23:28:19Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31402,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "UserMedia Acquisition Failed",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the browser has microphone permission, but the Voice JavaScript SDK cannot acquire the input media stream for a call. This usually points to an invalid device selection, overly restrictive `getUserMedia()` constraints, or a browser, operating system, or hardware issue.\n\n### Possible causes\n\n- A `deviceId` passed to `device.audio.setInputDevice()` does not exist or is no longer available.\n- The `rtcConstraints` passed to `device.connect()` are too restrictive, so `getUserMedia()` cannot match an available device.\n- Audio constraints applied with `device.audio.setAudioConstraints()` cannot be satisfied by the selected microphone.\n- The browser, operating system, or local audio hardware cannot provide the microphone stream even after permission is granted.\n\n### Possible solutions\n\n- Verify that the selected microphone exists in `device.audio.availableInputDevices` before you call `device.audio.setInputDevice()`.\n- Remove custom `rtcConstraints` or other audio constraints and test again with a simpler input request such as `audio: true`.\n- If you apply constraints with `device.audio.setAudioConstraints()`, clear them with `device.audio.unsetAudioConstraints()` and retry.\n- Call `getUserMedia()` before you create the `Device` so you can detect microphone and device issues earlier and refresh the available device list before a call starts.\n- Test with the default input device first, then confirm the microphone works in the browser and operating system.\n\n#### Additional resources\n\n- [Voice JavaScript SDK: Twilio.Device](/docs/voice/sdks/javascript/twiliodevice)\n- [Twilio.Device.audio](/docs/voice/sdks/javascript/twiliodevice/device-audio)\n- [Voice JavaScript SDK: Best Practices](/docs/voice/sdks/javascript/best-practices)\n",
    "causes": "* A `deviceId` passed to `device.audio.setInputDevice()` does not exist or is no longer available.\n* The `rtcConstraints` passed to `device.connect()` are too restrictive, so `getUserMedia()` cannot match an available device.\n* Audio constraints applied with `device.audio.setAudioConstraints()` cannot be satisfied by the selected microphone.\n* The browser, operating system, or local audio hardware cannot provide the microphone stream even after permission is granted.",
    "solutions": "* Verify that the selected microphone exists in `device.audio.availableInputDevices` before you call `device.audio.setInputDevice()`.\n* Remove custom `rtcConstraints` or other audio constraints and test again with a simpler input request such as `audio: true`.\n* If you apply constraints with `device.audio.setAudioConstraints()`, clear them with `device.audio.unsetAudioConstraints()` and retry.\n* Call `getUserMedia()` before you create the `Device` so you can detect microphone and device issues earlier and refresh the available device list before a call starts.\n* Test with the default input device first, then confirm the microphone works in the browser and operating system.",
    "description": "This error occurs when the browser has microphone permission, but the Voice JavaScript SDK cannot acquire the input media stream for a call. This usually points to an invalid device selection, overly restrictive `getUserMedia()` constraints, or a browser, operating system, or hardware issue.",
    "date_created": "2024-07-25T23:37:42Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31403,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Forbidden",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe server understood the request, but is refusing to fulfill it.\n",
    "causes": null,
    "solutions": null,
    "description": "The server understood the request, but is refusing to fulfill it.",
    "date_created": "2019-05-22T22:12:20Z",
    "last_updated": "2020-08-04T10:00:08.5Z"
  },
  {
    "code": 31404,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Not Found",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe server has not found anything matching the request.\n",
    "causes": null,
    "solutions": null,
    "description": "The server has not found anything matching the request.",
    "date_created": "2019-05-22T22:12:50Z",
    "last_updated": "2020-08-04T10:00:08.451Z"
  },
  {
    "code": 31408,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Request Timeout",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis indicates a Voice request timed out. Twilio returns this code during Voice SDK registration, unregistration, `connect`, and `CallInvite.accept` flows. For call-related HTTP requests, Twilio enforces a hard 15-second upper timeout on the initial response packet.\n\n### Possible causes\n\n- Your Voice webhook or other call-related HTTP request did not send the initial response packet within Twilio's 15-second read timeout.\n- The call is on a restrictive network, and the Voice SDK cannot connect unless you provide ICE servers.\n\n### Possible solutions\n\n- Return TwiML from your Voice webhook within 15 seconds so Twilio receives a response before the read timeout expires.\n- Use webhook connection overrides such as `ct`, `rt`, `tt`, `rc`, and `rp` when you need to tune callback behavior, but keep in mind that the 15-second hard limit still applies to call-processing requests.\n- For `connect` and `CallInvite.accept` failures on restrictive networks, provide ICE servers with `ConnectOptions.Builder.iceOptions(...)` or `AcceptOptions.Builder.iceOptions(...)`.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [Voice Webhooks](/docs/usage/webhooks/voice-webhooks)\n- [Voice SDKs Network Connectivity Requirements](/docs/voice/sdks/network-connectivity-requirements)\n",
    "causes": "* Your Voice webhook or other call-related HTTP request did not send the initial response packet within Twilio's 15-second read timeout.\n* The call is on a restrictive network, and the Voice SDK cannot connect unless you provide ICE servers.",
    "solutions": "* Return TwiML from your Voice webhook within 15 seconds so Twilio receives a response before the read timeout expires.\n* Use webhook connection overrides such as `ct`, `rt`, `tt`, `rc`, and `rp` when you need to tune callback behavior, but keep in mind that the 15-second hard limit still applies to call-processing requests.\n* For `connect` and `CallInvite.accept` failures on restrictive networks, provide ICE servers with `ConnectOptions.Builder.iceOptions(...)` or `AcceptOptions.Builder.iceOptions(...)`.",
    "description": "This indicates a Voice request timed out. Twilio returns this code during Voice SDK registration, unregistration, `connect`, and `CallInvite.accept` flows. For call-related HTTP requests, Twilio enforces a hard 15-second upper timeout on the initial response packet.",
    "date_created": "2019-05-22T22:20:33Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31409,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conflict",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe request could not be processed because of a conflict in the current state of the resource. Another request may be in progress.\n",
    "causes": null,
    "solutions": null,
    "description": "The request could not be processed because of a conflict in the current state of the resource. Another request may be in progress.",
    "date_created": "2019-05-22T22:21:23Z",
    "last_updated": "2020-08-04T10:00:08.415Z"
  },
  {
    "code": 31426,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Upgrade Required",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error is raised when an HTTP 426 response is received. The reason for this is most likely because of an incompatible TLS version. To mitigate this, you may need to upgrade the OS or download a more recent version of the SDK.\n",
    "causes": null,
    "solutions": null,
    "description": "This error is raised when an HTTP 426 response is received. The reason for this is most likely because of an incompatible TLS version. To mitigate this, you may need to upgrade the OS or download a more recent version of the SDK.",
    "date_created": "2019-05-22T22:33:19Z",
    "last_updated": "2020-08-04T10:00:08.395Z"
  },
  {
    "code": 31429,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Too Many Requests",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nToo many requests were sent in a given amount of time.\n",
    "causes": null,
    "solutions": null,
    "description": "Too many requests were sent in a given amount of time.",
    "date_created": "2019-05-22T22:34:37Z",
    "last_updated": "2020-08-04T10:00:08.374Z"
  },
  {
    "code": 31480,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Temporarily Unavailable",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis means the callee is currently unavailable. In the Voice JavaScript SDK changelog, Twilio maps this to `ClientErrors.TemporarilyUnavilable`, and the error dictionary lists it as a Voice `ERROR`.\n\n### Possible causes\n\n- The callee is temporarily unavailable and cannot accept the call.\n- Your client cannot reach Twilio's signaling or media infrastructure because DNS, firewall, or edge configuration blocks the required connections. Voice SDKs require both signaling and media connectivity.\n- Your network restricts UDP, and you have not provided ICE servers from Twilio Network Traversal Service to establish media connectivity over TURN.\n\n### Possible solutions\n\n- Retry the call after the callee is available again.\n- Allow outgoing TCP and UDP traffic from your application to Twilio's signaling and media servers, and make sure your firewall allows return traffic.\n- If UDP is restricted, use Twilio Network Traversal Service and pass the returned `ice_servers` or `iceServers` values to your Voice client.\n- If you use a restrictive network, choose a specific edge location that matches your deployment so you only need to allow the relevant media server addresses.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [Voice SDK Error Codes](/docs/voice/sdks/error-codes)\n- [Voice SDKs Network Connectivity Requirements](/docs/voice/sdks/network-connectivity-requirements)\n",
    "causes": "* The callee is temporarily unavailable and cannot accept the call.\n* Your client cannot reach Twilio's signaling or media infrastructure because DNS, firewall, or edge configuration blocks the required connections. Voice SDKs require both signaling and media connectivity.\n* Your network restricts UDP, and you have not provided ICE servers from Twilio Network Traversal Service to establish media connectivity over TURN.",
    "solutions": "* Retry the call after the callee is available again.\n* Allow outgoing TCP and UDP traffic from your application to Twilio's signaling and media servers, and make sure your firewall allows return traffic.\n* If UDP is restricted, use Twilio Network Traversal Service and pass the returned `ice_servers` or `iceServers` values to your Voice client.\n* If you use a restrictive network, choose a specific edge location that matches your deployment so you only need to allow the relevant media server addresses.",
    "description": "This means the callee is currently unavailable. In the Voice JavaScript SDK changelog, Twilio maps this to `ClientErrors.TemporarilyUnavilable`, and the error dictionary lists it as a Voice `ERROR`.",
    "date_created": "2019-05-22T22:37:50Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31481,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Call/Transaction Does Not Exist",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n31481 means the call or transaction you are referencing no longer exists. For outgoing calls, Twilio does not assign a `CallSID` until the `accept` event fires, and a `Call` can move to `closed` after the remote end cancels it.\n\n### Possible causes\n\n- You tried to read or use an outgoing call's `CallSID` before the `accept` event fired. For outgoing calls, the call may not have a `CallSID` until then.\n- The call was canceled by the remote end, which transitions the `Call` to `closed`.\n- In a Voice SDK app, the `CallInvite` object was released before the underlying signaling connection finished processing the invite lifecycle.\n\n### Possible solutions\n\n- Wait for the outgoing call's `accept` event before you read or rely on `CallSID`.\n- Treat `cancel` as terminal in your call flow and stop any follow-up actions once the call has been canceled or disconnected.\n- Keep the `CallInvite` object alive until the invite is accepted, rejected, or canceled.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [Voice JavaScript SDK: Twilio.Call](/docs/voice/sdks/javascript/twiliocall)\n- [Voice Android SDK Changelog](/docs/voice/sdks/android/3x-changelog)\n",
    "causes": "* You tried to read or use an outgoing call's `CallSID` before the `accept` event fired. For outgoing calls, the call may not have a `CallSID` until then.\n* The call was canceled by the remote end, which transitions the `Call` to `closed`.\n* In a Voice SDK app, the `CallInvite` object was released before the underlying signaling connection finished processing the invite lifecycle.",
    "solutions": "* Wait for the outgoing call's `accept` event before you read or rely on `CallSID`.\n* Treat `cancel` as terminal in your call flow and stop any follow-up actions once the call has been canceled or disconnected.\n* Keep the `CallInvite` object alive until the invite is accepted, rejected, or canceled.",
    "description": "31481 means the call or transaction you are referencing no longer exists. For outgoing calls, Twilio does not assign a `CallSID` until the `accept` event fires, and a `Call` can move to `closed` after the remote end cancels it.",
    "date_created": "2019-05-22T22:38:19Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31484,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Address Incomplete",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe provided phone number is malformed.\n\n### Possible causes\n\n- The outbound call was made with a phone number that has an invalid format.\n\n### Possible solutions\n\n- Ensure the phone number dialed is formatted correctly.\n",
    "causes": "* The outbound call was made with a phone number that has an invalid format.",
    "solutions": "* Ensure the phone number dialed is formatted correctly.",
    "description": "The provided phone number is malformed.",
    "date_created": "2019-06-13T01:44:53Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31486,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Busy Here",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this when it receives a busy response while trying to connect a Voice call. In Programmable Voice, `<Dial>` ends the new call when Twilio receives a busy signal, and the resulting `DialCallStatus` is `busy`. The Voice iOS and Android SDKs also expose this as `Busy Here` for call connect and accept flows.\n\n### Possible causes\n\n- The called party is already on another call, so the destination returns a busy signal.\n- The destination SIP endpoint or carrier network returns a `486 Busy Here` response during call setup.\n- A `<Dial>` attempt reaches a busy line, so Twilio exits the dial attempt before connecting the call.\n\n### Possible solutions\n\n- Use the `action` URL on `<Dial>` and check `DialCallStatus`; when the value is `busy`, route the caller to voicemail, an alternate number, or a retry flow.\n- Retry the call after the destination becomes available. Twilio ends the dial attempt when the line is busy, so a later attempt can succeed.\n- Verify the destination number or SIP endpoint is correct and ready to receive calls before you place the call.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [Voice SDK Error Codes](/docs/voice/sdks/error-codes)\n",
    "causes": "* The called party is already on another call, so the destination returns a busy signal.\n* The destination SIP endpoint or carrier network returns a `486 Busy Here` response during call setup.\n* A `<Dial>` attempt reaches a busy line, so Twilio exits the dial attempt before connecting the call.",
    "solutions": "* Use the `action` URL on `<Dial>` and check `DialCallStatus`; when the value is `busy`, route the caller to voicemail, an alternate number, or a retry flow.\n* Retry the call after the destination becomes available. Twilio ends the dial attempt when the line is busy, so a later attempt can succeed.\n* Verify the destination number or SIP endpoint is correct and ready to receive calls before you place the call.",
    "description": "Twilio returns this when it receives a busy response while trying to connect a Voice call. In Programmable Voice, `<Dial>` ends the new call when Twilio receives a busy signal, and the resulting `DialCallStatus` is `busy`. The Voice iOS and Android SDKs also expose this as `Busy Here` for call connect and accept flows.",
    "date_created": "2019-05-22T22:40:25Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31487,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Request Terminated",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe request has terminated as a result of a bye or cancel.\n",
    "causes": null,
    "solutions": null,
    "description": "The request has terminated as a result of a bye or cancel.",
    "date_created": "2019-05-22T22:41:43Z",
    "last_updated": "2020-08-04T10:00:08.29Z"
  },
  {
    "code": 31500,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal Server Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe server could not fulfill the request due to some unexpected condition.\n",
    "causes": null,
    "solutions": null,
    "description": "The server could not fulfill the request due to some unexpected condition.",
    "date_created": "2019-05-22T22:44:23Z",
    "last_updated": "2020-08-04T10:00:08.273Z"
  },
  {
    "code": 31502,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Bad Gateway",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe server is acting as a gateway or proxy, and received an invalid response from a downstream server while attempting to fulfill the request.\n",
    "causes": null,
    "solutions": null,
    "description": "The server is acting as a gateway or proxy, and received an invalid response from a downstream server while attempting to fulfill the request.",
    "date_created": "2019-05-22T22:44:55Z",
    "last_updated": "2020-08-04T10:00:08.252Z"
  },
  {
    "code": 31503,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Service Unavailable",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Service Unavailable\n\nThe server is currently unable to handle the request due to a temporary overloading or maintenance of the server. This error can also be caused by the Application SID provided in the access token pointing to an inaccessible URL.\n\n### Possible causes\n\n- The server is under maintenance.\n- The Application SID provided in the access token points to an inaccessible URL.\n\n### Possible solutions\n\nPlease check the Application SID URL. For further assistance, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).\n",
    "causes": "* The server is under maintenance.\n* The Application SID provided in the access token points to an inaccessible URL.",
    "solutions": "Please check the Application SID URL. For further assistance, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).",
    "description": "",
    "date_created": "2019-05-22T22:46:25Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31504,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Gateway Timeout",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe server, while acting as a gateway or proxy, did not receive a timely response from an upstream server.\n",
    "causes": null,
    "solutions": null,
    "description": "The server, while acting as a gateway or proxy, did not receive a timely response from an upstream server.",
    "date_created": "2019-05-22T22:47:14Z",
    "last_updated": "2020-08-04T10:00:08.195Z"
  },
  {
    "code": 31530,
    "log_level": "ERROR",
    "log_type": null,
    "message": "DNS Resolution Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis indicates that the Voice client could not connect to the server.\n\n### Possible causes\n\n- Your network is restrictive or uses a VPN, and ICE gathering cannot reach Twilio from all available interfaces.\n- Your firewall blocks the outgoing `UDP` traffic required for Twilio Voice media, or it does not allow the Twilio signaling and media destinations your SDK needs.\n- You are connecting from a restricted network without providing ICE servers from Twilio Network Traversal Service.\n\n### Possible solutions\n\n- Enable `enableIceGatheringOnAnyAddressPorts` in `ConnectOptions` so ICE candidates are gathered from all available interfaces on Android or iOS.\n- Provide ICE servers from Twilio Network Traversal Service through `ConnectOptions` or `AcceptOptions` when your network requires `TURN`.\n- Allow outgoing `TCP` and `UDP` traffic to Twilio's signaling and media infrastructure, or use `TURN` over `TCP` or `TLS` if `UDP` is restricted.\n\n#### Additional resources\n\n- [Voice SDKs Network Connectivity Requirements](/docs/voice/sdks/network-connectivity-requirements)\n- [Voice Mobile SDKs: Best Practices](/docs/voice/sdks/mobile-best-practices)\n",
    "causes": "* Your network is restrictive or uses a VPN, and ICE gathering cannot reach Twilio from all available interfaces.\n* Your firewall blocks the outgoing `UDP` traffic required for Twilio Voice media, or it does not allow the Twilio signaling and media destinations your SDK needs.\n* You are connecting from a restricted network without providing ICE servers from Twilio Network Traversal Service.",
    "solutions": "* Enable `enableIceGatheringOnAnyAddressPorts` in `ConnectOptions` so ICE candidates are gathered from all available interfaces on Android or iOS.\n* Provide ICE servers from Twilio Network Traversal Service through `ConnectOptions` or `AcceptOptions` when your network requires `TURN`.\n* Allow outgoing `TCP` and `UDP` traffic to Twilio's signaling and media infrastructure, or use `TURN` over `TCP` or `TLS` if `UDP` is restricted.",
    "description": "This indicates that the Voice client could not connect to the server.",
    "date_created": "2019-05-22T22:47:58Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31600,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Busy Everywhere",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis is a Programmable Voice error with the message Busy Everywhere. Use this error as a signal that a `<Dial>` attempt reached a busy destination, and that Twilio will report `DialCallStatus=busy` to the `action` URL. This error can also appear when you dial multiple `<Client>` identities and every attempted client is busy before one accepts the call.\n\n### Possible causes\n\n- The called party returned a busy signal while `<Dial>` was trying to connect the call.\n- You dialed multiple `<Client>` identities, and each client was busy before any one accepted the call.\n\n### Possible solutions\n\n- Add an `action` URL to `<Dial>` and inspect `DialCallStatus` so your application can branch when the result is `busy`.\n- If you are dialing multiple `<Client>` identities, route the call so at least one client can accept, or use `<Conference>` when you need multiple participants connected at the same time.\n- Review the call in Twilio Console Logs, then use the Debugger and Request Inspector to inspect the failed request and error details.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [TwiML Voice: `<Conference>`](/docs/voice/twiml/conference)\n",
    "causes": "* The called party returned a busy signal while `<Dial>` was trying to connect the call.\n* You dialed multiple `<Client>` identities, and each client was busy before any one accepted the call.",
    "solutions": "* Add an `action` URL to `<Dial>` and inspect `DialCallStatus` so your application can branch when the result is `busy`.\n* If you are dialing multiple `<Client>` identities, route the call so at least one client can accept, or use `<Conference>` when you need multiple participants connected at the same time.\n* Review the call in Twilio Console Logs, then use the Debugger and Request Inspector to inspect the failed request and error details.",
    "description": "This is a Programmable Voice error with the message Busy Everywhere. Use this error as a signal that a `<Dial>` attempt reached a busy destination, and that Twilio will report `DialCallStatus=busy` to the `action` URL. This error can also appear when you dial multiple `<Client>` identities and every attempted client is busy before one accepts the call.",
    "date_created": "2019-05-22T22:48:42Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31603,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Decline",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nUse this to detect that the callee declined the call. In SIP termination flows, Twilio can also return `603 Decline` when the account is not active.\n\n### Possible causes\n\n- The callee rejected the call and returned `603 Decline`.\n- Twilio received SIP termination traffic for an account that is not active, which can happen when the account is closed or suspended because of lack of funds or a Terms of Service or Acceptable Use Policy violation.\n\n### Possible solutions\n\n- Treat the response as a declined-call outcome in your application.\n- If the decline happens on SIP termination traffic, check that the Twilio account is active, refill funds if needed, or contact Twilio Customer Support if the account is closed or suspended.\n- When Twilio returns `603 Decline` for an inactive account, inspect the `X-Twilio-Error` header for Error 10001.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [Troubleshooting your Trunk](/docs/sip-trunking/troubleshooting)\n- [Voice SDK Error Codes](/docs/voice/sdks/error-codes)\n",
    "causes": "* The callee rejected the call and returned `603 Decline`.\n* Twilio received SIP termination traffic for an account that is not active, which can happen when the account is closed or suspended because of lack of funds or a Terms of Service or Acceptable Use Policy violation.",
    "solutions": "* Treat the response as a declined-call outcome in your application.\n* If the decline happens on SIP termination traffic, check that the Twilio account is active, refill funds if needed, or contact Twilio Customer Support if the account is closed or suspended.\n* When Twilio returns `603 Decline` for an inactive account, inspect the `X-Twilio-Error` header for Error 10001.",
    "description": "Use this to detect that the callee declined the call. In SIP termination flows, Twilio can also return `603 Decline` when the account is not active.",
    "date_created": "2019-05-22T22:49:29Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31604,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Does Not Exist Anywhere",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe requested callee does not exist anywhere.\n",
    "causes": null,
    "solutions": null,
    "description": "The requested callee does not exist anywhere.",
    "date_created": "2019-05-22T22:50:35Z",
    "last_updated": "2020-08-04T10:00:08.115Z"
  },
  {
    "code": 31900,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Stream - Unknown Error",
    "secondary_message": "This stream has failed due to an unknown cause",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis stream has failed due to an unknown cause\n\n### Possible causes\n\nUnknown\n\n### Possible solutions\n\nUnknown\n",
    "causes": "Unknown",
    "solutions": "Unknown",
    "description": "This stream has failed due to an unknown cause",
    "date_created": "2019-07-31T10:52:27Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31901,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - Connection Timeout",
    "secondary_message": "The WebSocket connection request sent by the stream didn't receive any response from the server",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\n\nTwilio returns this error when the Media Stream connection request does not receive a response from your WebSocket server. Twilio uses the `url` in `<Stream>` to establish a secure `wss` connection, and your Media Streams application must allow secure WebSocket traffic on TCP port 443.\n\n### Possible causes\n\n- Your WebSocket server is not connected to a network or is otherwise unreachable.\n- The `url` in `<Stream>` points to the wrong host or IP address. Twilio uses that `url` to open the WebSocket connection.\n- An intermediate service such as ngrok, a proxy, or another routing layer is not forwarding traffic to your WebSocket server.\n- A firewall or network policy is blocking secure WebSocket traffic on TCP port 443.\n\n### Possible solutions\n\n- Confirm that your WebSocket server is online, connected to the network, and reachable from Twilio.\n- Verify that the `<Stream>` `url` is correct and uses `wss`. `wss` is the only supported protocol for Media Streams.\n- If you use ngrok, a proxy, or another intermediate service, verify that it routes traffic to your WebSocket server and returns a response.\n- Update your firewall rules to allow secure WebSocket connections on TCP port 443 from Twilio to your WebSocket server.\n- After you restore connectivity, confirm that your server receives Twilio's initial `connected` event on the WebSocket connection.\n\n#### Additional resources\n- [Media Streams overview](/docs/voice/media-streams)\n- [`<Stream>` TwiML reference](/docs/voice/twiml/stream)\n- [Media Streams WebSocket messages](/docs/voice/media-streams/websocket-messages)\n",
    "causes": "* Your WebSocket server is not connected to a network or is otherwise unreachable.\n* The `url` in `<Stream>` points to the wrong host or IP address. Twilio uses that `url` to open the WebSocket connection.\n* An intermediate service such as ngrok, a proxy, or another routing layer is not forwarding traffic to your WebSocket server.\n* A firewall or network policy is blocking secure WebSocket traffic on TCP port 443.",
    "solutions": "* Confirm that your WebSocket server is online, connected to the network, and reachable from Twilio.\n* Verify that the `<Stream>` `url` is correct and uses `wss`. `wss` is the only supported protocol for Media Streams.\n* If you use ngrok, a proxy, or another intermediate service, verify that it routes traffic to your WebSocket server and returns a response.\n* Update your firewall rules to allow secure WebSocket connections on TCP port 443 from Twilio to your WebSocket server.\n* After you restore connectivity, confirm that your server receives Twilio's initial `connected` event on the WebSocket connection.",
    "description": "Twilio returns this error when the Media Stream connection request does not receive a response from your WebSocket server. Twilio uses the `url` in `<Stream>` to establish a secure `wss` connection, and your Media Streams application must allow secure WebSocket traffic on TCP port 443.",
    "date_created": "2019-07-31T10:54:00Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 31902,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - Connection Refused",
    "secondary_message": "The WebSocket connection request sent by the stream is refused by the server host",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a Media Stream cannot establish a WebSocket connection because the destination host refuses the connection request. Media Streams use the `<Stream>` noun and connect to your endpoint over `wss`.\n\n### Possible causes\n\n- The `url` in `<Start><Stream>` or `<Connect><Stream>`, or the `Url` used with the Stream resource, points to the wrong host, path, or port.\n- Your WebSocket server is down, not listening, or otherwise unavailable when Twilio tries to connect.\n- Your network or firewall is blocking secure WebSocket traffic to your server. Media Streams require secure WebSocket connections on TCP port 443 from Twilio to your WebSocket server.\n- The endpoint is not accepting a secure `wss` connection. Twilio supports `wss` for Media Streams.\n\n### Possible solutions\n\n- Verify that the Media Stream destination is the correct `wss` endpoint and that the host, path, and port are correct in your `<Stream>` `url` or Stream resource `Url`.\n- Confirm that your WebSocket server process is running and able to accept incoming connections when the call starts the stream.\n- Update your firewall or network rules to allow secure WebSocket connections on TCP port 443 from Twilio to your WebSocket server.\n- If the refusal was caused by a temporary service interruption, retry the connection after your WebSocket service is healthy again.\n\n#### Additional resources\n\n- [Media Streams Overview](/docs/voice/media-streams)\n- [TwiML Voice: `<Stream>`](/docs/voice/twiml/stream)\n- [Media Streams Configuration](/docs/global-infrastructure/firewall-configurations/media-streams-configuration)\n",
    "causes": "* The `url` in `<Start><Stream>` or `<Connect><Stream>`, or the `Url` used with the Stream resource, points to the wrong host, path, or port.\n* Your WebSocket server is down, not listening, or otherwise unavailable when Twilio tries to connect.\n* Your network or firewall is blocking secure WebSocket traffic to your server. Media Streams require secure WebSocket connections on TCP port 443 from Twilio to your WebSocket server.\n* The endpoint is not accepting a secure `wss` connection. Twilio supports `wss` for Media Streams.",
    "solutions": "* Verify that the Media Stream destination is the correct `wss` endpoint and that the host, path, and port are correct in your `<Stream>` `url` or Stream resource `Url`.\n* Confirm that your WebSocket server process is running and able to accept incoming connections when the call starts the stream.\n* Update your firewall or network rules to allow secure WebSocket connections on TCP port 443 from Twilio to your WebSocket server.\n* If the refusal was caused by a temporary service interruption, retry the connection after your WebSocket service is healthy again.",
    "description": "Twilio returns this error when a Media Stream cannot establish a WebSocket connection because the destination host refuses the connection request. Media Streams use the `<Stream>` noun and connect to your endpoint over `wss`.",
    "date_created": "2019-07-31T10:54:15Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31903,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - Connection Broken Pipe",
    "secondary_message": "The WebSocket connection has been abruptly closed by the server",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a Media Stream WebSocket connection is abruptly closed by the server while the Stream is active. Media Streams use a WebSocket connection to stream call audio to your application, and Twilio must be able to reach your server over a secure WebSocket connection.\n\n### Possible causes\n\n- Your WebSocket server is down or restarted while the Stream is still active.\n- Your WebSocket server encountered an application or infrastructure problem that caused it to close the connection unexpectedly.\n- The connection between Twilio and your WebSocket server was lost.\n- A firewall, proxy, load balancer, or other intermediate network element interrupted traffic between Twilio and your WebSocket server.\n\n### Possible solutions\n\n- Verify that your WebSocket server process is running and stays available for the full duration of the Stream.\n- Review your server logs for crashes, restarts, unhandled exceptions, or connection close events that line up with the failed Stream.\n- Confirm that your Media Stream endpoint accepts secure WebSocket connections over `wss` and that Twilio can reach it on TCP port 443.\n- Review your firewalls, proxies, and load balancers for idle timeouts, resets, or routing issues that can close the TCP socket before the Stream ends.\n- If you are using bidirectional Media Streams, make sure your application closes the connection intentionally only when you want to stop the Stream or end the call.\n\n#### Additional resources\n\n- [Media Streams overview](/docs/voice/media-streams)\n- [`<Stream>` TwiML reference](/docs/voice/twiml/stream)\n- [Media Streams network configuration](/docs/global-infrastructure/firewall-configurations/media-streams-configuration)\n",
    "causes": "* Your WebSocket server is down or restarted while the Stream is still active.\n* Your WebSocket server encountered an application or infrastructure problem that caused it to close the connection unexpectedly.\n* The connection between Twilio and your WebSocket server was lost.\n* A firewall, proxy, load balancer, or other intermediate network element interrupted traffic between Twilio and your WebSocket server.",
    "solutions": "* Verify that your WebSocket server process is running and stays available for the full duration of the Stream.\n* Review your server logs for crashes, restarts, unhandled exceptions, or connection close events that line up with the failed Stream.\n* Confirm that your Media Stream endpoint accepts secure WebSocket connections over `wss` and that Twilio can reach it on TCP port 443.\n* Review your firewalls, proxies, and load balancers for idle timeouts, resets, or routing issues that can close the TCP socket before the Stream ends.\n* If you are using bidirectional Media Streams, make sure your application closes the connection intentionally only when you want to stop the Stream or end the call.",
    "description": "Twilio returns this error when a Media Stream WebSocket connection is abruptly closed by the server while the Stream is active. Media Streams use a WebSocket connection to stream call audio to your application, and Twilio must be able to reach your server over a secure WebSocket connection.",
    "date_created": "2019-07-31T10:43:10Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31904,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - Host Unreachable",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when it cannot create the Media Streams WebSocket connection because the host in your Stream `url` is unreachable. Twilio connects to Media Streams over `wss`, and your WebSocket endpoint must be reachable from the public internet.\n\n### Possible causes\n\n- The Stream `url` points to the wrong hostname or IP address.\n- The hostname resolves to a private or otherwise non-routable IP address.\n- Your WebSocket server is down or no longer connected to the internet.\n- A firewall rule blocks secure WebSocket traffic on TCP port 443 between Twilio and your WebSocket server.\n\n### Possible solutions\n\n- Confirm that the Stream `url` is correct and uses `wss`. Update the hostname or IP address if it does not resolve to the server that should receive the stream.\n- Replace private, internal, or non-routable addresses with a publicly reachable endpoint.\n- Verify that your WebSocket server is running and reachable from the public internet.\n- Update your firewall rules to allow secure WebSocket connections on TCP port 443 from Twilio to your WebSocket server.\n\n#### Additional resources\n\n- [TwiML `<Stream>`](/docs/voice/twiml/stream)\n- [Stream resource API reference](/docs/voice/api/stream-resource)\n- [Media Streams Configuration](/docs/global-infrastructure/firewall-configurations/media-streams-configuration)\n",
    "causes": "* The Stream `url` points to the wrong hostname or IP address.\n* The hostname resolves to a private or otherwise non-routable IP address.\n* Your WebSocket server is down or no longer connected to the internet.\n* A firewall rule blocks secure WebSocket traffic on TCP port 443 between Twilio and your WebSocket server.",
    "solutions": "* Confirm that the Stream `url` is correct and uses `wss`. Update the hostname or IP address if it does not resolve to the server that should receive the stream.\n* Replace private, internal, or non-routable addresses with a publicly reachable endpoint.\n* Verify that your WebSocket server is running and reachable from the public internet.\n* Update your firewall rules to allow secure WebSocket connections on TCP port 443 from Twilio to your WebSocket server.",
    "description": "Twilio returns this error when it cannot create the Media Streams WebSocket connection because the host in your Stream `url` is unreachable. Twilio connects to Media Streams over `wss`, and your WebSocket endpoint must be reachable from the public internet.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31910,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - SSL Protocol Error",
    "secondary_message": "The server doesn't support SSL, can't provide a secure connection or the SSL handshake has failed",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio can't establish the secure WebSocket connection required for Media Streams. `<Stream>` supports only `wss`, so your WebSocket endpoint must accept a secure connection before Twilio can begin streaming audio.\n\n### Possible causes\n\n- The `<Stream>` `url` points to an endpoint that does not support `wss`.\n- The WebSocket server is listening on the wrong port, or the port in the `<Stream>` `url` is not configured for TLS.\n- The server certificate is not valid or is not accepted by standard HTTP clients, so the SSL handshake fails.\n- A firewall or proxy is blocking secure WebSocket traffic to your public endpoint on port 443.\n\n### Possible solutions\n\n- Update the `<Stream>` `url` to use a reachable `wss` endpoint. Do not use `ws`.\n- Configure your WebSocket server to accept secure connections on the port referenced in the `<Stream>` `url`. Media Streams requires secure WebSocket connectivity on port 443.\n- Install or correct the TLS certificate so the endpoint presents a valid certificate that standard HTTP clients accept.\n- Update your firewall or proxy rules to allow secure WebSocket connections from Twilio to your WebSocket server.\n\n#### Additional resources\n\n- [Media Streams Overview](/docs/voice/media-streams)\n- [TwiML Voice: `<Stream>`](/docs/voice/twiml/stream)\n- [Media Streams Configuration](/docs/global-infrastructure/firewall-configurations/media-streams-configuration)\n",
    "causes": "* The `<Stream>` `url` points to an endpoint that does not support `wss`.\n* The WebSocket server is listening on the wrong port, or the port in the `<Stream>` `url` is not configured for TLS.\n* The server certificate is not valid or is not accepted by standard HTTP clients, so the SSL handshake fails.\n* A firewall or proxy is blocking secure WebSocket traffic to your public endpoint on port 443.",
    "solutions": "* Update the `<Stream>` `url` to use a reachable `wss` endpoint. Do not use `ws`.\n* Configure your WebSocket server to accept secure connections on the port referenced in the `<Stream>` `url`. Media Streams requires secure WebSocket connectivity on port 443.\n* Install or correct the TLS certificate so the endpoint presents a valid certificate that standard HTTP clients accept.\n* Update your firewall or proxy rules to allow secure WebSocket connections from Twilio to your WebSocket server.",
    "description": "This error occurs when Twilio can't establish the secure WebSocket connection required for Media Streams. `<Stream>` supports only `wss`, so your WebSocket endpoint must accept a secure connection before Twilio can begin streaming audio.",
    "date_created": "2019-07-31T10:55:06Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31920,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - Handshake Error",
    "secondary_message": "The WebSocket protocol handshake was declined by the server",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Media Stream endpoint responds to the WebSocket connection request with an HTTP status other than 101. In most cases, the URL in `<Stream>` did not complete a valid WebSocket upgrade.\n\n### Possible causes\n\n- The destination server does not support WebSocket connections.\n- The WebSocket protocol is not enabled for the requested URL.\n- The `<Stream>` `url` points to the wrong path for your WebSocket server, so the server returns a non-101 response instead of upgrading the connection.\n- The `<Stream>` `url` includes query string parameters. `<Stream>` does not support query strings, which can cause your application to reject the request.\n\n### Possible solutions\n\n- Verify that your server and framework are configured to accept WebSocket connections on the destination route.\n- Verify that the path in your TwiML points to the exact endpoint that handles the WebSocket upgrade.\n- Use `wss` in the `<Stream>` `url`. Twilio supports only `wss` for Media Streams.\n- Remove query string parameters from the `<Stream>` `url`. Use nested `<Parameter>` nouns to pass custom values instead.\n- Set `statusCallback` on `<Stream>` so you can review `StreamError` details when the stream fails to start.\n\n#### Additional resources\n\n- [Media Streams Overview](/docs/voice/media-streams)\n- [TwiML `<Stream>`](/docs/voice/twiml/stream)\n- [Media Streams WebSocket Messages](/docs/voice/media-streams/websocket-messages)\n",
    "causes": "* The destination server does not support WebSocket connections.\n* The WebSocket protocol is not enabled for the requested URL.\n* The `<Stream>` `url` points to the wrong path for your WebSocket server, so the server returns a non-101 response instead of upgrading the connection.\n* The `<Stream>` `url` includes query string parameters. `<Stream>` does not support query strings, which can cause your application to reject the request.",
    "solutions": "* Verify that your server and framework are configured to accept WebSocket connections on the destination route.\n* Verify that the path in your TwiML points to the exact endpoint that handles the WebSocket upgrade.\n* Use `wss` in the `<Stream>` `url`. Twilio supports only `wss` for Media Streams.\n* Remove query string parameters from the `<Stream>` `url`. Use nested `<Parameter>` nouns to pass custom values instead.\n* Set `statusCallback` on `<Stream>` so you can review `StreamError` details when the stream fails to start.",
    "description": "Twilio returns this error when your Media Stream endpoint responds to the WebSocket connection request with an HTTP status other than 101. In most cases, the URL in `<Stream>` did not complete a valid WebSocket upgrade.",
    "date_created": "2019-07-31T10:55:22Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31921,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - Close Error",
    "secondary_message": "The remote server has closed the WebSocket connection",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when Twilio establishes a Media Streams WebSocket connection to your server and your server then closes that connection. In bidirectional Media Streams, closing the WebSocket from your server stops the Stream.\n\n### Possible causes\n\n- Your WebSocket server ended the connection and Twilio received a WebSocket close event.\n- Your application closed the WebSocket for a bidirectional Stream started with `<Connect><Stream>`. Twilio resumes the remaining TwiML only after your server closes the WebSocket connection.\n- The WebSocket connection associated with the Media Stream was closed by your server before you intended the Stream to end. Each Media Stream uses a single WebSocket connection.\n\n### Possible solutions\n\n- Review your WebSocket server logs to identify the close code and the condition that caused the server to end the connection.\n- If you use bidirectional Media Streams with `<Connect><Stream>`, keep the WebSocket connection open for as long as you want the Stream to continue. Close it only when you intend to stop the Stream.\n- Add a `statusCallback` URL to `<Stream>` so Twilio sends `stream-started`, `stream-stopped`, and `stream-error` events. Use the `StreamError` value in that callback to capture more detail about the failure.\n- Make sure your Media Streams application accepts secure WebSocket connections from Twilio on TCP port 443.\n\n#### Additional resources\n- [Media Streams Overview](/docs/voice/media-streams)\n- [WebSocket Messages for Media Streams](/docs/voice/media-streams/websocket-messages)\n- [TwiML `<Stream>` Reference](/docs/voice/twiml/stream)\n",
    "causes": "* Your WebSocket server ended the connection and Twilio received a WebSocket close event.\n* Your application closed the WebSocket for a bidirectional Stream started with `<Connect><Stream>`. Twilio resumes the remaining TwiML only after your server closes the WebSocket connection.\n* The WebSocket connection associated with the Media Stream was closed by your server before you intended the Stream to end. Each Media Stream uses a single WebSocket connection.",
    "solutions": "* Review your WebSocket server logs to identify the close code and the condition that caused the server to end the connection.\n* If you use bidirectional Media Streams with `<Connect><Stream>`, keep the WebSocket connection open for as long as you want the Stream to continue. Close it only when you intend to stop the Stream.\n* Add a `statusCallback` URL to `<Stream>` so Twilio sends `stream-started`, `stream-stopped`, and `stream-error` events. Use the `StreamError` value in that callback to capture more detail about the failure.\n* Make sure your Media Streams application accepts secure WebSocket connections from Twilio on TCP port 443.",
    "description": "This error occurs when Twilio establishes a Media Streams WebSocket connection to your server and your server then closes that connection. In bidirectional Media Streams, closing the WebSocket from your server stops the Stream.",
    "date_created": "2019-07-31T10:55:41Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 31922,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - URL Schema Not Supported",
    "secondary_message": "The URL schema is not supported by Programmable Streams",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `<Stream>` `url` uses a protocol that Programmable Voice Media Streams does not support. Twilio connects Media Streams over a `wss` WebSocket connection, and `wss` is the only supported protocol for the `<Stream>` `url` attribute.\n\n### Possible causes\n\n- The `<Stream>` `url` uses a protocol other than `wss`.\n- The WebSocket endpoint in your TwiML was configured with an unsupported URL schema.\n\n### Possible solutions\n\n- Update the `<Stream>` `url` so it points to a secure WebSocket endpoint that uses the `wss` schema.\n- Review the `url` attribute in your `<Start><Stream>` or `<Connect><Stream>` TwiML and confirm it is formatted for Media Streams.\n- If you need to pass values to your WebSocket server, do not add query string parameters to the `url`. Use nested `<Parameter>` values instead.\n\n#### Additional resources\n\n- [TwiML `<Stream>`](/docs/voice/twiml/stream)\n- [Media Streams Overview](/docs/voice/media-streams)\n- [Media Streams WebSocket Messages](/docs/voice/media-streams/websocket-messages)\n",
    "causes": "* The `<Stream>` `url` uses a protocol other than `wss`.\n* The WebSocket endpoint in your TwiML was configured with an unsupported URL schema.",
    "solutions": "* Update the `<Stream>` `url` so it points to a secure WebSocket endpoint that uses the `wss` schema.\n* Review the `url` attribute in your `<Start><Stream>` or `<Connect><Stream>` TwiML and confirm it is formatted for Media Streams.\n* If you need to pass values to your WebSocket server, do not add query string parameters to the `url`. Use nested `<Parameter>` values instead.",
    "description": "This error occurs when the `<Stream>` `url` uses a protocol that Programmable Voice Media Streams does not support. Twilio connects Media Streams over a `wss` WebSocket connection, and `wss` is the only supported protocol for the `<Stream>` `url` attribute.",
    "date_created": "2019-07-31T10:55:53Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31923,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - WebSocket - Malformed URL",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- URL schema is malformed\n\n### Possible solutions\n\n- Verify the URL in TwiML is correct\n",
    "causes": "* URL schema is malformed",
    "solutions": "* Verify the URL in TwiML is correct",
    "description": "",
    "date_created": "2019-07-31T10:56:03Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31924,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - Websocket - Protocol Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your WebSocket server sends a malformed message or otherwise does not follow the WebSocket protocol during a Voice Media Stream.\n\n### Possible causes\n\n- The WebSocket control frame was fragmented.\n- A message sent by your server did not conform to the WebSocket protocol.\n- In a bidirectional Stream, your server sent a message back to Twilio that was not a supported `media`, `mark`, or `clear` message, or the message format was invalid.\n\n### Possible solutions\n\n- Verify the messages sent by your server.\n- If you use bidirectional Media Streams with `<Connect><Stream>`, send only supported `media`, `mark`, and `clear` messages back to Twilio.\n- When sending a `media` message, encode the payload as base64 `audio/x-mulaw` audio at `8000` Hz and do not include audio file header bytes.\n- If you started a unidirectional Stream with `<Start><Stream>`, do not send audio or control messages back to Twilio over the WebSocket connection.\n\n#### Additional resources\n\n- [Media Streams overview](/docs/voice/media-streams)\n- [WebSocket messages for Media Streams](/docs/voice/media-streams/websocket-messages)\n- [TwiML `<Stream>` reference](/docs/voice/twiml/stream)\n",
    "causes": "* The WebSocket control frame was fragmented.\n* A message sent by your server did not conform to the WebSocket protocol.\n* In a bidirectional Stream, your server sent a message back to Twilio that was not a supported `media`, `mark`, or `clear` message, or the message format was invalid.",
    "solutions": "* Verify the messages sent by your server.\n* If you use bidirectional Media Streams with `<Connect><Stream>`, send only supported `media`, `mark`, and `clear` messages back to Twilio.\n* When sending a `media` message, encode the payload as base64 `audio/x-mulaw` audio at `8000` Hz and do not include audio file header bytes.\n* If you started a unidirectional Stream with `<Start><Stream>`, do not send audio or control messages back to Twilio over the WebSocket connection.",
    "description": "Twilio returns this error when your WebSocket server sends a malformed message or otherwise does not follow the WebSocket protocol during a Voice Media Stream.",
    "date_created": "2021-02-18T14:33:15Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31930,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Stream - Media - Buffer Overflow",
    "secondary_message": "Audio is discarded due to a congestion control condition (restricted bandwidth) in the WebSocket upstream",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio raises this warning when a Media Stream is sending call audio to your WebSocket server and the WebSocket upstream becomes congested. When restricted bandwidth prevents the stream from keeping up, Twilio discards audio.\n\n### Possible causes\n\n- Your server or network path has an upstream bandwidth restriction that causes congestion while Twilio is streaming audio over WebSockets.\n- Your Media Streams application cannot reliably accept the real-time audio that Twilio sends to your WebSocket server.\n- Network controls between Twilio and your WebSocket server are not fully configured for secure WebSocket traffic on port 443.\n\n### Possible solutions\n\n- Verify network load and available upstream bandwidth on the server that handles the Media Stream.\n- Confirm that your WebSocket endpoint can accept secure WebSocket connections from Twilio on port 443 from any public IP address.\n- Review how your application handles incoming Media Streams messages so it can continue receiving Twilio's real-time audio.\n- Validate the `X-Twilio-Signature` header on your Media Streams endpoint while you troubleshoot connectivity and network configuration.\n\n#### Additional resources\n\n- [Media Streams Overview](/docs/voice/media-streams)\n- [Media Streams WebSocket Messages](/docs/voice/media-streams/websocket-messages)\n- [Media Streams Configuration](/docs/global-infrastructure/firewall-configurations/media-streams-configuration)\n",
    "causes": "* Your server or network path has an upstream bandwidth restriction that causes congestion while Twilio is streaming audio over WebSockets.\n* Your Media Streams application cannot reliably accept the real-time audio that Twilio sends to your WebSocket server.\n* Network controls between Twilio and your WebSocket server are not fully configured for secure WebSocket traffic on port 443.",
    "solutions": "* Verify network load and available upstream bandwidth on the server that handles the Media Stream.\n* Confirm that your WebSocket endpoint can accept secure WebSocket connections from Twilio on port 443 from any public IP address.\n* Review how your application handles incoming Media Streams messages so it can continue receiving Twilio's real-time audio.\n* Validate the `X-Twilio-Signature` header on your Media Streams endpoint while you troubleshoot connectivity and network configuration.",
    "description": "Twilio raises this warning when a Media Stream is sending call audio to your WebSocket server and the WebSocket upstream becomes congested. When restricted bandwidth prevents the stream from keeping up, Twilio discards audio.",
    "date_created": "2019-07-31T10:56:23Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31931,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Stream - Media - Media Discarded",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\n\nTwilio sends this warning once per Stream when audio sent to a bidirectional Media Stream is discarded because the downstream buffer has overflowed. Twilio buffers outbound `media` messages and plays them in the order received. If buffered audio grows beyond 10 minutes, Twilio stops accepting more audio for that Stream.\n\n### Possible causes\n\n- Your WebSocket server sent `media` messages faster than Twilio could play them back on the Call.\n- More than 10 minutes of audio was buffered for the Stream. After that limit is reached, no more audio is accepted.\n- Your application kept queueing audio without tracking playback completion with `mark` messages.\n\n### Possible solutions\n\n- Send audio only on bidirectional Streams created with `<Connect><Stream>`. If you only need to receive audio, use a unidirectional Stream instead of sending `media` back to Twilio.\n- Pace outbound `media` messages so the buffer can drain before you send more audio.\n- Send a `mark` message after each `media` message and wait for the matching `mark` event before sending large amounts of additional audio.\n- If you need to interrupt queued audio, send a `clear` message to empty the buffer before sending replacement audio.\n\n#### Additional resources\n- [Media Streams overview](/docs/voice/media-streams)\n- [Media Streams WebSocket messages](/docs/voice/media-streams/websocket-messages)\n- [TwiML `<Stream>` reference](/docs/voice/twiml/stream)\n",
    "causes": "* Your WebSocket server sent `media` messages faster than Twilio could play them back on the Call.\n* More than 10 minutes of audio was buffered for the Stream. After that limit is reached, no more audio is accepted.\n* Your application kept queueing audio without tracking playback completion with `mark` messages.",
    "solutions": "* Send audio only on bidirectional Streams created with `<Connect><Stream>`. If you only need to receive audio, use a unidirectional Stream instead of sending `media` back to Twilio.\n* Pace outbound `media` messages so the buffer can drain before you send more audio.\n* Send a `mark` message after each `media` message and wait for the matching `mark` event before sending large amounts of additional audio.\n* If you need to interrupt queued audio, send a `clear` message to empty the buffer before sending replacement audio.",
    "description": "Twilio sends this warning once per Stream when audio sent to a bidirectional Media Stream is discarded because the downstream buffer has overflowed. Twilio buffers outbound `media` messages and plays them in the order received. If buffered audio grows beyond 10 minutes, Twilio stops accepting more audio for that Stream.",
    "date_created": "2020-07-09T08:10:55Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 31940,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - Invalid connectorName attribute in TwiML.",
    "secondary_message": "connectorName attribute provided does not reference a connector configuration.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInvalid connectorName attribute in TwiML.\n\n### Possible causes\n\nA 31940 Error is an indication that the value provided with connectorName attribute does not match to an installed configuration.\n\n### Possible solutions\n\n- Make sure that the connectorName matches a Unique Name in an installed connector.\n",
    "causes": "A 31940 Error is an indication that the value provided with connectorName attribute does not match to an installed configuration.",
    "solutions": "* Make sure that the connectorName matches a Unique Name in an installed connector.",
    "description": "Invalid connectorName attribute in TwiML.",
    "date_created": "2020-02-13T15:17:17Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31941,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - Invalid Track configuration",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nUnsupported value of track attribute in TwiML\n\n### Possible causes\n\n- Value different of \"inbound\\_track\" is used with verb Connect\n- Value different of \"inbound\\_track\", \"outbound\\_track\" or \"both\\_tracks\" is used with verb Start\n\n### Possible solutions\n\n- Make sure track value is among supported ones\n",
    "causes": "* Value different of \"inbound\\_track\" is used with verb Connect\n* Value different of \"inbound\\_track\", \"outbound\\_track\" or \"both\\_tracks\" is used with verb Start",
    "solutions": "* Make sure track value is among supported ones",
    "description": "Unsupported value of track attribute in TwiML",
    "date_created": "2020-07-08T15:08:40Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 31942,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - Invalid connector configuration",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the configuration for a `<VirtualAgent>` connector is invalid. Check the Project ID, Conversation Profile ID, and language settings used for your Virtual Agent setup.\n\n### Possible causes\n\n- The Virtual Agent connector was configured with an incorrect Project ID, Conversation Profile ID, or language value.\n\n### Possible solutions\n\n- Review the connector configuration and correct the Project ID, Conversation Profile ID, and language values used for your Dialogflow CX integration.\n- If you override Virtual Agent settings in TwiML or Studio, make sure each `<Config>` uses a valid `name` and `value`, and only override settings supported by your connector.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [Virtual Agent with Dialogflow CX](/docs/voice/twiml/connect/virtualagent/virtualagent-dialogflow-cx)\n- [Connect Virtual Agent widget](/docs/studio/widget-library/connect-virtual-agent)\n",
    "causes": "* The Virtual Agent connector was configured with an incorrect Project ID, Conversation Profile ID, or language value.",
    "solutions": "* Review the connector configuration and correct the Project ID, Conversation Profile ID, and language values used for your Dialogflow CX integration.\n* If you override Virtual Agent settings in TwiML or Studio, make sure each `<Config>` uses a valid `name` and `value`, and only override settings supported by your connector.",
    "description": "This error occurs when the configuration for a `<VirtualAgent>` connector is invalid. Check the Project ID, Conversation Profile ID, and language settings used for your Virtual Agent setup.",
    "date_created": "2020-09-08T08:07:27Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31950,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Stream - Protocol - Malformed Message",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio couldn't decode a message sent on the Media Streams WebSocket connection. Twilio sends this warning once per Stream.\n\n### Possible causes\n\n- Your WebSocket server sent a message in binary format.\n- Your application sent raw audio bytes directly over the WebSocket instead of sending a text message that matches the Media Streams message format.\n\n### Possible solutions\n\n- Send Media Streams messages as text WebSocket messages. Do not use binary frames.\n- If you send audio to Twilio on a bidirectional Stream, send a `media` message with a `media.payload` value instead of sending raw binary audio.\n- Encode audio in `media.payload` as base64 `audio/x-mulaw` audio at 8000 Hz.\n- Review the supported WebSocket message formats for `media`, `mark`, and `clear` messages.\n\n#### Additional resources\n\n- [Media Streams WebSocket messages](/docs/voice/media-streams/websocket-messages)\n- [Media Streams overview](/docs/voice/media-streams)\n- [TwiML Voice: `<Stream>`](/docs/voice/twiml/stream)\n",
    "causes": "* Your WebSocket server sent a message in binary format.\n* Your application sent raw audio bytes directly over the WebSocket instead of sending a text message that matches the Media Streams message format.",
    "solutions": "* Send Media Streams messages as text WebSocket messages. Do not use binary frames.\n* If you send audio to Twilio on a bidirectional Stream, send a `media` message with a `media.payload` value instead of sending raw binary audio.\n* Encode audio in `media.payload` as base64 `audio/x-mulaw` audio at 8000 Hz.\n* Review the supported WebSocket message formats for `media`, `mark`, and `clear` messages.",
    "description": "Twilio couldn't decode a message sent on the Media Streams WebSocket connection. Twilio sends this warning once per Stream.",
    "date_created": "2020-05-08T11:47:24Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31951,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Stream - Protocol - Invalid Message",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio sends warning 31951 once per Stream when your WebSocket server sends a message that does not comply with the Media Streams protocol. For bidirectional Streams, Twilio only accepts the documented `media`, `mark`, and `clear` message types, and each message must include the expected fields for that event.\n\n### Possible causes\n\n- The message was not valid JSON.\n- The message used an unsupported event type. Twilio only accepts `media`, `mark`, and `clear` messages from your server on a bidirectional Stream.\n- The message was missing required fields, included unexpected fields, or used the wrong object structure for the selected event.\n- The `streamSid` in the message did not match the active Stream.\n\n### Possible solutions\n\n- Serialize each outbound message as valid JSON before you send it over the WebSocket connection.\n- If you need to send messages back to Twilio, use `<Connect><Stream>` and send only the supported `media`, `mark`, and `clear` events.\n- Validate each message against the documented schema before sending it. Include `event`, `streamSid`, and the correct event payload object for that message type.\n- Use the `streamSid` from Twilio's `start` message for the current Stream, and do not reuse a SID from another call or stream.\n\n#### Additional resources\n\n- [Media Streams overview](/docs/voice/media-streams)\n- [Media Streams WebSocket messages](/docs/voice/media-streams/websocket-messages)\n- [TwiML `<Stream>`](/docs/voice/twiml/stream)\n",
    "causes": "* The message was not valid JSON.\n* The message used an unsupported event type. Twilio only accepts `media`, `mark`, and `clear` messages from your server on a bidirectional Stream.\n* The message was missing required fields, included unexpected fields, or used the wrong object structure for the selected event.\n* The `streamSid` in the message did not match the active Stream.",
    "solutions": "* Serialize each outbound message as valid JSON before you send it over the WebSocket connection.\n* If you need to send messages back to Twilio, use `<Connect><Stream>` and send only the supported `media`, `mark`, and `clear` events.\n* Validate each message against the documented schema before sending it. Include `event`, `streamSid`, and the correct event payload object for that message type.\n* Use the `streamSid` from Twilio's `start` message for the current Stream, and do not reuse a SID from another call or stream.",
    "description": "Twilio sends warning 31951 once per Stream when your WebSocket server sends a message that does not comply with the Media Streams protocol. For bidirectional Streams, Twilio only accepts the documented `media`, `mark`, and `clear` message types, and each message must include the expected fields for that event.",
    "date_created": "2020-05-08T11:48:02Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31952,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream Extension not found: ",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio couldn't find the Stream Extension referenced by your Voice stream. Stream Connectors are Add-ons for Media Streams, and an Extension describes the specific feature or API endpoint where an Add-on Listing can be used.\n\n### Possible causes\n\n- You used a Stream Extension name that is invalid or not available for the request. Twilio's error guidance calls out using a valid Stream Extension.\n- The extension is not enabled for the installed Add-on. Twilio disables Extensions by default and lets you enable them on the Installed Add-ons Extensions subresource.\n- The extension is not available in the current realm. Twilio's error guidance says to try the Stream Extension in another realm.\n\n### Possible solutions\n\n- Use a valid Stream Extension name for the request.\n- Try the Stream Extension in another realm if the extension exists there.\n- Confirm the Add-on is installed and the Extension is enabled in Marketplace before you start the stream.\n\n#### Additional resources\n\n- [Marketplace listings](/docs/marketplace/listings)\n- [Installed Add-ons Extensions Subresource](/docs/marketplace/api/installed-add-ons-extensions)\n",
    "causes": "* You used a Stream Extension name that is invalid or not available for the request. Twilio's error guidance calls out using a valid Stream Extension.\n* The extension is not enabled for the installed Add-on. Twilio disables Extensions by default and lets you enable them on the Installed Add-ons Extensions subresource.\n* The extension is not available in the current realm. Twilio's error guidance says to try the Stream Extension in another realm.",
    "solutions": "* Use a valid Stream Extension name for the request.\n* Try the Stream Extension in another realm if the extension exists there.\n* Confirm the Add-on is installed and the Extension is enabled in Marketplace before you start the stream.",
    "description": "Twilio couldn't find the Stream Extension referenced by your Voice stream. Stream Connectors are Add-ons for Media Streams, and an Extension describes the specific feature or API endpoint where an Add-on Listing can be used.",
    "date_created": "2020-08-31T17:10:44Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 31953,
    "log_level": "WARNING",
    "log_type": "CARRIER",
    "message": "Stream - Media - RTP timeout",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning occurs when Twilio detects an RTP timeout on a Media Stream. This means the inbound stream stopped flowing to Twilio.\n\n### Possible causes\n\n- The call finished and the inbound media stream stopped.\n- The carrier stopped sending audio to Twilio.\n\n### Possible solutions\n\n- Confirm whether the call had already ended when the warning was logged.\n- Review your Media Streams events and call logs to verify when the Stream stopped.\n- If the call should still have been active, work with your carrier to confirm it continued sending RTP audio to Twilio.\n- If the timeout is unexpected and continues to occur, contact Twilio Support.\n\n#### Additional resources\n\n- [Media Streams Overview](/docs/voice/media-streams)\n- [Media Streams WebSocket Messages](/docs/voice/media-streams/websocket-messages)\n- [Troubleshooting Alerts, Debug Events, and Errors on Twilio Voice Calls](https://help.twilio.com/articles/360021755854)\n",
    "causes": "* The call finished and the inbound media stream stopped.\n* The carrier stopped sending audio to Twilio.",
    "solutions": "* Confirm whether the call had already ended when the warning was logged.\n* Review your Media Streams events and call logs to verify when the Stream stopped.\n* If the call should still have been active, work with your carrier to confirm it continued sending RTP audio to Twilio.\n* If the timeout is unexpected and continues to occur, contact Twilio Support.",
    "description": "This warning occurs when Twilio detects an RTP timeout on a Media Stream. This means the inbound stream stopped flowing to Twilio.",
    "date_created": "2023-06-28T12:56:21Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 31954,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream Extension: Unsupported status",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio received a request for a Stream Extension session with an unsupported status value. Stream Extensions support a specific set of status values to control the lifecycle of an extension session.\n\n### Possible causes\n\n- You provided a status value that is not supported for the Stream Extension.\n- The status value sent in the request does not match any known action for the extension session.\n\n### Possible solutions\n\n- Use one of the supported status values when updating an extension session.\n- Check the documentation for the specific Stream Extension to confirm the supported status values.\n\n#### Additional resources\n\n- [Marketplace listings](/docs/marketplace/listings)\n- [Installed Add-ons Extensions Subresource](/docs/marketplace/api/installed-add-ons-extensions)\n",
    "causes": "* You provided a status value that is not supported for the Stream Extension.\n* The status value sent in the request does not match any known action for the extension session.",
    "solutions": "* Use one of the supported status values when updating an extension session.\n* Check the documentation for the specific Stream Extension to confirm the supported status values.",
    "description": "Twilio received a request for a Stream Extension session with an unsupported status value. Stream Extensions support a specific set of status values to control the lifecycle of an extension session.",
    "date_created": "2026-04-08T10:33:56-07:00",
    "last_updated": "2026-04-08T10:33:56-07:00"
  },
  {
    "code": 31955,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream Extension: Unsupported operation",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio received a request for an operation that the Stream Extension does not support. Not all Stream Extensions support all operations, such as the start/stop API.\n\n### Possible causes\n\n- You attempted to start or stop a Stream Extension using the start/stop API, but the extension is not configured to support this operation.\n- The extension you are targeting does not support invocation via the start/stop API.\n\n### Possible solutions\n\n- Confirm that the Stream Extension you are using supports the operation you are attempting.\n- Review the Add-on documentation to verify which operations are supported for the extension.\n- Use the TwiML-based approach if the start/stop API is not supported for this extension.\n\n#### Additional resources\n\n- [Marketplace listings](/docs/marketplace/listings)\n- [Installed Add-ons Extensions Subresource](/docs/marketplace/api/installed-add-ons-extensions)\n",
    "causes": "* You attempted to start or stop a Stream Extension using the start/stop API, but the extension is not configured to support this operation.\n* The extension you are targeting does not support invocation via the start/stop API.",
    "solutions": "* Confirm that the Stream Extension you are using supports the operation you are attempting.\n* Review the Add-on documentation to verify which operations are supported for the extension.\n* Use the TwiML-based approach if the start/stop API is not supported for this extension.",
    "description": "Twilio received a request for an operation that the Stream Extension does not support. Not all Stream Extensions support all operations, such as the start/stop API.",
    "date_created": "2026-04-08T10:33:56-07:00",
    "last_updated": "2026-04-08T10:33:56-07:00"
  },
  {
    "code": 31960,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stream - Quota exceeded",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error means the Dialogflow API quota for the Google Cloud project connected to your Twilio Virtual Agent integration has been exceeded. Twilio Media Streams carries the call audio to Dialogflow, and Dialogflow CX processes the conversation and returns responses.\n\n### Possible causes\n\n- The Google Cloud project linked to your Dialogflow CX connector has reached its Dialogflow API quota.\n\n### Possible solutions\n\n- Increase the Dialogflow API quotas for the Google Cloud project used with Twilio Virtual Agent.\n- Confirm that your Twilio integration is connected to the correct Dialogflow CX project and connector.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [Connect Twilio with your Dialogflow Agent](/docs/voice/twiml/stream/connect-to-dialogflow)\n- [Dialogflow CX Onboarding Guide](/docs/voice/virtual-agent/dialogflow-cx-onboarding)\n",
    "causes": "* The Google Cloud project linked to your Dialogflow CX connector has reached its Dialogflow API quota.",
    "solutions": "* Increase the Dialogflow API quotas for the Google Cloud project used with Twilio Virtual Agent.\n* Confirm that your Twilio integration is connected to the correct Dialogflow CX project and connector.",
    "description": "This error means the Dialogflow API quota for the Google Cloud project connected to your Twilio Virtual Agent integration has been exceeded. Twilio Media Streams carries the call audio to Dialogflow, and Dialogflow CX processes the conversation and returns responses.",
    "date_created": "2020-09-08T08:14:00Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 32001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "SIP: Trunk CPS limit exceeded",
    "secondary_message": "Calls Per Second placed against a SIP trunk exceeded its set limit.",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Calls Per Second placed against a SIP trunk exceeded its set limit.\n\n### Possible solutions\n\n- You've exceeded the number of calls per second you are authorized to make on this SIP Trunk. Visit [Elastic SIP Trunks](/user/account/sip-trunking/trunks) and within a specific Trunk, under the `Termination` tab you may see your CPS limits.\n",
    "causes": "* Calls Per Second placed against a SIP trunk exceeded its set limit.",
    "solutions": "* You've exceeded the number of calls per second you are authorized to make on this SIP Trunk. Visit [Elastic SIP Trunks](/user/account/sip-trunking/trunks) and within a specific Trunk, under the `Termination` tab you may see your CPS limits.",
    "description": "",
    "date_created": "2016-03-31T17:14:36Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32002,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Dial failure - Twilio SIP Domain not found",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- There is a typo in the name of the SIP Domain.\n- When a SIP Domain is created you must press SAVE on Console.\n\n### Possible solutions\n\n- Verify the existence and name of the SIP Domain that you created.\n",
    "causes": "* There is a typo in the name of the SIP Domain.\n* When a SIP Domain is created you must press SAVE on Console.",
    "solutions": "* Verify the existence and name of the SIP Domain that you created.",
    "description": "",
    "date_created": "2016-10-28T21:16:58Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice calling has been disabled for this account",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nVoice calling has been disabled for this account.\n\n### Possible causes\n\nVoice Calling has been disabled by Twilio.\n\nPotential causes may be:\n\n- Your account requires an approved Primary Customer Profile\n- Your account has been flagged for review due to suspicious activity\n\n### Possible solutions\n\n- Please create a Primary Customer Profile to enable Voice calling through [Trust Hub](https://console.twilio.com/us1/account/trust-hub/customer-profiles).\n- If you received an email regarding your account being compromised, please also follow the instructions in the email.\n",
    "causes": "Voice Calling has been disabled by Twilio. Potential causes may be: - Your account requires an approved Primary Customer Profile\n- Your account has been flagged for review due to suspicious activity",
    "solutions": "* Please create a Primary Customer Profile to enable Voice calling through [Trust Hub](https://console.twilio.com/us1/account/trust-hub/customer-profiles).\n* If you received an email regarding your account being compromised, please also follow the instructions in the email.",
    "description": "Voice calling has been disabled for this account.",
    "date_created": "2023-09-05T16:44:00Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32006,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Too many hops",
    "secondary_message": "The request was rejected because its 'Max-Forward' header had reached zero. Ensure your infrastructure will send a minimum value of 20 for 'Max-Forward' to ensure your call is processed successfully.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The request was rejected because its `Max-Forward` header had reached zero.\n\n### Possible solutions\n\n- Ensure your infrastructure will send a minimum value of 20 for `Max-Forward` to ensure your call is processed successfully.\n",
    "causes": "* The request was rejected because its `Max-Forward` header had reached zero.",
    "solutions": "* Ensure your infrastructure will send a minimum value of 20 for `Max-Forward` to ensure your call is processed successfully.",
    "description": "",
    "date_created": "2016-03-31T17:14:36Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32007,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "SIP: Too many endpoints/bindings for the Address-of-record (AOR)",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe AOR refers to: username@yoursipdomain.com\n\nThere is a limit on the number of SIP Endpoints/bindings per AOR\n\n### Possible causes\n\nThere is a limit of 10 bindings (SIP Endpoints) per AOR.\n\n### Possible solutions\n\nReduce the number of SIP Endpoints\n",
    "causes": "There is a limit of 10 bindings (SIP Endpoints) per AOR.",
    "solutions": "Reduce the number of SIP Endpoints",
    "description": "The AOR refers to: username@yoursipdomain.com There is a limit on the number of SIP Endpoints/bindings per AOR",
    "date_created": "2016-11-15T19:54:16Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32008,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Registration per second limit reached",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nRegistration per second limit reached\n\n**Cause**\n\nYou are allowed: 5 REGISTER requests / second / AOR\n\n**Solution**\n\nReduce the frequency (Increase interval) of REGISTRATIONS by your SIP Endpoints.\n",
    "causes": null,
    "solutions": null,
    "description": "Registration per second limit reached **Cause** You are allowed: 5 REGISTER requests / second / AOR **Solution** Reduce the frequency (Increase interval) of REGISTRATIONS by your SIP Endpoints.",
    "date_created": "2016-11-09T23:00:49Z",
    "last_updated": "2020-08-04T10:00:20.506Z"
  },
  {
    "code": 32009,
    "log_level": "WARNING",
    "log_type": null,
    "message": "The user you tried to dial is not registered with the corresponding SIP Domain",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThere was a failure attempting to Dial the specified SIP Endpoint. The User specified is not registered.\n\n### Possible causes\n\nYou tried to Dial a SIP Endpoint that is not currently registered with the corresponding SIP Domain. Please check your TwiML or REST API.\n\n### Possible solutions\n\n- If you are using TwiML Please check that there isn't a typo in \\<Dial>\\<Sip>**username**@yoursipdomain.sip.us1.twilio.com\\</Sip>\\</Dial> and compare against your SIP Endpoint configuration. Make sure the **username** matches a username in the Credential List used to authenticate the SIP Endpoint with the SIP Domain.\n- If you are using the REST API Please check the **To** field and verify there isn't a typo. Make sure the **username** matches a username in the Credential List used to authenticate the SIP Endpoint with the SIP Domain.\n\n### Troubleshooting\n\n- Prior to dialing, you can verify that your SIP Endpoint has successfully registered in the Console \"Registered SIP Endpoints\" tab found on the SIP Domains page.\n",
    "causes": "You tried to Dial a SIP Endpoint that is not currently registered with the corresponding SIP Domain. Please check your TwiML or REST API.",
    "solutions": "* If you are using TwiML Please check that there isn't a typo in \\<Dial>\\<Sip>**username**@yoursipdomain.sip.us1.twilio.com\\</Sip>\\</Dial> and compare against your SIP Endpoint configuration. Make sure the **username** matches a username in the Credential List used to authenticate the SIP Endpoint with the SIP Domain.\n* If you are using the REST API Please check the **To** field and verify there isn't a typo. Make sure the **username** matches a username in the Credential List used to authenticate the SIP Endpoint with the SIP Domain.",
    "description": "There was a failure attempting to Dial the specified SIP Endpoint. The User specified is not registered.",
    "date_created": "2016-10-28T19:54:55Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP: No valid Origination URIs configured",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nYour call can't be completed because no valid/active origination URLs could be found for your Elastic SIP Trunk or BYOC Trunk.\n\n### Possible causes\n\nYour Elastic SIP Trunk or BYOC Trunk does not have any valid active origination URLs\n\n### Possible solutions\n\nPlease verify your Origination settings of your [Elastic SIP Trunk](/docs/sip-trunking#origination) or [BYOC Trunk](/docs/voice/bring-your-own-carrier-byoc#origination-connection-policy-settings).\n",
    "causes": "Your Elastic SIP Trunk or BYOC Trunk does not have any valid active origination URLs",
    "solutions": "Please verify your Origination settings of your [Elastic SIP Trunk](/docs/sip-trunking#origination) or [BYOC Trunk](/docs/voice/bring-your-own-carrier-byoc#origination-connection-policy-settings).",
    "description": "Your call can't be completed because no valid/active origination URLs could be found for your Elastic SIP Trunk or BYOC Trunk.",
    "date_created": "2016-11-16T21:56:25Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32011,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Error communicating with your SIP communications infrastructure",
    "secondary_message": "Twilio received a SIP error while communicating with your communications infrastructure specified in either your Trunking Origination URI(s), or Dial SIP URI.",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nThere was a problem communicating with a specific endpoint of your SIP communications infrastructure. This means there was either a lack of timely response, an error response or an invalid response from your SIP endpoint. This may result in increased call setup times or even failed call depending on the failover configuration for your Elastic SIP Trunk or SIP application. Twilio will make multiple attempts to deliver calls to your endpoint and each failed attempt will have its own notification. The notification will have details about the specific error response and the SIP URI that causes the failure.\n\n### Possible causes\n\n- Your SIP endpoint is not reachable due to network connectivity issue between Twilio and your system\n- Your SIP endpoint is not responding (service down or maintenance)\n- There is a firewall in your network that is blocking SIP traffic from Twilio\n- Your SIP endpoint is sending an error response, such as SIP 500 response.\n- The SIP URI specified in your Trunking Origination URI, `<Dial>` `<SIP>` TwiML or REST API call is invalid\n- Your SIP endpoint does not support TLSv1.2\n\n### Possible solutions\n\n- Ensure the SIP URI used in the request is correctly configured.\n- For details on how to configure your Origination URIs for SIP trunking, please see [Origination settings](/docs/sip-trunking#origination).\n- For SIP interfaces verify that your SIP URI in your `<Dial>` `<SIP>` TwiML or REST API call, see [Receiving SIP from Twilio](/docs/voice/api/receiving-sip).\n- Ensure you've allowed Twilio's IP address ranges and ports on your firewall for SIP signalling and RTP media traffic, see [IP addresses - Trunking](/docs/sip-trunking#ip-addresses) or [IP addresses - SIP Interface](/docs/voice/api/sip-interface#ip-addresses)\n- Ensure that your SIP servers are running properly and is properly processing calls from Twilio.\n- Ensure that your SIP servers support TLSv1.2, or configure your account to allow TLSv1.0+\n",
    "causes": "* Your SIP endpoint is not reachable due to network connectivity issue between Twilio and your system\n* Your SIP endpoint is not responding (service down or maintenance)\n* There is a firewall in your network that is blocking SIP traffic from Twilio\n* Your SIP endpoint is sending an error response, such as SIP 500 response.\n* The SIP URI specified in your Trunking Origination URI, `<Dial>` `<SIP>` TwiML or REST API call is invalid\n* Your SIP endpoint does not support TLSv1.2",
    "solutions": "* Ensure the SIP URI used in the request is correctly configured.\n* For details on how to configure your Origination URIs for SIP trunking, please see [Origination settings](/docs/sip-trunking#origination).\n* For SIP interfaces verify that your SIP URI in your `<Dial>` `<SIP>` TwiML or REST API call, see [Receiving SIP from Twilio](/docs/voice/api/receiving-sip).\n* Ensure you've allowed Twilio's IP address ranges and ports on your firewall for SIP signalling and RTP media traffic, see [IP addresses - Trunking](/docs/sip-trunking#ip-addresses) or [IP addresses - SIP Interface](/docs/voice/api/sip-interface#ip-addresses)\n* Ensure that your SIP servers are running properly and is properly processing calls from Twilio.\n* Ensure that your SIP servers support TLSv1.2, or configure your account to allow TLSv1.0+",
    "description": "There was a problem communicating with a specific endpoint of your SIP communications infrastructure. This means there was either a lack of timely response, an error response or an invalid response from your SIP endpoint. This may result in increased call setup times or even failed call depending on the failover configuration for your Elastic SIP Trunk or SIP application. Twilio will make multiple attempts to deliver calls to your endpoint and each failed attempt will have its own notification. The notification will have details about the specific error response and the SIP URI that causes the failure.",
    "date_created": "2017-05-11T18:55:36Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32012,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "SIP: Parent account pooled Trunking CPS limit exceeded",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Calls Per Second placed on a SIP trunk exceeded the Parent Account pool limit.\n\n### Possible solutions\n\n- You've exceeded the number of calls per second you are authorized to make on your Parent Account.\n",
    "causes": "* Calls Per Second placed on a SIP trunk exceeded the Parent Account pool limit.",
    "solutions": "* You've exceeded the number of calls per second you are authorized to make on your Parent Account.",
    "description": "",
    "date_created": "2017-05-23T20:53:16Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32013,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP: Parent account SIP Interface CPS limit exceeded",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Calls Per Second placed on a SIP domain exceeded the Parent Account limits.\n\n### Possible solutions\n\n- You've exceeded the number of calls per second you are authorized to make on your Parent Account for SIP Interface.\n- Increase the CPS on the Parent Account.\n",
    "causes": "* Calls Per Second placed on a SIP domain exceeded the Parent Account limits.",
    "solutions": "* You've exceeded the number of calls per second you are authorized to make on your Parent Account for SIP Interface.\n* Increase the CPS on the Parent Account.",
    "description": "",
    "date_created": "2017-05-23T20:56:57Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32014,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Call is terminated because of no audio received",
    "secondary_message": "RTP-Timeout",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- One party doesn't send audio for an extended period of time and call is terminated.\n\n### Possible solutions\n\n- It could be the case when one party is disconnected without hanging up due to network failure. Try to call again later.\n- If this keeps happening, please contact Twilio support to enable voice trace. With voice trace enabled, Twilio can know which side stops sending audio to track down the root cause.\n",
    "causes": "* One party doesn't send audio for an extended period of time and call is terminated.",
    "solutions": "* It could be the case when one party is disconnected without hanging up due to network failure. Try to call again later.\n* If this keeps happening, please contact Twilio support to enable voice trace. With voice trace enabled, Twilio can know which side stops sending audio to track down the root cause.",
    "description": "",
    "date_created": "2017-08-24T16:39:49Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32015,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Call is terminated due to exceeding maximum call duration",
    "secondary_message": "Session-Timeout",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nCall is terminated due to exceeding maximum call duration\n\n### Possible causes\n\nMaximum call duration as been exceeded.\n\n### Possible solutions\n\nPlease reduce call duration or adjust account configurable timeLimits.\n",
    "causes": "Maximum call duration as been exceeded.",
    "solutions": "Please reduce call duration or adjust account configurable timeLimits.",
    "description": "Call is terminated due to exceeding maximum call duration",
    "date_created": "2017-08-24T16:40:34Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32016,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "PSTN PDD timeout",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\nPSTN Post-Dial Delay timer (60s) expired due to lack of response from multiple Carriers in route.\n\n### Possible solutions\n\n- Check the dialed Number to ensure it is currently reachable.\n- If you believe the Number is currently reachable, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) and be sure to mention this Error code.\n",
    "causes": "PSTN Post-Dial Delay timer (60s) expired due to lack of response from multiple Carriers in route.",
    "solutions": "* Check the dialed Number to ensure it is currently reachable.\n* If you believe the Number is currently reachable, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) and be sure to mention this Error code.",
    "description": "",
    "date_created": "2018-02-02T22:23:50Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32017,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "PSTN: Carrier blocked call due to calling number (caller ID)",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nIntermediary / Carrier Analytics blocked call due to poor reputation score on the telephone number\n\n### Possible causes\n\n- The calling number has a low answer rate from end users\n- The calling number generates low duration calls\n- The calling number is responsible for large volumes of unwanted calls\n\n### Possible solutions\n\nRegister the telephone numbers with the analytic providers. To reach the major mobile carrier's analytic providers, please register the telephone numbers at www.freecallerregistry.com . To reach T-Mobile's analytic provider directly to register numbers, please go to https://portal.firstorion.com to register numbers. Going direct to the analytic provider has a faster turnaround of being registered / call being delivered to end user\n",
    "causes": "* The calling number has a low answer rate from end users\n* The calling number generates low duration calls\n* The calling number is responsible for large volumes of unwanted calls",
    "solutions": "Register the telephone numbers with the analytic providers. To reach the major mobile carrier's analytic providers, please register the telephone numbers at www.freecallerregistry.com . To reach T-Mobile's analytic provider directly to register numbers, please go to https://portal.firstorion.com to register numbers. Going direct to the analytic provider has a faster turnaround of being registered / call being delivered to end user",
    "description": "Intermediary / Carrier Analytics blocked call due to poor reputation score on the telephone number",
    "date_created": "2019-08-14T23:43:57Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32018,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Twiml size exceeded maximum allowed value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwiml size exceeded maximum allowed value of 4000 characters\n\n### Possible causes\n\nTwiml size exceeded maximum allowed value of 4000 characters\n\n### Possible solutions\n\nReduce the size of the twiml embedded in the request\n",
    "causes": "Twiml size exceeded maximum allowed value of 4000 characters",
    "solutions": "Reduce the size of the twiml embedded in the request",
    "description": "Twiml size exceeded maximum allowed value of 4000 characters",
    "date_created": "2019-08-29T18:31:19Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32019,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Twiml and Voice URL are both set. Using Voice URL.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwiml and Voice URL are both set. Using Voice URL.\n\n### Possible causes\n\nBoth Voice URL and embedded twiml are provided in the request\n\n### Possible solutions\n\nUse only Voice URL or embedded twiml, not both, in the request\n",
    "causes": "Both Voice URL and embedded twiml are provided in the request",
    "solutions": "Use only Voice URL or embedded twiml, not both, in the request",
    "description": "Twiml and Voice URL are both set. Using Voice URL.",
    "date_created": "2019-08-29T18:32:59Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32020,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SHAKEN/STIR call verification failed due to invalid passport from customer",
    "secondary_message": null,
    "product": "Elastic SIP Trunking, Programmable Voice",
    "products_used": [
      "sip-trunking",
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio cannot verify incoming PASSporT from customer\n\n### Possible causes\n\nSee the error message for details\n\n### Possible solutions\n\nThe call is rejected. Reattempt the call with a new passport.\n",
    "causes": "See the error message for details",
    "solutions": "The call is rejected. Reattempt the call with a new passport.",
    "description": "Twilio cannot verify incoming PASSporT from customer",
    "date_created": "2023-05-26T16:35:49Z",
    "last_updated": "2026-08-20T18:05:02+05:30"
  },
  {
    "code": 32021,
    "log_level": "WARNING",
    "log_type": "CARRIER",
    "message": "SHAKEN/STIR call verification failed",
    "secondary_message": null,
    "product": "Elastic SIP Trunking, Programmable Voice",
    "products_used": [
      "sip-trunking",
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio cannot verify incoming SHAKEN PASSporT from carrier\n\n### Possible causes\n\nSee the error message for details\n\n### Possible solutions\n\nNo action required. Incoming call to your Twilio number can still be established without STIR(Secure Telephone Identity Revisited) status.\n",
    "causes": "See the error message for details",
    "solutions": "No action required. Incoming call to your Twilio number can still be established without STIR(Secure Telephone Identity Revisited) status.",
    "description": "Twilio cannot verify incoming SHAKEN PASSporT from carrier",
    "date_created": "2020-02-03T19:48:01Z",
    "last_updated": "2026-07-07T15:28:12+05:30"
  },
  {
    "code": 32022,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ACK not received from your SIP endpoint",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio sent a `200 OK` response for an inbound SIP call and did not receive an `ACK` from your SIP endpoint within 32 seconds. Twilio then terminated the call. SIP requires the calling endpoint to acknowledge a `200 OK` to complete call setup.\n\n### Possible causes\n\n- Your NAT configuration is preventing the `ACK` from reaching Twilio.\n- Your firewall is blocking SIP signaling traffic.\n- Your SIP endpoint is sending the `ACK` to the wrong IP address, or building the `ACK` with an incorrect `Request-URI` or `Route` headers.\n- Your SIP infrastructure is rewriting Twilio IP addresses in the `ACK` or related SIP headers, which prevents Twilio from processing the request.\n- Packet loss or another network disruption between your network and Twilio caused the `ACK` to be lost.\n\n### Possible solutions\n\n- Review your SIP endpoint configuration and confirm that it sends an `ACK` after Twilio returns `200 OK`.\n- Review your SIP endpoint logs to verify whether the `ACK` was generated, where it was sent, and whether any NAT or firewall handling changed the request.\n- Build the `ACK` using the IP address in the `Contact` header of Twilio's `200 OK` as the `Request-URI`. Send the request to the IP address in the `Record-Route` header from the same `200 OK`.\n- Do not replace Twilio IP addresses in the `ACK` URI or headers. Rewrite only your own addresses when your network requires NAT handling.\n- Make sure your SIP device is configured to use the maximum supported retransmissions for SIP signaling.\n- Review the call record in Console and download the SIP PCAP. If possible, capture a PCAP on your SIP endpoint and compare both traces to find where signaling diverges.\n\n#### Additional resources\n\n- [Use SIP with Twilio Voice](/docs/voice/api/sip-interface)\n- [Inbound - Sending SIP to Twilio](/docs/voice/api/sending-sip)\n- [Troubleshooting your Trunk](/docs/sip-trunking/troubleshooting)\n",
    "causes": "* Your NAT configuration is preventing the `ACK` from reaching Twilio.\n* Your firewall is blocking SIP signaling traffic.\n* Your SIP endpoint is sending the `ACK` to the wrong IP address, or building the `ACK` with an incorrect `Request-URI` or `Route` headers.\n* Your SIP infrastructure is rewriting Twilio IP addresses in the `ACK` or related SIP headers, which prevents Twilio from processing the request.\n* Packet loss or another network disruption between your network and Twilio caused the `ACK` to be lost.",
    "solutions": "* Review your SIP endpoint configuration and confirm that it sends an `ACK` after Twilio returns `200 OK`.\n* Review your SIP endpoint logs to verify whether the `ACK` was generated, where it was sent, and whether any NAT or firewall handling changed the request.\n* Build the `ACK` using the IP address in the `Contact` header of Twilio's `200 OK` as the `Request-URI`. Send the request to the IP address in the `Record-Route` header from the same `200 OK`.\n* Do not replace Twilio IP addresses in the `ACK` URI or headers. Rewrite only your own addresses when your network requires NAT handling.\n* Make sure your SIP device is configured to use the maximum supported retransmissions for SIP signaling.\n* Review the call record in Console and download the SIP PCAP. If possible, capture a PCAP on your SIP endpoint and compare both traces to find where signaling diverges.",
    "description": "Twilio sent a `200 OK` response for an inbound SIP call and did not receive an `ACK` from your SIP endpoint within 32 seconds. Twilio then terminated the call. SIP requires the calling endpoint to acknowledge a `200 OK` to complete call setup.",
    "date_created": "2022-04-20T16:40:11Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32100,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Trial accounts can only call verified caller IDs",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nYou must verify your caller ID on the Console or via the REST API. You must use a verified caller ID for both the from and to number while in Trial status.\n\n### Possible causes\n\nYou attempted to use an unverified caller ID for a SIP call while on a trial account.\n\n### Possible solutions\n\n- Verify your caller ID in the [Console](https://1console.twilio.com/us1/develop/phone-numbers/manage/verified). See [Verified recipients](/docs/usage/trials#verified-recipients) for trial verification details.\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove this restriction.\n",
    "causes": "You attempted to use an unverified caller ID for a SIP call while on a trial account.",
    "solutions": "* Verify your caller ID in the [Console](https://1console.twilio.com/us1/develop/phone-numbers/manage/verified). See [Verified recipients](/docs/usage/trials#verified-recipients) for trial verification details.\n* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove this restriction.",
    "description": "You must verify your caller ID on the Console or via the REST API. You must use a verified caller ID for both the from and to number while in Trial status.",
    "date_created": "2018-03-08T23:50:04Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 32101,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "SIP: Invalid phone number",
    "secondary_message": "The called number is not a valid E.164 number. Make sure that any phone number sent via SIP to Twilio is always E.164-formatted.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nSIP: Invalid phone number\n\n### Possible causes\n\nThe called number is not a valid [E.164](/docs/glossary/what-e164) number.\n\n### Possible solutions\n\nMake sure that any phone number sent via SIP to Twilio is always E.164-formatted.\n",
    "causes": "The called number is not a valid [E.164](/docs/glossary/what-e164) number.",
    "solutions": "Make sure that any phone number sent via SIP to Twilio is always E.164-formatted.",
    "description": "SIP: Invalid phone number",
    "date_created": "2016-03-31T17:14:36Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32102,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Bad SDP",
    "secondary_message": "The SDP is not correctly formatted.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The SDP is not correctly formatted.\n\n### Possible solutions\n\n- Please see [RFC 2327 - SDP: Session Description Protocol](https://www.ietf.org/rfc/rfc2327.txt).\n",
    "causes": "* The SDP is not correctly formatted.",
    "solutions": "* Please see [RFC 2327 - SDP: Session Description Protocol](https://www.ietf.org/rfc/rfc2327.txt).",
    "description": "",
    "date_created": "2016-03-31T17:14:37Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32103,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Empty body",
    "secondary_message": "The body of the request was empty, which is not allowed in this context.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when it receives a SIP request with an empty message body in a context where that request must include one. In Twilio SIP flows, endpoints send requests such as REGISTER and INVITE, and call setup can depend on SDP carried in the SIP message body.\n\n### Possible causes\n\n- Your SIP client, PBX, SBC, or application sent a SIP request with an empty body.\n- If this warning occurred during call setup, the INVITE may have been sent without an SDP offer for media negotiation.\n\n### Possible solutions\n\n- Update your SIP client or SIP infrastructure to send a non-empty body for the request type you are using. If this happens on an INVITE, include a valid SDP offer.\n- If you are sending SIP to a Twilio SIP Domain or registering an endpoint, verify that your endpoint is sending standard SIP requests with the information Twilio expects for that flow.\n- Review your SIP call logs and packet captures to confirm the body is present before Twilio receives the request.\n\n#### Additional resources\n\n- [Use SIP with Twilio Voice](/docs/voice/sip)\n- [Inbound - Sending SIP to Twilio](/docs/voice/api/sending-sip)\n- [Troubleshooting your Trunk](/docs/sip-trunking/troubleshooting)\n- [Troubleshooting Twilio Elastic SIP Trunking and SIP Domain Calls](https://help.twilio.com/articles/360025446533-Troubleshooting-Twilio-Elastic-SIP-Trunking-and-SIP-Domain-Calls)\n",
    "causes": "* Your SIP client, PBX, SBC, or application sent a SIP request with an empty body.\n* If this warning occurred during call setup, the INVITE may have been sent without an SDP offer for media negotiation.",
    "solutions": "* Update your SIP client or SIP infrastructure to send a non-empty body for the request type you are using. If this happens on an INVITE, include a valid SDP offer.\n* If you are sending SIP to a Twilio SIP Domain or registering an endpoint, verify that your endpoint is sending standard SIP requests with the information Twilio expects for that flow.\n* Review your SIP call logs and packet captures to confirm the body is present before Twilio receives the request.",
    "description": "Twilio returns this warning when it receives a SIP request with an empty message body in a context where that request must include one. In Twilio SIP flows, endpoints send requests such as REGISTER and INVITE, and call setup can depend on SDP carried in the SIP message body.",
    "date_created": "2016-03-31T17:14:37Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 32105,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Invalid contact header",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nPossible loop in Contact header\n\n### Possible causes\n\nYou're sending `127.0.0.1` or `localhost` in the Contact header which will create a loop at Twilio.\n\n### Possible solutions\n\nConfigure your SIP stack so it populates the Contact header properly.\n",
    "causes": "You're sending `127.0.0.1` or `localhost` in the Contact header which will create a loop at Twilio.",
    "solutions": "Configure your SIP stack so it populates the Contact header properly.",
    "description": "Possible loop in Contact header",
    "date_created": "2016-11-09T00:55:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "SIP: Authentication Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nSIP authentication fails when the SIP endpoint's Authorization name and username do not match. Use the same username in the SIP endpoint and in the Credential List mapped to the SIP Domain, and make sure the password or secret matches that credential.\n\n### Possible causes\n\n- The SIP endpoint's Authorization name and username do not match.\n- The username on the SIP endpoint does not exactly match a username in the Credential List mapped to the SIP Domain.\n\n### Possible solutions\n\n- Configure the SIP endpoint so the username and Authorization name match.\n- Confirm the password or secret matches the Credential List entry mapped to the SIP Domain.\n\n#### Additional resources\n\n- [Error and Warning Dictionary](/docs/api/errors)\n- [SIP Registration](/docs/voice/api/sip-registration)\n- [SIP Security Best Practices](/docs/voice/api/sip-security)\n",
    "causes": "* The SIP endpoint's Authorization name and username do not match.\n* The username on the SIP endpoint does not exactly match a username in the Credential List mapped to the SIP Domain.",
    "solutions": "* Configure the SIP endpoint so the username and Authorization name match.\n* Confirm the password or secret matches the Credential List entry mapped to the SIP Domain.",
    "description": "SIP authentication fails when the SIP endpoint's Authorization name and username do not match. Use the same username in the SIP endpoint and in the Credential List mapped to the SIP Domain, and make sure the password or secret matches that credential.",
    "date_created": "2016-11-09T22:37:37Z",
    "last_updated": "2026-03-20T20:33:25Z"
  },
  {
    "code": 32110,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "SIP: URI is formatted incorrectly",
    "secondary_message": "Your SIP URI cannot be parsed unambiguously.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio cannot understand parts of your SIP URI. This may be due to invalid characters appearing in the user, params, or headers portion. While Twilio may still attempt to complete your call, the parts of the URI that are invalid will be ignored.\n\nThe format for a valid SIP URI is defined in [RFC 3261](https://tools.ietf.org/html/rfc3261).\n\n### Possible causes\n\n- The user-portion of the URI contains invalid characters. The user-info portion allows alphanumeric characters, hyphens, underscores, and a small number of additional punctuation characters.\n- A URI header or parameter value contains punctuation or whitespace that is not escaped.\n\n### Possible solutions\n\n- If you specify SIP headers in your URI, ensure any non-alphanumeric characters in the header values are escaped. For example, to add a User-to-User header with value `0A1B2C3D;encoding=hex`, you must encode this into the URI as `User-to-User=0A1B2C3D%3Bencoding%3Dhex`.\n",
    "causes": "* The user-portion of the URI contains invalid characters. The user-info portion allows alphanumeric characters, hyphens, underscores, and a small number of additional punctuation characters.\n* A URI header or parameter value contains punctuation or whitespace that is not escaped.",
    "solutions": "* If you specify SIP headers in your URI, ensure any non-alphanumeric characters in the header values are escaped. For example, to add a User-to-User header with value `0A1B2C3D;encoding=hex`, you must encode this into the URI as `User-to-User=0A1B2C3D%3Bencoding%3Dhex`.",
    "description": "Twilio cannot understand parts of your SIP URI. This may be due to invalid characters appearing in the user, params, or headers portion. While Twilio may still attempt to complete your call, the parts of the URI that are invalid will be ignored. The format for a valid SIP URI is defined in [RFC 3261](https://tools.ietf.org/html/rfc3261).",
    "date_created": "2019-06-13T20:30:14Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32111,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "SIP: Invalid header name",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe header you asked Twilio to stamp was omitted because it contains illegal characters in its *name*. Including this header would have resulted in Twilio generating a message that runs contrary to the SIP specification.\n\nThe set of legal characters for a header name is defined in [RFC 3261](https://tools.ietf.org/html/rfc3261).\n\n### Possible causes\n\n- If you specified headers in a SIP URI, invalid characters were most likely introduced by an escaped character. Escaped characters in SIP URIs are defined by a percent sign (%) followed by two hexadecimal digits specifying a character code.\n\n### Possible solutions\n\n- Ensure that your SIP URI is formed correctly. Header names should generally only consist of alphanumeric characters and hyphens.\n",
    "causes": "* If you specified headers in a SIP URI, invalid characters were most likely introduced by an escaped character. Escaped characters in SIP URIs are defined by a percent sign (%) followed by two hexadecimal digits specifying a character code.",
    "solutions": "* Ensure that your SIP URI is formed correctly. Header names should generally only consist of alphanumeric characters and hyphens.",
    "description": "The header you asked Twilio to stamp was omitted because it contains illegal characters in its *name*. Including this header would have resulted in Twilio generating a message that runs contrary to the SIP specification. The set of legal characters for a header name is defined in [RFC 3261](https://tools.ietf.org/html/rfc3261).",
    "date_created": "2019-06-13T20:34:41Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32112,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "SIP: Invalid header value",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe header you asked Twilio to stamp was omitted because it contains illegal characters in its *value*. Including this header would have resulting in Twilio generating a message that runs contrary to the SIP specification.\n\n### Possible causes\n\n- If you specified headers in a SIP URI, invalid characters were most likely introduced by an escaped character. Escaped characters in SIP URIs are defined by a percent sign (%) followed by two hexadecimal digits specifying a character code.\n\n### Possible solutions\n\n- If you are generating SIP headers from user input, ensure your application properly accounts for non-alphanumeric characters such as punctuation and whitespace, as well as international characters.\n",
    "causes": "* If you specified headers in a SIP URI, invalid characters were most likely introduced by an escaped character. Escaped characters in SIP URIs are defined by a percent sign (%) followed by two hexadecimal digits specifying a character code.",
    "solutions": "* If you are generating SIP headers from user input, ensure your application properly accounts for non-alphanumeric characters such as punctuation and whitespace, as well as international characters.",
    "description": "The header you asked Twilio to stamp was omitted because it contains illegal characters in its *value*. Including this header would have resulting in Twilio generating a message that runs contrary to the SIP specification.",
    "date_created": "2019-06-13T20:37:16Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32113,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "SIP: Header name is not allowed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SIP header you asked Twilio to stamp was omitted because it is not supported on the Twilio platform.\n\nTwilio supports extension headers beginning with an X- prefix. Your extension header name cannot begin with the prefix `X-Twilio`.\n\n### Possible causes\n\n- SIP header name not supported on the Twilio platform.\n\n### Possible solutions\n\n- If your application can use a different header name, use an X- prefixed header name, e.g. if you want to use the name `Customer-Info`, see if your application can be configured to use `X-Customer-Info` instead.\n",
    "causes": "* SIP header name not supported on the Twilio platform.",
    "solutions": "* If your application can use a different header name, use an X- prefixed header name, e.g. if you want to use the name `Customer-Info`, see if your application can be configured to use `X-Customer-Info` instead.",
    "description": "The SIP header you asked Twilio to stamp was omitted because it is not supported on the Twilio platform. Twilio supports extension headers beginning with an X- prefix. Your extension header name cannot begin with the prefix `X-Twilio`.",
    "date_created": "2019-06-13T20:42:47Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32114,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "SIP: Unsupported parameter value",
    "secondary_message": "A URI parameter contains an unsupported value and will be ignored",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio parses certain standard URI parameters, such as the \"transport\" parameter, as well as Twilio-specific parameters such as \"secure\".\n\n### Possible causes\n\n- If using the \"secure\" parameter, allowed values are \"true\" and \"false\". Any other value will be treated as \"false\" and trigger this warning.\n\n### Possible solutions\n\n- Check the other details of the debugger alert. The alert may indicate which parameter contains the unsupported value.\n- Update your application/configuration to ensure a URI with appropriate parameters is sent.\n",
    "causes": "* If using the \"secure\" parameter, allowed values are \"true\" and \"false\". Any other value will be treated as \"false\" and trigger this warning.",
    "solutions": "* Check the other details of the debugger alert. The alert may indicate which parameter contains the unsupported value.\n* Update your application/configuration to ensure a URI with appropriate parameters is sent.",
    "description": "Twilio parses certain standard URI parameters, such as the \"transport\" parameter, as well as Twilio-specific parameters such as \"secure\".",
    "date_created": "2020-01-15T18:56:07Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32115,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "X-Branded-CallReason header contains an invalid value.",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `X-Branded-CallReason` SIP header includes a value that Twilio cannot accept. For this error, the documented cause is a call reason that exceeds the 50 character limit for the header value. Branded Calling call reasons must also accurately describe the reason for the call and follow Twilio's content restrictions.\n\n### Possible causes\n\n- The value in `X-Branded-CallReason` is longer than 50 characters.\n- The call reason does not clearly describe why you are calling.\n- The call reason includes content that Branded Calling does not allow, such as non-ASCII or control characters, hyperlinks, misleading content, emojis, non-Latin characters, or personal information.\n\n### Possible solutions\n\n- Shorten the `X-Branded-CallReason` value so it stays within 50 characters before you send the SIP request.\n- Use plain language that accurately describes the purpose of the call.\n- Remove unsupported content from the call reason, including links, emojis, special or non-ASCII characters, and any personal information.\n- If you are using Branded Calling, review your configured call reason against the current Branded Calling restrictions, then resend the call with a corrected header value.\n\n#### Additional resources\n\n- [Elastic SIP Trunking](/docs/sip-trunking)\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced)\n- [Branded Calls FAQ](https://help.twilio.com/articles/22312096414363-Branded-Calls-FAQ)\n",
    "causes": "* The value in `X-Branded-CallReason` is longer than 50 characters.\n* The call reason does not clearly describe why you are calling.\n* The call reason includes content that Branded Calling does not allow, such as non-ASCII or control characters, hyperlinks, misleading content, emojis, non-Latin characters, or personal information.",
    "solutions": "* Shorten the `X-Branded-CallReason` value so it stays within 50 characters before you send the SIP request.\n* Use plain language that accurately describes the purpose of the call.\n* Remove unsupported content from the call reason, including links, emojis, special or non-ASCII characters, and any personal information.\n* If you are using Branded Calling, review your configured call reason against the current Branded Calling restrictions, then resend the call with a corrected header value.",
    "description": "Twilio returns this error when the `X-Branded-CallReason` SIP header includes a value that Twilio cannot accept. For this error, the documented cause is a call reason that exceeds the 50 character limit for the header value. Branded Calling call reasons must also accurately describe the reason for the call and follow Twilio's content restrictions.",
    "date_created": "2020-03-17T18:58:30Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 32200,
    "log_level": "ERROR",
    "log_type": null,
    "message": "SIP: Insufficient permissions",
    "secondary_message": "Request failed due to insufficient permissions.",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request failed due to insufficient permissions.\n\n### Possible solutions\n\n- Please check that your account is active. Ensure that you have [Authentication details](/docs/sip-trunking#authentication) configured on your Trunk.\n",
    "causes": "* Request failed due to insufficient permissions.",
    "solutions": "* Please check that your account is active. Ensure that you have [Authentication details](/docs/sip-trunking#authentication) configured on your Trunk.",
    "description": "",
    "date_created": "2016-03-31T17:14:37Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP: Source IP address not in ACL",
    "secondary_message": "Authorization failure - source IP Address not in ACL. Either fix local routing so that you are sending us SIP from an address already in your ACL or add this other address to your [ACL](/user/account/sip-trunking/authentication/ip-acls).",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Authorization failure - source IP Address not in ACL (Access Control List).\n\n### Possible solutions\n\n- There is an ACL on your trunk and you are sending us INVITE requests from an IP address not on that ACL. Either fix local routing so that you are sending us SIP from an address already in your ACL or add this other address to your ACL.\n",
    "causes": "* Authorization failure - source IP Address not in ACL (Access Control List).",
    "solutions": "* There is an ACL on your trunk and you are sending us INVITE requests from an IP address not on that ACL. Either fix local routing so that you are sending us SIP from an address already in your ACL or add this other address to your ACL.",
    "description": "",
    "date_created": "2016-03-31T17:14:37Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32202,
    "log_level": "ERROR",
    "log_type": null,
    "message": "SIP: Bad user credentials",
    "secondary_message": "Bad user credentials. Confirm that your username/password matches one in your [Credentials List](/user/account/sip-trunking/authentication/cls).",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- There is a Credentials List on your trunk, and your INVITE's Authentication Digest is incorrect due to wrong username/password\n\n### Possible solutions\n\n- Confirm that your username/password matches one in your Credentials List.\n",
    "causes": "* There is a Credentials List on your trunk, and your INVITE's Authentication Digest is incorrect due to wrong username/password",
    "solutions": "* Confirm that your username/password matches one in your Credentials List.",
    "description": "",
    "date_created": "2016-03-31T17:14:38Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32203,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SIP: Call blocked by Twilio",
    "secondary_message": null,
    "product": "Elastic SIP Trunking, Trust-Hub, Programmable Voice",
    "products_used": [
      "sip-trunking",
      "trust-hub",
      "voice"
    ],
    "docs": "\n\n## Description\n\nTwilio blocked this outbound Elastic SIP Trunking call before it reached the destination. This error occurs when Twilio identifies the destination as high risk for fraud, cannot complete the call for regulatory reasons, or requires a valid Primary Customer Profile for calls to a +1 destination.\n\n### Possible causes\n\n- Twilio identified the destination as high risk for fraud.\n- Regulatory restrictions prevent the destination from being reached.\n- You are calling a +1 destination and your account does not have a valid Primary Customer Profile.\n- You are calling a +1 destination from an account that only has an Individual Customer Profile approved after October 2025. That profile type does not satisfy the Primary Customer Profile requirement for +1 calling.\n\n### Possible solutions\n\n- Review the destination and your call use case. If you believe the destination was blocked incorrectly and you have a legitimate need to call it, contact Support through the Console or the Help Center.\n- If you are calling a +1 destination, verify that your main account has a Primary Customer Profile in Trust Hub.\n- If your account only has an Individual Customer Profile approved after October 2025, create a Business/Organization Primary Customer Profile and submit it for review.\n- If your Primary Customer Profile was rejected, correct the rejection reasons shown in the Console and resubmit it.\n- Retry the call only after the profile reaches `Twilio Approved` status.\n\n#### Additional resources\n\n- [Troubleshooting your Trunk](/docs/sip-trunking/troubleshooting)\n- [Customer Profiles](/docs/trust-hub/trusthub-rest-api/customer-profiles)\n- [Calls blocked by Twilio due to Primary Customer Profile requirements](https://help.twilio.com/articles/42720101060379)\n",
    "causes": "* Twilio identified the destination as high risk for fraud.\n* Regulatory restrictions prevent the destination from being reached.\n* You are calling a +1 destination and your account does not have a valid Primary Customer Profile.\n* You are calling a +1 destination from an account that only has an Individual Customer Profile approved after October 2025. That profile type does not satisfy the Primary Customer Profile requirement for +1 calling.",
    "solutions": "* Review the destination and your call use case. If you believe the destination was blocked incorrectly and you have a legitimate need to call it, contact Support through the Console or the Help Center.\n* If you are calling a +1 destination, verify that your main account has a Primary Customer Profile in Trust Hub.\n* If your account only has an Individual Customer Profile approved after October 2025, create a Business/Organization Primary Customer Profile and submit it for review.\n* If your Primary Customer Profile was rejected, correct the rejection reasons shown in the Console and resubmit it.\n* Retry the call only after the profile reaches `Twilio Approved` status.",
    "description": "Twilio blocked this outbound Elastic SIP Trunking call before it reached the destination. This error occurs when Twilio identifies the destination as high risk for fraud, cannot complete the call for regulatory reasons, or requires a valid Primary Customer Profile for calls to a +1 destination.",
    "date_created": "2016-03-31T17:14:38Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 32204,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP: 'From' phone number not verified",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call, but the From number you specified is not a verified Outgoing Caller ID for your account. In order to use a phone number as the Caller ID on outgoing calls, you must first validate your ownership of that phone number.\n\n### Possible causes\n\nThe `From` number used to make outbound call not a Twilio number or not a verified caller ID\n\n### Possible solutions\n\nChange the callerID used in the From field of the SIP INVITE to a Twilio number on your account or verify your number by visiting the Console [Verified Caller IDs](/user/account/phone-numbers/verified) or REST API.\n",
    "causes": "The `From` number used to make outbound call not a Twilio number or not a verified caller ID",
    "solutions": "Change the callerID used in the From field of the SIP INVITE to a Twilio number on your account or verify your number by visiting the Console [Verified Caller IDs](/user/account/phone-numbers/verified) or REST API.",
    "description": "You attempted to initiate an outbound phone call, but the From number you specified is not a verified Outgoing Caller ID for your account. In order to use a phone number as the Caller ID on outgoing calls, you must first validate your ownership of that phone number.",
    "date_created": "2016-03-31T17:14:38Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32205,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP Trunking: Geo Permission configuration is not permitting call",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call to a phone number that is not enabled on your account.\n\n### Possible causes\n\nUser dialed a destination your application is not enabled to support calling to.\n\n### Possible solutions\n\nPlease check your [Voice Dialing Geographic Permissions](https://www.twilio.com/console/voice/calls/geo-permissions), fix it, and try again.\n",
    "causes": "User dialed a destination your application is not enabled to support calling to.",
    "solutions": "Please check your [Voice Dialing Geographic Permissions](https://www.twilio.com/console/voice/calls/geo-permissions), fix it, and try again.",
    "description": "You attempted to initiate an outbound phone call to a phone number that is not enabled on your account.",
    "date_created": "2016-03-31T17:14:38Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32206,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP: Invalid From number (caller ID)",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nYou attempted to initiate an outbound phone call or message, but the 'From' parameter you supplied was not a valid phone number or alphanumeric sender ID.\n\nTwilio accepts phone numbers in [E.164 format](/docs/glossary/what-e164) (i.e. \"+1 format\"), 10-digit US and Canadian numbers with any combination of non-digit separators, or Alphanumeric Sender IDs (SMS only) with up to 11 alphanumeric characters \\[a-zA-Z0-9]. Refer to [this page](https://support.twilio.com/hc/en-us/articles/223133867-Using-Alphanumeric-Sender-ID-with-Messaging-Services) for acceptable characters.\n\nThe number must not be on a do-not-originate (DNO) list, and Alpha Sender IDs may not be generic.\n\n### Possible causes\n\n- You have supplied a phone number that was not in [E.164 format](/docs/glossary/what-e164)\n- Your `From` phone number is on a do-not-originate (DNO) list\n\n### Possible solutions\n\n- Ensure your number is formatted in [E.164 format](/docs/glossary/what-e164)\n- Ensure that your `From` number is assigned and not on a do-not-originate (DNO) list.\n",
    "causes": "* You have supplied a phone number that was not in [E.164 format](/docs/glossary/what-e164)\n* Your `From` phone number is on a do-not-originate (DNO) list",
    "solutions": "* Ensure your number is formatted in [E.164 format](/docs/glossary/what-e164)\n* Ensure that your `From` number is assigned and not on a do-not-originate (DNO) list.",
    "description": "You attempted to initiate an outbound phone call or message, but the 'From' parameter you supplied was not a valid phone number or alphanumeric sender ID. Twilio accepts phone numbers in [E.164 format](/docs/glossary/what-e164) (i.e. \"+1 format\"), 10-digit US and Canadian numbers with any combination of non-digit separators, or Alphanumeric Sender IDs (SMS only) with up to 11 alphanumeric characters \\[a-zA-Z0-9]. Refer to [this page](https://support.twilio.com/hc/en-us/articles/223133867-Using-Alphanumeric-Sender-ID-with-Messaging-Services) for acceptable characters. The number must not be on a do-not-originate (DNO) list, and Alpha Sender IDs may not be generic.",
    "date_created": "2019-09-05T21:45:40Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32207,
    "log_level": "ERROR",
    "log_type": null,
    "message": "SIP: Secure media not accepted",
    "secondary_message": "Please use RTP. For SIP Trunking if you wish to use SRTP kindly enable [Secure Trunking](/docs/api/sip-trunking/getting-started#securetrunking).",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- A SIP Call is made to a Twilio SIP Domain using SRTP, which it is not supported\n- A termination Call is made to a Twilio SIP Trunk and the Twilio SIP Trunk is not configured to accept secure media (SRTP).\n\n### Possible solutions\n\n- Please use RTP.\n- For Twilio Elastic SIP Trunking, if you wish to use SRTP kindly enable [Secure Trunking](/docs/sip-trunking#securetrunking).\n",
    "causes": "* A SIP Call is made to a Twilio SIP Domain using SRTP, which it is not supported\n* A termination Call is made to a Twilio SIP Trunk and the Twilio SIP Trunk is not configured to accept secure media (SRTP).",
    "solutions": "* Please use RTP.\n* For Twilio Elastic SIP Trunking, if you wish to use SRTP kindly enable [Secure Trunking](/docs/sip-trunking#securetrunking).",
    "description": "",
    "date_created": "2016-03-31T17:14:39Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32208,
    "log_level": "ERROR",
    "log_type": null,
    "message": "SIP: Secure media required",
    "secondary_message": "This secure SIP trunk cannot accept insecure media (RTP). Please use SRTP. See more on [Secure Trunking](/docs/api/sip-trunking/getting-started#securetrunking).",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- This secure SIP trunk cannot accept insecure media (RTP).\n\n### Possible solutions\n\n- Please use SRTP. See more on [Secure Trunking](/docs/sip-trunking#securetrunking).\n",
    "causes": "* This secure SIP trunk cannot accept insecure media (RTP).",
    "solutions": "* Please use SRTP. See more on [Secure Trunking](/docs/sip-trunking#securetrunking).",
    "description": "",
    "date_created": "2016-03-31T17:14:39Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32209,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP: Secure transport required",
    "secondary_message": "When secure calling is enabled, Twilio cannot accept calls made using UDP or TCP. Please use TLS.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nWhen secure calling is enabled, Twilio cannot accept calls made using UDP or TCP. Please use TLS.\n\n### Possible causes\n\n- Media security is enabled on your SIP domain or trunk, but Twilio received SIP traffic over an insecure protocol, such as UDP or TCP.\n- You are using SIP registration, and are attempting to place a secure call to an endpoint where all of the available bindings were registered with an insecure protocol, such as UDP or TCP.\n\n### Possible solutions\n\n- Please ensure your PBX or end device is configured to send SIP traffic over the TLS transport.\n- If you are using SIP registration, your device must be configured to *register* over the TLS protocol. Devices registered over insecure protocols will not be attempted for secure calls.\n",
    "causes": "* Media security is enabled on your SIP domain or trunk, but Twilio received SIP traffic over an insecure protocol, such as UDP or TCP.\n* You are using SIP registration, and are attempting to place a secure call to an endpoint where all of the available bindings were registered with an insecure protocol, such as UDP or TCP.",
    "solutions": "* Please ensure your PBX or end device is configured to send SIP traffic over the TLS transport.\n* If you are using SIP registration, your device must be configured to *register* over the TLS protocol. Devices registered over insecure protocols will not be attempted for secure calls.",
    "description": "When secure calling is enabled, Twilio cannot accept calls made using UDP or TCP. Please use TLS.",
    "date_created": "2016-03-31T17:14:39Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32210,
    "log_level": "ERROR",
    "log_type": null,
    "message": "SIP: Register not supported",
    "secondary_message": "Registration is not enabled for the SIP domain",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Registration is not enabled for the SIP domain\n\n### Possible solutions\n\n- Enable registration for the SIP domain.\n",
    "causes": "* Registration is not enabled for the SIP domain",
    "solutions": "* Enable registration for the SIP domain.",
    "description": "",
    "date_created": "2016-04-11T20:56:00Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32212,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Registration Authentication problem",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nA SIP Endpoint tried to register with this SIP Domain and there isn't a Credential List mapped.\n\n### Possible solutions\n\nPlease map a Credential List to the Registration Authentication part of the SIP Domain\n",
    "causes": "A SIP Endpoint tried to register with this SIP Domain and there isn't a Credential List mapped.",
    "solutions": "Please map a Credential List to the Registration Authentication part of the SIP Domain",
    "description": "",
    "date_created": "2016-11-15T21:50:24Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32214,
    "log_level": "WARNING",
    "log_type": null,
    "message": "SIP: Invalid <Dial><Sip> ",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when you use `<Dial><Sip>` to target a Twilio SIP Domain that is not available to the account handling the call. You can only dial a Twilio SIP Domain in the same subaccount or in that subaccount's master account. Twilio SIP Domains are account-scoped, and subaccounts can create subdomains of SIP Domains in the master account. Registered SIP endpoints must also use the same username and domain that were registered for that SIP address of record.\n\n### Possible causes\n\n- The `<Sip>` target points to a Twilio SIP Domain that belongs to a different account instead of the same subaccount or its master account.\n- The call is trying to reach a registered SIP endpoint on a SIP Domain that is not provisioned in the same subaccount as the Twilio number or call flow.\n- The username or domain in `<Sip>` does not match the username and SIP Domain that were used to register the endpoint.\n\n### Possible solutions\n\n- Register the SIP endpoint on a SIP Domain in the same subaccount as the call, or use a SIP Domain that exists in the master account for that subaccount.\n- Update the `<Sip>` target so it matches the registered address of record, such as `alice@yourdomain.sip.twilio.com`, and confirm that both the username and domain are correct.\n- If you are routing a call from a Twilio phone number to a registered SIP endpoint, provision the phone number in the same subaccount as the SIP Domain you want to reach.\n\n#### Additional resources\n\n- [TwiML `<Sip>` noun](/docs/voice/twiml/sip)\n- [SIP Registration](/docs/voice/api/sip-registration)\n- [Send SIP to Twilio](/docs/voice/api/sending-sip)\n",
    "causes": "* The `<Sip>` target points to a Twilio SIP Domain that belongs to a different account instead of the same subaccount or its master account.\n* The call is trying to reach a registered SIP endpoint on a SIP Domain that is not provisioned in the same subaccount as the Twilio number or call flow.\n* The username or domain in `<Sip>` does not match the username and SIP Domain that were used to register the endpoint.",
    "solutions": "* Register the SIP endpoint on a SIP Domain in the same subaccount as the call, or use a SIP Domain that exists in the master account for that subaccount.\n* Update the `<Sip>` target so it matches the registered address of record, such as `alice@yourdomain.sip.twilio.com`, and confirm that both the username and domain are correct.\n* If you are routing a call from a Twilio phone number to a registered SIP endpoint, provision the phone number in the same subaccount as the SIP Domain you want to reach.",
    "description": "This warning appears when you use `<Dial><Sip>` to target a Twilio SIP Domain that is not available to the account handling the call. You can only dial a Twilio SIP Domain in the same subaccount or in that subaccount's master account. Twilio SIP Domains are account-scoped, and subaccounts can create subdomains of SIP Domains in the master account. Registered SIP endpoints must also use the same username and domain that were registered for that SIP address of record.",
    "date_created": "2016-11-15T20:22:33Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 32215,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Dial failure calling a SIP Domain without specifying a region",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- If you do a `<Dial><Sip>` without specifying a region\n\n### Possible solutions\n\n- Dial the regional SIP domain. For instance: \\<Dial>\\<Sip>username@yoursipdomain.sip.`us1`.twilio.com\\</Dial>\\</Sip>.\n\nNote the `us1` above that is specifying that you are calling a SIP endpoint registered to the US1 (North Virginia) data center.\n",
    "causes": "* If you do a `<Dial><Sip>` without specifying a region",
    "solutions": "* Dial the regional SIP domain. For instance: \\<Dial>\\<Sip>username@yoursipdomain.sip.`us1`.twilio.com\\</Dial>\\</Sip>. Note the `us1` above that is specifying that you are calling a SIP endpoint registered to the US1 (North Virginia) data center.",
    "description": "",
    "date_created": "2016-10-28T21:02:03Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32216,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP: SIP Address is on a deny list",
    "secondary_message": "This address is on a deny list.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou receive this error when the SIP address you are trying to reach is on a deny list. When you dial a SIP endpoint, send a valid SIP URI in the `To` parameter or inside the `<Sip>` noun.\n\n### Possible causes\n\n- The SIP address or SIP URI you supplied is on a deny list.\n- You passed the denied destination in the REST API `To` parameter for a SIP call.\n- You passed the denied destination in the `<Sip>` noun in your TwiML.\n- In some cases, the SIP URI points to a different destination than you intended, such as an outdated user or SIP Domain value. Twilio SIP Domains use specific domain and registration formats.\n\n### Possible solutions\n\n- Replace the destination with a SIP URI that is not on a deny list.\n- Review the exact value you send in the REST API `To` parameter and confirm it is the SIP URI you intend to reach.\n- If you use TwiML, review the `<Sip>` noun and confirm it contains the correct SIP URI.\n- If you use a Twilio SIP Domain, verify that you are using the correct SIP Domain format and the intended registered endpoint before you retry the call.\n\n#### Additional resources\n\n- [SIP overview](/docs/voice/sip)\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n- [Making SIP Calls](/docs/voice/api/sip-making-calls)\n",
    "causes": "* The SIP address or SIP URI you supplied is on a deny list.\n* You passed the denied destination in the REST API `To` parameter for a SIP call.\n* You passed the denied destination in the `<Sip>` noun in your TwiML.\n* In some cases, the SIP URI points to a different destination than you intended, such as an outdated user or SIP Domain value. Twilio SIP Domains use specific domain and registration formats.",
    "solutions": "* Replace the destination with a SIP URI that is not on a deny list.\n* Review the exact value you send in the REST API `To` parameter and confirm it is the SIP URI you intend to reach.\n* If you use TwiML, review the `<Sip>` noun and confirm it contains the correct SIP URI.\n* If you use a Twilio SIP Domain, verify that you are using the correct SIP Domain format and the intended registered endpoint before you retry the call.",
    "description": "You receive this error when the SIP address you are trying to reach is on a deny list. When you dial a SIP endpoint, send a valid SIP URI in the `To` parameter or inside the `<Sip>` noun.",
    "date_created": "2018-06-11T21:19:09Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 32218,
    "log_level": "ERROR",
    "log_type": null,
    "message": "SIP: Transfer not allowed",
    "secondary_message": "Transfer is disabled or transferring to disallowed destination (SIP/PSTN)",
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Transfer enable mode is in DISABLE\\_ALL\n- Transferring to PSTN when transfer enable mode is in `SIP_ONLY`\n- Transferring to SIP when transfer enable mode is in `PSTN_ONLY`\n\n### Possible solutions\n\n- There is a configurable transfer enable mode on your trunk. Change this mode to suit your needs\n",
    "causes": "* Transfer enable mode is in DISABLE\\_ALL\n* Transferring to PSTN when transfer enable mode is in `SIP_ONLY`\n* Transferring to SIP when transfer enable mode is in `PSTN_ONLY`",
    "solutions": "* There is a configurable transfer enable mode on your trunk. Change this mode to suit your needs",
    "description": "",
    "date_created": "2018-05-31T17:42:51Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32219,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIP: Redirect failed",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nTwilio could not process the SIP 30x response from your SIP server.\n\n### Possible causes\n\n- Max redirect limit reached.\n- Redirection is not allowed in the call to the registered SIP endpoint.\n- Redirect target in the Contact header of the SIP 30x response is not a valid SIP URI.\n- Redirect target is a private IP address.\n- Redirect target is a Twilio domain such as \\*.sip.twilio.com or \\*.pstn.twilio.com.\n- Redirect target is an IP in a deny list.\n\n### Possible solutions\n\nReview the Possible Causes and update the redirect target as needed.\n",
    "causes": "* Max redirect limit reached.\n* Redirection is not allowed in the call to the registered SIP endpoint.\n* Redirect target in the Contact header of the SIP 30x response is not a valid SIP URI.\n* Redirect target is a private IP address.\n* Redirect target is a Twilio domain such as \\*.sip.twilio.com or \\*.pstn.twilio.com.\n* Redirect target is an IP in a deny list.",
    "solutions": "Review the Possible Causes and update the redirect target as needed.",
    "description": "Twilio could not process the SIP 30x response from your SIP server.",
    "date_created": "2019-03-12T20:46:41Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32220,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Specifying an edge is not allowed when dialing SIP registered endpoints",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nUse the global SIP Domain URI when you call a registered endpoint. Twilio supports localized SIP URIs for device registration, but Twilio does not support dialing a registered endpoint by using an edge-specific domain such as `yourdomain.sip.ashburn.twilio.com`. When you call a registered address of record, Twilio forks the call to all devices registered under the same username and domain.\n\n### Possible causes\n\n- You attempted to place a call to a registered endpoint by using an edge-specific SIP Domain such as `username@yourdomain.sip.ashburn.twilio.com`.\n- Your application used another localized edge variant such as `ashburn-ix`, `umatilla`, `dublin`, `frankfurt`, `singapore`, `tokyo`, `sao-paulo`, or `sydney` when dialing the registered endpoint.\n- Your application still relies on legacy regional dialing behavior. Twilio allows `us1` and `us1-ix` only for backward compatibility in limited cases, and Twilio recommends removing that dependency.\n\n### Possible solutions\n\n- Dial the registered endpoint by using your global SIP Domain URI, for example `username@yourdomain.sip.twilio.com`.\n- Keep using localized SIP URIs only for device registration or network ingress selection, not for the destination URI when you call a registered address of record.\n- If you still use legacy `us1` or `us1-ix` behavior, update your calling logic to use the global SIP Domain URI so new calls do not fail with this error.\n\n#### Additional resources\n\n- [SIP Registration](/docs/voice/api/sip-registration)\n- [SIP URIs](/docs/global-infrastructure/localized-uris/sip-uris)\n- [Regional SIP Domains](/docs/global-infrastructure/regional-sip-domains)\n",
    "causes": "* You attempted to place a call to a registered endpoint by using an edge-specific SIP Domain such as `username@yourdomain.sip.ashburn.twilio.com`.\n* Your application used another localized edge variant such as `ashburn-ix`, `umatilla`, `dublin`, `frankfurt`, `singapore`, `tokyo`, `sao-paulo`, or `sydney` when dialing the registered endpoint.\n* Your application still relies on legacy regional dialing behavior. Twilio allows `us1` and `us1-ix` only for backward compatibility in limited cases, and Twilio recommends removing that dependency.",
    "solutions": "* Dial the registered endpoint by using your global SIP Domain URI, for example `username@yourdomain.sip.twilio.com`.\n* Keep using localized SIP URIs only for device registration or network ingress selection, not for the destination URI when you call a registered address of record.\n* If you still use legacy `us1` or `us1-ix` behavior, update your calling logic to use the global SIP Domain URI so new calls do not fail with this error.",
    "description": "Use the global SIP Domain URI when you call a registered endpoint. Twilio supports localized SIP URIs for device registration, but Twilio does not support dialing a registered endpoint by using an edge-specific domain such as `yourdomain.sip.ashburn.twilio.com`. When you call a registered address of record, Twilio forks the call to all devices registered under the same username and domain.",
    "date_created": "2020-11-11T00:18:36Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32221,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dialing SIP Endpoint failure - No devices registered in specified edge",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when you dial a registered SIP endpoint by using an edge-specific SIP URI, but no device for that address of record is currently registered through that edge. When you call a registered SIP endpoint, use your SIP domain's global URI in the format `username@yourdomain.sip.twilio.com` unless you intentionally rely on legacy `us1` or `us1-ix` behavior.\n\n### Possible causes\n\n- Your application is dialing an edge-specific or legacy regional URI such as `username@yourdomain.sip.us1.twilio.com`, but the endpoint is registered through a different edge.\n- Your SIP devices are registering through an unexpected edge because the Registration Domain or Outbound Proxy is configured incorrectly.\n- You are migrating from legacy `us1` or `us1-ix` registration and some devices now register through other edge locations while your application still dials an edge-specific URI.\n- The endpoint is registered, but only on other edge locations and not on the edge you specified in the URI.\n\n### Possible solutions\n\n- Update your TwiML or REST API request to dial the global SIP domain URI, such as `username@yourdomain.sip.twilio.com`.\n- If your SIP client supports separate settings, set the Registration Domain to `yourdomain.sip.twilio.com` and set the Outbound Proxy to the edge closest to the device, such as `sip.sydney.twilio.com`.\n- If you want to keep using legacy `us1` or `us1-ix` dialing behavior, make sure the device is actually registered through the Ashburn edge that matches that URI.\n- Review the Registered SIP Endpoints tab on your SIP Domain and confirm which edge each device is using.\n- Reconfigure devices that are registering through the wrong edge, or disable SIP Registration on devices that should not register.\n\n#### Additional resources\n\n- [SIP Registration](/docs/voice/api/sip-registration)\n- [Receiving SIP from Twilio](/docs/voice/api/receiving-sip)\n- [SIP URIs](/docs/global-infrastructure/localized-uris/sip-uris)\n",
    "causes": "* Your application is dialing an edge-specific or legacy regional URI such as `username@yourdomain.sip.us1.twilio.com`, but the endpoint is registered through a different edge.\n* Your SIP devices are registering through an unexpected edge because the Registration Domain or Outbound Proxy is configured incorrectly.\n* You are migrating from legacy `us1` or `us1-ix` registration and some devices now register through other edge locations while your application still dials an edge-specific URI.\n* The endpoint is registered, but only on other edge locations and not on the edge you specified in the URI.",
    "solutions": "* Update your TwiML or REST API request to dial the global SIP domain URI, such as `username@yourdomain.sip.twilio.com`.\n* If your SIP client supports separate settings, set the Registration Domain to `yourdomain.sip.twilio.com` and set the Outbound Proxy to the edge closest to the device, such as `sip.sydney.twilio.com`.\n* If you want to keep using legacy `us1` or `us1-ix` dialing behavior, make sure the device is actually registered through the Ashburn edge that matches that URI.\n* Review the Registered SIP Endpoints tab on your SIP Domain and confirm which edge each device is using.\n* Reconfigure devices that are registering through the wrong edge, or disable SIP Registration on devices that should not register.",
    "description": "This error occurs when you dial a registered SIP endpoint by using an edge-specific SIP URI, but no device for that address of record is currently registered through that edge. When you call a registered SIP endpoint, use your SIP domain's global URI in the format `username@yourdomain.sip.twilio.com` unless you intentionally rely on legacy `us1` or `us1-ix` behavior.",
    "date_created": "2020-11-11T00:20:50Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32222,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TLS version not allowed",
    "secondary_message": null,
    "product": "Elastic SIP Trunking",
    "products_used": [
      "sip-trunking"
    ],
    "docs": "\n## Description\n\nThe TLS version used by your SIP endpoints is lower than the one configured for your account. It's highly recommended to upgrade your SIP endpoints to use TLSv1.2. Otherwise, you can opt in to use deprecated TLS versions in the console. By default, only TLSv1.2 is allowed.\n\n### Possible causes\n\nSIP/TLS version is lower than the allowed\n\n### Possible solutions\n\nUpgrade TLS version or configure your account to allow all TLSv1+ in console (Voice → Settings → General → Allow Deprecated SIP/TLS versions)\n",
    "causes": "SIP/TLS version is lower than the allowed",
    "solutions": "Upgrade TLS version or configure your account to allow all TLSv1+ in console (Voice → Settings → General → Allow Deprecated SIP/TLS versions)",
    "description": "The TLS version used by your SIP endpoints is lower than the one configured for your account. It's highly recommended to upgrade your SIP endpoints to use TLSv1.2. Otherwise, you can opt in to use deprecated TLS versions in the console. By default, only TLSv1.2 is allowed.",
    "date_created": "2022-01-31T18:20:25Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32223,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "There is no username in the SIP URI when calling a SIP registered endpoint",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio only routes a call to a registered SIP endpoint when you use the endpoint's full Address of Record, such as `username@yourdomain.sip.twilio.com`. Calling the SIP Domain by itself, such as `yourdomain.sip.twilio.com`, is not supported for this call flow.\n\n### Possible causes\n\n- You attempted to call a registered SIP endpoint without the username portion of the SIP URI.\n- You used the SIP Domain by itself instead of the full registered endpoint AOR, such as `username@yourdomain.sip.twilio.com`.\n- You attempted to place a SIP call from Twilio to a Twilio SIP Domain instead of to a registered SIP endpoint. Twilio does not allow SIP calls between Twilio SIP Domains.\n\n### Possible solutions\n\n- Update the destination SIP URI to include the registered endpoint username, such as `username@yourdomain.sip.twilio.com`.\n- Verify that the username matches the credential configured for SIP Registration on that SIP Domain.\n- If you are placing the call with the REST API or with `<Dial><Sip>`, pass the full SIP URI for the registered endpoint instead of the bare domain.\n\n#### Additional resources\n\n- [SIP Registration](/docs/voice/api/sip-registration)\n- [Outbound - Receiving SIP from Twilio](/docs/voice/api/receiving-sip)\n- [TwiML Voice: `<Sip>`](/docs/voice/twiml/sip)\n",
    "causes": "* You attempted to call a registered SIP endpoint without the username portion of the SIP URI.\n* You used the SIP Domain by itself instead of the full registered endpoint AOR, such as `username@yourdomain.sip.twilio.com`.\n* You attempted to place a SIP call from Twilio to a Twilio SIP Domain instead of to a registered SIP endpoint. Twilio does not allow SIP calls between Twilio SIP Domains.",
    "solutions": "* Update the destination SIP URI to include the registered endpoint username, such as `username@yourdomain.sip.twilio.com`.\n* Verify that the username matches the credential configured for SIP Registration on that SIP Domain.\n* If you are placing the call with the REST API or with `<Dial><Sip>`, pass the full SIP URI for the registered endpoint instead of the bare domain.",
    "description": "Twilio only routes a call to a registered SIP endpoint when you use the endpoint's full Address of Record, such as `username@yourdomain.sip.twilio.com`. Calling the SIP Domain by itself, such as `yourdomain.sip.twilio.com`, is not supported for this call flow.",
    "date_created": "2022-05-16T23:51:31Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32224,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Forwarded Call blocked by Twilio",
    "secondary_message": null,
    "product": "Elastic SIP Trunking, Programmable Voice",
    "products_used": [
      "sip-trunking",
      "voice"
    ],
    "docs": "\n\n## Description\n\nTwilio blocked this outbound Elastic SIP Trunking or Programmable Voice call before it reached the destination. This error occurs when Twilio cannot complete the call due to regulatory restrictions in the region.\n\n### Possible causes\n\n- Regulatory restrictions prevent the destination from being reached.\n- You are attempting to forward a call that received on a domestic number to an international number.\n\n### Possible solutions\n\n- Forward calls to numbers that belong to the same geographical region as as the Twilio number receiving the incoming call.\n\n",
    "causes": "* Regulatory restrictions prevent the destination from being reached.\n* You are attempting to forward a call that received on a domestic number to an international number.",
    "solutions": "* Forward calls to numbers that belong to the same geographical region as as the Twilio number receiving the incoming call.",
    "description": "Twilio blocked this outbound Elastic SIP Trunking or Programmable Voice call before it reached the destination. This error occurs when Twilio cannot complete the call due to regulatory restrictions in the region.",
    "date_created": "2026-06-26T09:05:50-04:00",
    "last_updated": "2026-09-03T07:06:35-04:00"
  },
  {
    "code": 32301,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Interconnect: Invalid Connection (TNX) SID",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Interconnect Connection (TNX) SID is invalid.\n\n### Possible solutions\n\n- Verify your Interconnect Connection SID.\n  - In the Twilio Console, go to [**Builder tools** > **Interconnect** > **Connections**](https://1console.twilio.com/go?to=/account/__account__/us1/interconnect/connections).\n  - In the legacy Console, go to [**Interconnect** > **Connections**](https://console.twilio.com/us1/develop/interconnect/connections).\n",
    "causes": "* The Interconnect Connection (TNX) SID is invalid.",
    "solutions": "* Verify your Interconnect Connection SID.\n  * In the Twilio Console, go to [**Builder tools** > **Interconnect** > **Connections**](https://1console.twilio.com/go?to=/account/__account__/us1/interconnect/connections).\n  * In the legacy Console, go to [**Interconnect** > **Connections**](https://console.twilio.com/us1/develop/interconnect/connections).",
    "description": "",
    "date_created": "2016-11-16T21:52:51Z",
    "last_updated": "2026-09-25T13:35:58-04:00"
  },
  {
    "code": 32302,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Interconnect: Connection (TNX) SID not found",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Interconnect Connection (TNX) SID was not found.\n\n### Possible solutions\n\n- Verify your Interconnect Connection SID.\n  - In the Twilio Console, go to [**Builder tools** > **Interconnect** > **Connections**](https://1console.twilio.com/go?to=/account/__account__/us1/interconnect/connections).\n  - In the legacy Console, go to [**Interconnect** > **Connections**](https://console.twilio.com/us1/develop/interconnect/connections).\n",
    "causes": "* The Interconnect Connection (TNX) SID was not found.",
    "solutions": "* Verify your Interconnect Connection SID.\n  * In the Twilio Console, go to [**Builder tools** > **Interconnect** > **Connections**](https://1console.twilio.com/go?to=/account/__account__/us1/interconnect/connections).\n  * In the legacy Console, go to [**Interconnect** > **Connections**](https://console.twilio.com/us1/develop/interconnect/connections).",
    "description": "",
    "date_created": "2016-11-16T21:53:40Z",
    "last_updated": "2026-09-25T13:35:58-04:00"
  },
  {
    "code": 32303,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Interconnect: Multiple SIP Dials with Interconnect Connection (TNX) SID",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Multiple SIP outbound dials with TNX parameter\n\n### Possible solutions\n\n- We don't support multiple SIP outbound dials with TNX parameter, please ensure you Response only includes one.\n",
    "causes": "* Multiple SIP outbound dials with TNX parameter",
    "solutions": "* We don't support multiple SIP outbound dials with TNX parameter, please ensure you Response only includes one.",
    "description": "",
    "date_created": "2016-11-16T21:54:51Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32304,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Interconnect: Connection (TNX) SID is not Active",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Interconnect Connection (TNX) SID is not Active.\n\n### Possible solutions\n\n- Verify your Interconnect Connection SID.\n  - In the Twilio Console, go to [**Builder tools** > **Interconnect** > **Connections**](https://1console.twilio.com/go?to=/account/__account__/us1/interconnect/connections).\n  - In the legacy Console, go to [**Interconnect** > **Connections**](https://console.twilio.com/us1/develop/interconnect/connections).\n",
    "causes": "* The Interconnect Connection (TNX) SID is not Active.",
    "solutions": "* Verify your Interconnect Connection SID.\n  * In the Twilio Console, go to [**Builder tools** > **Interconnect** > **Connections**](https://1console.twilio.com/go?to=/account/__account__/us1/interconnect/connections).\n  * In the legacy Console, go to [**Interconnect** > **Connections**](https://console.twilio.com/us1/develop/interconnect/connections).",
    "description": "",
    "date_created": "2016-11-16T21:55:38Z",
    "last_updated": "2026-09-25T13:35:58-04:00"
  },
  {
    "code": 32400,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "BYOC Trunk routing failure - failover routing disabled.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nCall delivery attempt(s) over the specified BYOC Trunk did not succeed. Failover routing was disabled.\n\n### Possible causes\n\nTwilio encountered errors communicating with your SIP communications infrastructure.\n\n### Possible solutions\n\nLook for errors with error code [32011](/docs/api/errors/32011), Error communicating with your SIP communications infrastructure, and follow instructions.\n",
    "causes": "Twilio encountered errors communicating with your SIP communications infrastructure.",
    "solutions": "Look for errors with error code [32011](/docs/api/errors/32011), Error communicating with your SIP communications infrastructure, and follow instructions.",
    "description": "Call delivery attempt(s) over the specified BYOC Trunk did not succeed. Failover routing was disabled.",
    "date_created": "2020-03-16T21:29:32Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32401,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "BYOC Trunk routing failure - failover to Twilio default routing.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nCall delivery attempt(s) over the specified BYOC Trunk did not succeed. Failover to Twilio default routing took place.\n\n### Possible causes\n\nTwilio encountered errors communicating with your SIP communications infrastructure.\n\n### Possible solutions\n\nLook for errors with error code [32011](/docs/api/errors/32011), Error communicating with your SIP communications infrastructure, and follow instructions.\n",
    "causes": "Twilio encountered errors communicating with your SIP communications infrastructure.",
    "solutions": "Look for errors with error code [32011](/docs/api/errors/32011), Error communicating with your SIP communications infrastructure, and follow instructions.",
    "description": "Call delivery attempt(s) over the specified BYOC Trunk did not succeed. Failover to Twilio default routing took place.",
    "date_created": "2020-03-16T21:30:57Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32500,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Conversation: Generic error.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nRequest through Voice Conversation Service failed.\n\n### Possible causes\n\n- Some error occurred during communication with Twilio internal services.\n\n### Possible solutions\n\n- See the Debugger in Console for further information. If this is a continuous experience, please contact Twilio Support.\n",
    "causes": "* Some error occurred during communication with Twilio internal services.",
    "solutions": "* See the Debugger in Console for further information. If this is a continuous experience, please contact Twilio Support.",
    "description": "Request through Voice Conversation Service failed.",
    "date_created": "2022-06-07T17:34:36Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32501,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Conversation: TwiML attributes validation error.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInvalid attributes found in `<Conversation>` noun.\n\n### Possible causes\n\n- Invalid attributes within the `<Conversation>` noun.\n- Can be caused by any invalid syntax within the `<Conversation>` noun.\n\n### Possible solutions\n\n- Check attribute names or the values following the `<Conversation>` noun.\n- Refer to the `<Conversation>` twiml docs page \"/docs/voice/twiml/connect/conversation\" for more information.\n",
    "causes": "* Invalid attributes within the `<Conversation>` noun.\n* Can be caused by any invalid syntax within the `<Conversation>` noun.",
    "solutions": "* Check attribute names or the values following the `<Conversation>` noun.\n* Refer to the `<Conversation>` twiml docs page \"/docs/voice/twiml/connect/conversation\" for more information.",
    "description": "Invalid attributes found in `<Conversation>` noun.",
    "date_created": "2022-06-07T17:36:04Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32502,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Voice Conversation: Callback event internal error.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInternal error occurred when executing a request to one of the status callback URLs specified in the Conversation noun. This error will occur when Voice Conversation service fails to reach out to Callback service.\n\n### Possible causes\n\n- Twilio failed to execute callback request when Voice Conversation service attempted to reach out to status Callback service.\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n",
    "causes": "* Twilio failed to execute callback request when Voice Conversation service attempted to reach out to status Callback service.",
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!",
    "description": "Internal error occurred when executing a request to one of the status callback URLs specified in the Conversation noun. This error will occur when Voice Conversation service fails to reach out to Callback service.",
    "date_created": "2022-06-07T17:37:06Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32503,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Voice Conversation: Callback event response error.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning occurs when Twilio reaches your status callback URL, but your application returns an error response. For Programmable Voice status callback webhooks, your endpoint only needs to acknowledge the request with a `200 OK` response.\n\n### Possible causes\n\n- Your status callback endpoint returned an HTTP error response instead of a successful response.\n- Your endpoint is not handling the HTTP method configured for the callback request in `StatusCallbackMethod` or `statusCallbackMethod`. Twilio can send Voice status callbacks with either `GET` or `POST`.\n- The callback URL does not point to a publicly accessible application that Twilio can reach consistently.\n\n### Possible solutions\n\n- Make sure the callback URL points to a running, publicly accessible endpoint that accepts the configured method.\n- Update your callback handler to return `200 OK` after processing the webhook. Voice status callback webhooks do not require TwiML.\n- Review the request and response in the Request Inspector for the affected call to identify the HTTP status code and response body returned by your server.\n\n#### Additional resources\n\n- [Voice Webhooks](/docs/usage/webhooks/voice-webhooks)\n- [TwiML for Programmable Voice](/docs/voice/twiml)\n- [Webhooks FAQ](/docs/usage/webhooks/webhooks-faq)\n",
    "causes": "* Your status callback endpoint returned an HTTP error response instead of a successful response.\n* Your endpoint is not handling the HTTP method configured for the callback request in `StatusCallbackMethod` or `statusCallbackMethod`. Twilio can send Voice status callbacks with either `GET` or `POST`.\n* The callback URL does not point to a publicly accessible application that Twilio can reach consistently.",
    "solutions": "* Make sure the callback URL points to a running, publicly accessible endpoint that accepts the configured method.\n* Update your callback handler to return `200 OK` after processing the webhook. Voice status callback webhooks do not require TwiML.\n* Review the request and response in the Request Inspector for the affected call to identify the HTTP status code and response body returned by your server.",
    "description": "This warning occurs when Twilio reaches your status callback URL, but your application returns an error response. For Programmable Voice status callback webhooks, your endpoint only needs to acknowledge the request with a `200 OK` response.",
    "date_created": "2022-06-07T17:38:42Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32504,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Conversation: Incomplete Conversation.",
    "secondary_message": null,
    "product": "Programmable Voice, Connect",
    "products_used": [
      "voice",
      "conversations"
    ],
    "docs": "\n## Description\n\nThis error occurs when an existing voice conversation does not include a Frontline worker participant. Review the conversation and make sure the assigned worker is present before you continue the Frontline voice flow.\n\n### Possible causes\n\n- Your Frontline routing configuration did not assign a worker to the conversation.\n- The conversation was created directly with the Conversations API instead of through Frontline, so the conversation does not match the structure Frontline expects for voice handling.\n- The conversation was created by a Frontline worker or admin, but the worker participant was not added successfully.\n\n### Possible solutions\n\n- Review your Frontline routing configuration and confirm that it assigns a worker to the conversation.\n- Fetch the conversation and inspect its participants to verify that the expected Frontline worker participant exists.\n- If the conversation was created outside Frontline or is missing the required worker participant, delete the incomplete conversation and create a new conversation through your Frontline flow.\n\n#### Additional resources\n\n- [Conversation Resource](/docs/conversations/api/conversation-resource)\n- [Conversation Participant Resource](/docs/conversations/api/conversation-participant-resource)\n- [Modifying a Conversation, Message, or Participant](/docs/conversations/modifying-objects)\n",
    "causes": "* Your Frontline routing configuration did not assign a worker to the conversation.\n* The conversation was created directly with the Conversations API instead of through Frontline, so the conversation does not match the structure Frontline expects for voice handling.\n* The conversation was created by a Frontline worker or admin, but the worker participant was not added successfully.",
    "solutions": "* Review your Frontline routing configuration and confirm that it assigns a worker to the conversation.\n* Fetch the conversation and inspect its participants to verify that the expected Frontline worker participant exists.\n* If the conversation was created outside Frontline or is missing the required worker participant, delete the incomplete conversation and create a new conversation through your Frontline flow.",
    "description": "This error occurs when an existing voice conversation does not include a Frontline worker participant. Review the conversation and make sure the assigned worker is present before you continue the Frontline voice flow.",
    "date_created": "2022-06-07T17:39:56Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32505,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Conversation: Invalid data inside existing conversation.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInvalid data inside existing conversation.\n\n### Possible causes\n\n- Certain data was wrong when the Conversation was created or when the participants were added.\n\n### Possible solutions\n\n- Delete this Conversation using the Conversation API.\n",
    "causes": "* Certain data was wrong when the Conversation was created or when the participants were added.",
    "solutions": "* Delete this Conversation using the Conversation API.",
    "description": "Invalid data inside existing conversation.",
    "date_created": "2022-06-07T17:40:54Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32506,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Voice Conversation: Failed to get worker assigned to a newly created Conversation.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nYour Frontline instance failed to assign a worker after Conversation auto-creation.\n\n### Possible causes\n\n- Issue with Frontline routing configuration that caused no worker assigned.\n- Conversation might not have been created by the Frontline service. This error indicates that the code is directly using Conversation API to the create the conversation, and Frontline cannot determine the format of the call.\n- Something went wrong when the Conversation was created by the Frontline worker or admin.\n\n### Possible solutions\n\n- Check the Frontline routing configurations.\n- If a custom Routing was used, make sure the webhook is going to the right URL.\n",
    "causes": "* Issue with Frontline routing configuration that caused no worker assigned.\n* Conversation might not have been created by the Frontline service. This error indicates that the code is directly using Conversation API to the create the conversation, and Frontline cannot determine the format of the call.\n* Something went wrong when the Conversation was created by the Frontline worker or admin.",
    "solutions": "* Check the Frontline routing configurations.\n* If a custom Routing was used, make sure the webhook is going to the right URL.",
    "description": "Your Frontline instance failed to assign a worker after Conversation auto-creation.",
    "date_created": "2022-06-07T17:42:00Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32600,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Virtual Agent: Configuration Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error indicates that your `<VirtualAgent>` connector configuration is incomplete or invalid. Verify the `connectorName` you pass to `<VirtualAgent>` and review any `<Config>` overrides you send with the request.\n\n### Possible causes\n\n- The connector configuration is missing required properties.\n- The connector configuration contains invalid properties or values.\n- The `connectorName` value is empty or does not match the unique name configured for your Dialogflow CX connector instance.\n- A `<Config>` override is incomplete because it does not include both `name` and `value`.\n- A `<Config>` override uses a setting or value that your connector does not support.\n\n### Possible solutions\n\n- Verify that your Dialogflow CX connector is set up correctly, then use that connector's unique name in the `<VirtualAgent>` `connectorName` attribute.\n- Review your connector settings in Console and correct any missing or invalid configuration values before you retry the call.\n- If you use `<Config>`, include both `name` and `value` on every entry.\n- Only override supported connector settings, such as `language`, `sentimentAnalysis`, `voiceName`, or `welcomeIntent`.\n\n#### Additional resources\n\n- [TwiML `<VirtualAgent>`](/docs/voice/twiml/connect/virtualagent)\n- [TwiML `<VirtualAgent>` with Dialogflow CX](/docs/voice/twiml/connect/virtualagent/virtualagent-dialogflow-cx)\n- [Dialogflow CX Onboarding Guide](/docs/voice/virtual-agent/dialogflow-cx-onboarding)\n",
    "causes": "* The connector configuration is missing required properties.\n* The connector configuration contains invalid properties or values.\n* The `connectorName` value is empty or does not match the unique name configured for your Dialogflow CX connector instance.\n* A `<Config>` override is incomplete because it does not include both `name` and `value`.\n* A `<Config>` override uses a setting or value that your connector does not support.",
    "solutions": "* Verify that your Dialogflow CX connector is set up correctly, then use that connector's unique name in the `<VirtualAgent>` `connectorName` attribute.\n* Review your connector settings in Console and correct any missing or invalid configuration values before you retry the call.\n* If you use `<Config>`, include both `name` and `value` on every entry.\n* Only override supported connector settings, such as `language`, `sentimentAnalysis`, `voiceName`, or `welcomeIntent`.",
    "description": "This error indicates that your `<VirtualAgent>` connector configuration is incomplete or invalid. Verify the `connectorName` you pass to `<VirtualAgent>` and review any `<Config>` overrides you send with the request.",
    "date_created": "2022-08-04T01:20:39Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32601,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Virtual Agent: Provider Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when the provider rejects the `<VirtualAgent>` connector configuration for your call. Review the connector settings and any runtime overrides passed with `<Config>`. If the session fails with 32601, inspect `VirtualAgentProviderError` in the request to your `action` URL or review the Debugger entry in Console for the provider-specific failure details.\n\n### Possible causes\n\n- The Virtual Agent connector contains invalid provider properties.\n- The connector was configured with an incorrect Project ID, Conversation Profile ID, or language value.\n- A `<Config>` override uses an invalid `name` or `value`.\n- A `<Config>` override includes a setting that the connector or provider does not support.\n- The provider rejected an overridden value such as `language`, `voiceName`, `welcomeIntent`, `voiceModel`, `speechModel`, or `speechModelVariant`.\n\n### Possible solutions\n\n- Review the Virtual Agent connector configuration and correct any invalid provider settings.\n- Verify the Project ID, Conversation Profile ID, and language configured for your Dialogflow CX integration.\n- Review every `<Config>` element in your TwiML and make sure each `name` and `value` pair is valid and supported.\n- If you override connector settings at runtime, only use supported configuration names and valid values.\n- Review `VirtualAgentProviderError` in the request to your `action` URL to identify the exact provider-side validation error.\n- Review the Debugger entry in Console for additional details about the rejected configuration.\n- If you use Studio, review the Connect Virtual Agent widget configuration and make sure the connector settings and configuration overrides match the provider requirements.\n\n#### Additional resources\n\n- [Virtual Agent with Dialogflow CX](/docs/voice/twiml/connect/virtualagent/virtualagent-dialogflow-cx)\n- [Dialogflow CX Onboarding Guide](/docs/voice/virtual-agent/dialogflow-cx-onboarding)\n- [Connect Virtual Agent widget](/docs/studio/widget-library/connect-virtual-agent)\n",
    "causes": "* The Virtual Agent connector contains invalid provider properties.\n* The connector was configured with an incorrect Project ID, Conversation Profile ID, or language value.\n* A `<Config>` override uses an invalid `name` or `value`.\n* A `<Config>` override includes a setting that the connector or provider does not support.\n* The provider rejected an overridden value such as `language`, `voiceName`, `welcomeIntent`, `voiceModel`, `speechModel`, or `speechModelVariant`.",
    "solutions": "* Review the Virtual Agent connector configuration and correct any invalid provider settings.\n* Verify the Project ID, Conversation Profile ID, and language configured for your Dialogflow CX integration.\n* Review every `<Config>` element in your TwiML and make sure each `name` and `value` pair is valid and supported.\n* If you override connector settings at runtime, only use supported configuration names and valid values.\n* Review `VirtualAgentProviderError` in the request to your `action` URL to identify the exact provider-side validation error.\n* Review the Debugger entry in Console for additional details about the rejected configuration.\n* If you use Studio, review the Connect Virtual Agent widget configuration and make sure the connector settings and configuration overrides match the provider requirements.",
    "description": "This error occurs when the provider rejects the `<VirtualAgent>` connector configuration for your call. Review the connector settings and any runtime overrides passed with `<Config>`. If the session fails with 32601, inspect `VirtualAgentProviderError` in the request to your `action` URL or review the Debugger entry in Console for the provider-specific failure details.",
    "date_created": "2022-08-04T01:21:26Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Virtual Agent: Invalid Connector",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when the connector referenced by `<VirtualAgent>` is not valid for the call. The `connectorName` attribute is required, and its value must match the connector's Unique Name from your Dialogflow CX connector configuration.\n\n### Possible causes\n\n- The value passed in `connectorName` does not match an existing Dialogflow CX connector.\n- The referenced connector exists, but it is not a valid `<VirtualAgent>` connector.\n- Your TwiML does not include the required `connectorName` attribute on `<VirtualAgent>`.\n\n### Possible solutions\n\n- Verify that you completed the Dialogflow CX one-click integration so Twilio created a Dialogflow CX Connector for your agent.\n- Review your Dialogflow connectors in Twilio Console, then copy the connector's Unique Name into the `<VirtualAgent>` `connectorName` attribute.\n- Make sure your call flow uses `<Connect><VirtualAgent>` and that the TwiML you return includes `connectorName` on `<VirtualAgent>`.\n\n#### Additional resources\n- [TwiML Voice: `<VirtualAgent>` with Dialogflow CX](/docs/voice/twiml/connect/virtualagent/virtualagent-dialogflow-cx)\n- [Dialogflow CX Onboarding Guide](/docs/voice/virtual-agent/dialogflow-cx-onboarding)\n- [Virtual Agent overview](/docs/voice/virtual-agent)\n",
    "causes": "* The value passed in `connectorName` does not match an existing Dialogflow CX connector.\n* The referenced connector exists, but it is not a valid `<VirtualAgent>` connector.\n* Your TwiML does not include the required `connectorName` attribute on `<VirtualAgent>`.",
    "solutions": "* Verify that you completed the Dialogflow CX one-click integration so Twilio created a Dialogflow CX Connector for your agent.\n* Review your Dialogflow connectors in Twilio Console, then copy the connector's Unique Name into the `<VirtualAgent>` `connectorName` attribute.\n* Make sure your call flow uses `<Connect><VirtualAgent>` and that the TwiML you return includes `connectorName` on `<VirtualAgent>`.",
    "description": "This error occurs when the connector referenced by `<VirtualAgent>` is not valid for the call. The `connectorName` attribute is required, and its value must match the connector's Unique Name from your Dialogflow CX connector configuration.",
    "date_created": "2022-08-04T01:22:31Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 32603,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Virtual Agent: Unsupported <Config> attribute(s) in TwiML",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis warning appears when your `<VirtualAgent>` TwiML includes one or more `<Config>` entries that the selected Virtual Agent provider does not support. Use `<Config>` only to override supported Dialogflow CX connector settings or supported runtime options.\n\n### Possible causes\n\n- One or more `<Config>` `name` values are not supported for the selected Dialogflow CX connector.\n- The `connectorName` points to the wrong `<VirtualAgent>` connector, so the `<Config>` entries do not match that connector's configuration.\n- A `<Config>` entry was added for a setting that is not supported by the Virtual Agent provider.\n\n### Possible solutions\n\n- Verify that `connectorName` matches the correct Dialogflow CX connector in your TwiML.\n- Update each `<Config>` entry so the `name` uses a supported value for Dialogflow CX, such as `language`, `sentimentAnalysis`, `voiceName`, `welcomeIntent`, `voiceModel`, `speechModel`, `speechModelVariant`, `resumeEndUserId`, or `resumeEventName`.\n- Review the Debugger message in the Console and remove or correct the unsupported `<Config>` entries.\n- If you are resuming a paused session, use `resumeEndUserId` and, if needed, `resumeEventName` for the resume configuration.\n\n#### Additional resources\n\n- [Virtual Agent with Dialogflow CX](/docs/voice/twiml/connect/virtualagent/virtualagent-dialogflow-cx)\n- [Dialogflow CX Onboarding Guide](/docs/voice/virtual-agent/dialogflow-cx-onboarding)\n- [Connect Virtual Agent widget](/docs/studio/widget-library/connect-virtual-agent)\n",
    "causes": "* One or more `<Config>` `name` values are not supported for the selected Dialogflow CX connector.\n* The `connectorName` points to the wrong `<VirtualAgent>` connector, so the `<Config>` entries do not match that connector's configuration.\n* A `<Config>` entry was added for a setting that is not supported by the Virtual Agent provider.",
    "solutions": "* Verify that `connectorName` matches the correct Dialogflow CX connector in your TwiML.\n* Update each `<Config>` entry so the `name` uses a supported value for Dialogflow CX, such as `language`, `sentimentAnalysis`, `voiceName`, `welcomeIntent`, `voiceModel`, `speechModel`, `speechModelVariant`, `resumeEndUserId`, or `resumeEventName`.\n* Review the Debugger message in the Console and remove or correct the unsupported `<Config>` entries.\n* If you are resuming a paused session, use `resumeEndUserId` and, if needed, `resumeEventName` for the resume configuration.",
    "description": "This warning appears when your `<VirtualAgent>` TwiML includes one or more `<Config>` entries that the selected Virtual Agent provider does not support. Use `<Config>` only to override supported Dialogflow CX connector settings or supported runtime options.",
    "date_created": "2022-08-04T01:23:38Z",
    "last_updated": "2026-04-29T14:18:40-05:00"
  },
  {
    "code": 32604,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Virtual Agent: Internal Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32604 Error is an indication that there is an internal server error and some internal services failed.\n\n### Possible causes\n\n- Some error occurred during communication with Twilio internal services.\n\n### Possible solutions\n\n- If this is a continuous experience, please contact Twilio Support.\n",
    "causes": "* Some error occurred during communication with Twilio internal services.",
    "solutions": "* If this is a continuous experience, please contact Twilio Support.",
    "description": "A 32604 Error is an indication that there is an internal server error and some internal services failed.",
    "date_created": "2022-08-04T01:24:28Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32605,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Virtual Agent: PCI Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32605 Error is an indication that the `<VirtualAgent>` TwiML contains an invalid or insecure URL in the statusCallback attribute when PCI mode is enabled on your account\n\n### Possible causes\n\n- `<VirtualAgent>` statusCallback attribute contains an invalid URL\n- `<VirtualAgent>` statusCallback attribute does not specify scheme https\n\n### Possible solutions\n\n- Ensure that the `<VirtualAgent>` TwiML statusCallback attribute contains a valid URL format with scheme https\n",
    "causes": "* `<VirtualAgent>` statusCallback attribute contains an invalid URL\n* `<VirtualAgent>` statusCallback attribute does not specify scheme https",
    "solutions": "* Ensure that the `<VirtualAgent>` TwiML statusCallback attribute contains a valid URL format with scheme https",
    "description": "A 32605 Error is an indication that the `<VirtualAgent>` TwiML contains an invalid or insecure URL in the statusCallback attribute when PCI mode is enabled on your account",
    "date_created": "2023-01-26T19:10:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32606,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Virtual Agent: Resume Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32606 Error is an indication that the `<VirtualAgent>` TwiML contains an invalid or unauthorized configuration for resuming an existing conversation.\n\n### Possible causes\n\n- \\<Config name=\"resumeEndUserId\"> element referenced in TwiML contains an invalid value\n- \\<Config name=\"resumeEndUserId\"> element referenced in TwiML is not authorized to resume the conversation from the current Call SID\n\n### Possible solutions\n\n- Check the value of the \\<Config name=\"resumeEndUserId\"> element referenced in TwiML\n- Ensure the resume attempt is made from the same Call SID which created the conversation\n- Check the VirtualAgentProviderError included in the webhook to the action url or the Debugger message in Console for further information. For additional assistance, please contact Twilio Support.\n",
    "causes": "* \\<Config name=\"resumeEndUserId\"> element referenced in TwiML contains an invalid value\n* \\<Config name=\"resumeEndUserId\"> element referenced in TwiML is not authorized to resume the conversation from the current Call SID",
    "solutions": "* Check the value of the \\<Config name=\"resumeEndUserId\"> element referenced in TwiML\n* Ensure the resume attempt is made from the same Call SID which created the conversation\n* Check the VirtualAgentProviderError included in the webhook to the action url or the Debugger message in Console for further information. For additional assistance, please contact Twilio Support.",
    "description": "A 32606 Error is an indication that the `<VirtualAgent>` TwiML contains an invalid or unauthorized configuration for resuming an existing conversation.",
    "date_created": "2024-10-03T04:41:16Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32650,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Real-time Transcriptions: Configuration Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32650 Error is an indication there is something wrong with the `<Transcription>` configuration.\n\n### Possible causes\n\n- Configuration is missing required properties\n- Configuration contains invalid properties\n\n### Possible solutions\n\n- Check the TranscriptionError message included in the webhook or the Debugger message in Console for further information and update your `<Transcription>` configuration\n",
    "causes": "* Configuration is missing required properties\n* Configuration contains invalid properties",
    "solutions": "* Check the TranscriptionError message included in the webhook or the Debugger message in Console for further information and update your `<Transcription>` configuration",
    "description": "A 32650 Error is an indication there is something wrong with the `<Transcription>` configuration.",
    "date_created": "2024-05-10T19:59:34Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32651,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Real-time Transcriptions: Provider Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32651 Error is an indication that the `<Transcription>` provider configuration was rejected by the Speech-to-Text provider.\n\n### Possible causes\n\n- Provider configuration contains invalid or unsupported properties\n\n### Possible solutions\n\n- Check any provider specific configuration referenced in TwiML\n- Check the TranscriptionError message included in the webhook or the Debugger message in Console for further information. For additional assistance, please contact Twilio Support.\n",
    "causes": "* Provider configuration contains invalid or unsupported properties",
    "solutions": "* Check any provider specific configuration referenced in TwiML\n* Check the TranscriptionError message included in the webhook or the Debugger message in Console for further information. For additional assistance, please contact Twilio Support.",
    "description": "A 32651 Error is an indication that the `<Transcription>` provider configuration was rejected by the Speech-to-Text provider.",
    "date_created": "2024-05-10T20:01:28Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32652,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Real-time Transcriptions: Unsupported <Config> attribute(s) in TwiML",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32652 Error is an indication that `<Transcription>` TwiML contains invalid or unsupported `<Config>` attributes.\n\n### Possible causes\n\n- Some of the `<Config>` attribute(s) referenced in the `<Transcription>` TwiML are not supported by the Transcription provider\n\n### Possible solutions\n\n- Review the Debugger message in console and update or remove the offending attributes\n",
    "causes": "* Some of the `<Config>` attribute(s) referenced in the `<Transcription>` TwiML are not supported by the Transcription provider",
    "solutions": "* Review the Debugger message in console and update or remove the offending attributes",
    "description": "A 32652 Error is an indication that `<Transcription>` TwiML contains invalid or unsupported `<Config>` attributes.",
    "date_created": "2024-05-10T20:03:47Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32653,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Real-time Transcriptions: Internal Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32653 Error is an indication that there is an internal server error and some internal services failed\n\n### Possible causes\n\n- Some error occurred during communication with Twilio internal services\n\n### Possible solutions\n\n- If this is a continuous experience, please contact Twilio Support\n",
    "causes": "* Some error occurred during communication with Twilio internal services",
    "solutions": "* If this is a continuous experience, please contact Twilio Support",
    "description": "A 32653 Error is an indication that there is an internal server error and some internal services failed",
    "date_created": "2024-05-10T20:05:39Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32654,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Real-time Transcriptions: PCI Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32654 Error is an indication that the `<Transcription>` TwiML contains an invalid or insecure URL in the statusCallback attribute when PCI mode is enabled on your account\n\n### Possible causes\n\n- `<Transcription>` statusCallback attribute contains an invalid URL\n- `<Transcription>` statusCallback attribute does not specify scheme https\n\n### Possible solutions\n\n- Ensure that the `<Transcription>` TwiML statusCallback attribute contains a valid URL format with scheme https\n",
    "causes": "* `<Transcription>` statusCallback attribute contains an invalid URL\n* `<Transcription>` statusCallback attribute does not specify scheme https",
    "solutions": "* Ensure that the `<Transcription>` TwiML statusCallback attribute contains a valid URL format with scheme https",
    "description": "A 32654 Error is an indication that the `<Transcription>` TwiML contains an invalid or insecure URL in the statusCallback attribute when PCI mode is enabled on your account",
    "date_created": "2024-05-10T20:08:00Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32655,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Real-time Transcriptions: Intelligence Service Unreachable",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 32655 Error indicates a connection to the configured Intelligence Service could not be established due to an internal error. While you will continue to receive real-time transcription events, no Language Operators will be executed, and the transcript will not be saved\n\n### Possible causes\n\n- Some internal error occurred while trying to establish connection with the configured Intelligence service\n\n### Possible solutions\n\n- If this is a continuous experience, please contact Twilio Support\n",
    "causes": "* Some internal error occurred while trying to establish connection with the configured Intelligence service",
    "solutions": "* If this is a continuous experience, please contact Twilio Support",
    "description": "A 32655 Error indicates a connection to the configured Intelligence Service could not be established due to an internal error. While you will continue to receive real-time transcription events, no Language Operators will be executed, and the transcript will not be saved",
    "date_created": "2024-06-06T23:23:51Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32656,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Conversation Relay & Intelligence Language Mismatch",
    "secondary_message": "Conversation Relay & Intelligence Language Mismatch",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA 32656 Error indicates that there was a mismatch between the configured Conversation Relay transcription language and the provided Intelligence Service's language. As a result, the transcript will be persisted in Intelligence but Language Operators will not be executed.\n\n### Possible causes\n\nThe Intelligence Service's configured language passed in the Conversation Relay request did not match its configured transcription language for the virtual agent\n\nTo avoid delivering inaccurate Language Operator results, they will not be executed for this Conversation Relay Session\n\n### Possible solutions\n\nEnsure that the configured transcription language in the Conversation Relay session matches the Intelligence Service's language setting\n",
    "causes": "The Intelligence Service's configured language passed in the Conversation Relay request did not match its configured transcription language for the virtual agent To avoid delivering inaccurate Language Operator results, they will not be executed for this Conversation Relay Session",
    "solutions": "Ensure that the configured transcription language in the Conversation Relay session matches the Intelligence Service's language setting",
    "description": "A 32656 Error indicates that there was a mismatch between the configured Conversation Relay transcription language and the provided Intelligence Service's language. As a result, the transcript will be persisted in Intelligence but Language Operators will not be executed.",
    "date_created": "2025-05-13T15:38:26.581Z",
    "last_updated": "2026-04-22T01:50:49-07:00"
  },
  {
    "code": 32700,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Voice User-Defined Message: Internal Twilio Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio experienced an unexpected internal error in attempting to deliver an User-Defined Message event to the Voice SDK client.\n\n### Possible causes\n\n- An error occurred during communication with Twilio internal services.\n\n### Possible solutions\n\n- See the Debugger in the Twilio Console for more information. If you repeatedly receive this error, please contact Twilio Support.\n",
    "causes": "* An error occurred during communication with Twilio internal services.",
    "solutions": "* See the Debugger in the Twilio Console for more information. If you repeatedly receive this error, please contact Twilio Support.",
    "description": "Twilio experienced an unexpected internal error in attempting to deliver an User-Defined Message event to the Voice SDK client.",
    "date_created": "2022-08-18T21:39:35Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32701,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Voice User-Defined Message: Invalid Content-Type",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInvalid `Content-Type` in the `POST` request to the UserDefinedMessage Resource. Only `application/json` is supported.\n\n### Possible causes\n\n- Value of `Content-Type` in the `POST` request to the UserDefinedMessage Resource is not as expected, or there is no `Content-Type` header in the request.\n\n### Possible solutions\n\n- Make sure that `Content-Type` Header is included in the `POST` request to the UserDefinedMessage Resource and the value of the `Content-Type` Header is `application/json`.\n",
    "causes": "* Value of `Content-Type` in the `POST` request to the UserDefinedMessage Resource is not as expected, or there is no `Content-Type` header in the request.",
    "solutions": "* Make sure that `Content-Type` Header is included in the `POST` request to the UserDefinedMessage Resource and the value of the `Content-Type` Header is `application/json`.",
    "description": "Invalid `Content-Type` in the `POST` request to the UserDefinedMessage Resource. Only `application/json` is supported.",
    "date_created": "2022-08-18T21:48:15Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32702,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Voice User-Defined Message: Invalid Content",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInvalid content in the `POST` request to the UserDefinedMessage Resource. Only data in JSON format is supported.\n\n### Possible causes\n\n- Content data in the `POST` request to the UserDefinedMessage Resource is not as expected, or there is no content in the request.\n\n### Possible solutions\n\n- Make sure to include content data in JSON format in the `POST` request to the UserDefinedMessage Resource.\n",
    "causes": "* Content data in the `POST` request to the UserDefinedMessage Resource is not as expected, or there is no content in the request.",
    "solutions": "* Make sure to include content data in JSON format in the `POST` request to the UserDefinedMessage Resource.",
    "description": "Invalid content in the `POST` request to the UserDefinedMessage Resource. Only data in JSON format is supported.",
    "date_created": "2022-08-18T21:49:44Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32703,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Voice User-Defined Message: Content body exceeded max length",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe content body in the Voice User-Defined Message request exceeds the maximum allowed length of 10000 characters.\n\n### Possible causes\n\n- The content body in the Voice `POST` request to the UserDefinedMessage.Resource exceeds the maximum allowed length of 10000 characters.\n\n### Possible solutions\n\n- Make sure that the content body in the request does not exceed the maximum.length.\n",
    "causes": "* The content body in the Voice `POST` request to the UserDefinedMessage.Resource exceeds the maximum allowed length of 10000 characters.",
    "solutions": "* Make sure that the content body in the request does not exceed the maximum.length.",
    "description": "The content body in the Voice User-Defined Message request exceeds the maximum allowed length of 10000 characters.",
    "date_created": "2022-08-18T21:50:48Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32710,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Voice User-Defined Message: Subscription Callback Internal Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio experienced an unexpected internal error in attempting to deliver an User-Defined Message event to the callback URL provided in the Voice User-Defined Message Subscription request.\n\n### Possible causes\n\n- An error occurred during communication with Twilio internal services.\n\n### Possible solutions\n\n- See the Debugger in the Twilio Console for further information. If you repeatedly receive this error, please contact Twilio Support.\n",
    "causes": "* An error occurred during communication with Twilio internal services.",
    "solutions": "* See the Debugger in the Twilio Console for further information. If you repeatedly receive this error, please contact Twilio Support.",
    "description": "Twilio experienced an unexpected internal error in attempting to deliver an User-Defined Message event to the callback URL provided in the Voice User-Defined Message Subscription request.",
    "date_created": "2022-08-18T21:52:18Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32711,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Voice User-Defined Message: Request to subscription callback URL encountered error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio received an error response when attempting to send a User-Defined Message event to the UserDefinedMessageSubscription callback URL.\n\n### Possible causes\n\n- The UserDefinedMessageSubscription callback URL is incorrect.\n- Your endpoint at the UserDefinedMessageSubscription callback URL was not responding or responded with a 400- or 500-level HTTP status code.\n\n### Possible solutions\n\n- Make sure that the UserDefinedMessageSubscription callback URL is correct.\n- Make sure that your endpoint at the UserDefinedMessageSubscription callback URL can successfully receive and respond to requests with 200-level HTTP status codes.\n",
    "causes": "* The UserDefinedMessageSubscription callback URL is incorrect.\n* Your endpoint at the UserDefinedMessageSubscription callback URL was not responding or responded with a 400- or 500-level HTTP status code.",
    "solutions": "* Make sure that the UserDefinedMessageSubscription callback URL is correct.\n* Make sure that your endpoint at the UserDefinedMessageSubscription callback URL can successfully receive and respond to requests with 200-level HTTP status codes.",
    "description": "Twilio received an error response when attempting to send a User-Defined Message event to the UserDefinedMessageSubscription callback URL.",
    "date_created": "2022-08-18T21:55:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32800,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Provisioning Failure",
    "secondary_message": "Provisioning has failed for Branded Calling/Voice Integrity.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nProvisioning has failed with the carrier.\n\n### Possible causes\n\nKYC information submitted may have been rejected by the vendor.\n\n### Possible solutions\n\nReach out to Twilio Customer Support.\n",
    "causes": "KYC information submitted may have been rejected by the vendor.",
    "solutions": "Reach out to Twilio Customer Support.",
    "description": "Provisioning has failed with the carrier.",
    "date_created": "2025-05-05T21:38:18Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 32801,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Branded Calling caller profile failure",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio submitted the caller profile for your Branded Calling registration, and branding couldn't be enabled. The caller profile is the display name, and the call reason if you provided one, that appears on your outbound calls.\n\n### Possible causes\n\n- The display name, call reason, or business details were rejected during review.\n- The rejection happened on the carrier side and isn't related to the details you submitted.\n\n### Possible solutions\n\n- Check the display name, call reason, and business details on your registration. If any of them need correcting, update them and submit the registration again.\n- If the details are correct and the error continues, contact [Twilio Support](https://help.twilio.com/).\n",
    "causes": "* The display name, call reason, or business details were rejected during review.\n* The rejection happened on the carrier side and isn't related to the details you submitted.",
    "solutions": "* Check the display name, call reason, and business details on your registration. If any of them need correcting, update them and submit the registration again.\n* If the details are correct and the error continues, contact [Twilio Support](https://help.twilio.com/).",
    "description": "Twilio submitted the caller profile for your Branded Calling registration, and branding couldn't be enabled. The caller profile is the display name, and the call reason if you provided one, that appears on your outbound calls.",
    "date_created": "2026-10-20T15:17:15-07:00",
    "last_updated": "2026-10-20T15:17:15-07:00"
  },
  {
    "code": 32802,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Branded Calling feature enablement failure",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio asked the carrier to enable Branded Calling for your account, and the carrier didn't complete the request.\n\n### Possible causes\n\nThe carrier didn't enable Branded Calling for your account. This isn't caused by the display name, call reason, or logo you submitted.\n\n### Possible solutions\n\nThere's nothing to change on your registration. Twilio follows up with the carrier. To ask about the status, contact [Twilio Support](https://help.twilio.com/).\n",
    "causes": "The carrier didn't enable Branded Calling for your account. This isn't caused by the display name, call reason, or logo you submitted.",
    "solutions": "There's nothing to change on your registration. Twilio follows up with the carrier. To ask about the status, contact [Twilio Support](https://help.twilio.com/).",
    "description": "Twilio asked the carrier to enable Branded Calling for your account, and the carrier didn't complete the request.",
    "date_created": "2026-10-20T15:17:15-07:00",
    "last_updated": "2026-10-20T15:17:15-07:00"
  },
  {
    "code": 32803,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Branded Calling phone number attachment failure",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio tried to attach a phone number to your Branded Calling registration, and the request couldn't be completed. This error applies to one phone number. The rest of your registration may not be affected.\n\n### Possible causes\n\n- The carrier didn't enable Branded Calling for the phone number.\n- The phone number is already registered to a different Branded Calling registration.\n\n### Possible solutions\n\n- Check that the phone number isn't already part of another Branded Calling registration.\n- If the error continues, contact [Twilio Support](https://help.twilio.com/) and include the phone number.\n",
    "causes": "* The carrier didn't enable Branded Calling for the phone number.\n* The phone number is already registered to a different Branded Calling registration.",
    "solutions": "* Check that the phone number isn't already part of another Branded Calling registration.\n* If the error continues, contact [Twilio Support](https://help.twilio.com/) and include the phone number.",
    "description": "Twilio tried to attach a phone number to your Branded Calling registration, and the request couldn't be completed. This error applies to one phone number. The rest of your registration may not be affected.",
    "date_created": "2026-10-20T15:17:15-07:00",
    "last_updated": "2026-10-20T15:17:15-07:00"
  },
  {
    "code": 32804,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Branded Calling logo vetting failure",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio submitted the logo for your Branded Calling registration, and it was rejected. This error is about the logo only. The display name, call reason, and other details on your registration may be fine.\n\n### Possible causes\n\n- The logo doesn't meet the carriers' requirements for Branded Calling images.\n- The logo doesn't clearly represent the business you registered.\n\n### Possible solutions\n\n- Submit a different logo that meets the carriers' requirements and represents your business, then submit the registration again.\n- If the error continues, contact [Twilio Support](https://help.twilio.com/).\n",
    "causes": "* The logo doesn't meet the carriers' requirements for Branded Calling images.\n* The logo doesn't clearly represent the business you registered.",
    "solutions": "* Submit a different logo that meets the carriers' requirements and represents your business, then submit the registration again.\n* If the error continues, contact [Twilio Support](https://help.twilio.com/).",
    "description": "Twilio submitted the logo for your Branded Calling registration, and it was rejected. This error is about the logo only. The display name, call reason, and other details on your registration may be fine.",
    "date_created": "2026-10-20T15:17:15-07:00",
    "last_updated": "2026-10-20T15:17:15-07:00"
  },
  {
    "code": 32805,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Branded Calling logo provisioning failure for T-Mobile and Verizon",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio submitted the logo for your Branded Calling registration, and it couldn't be provisioned for the T-Mobile and Verizon networks. This error is about the logo only. The display name, call reason, and other details on your registration may be fine.\n\n### Possible causes\n\n- The logo wasn't accepted when it was provisioned with the carriers.\n- The failure happened on the carrier side and isn't related to the logo you submitted.\n\n### Possible solutions\n\n- Submit the registration again. If the logo is the problem, submit a different one that meets the carriers' requirements for Branded Calling images.\n- If the error continues, contact [Twilio Support](https://help.twilio.com/).\n",
    "causes": "* The logo wasn't accepted when it was provisioned with the carriers.\n* The failure happened on the carrier side and isn't related to the logo you submitted.",
    "solutions": "* Submit the registration again. If the logo is the problem, submit a different one that meets the carriers' requirements for Branded Calling images.\n* If the error continues, contact [Twilio Support](https://help.twilio.com/).",
    "description": "Twilio submitted the logo for your Branded Calling registration, and it couldn't be provisioned for the T-Mobile and Verizon networks. This error is about the logo only. The display name, call reason, and other details on your registration may be fine.",
    "date_created": "2026-10-20T15:17:15-07:00",
    "last_updated": "2026-10-20T15:17:15-07:00"
  },
  {
    "code": 33000,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Generic Error",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nYour request has caused an error that is not further specified.\n\n### Possible causes\n\nAn unspecified error occurred while carrying out the request.\n\n### Possible solutions\n\nSee the [Debugger](https://www.twilio.com/console/debugger) in Console for further information. If this is a continuous experience, please contact Twilio Support.\n",
    "causes": "An unspecified error occurred while carrying out the request.",
    "solutions": "See the [Debugger](https://www.twilio.com/console/debugger) in Console for further information. If this is a continuous experience, please contact Twilio Support.",
    "description": "Your request has caused an error that is not further specified.",
    "date_created": "2020-09-15T11:10:50Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Service is unavailable\t",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when an IoT request reaches a service that is temporarily unavailable. This usually means the service itself, or a downstream dependency it relies on, could not process the request at that time.\n\n### Possible causes\n\n- The Twilio IoT service handling the request is experiencing a temporary outage or degraded performance.\n- A downstream service that your request depends on is temporarily unavailable.\n- An active incident or a scheduled maintenance window is affecting the service or region handling your request.\n\n### Possible solutions\n\n- Retry the request after a short delay. This error is temporary and may clear once the service recovers.\n- If you retry automatically, use exponential backoff so you do not send a burst of repeated requests while the service is recovering.\n- Check the Twilio status page to confirm whether there is an active incident, degraded service, or scheduled maintenance affecting the platform.\n- Create an Alarm for this specific error code so you can detect repeated failures quickly.\n- If the error continues after the status page shows normal service, capture the `Twilio-Request-Id` response header and contact Support.\n\n#### Additional resources\n\n- [API best practices](/docs/usage/rest-api-best-practices)\n- [Alarms](/docs/usage/troubleshooting/alarms)\n- [Checking Twilio Service and API Status with the Status Page](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page)\n",
    "causes": "* The Twilio IoT service handling the request is experiencing a temporary outage or degraded performance.\n* A downstream service that your request depends on is temporarily unavailable.\n* An active incident or a scheduled maintenance window is affecting the service or region handling your request.",
    "solutions": "* Retry the request after a short delay. This error is temporary and may clear once the service recovers.\n* If you retry automatically, use exponential backoff so you do not send a burst of repeated requests while the service is recovering.\n* Check the Twilio status page to confirm whether there is an active incident, degraded service, or scheduled maintenance affecting the platform.\n* Create an Alarm for this specific error code so you can detect repeated failures quickly.\n* If the error continues after the status page shows normal service, capture the `Twilio-Request-Id` response header and contact Support.",
    "description": "Twilio returns this error when an IoT request reaches a service that is temporarily unavailable. This usually means the service itself, or a downstream dependency it relies on, could not process the request at that time.",
    "date_created": "2020-09-15T11:12:25Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 33010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conflicting update",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever an update is requested while another update is already in progress.\n\n### Possible causes\n\n- You cannot change a SIM's status or its Rate Plan while another update is already in progress.\n\n### Possible solutions\n\n- Verify that there is not an update already in progress for the SIM. If an update is in progress, the SIM's status will be either `scheduled` or `updating` and you will need to wait for it to finish before you can make additional updates to the SIM's status or Rate Plan.\n",
    "causes": "* You cannot change a SIM's status or its Rate Plan while another update is already in progress.",
    "solutions": "* Verify that there is not an update already in progress for the SIM. If an update is in progress, the SIM's status will be either `scheduled` or `updating` and you will need to wait for it to finish before you can make additional updates to the SIM's status or Rate Plan.",
    "description": "Raised whenever an update is requested while another update is already in progress.",
    "date_created": "2020-09-15T11:13:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Parameter Value\t",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised when an invalid parameter is provided. Please refer to the [API docs](https://docs.korewireless.com/en-us/programmable-wireless) for more details.\n\n### Possible causes\n\n- Your request contained invalid parameters. Please refer to the actual error response to get more details.\n- While removing the Rate Plan of a SIM, your SIM must not be in status `active` or `ready`.\n- While updating the Rate Plan of a SIM, you cannot move from NB-Annual to NB-developer.\n- While updating the Rate Plan of a SIM, you can only move the Rate Plan to a different Data Limit Strategy while your SIM is `new` or `deactivated`.\n- While updating the Rate Plan of a SIM, Narrowband SIMs cannot be paired with a non-narrowband enabled Rate Plan, or vice versa.\n- While creating or updating a Rate Plan, `UniqueName` is invalid.\n- While creating a Rate Plan, the limits (e.g. `DataLimit`, `NationalRoamingDataLimit`, `InternationalRoamingDataLimit`) you defined are out of range.\n\n### Possible solutions\n\n- While removing the Rate Plan from a SIM, ensure the SIM is neither in status `ready` nor `active`.\n- While updating the Rate Plan of a SIM, ensure that the SIM is in status `new` or `deactivated` while moving the SIM to a Rate Plan with a different Data Limit Strategy.\n- While updating the Rate Plan of a SIM, ensure that a Narrowband SIM has a narrowband-enabled Rate Plan, or a non-narrowband SIM has a corresponding Rate Plan.\n- While creating or updating a Rate Plan, ensure `UniqueName` has a different format than a Rate Plan SID, has a maximum length of 64 characters and does not exist yet.\n- While creating a Rate Plan, ensure that the limits (e.g. `DataLimit`, `NationalRoamingDataLimit`, `InternationalRoamingDataLimit`) are equal or between `0` and `2000000` (2TB).\n",
    "causes": "* Your request contained invalid parameters. Please refer to the actual error response to get more details.\n* While removing the Rate Plan of a SIM, your SIM must not be in status `active` or `ready`.\n* While updating the Rate Plan of a SIM, you cannot move from NB-Annual to NB-developer.\n* While updating the Rate Plan of a SIM, you can only move the Rate Plan to a different Data Limit Strategy while your SIM is `new` or `deactivated`.\n* While updating the Rate Plan of a SIM, Narrowband SIMs cannot be paired with a non-narrowband enabled Rate Plan, or vice versa.\n* While creating or updating a Rate Plan, `UniqueName` is invalid.\n* While creating a Rate Plan, the limits (e.g. `DataLimit`, `NationalRoamingDataLimit`, `InternationalRoamingDataLimit`) you defined are out of range.",
    "solutions": "* While removing the Rate Plan from a SIM, ensure the SIM is neither in status `ready` nor `active`.\n* While updating the Rate Plan of a SIM, ensure that the SIM is in status `new` or `deactivated` while moving the SIM to a Rate Plan with a different Data Limit Strategy.\n* While updating the Rate Plan of a SIM, ensure that a Narrowband SIM has a narrowband-enabled Rate Plan, or a non-narrowband SIM has a corresponding Rate Plan.\n* While creating or updating a Rate Plan, ensure `UniqueName` has a different format than a Rate Plan SID, has a maximum length of 64 characters and does not exist yet.\n* While creating a Rate Plan, ensure that the limits (e.g. `DataLimit`, `NationalRoamingDataLimit`, `InternationalRoamingDataLimit`) are equal or between `0` and `2000000` (2TB).",
    "description": "Raised when an invalid parameter is provided. Please refer to the [API docs](https://docs.korewireless.com/en-us/programmable-wireless) for more details.",
    "date_created": "2020-09-15T11:14:35Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Parameter missing",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever a required parameter was not passed with the request. The error object's detail field will indicate which parameter was not provided.\n\n### Possible causes\n\n- While sending a Command, you did not indicate the `Sim` to send it to.\n- While transferring a SIM to another Account, you need to provide a new Rate Plan present in the target Account or remove the current Rate Plan if the SIM to move is currently assigned to a Rate Plan.\n- While transferring a SIM to another Account, you cannot transfer a SIM in status `ready`.\n\n### Possible solutions\n\n- While sending a Command, ensure `Sim` parameter is provided.\n- While transferring a SIM to another Account, ensure a `RatePlan` is provided that present in the target Account.\n- While transferring a SIM to another Account, ensure the SIM to transfer is not in status `ready`.\n",
    "causes": "* While sending a Command, you did not indicate the `Sim` to send it to.\n* While transferring a SIM to another Account, you need to provide a new Rate Plan present in the target Account or remove the current Rate Plan if the SIM to move is currently assigned to a Rate Plan.\n* While transferring a SIM to another Account, you cannot transfer a SIM in status `ready`.",
    "solutions": "* While sending a Command, ensure `Sim` parameter is provided.\n* While transferring a SIM to another Account, ensure a `RatePlan` is provided that present in the target Account.\n* While transferring a SIM to another Account, ensure the SIM to transfer is not in status `ready`.",
    "description": "Raised whenever a required parameter was not passed with the request. The error object's detail field will indicate which parameter was not provided.",
    "date_created": "2020-09-15T11:16:29Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Paging information invalid",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever an invalid value for pagination while listing resources is provided.\n\n### Possible causes\n\n- You provided Invalid values for pagination requests.\n\n### Possible solutions\n\n- Ensure that `Page` is a positive integer.\n- Ensure that `PageSize` is a positive integer and not greater than 1000.\n- Ensure that `PageToken` is valid as provided by a previous request.\n",
    "causes": "* You provided Invalid values for pagination requests.",
    "solutions": "* Ensure that `Page` is a positive integer.\n* Ensure that `PageSize` is a positive integer and not greater than 1000.\n* Ensure that `PageToken` is valid as provided by a previous request.",
    "description": "Raised whenever an invalid value for pagination while listing resources is provided.",
    "date_created": "2020-09-15T11:17:27Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33104,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Configuration incomplete",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever the configuration for a given resource is incomplete.\n\n### Possible causes\n\n- While activating a SIM, your request was rejected because the SIM is not associated with a Rate Plan.\n- While sending a Command, your request was rejected because SIM is not properly configured (e.g. the SIM is not in status `active`).\n\n### Possible solutions\n\n- While activating a SIM, ensure the SIM is associated with a proper Rate Plan.\n- While sending a Command, ensure the given `sim` is in status `ready` or `active`, and paired with a SIM.\n",
    "causes": "* While activating a SIM, your request was rejected because the SIM is not associated with a Rate Plan.\n* While sending a Command, your request was rejected because SIM is not properly configured (e.g. the SIM is not in status `active`).",
    "solutions": "* While activating a SIM, ensure the SIM is associated with a proper Rate Plan.\n* While sending a Command, ensure the given `sim` is in status `ready` or `active`, and paired with a SIM.",
    "description": "Raised whenever the configuration for a given resource is incomplete.",
    "date_created": "2020-09-15T11:18:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33105,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transition invalid",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever the SIM cannot be transitioned to the requested status.\n\n### Possible causes\n\n- While activating a SIM, your request was rejected because the SIM you are trying to activate is not compatible with the Rate Plan.\n- While changing a SIM's status, your request was rejected because the requested Status change is invalid.\n\n### Possible solutions\n\n- While activating a SIM, ensure that the SIM is compatible with the Rate Plan, e.g. the Rate Plan specifies international roaming for data but the SIM does not support it.\n- While changing a SIM's status, ensure that the Status transition is valid. Read more about [Status Values](https://docs.korewireless.com/en-us/programmable-wireless).\n",
    "causes": "* While activating a SIM, your request was rejected because the SIM you are trying to activate is not compatible with the Rate Plan.\n* While changing a SIM's status, your request was rejected because the requested Status change is invalid.",
    "solutions": "* While activating a SIM, ensure that the SIM is compatible with the Rate Plan, e.g. the Rate Plan specifies international roaming for data but the SIM does not support it.\n* While changing a SIM's status, ensure that the Status transition is valid. Read more about [Status Values](https://docs.korewireless.com/en-us/programmable-wireless).",
    "description": "Raised whenever the SIM cannot be transitioned to the requested status.",
    "date_created": "2020-09-15T11:19:24Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33107,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIM not found",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever the given SIM is not found.\n\n### Possible causes\n\n- While sending a Command, your request was rejected because the SIM you provided was not found.\n\n### Possible solutions\n\n- While sending a Command, ensure the SIM exists.\n",
    "causes": "* While sending a Command, your request was rejected because the SIM you provided was not found.",
    "solutions": "* While sending a Command, ensure the SIM exists.",
    "description": "Raised whenever the given SIM is not found.",
    "date_created": "2020-09-15T11:20:09Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33108,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rate Plan not found",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever the given Rate Plan is not found.\n\n### Possible causes\n\n- While updating a SIM's Rate Plan, your request was rejected because the Rate Plan was not found.\n- While transferring a SIM to another Account, your request was rejected because the given Rate Plan was not found in the target Account.\n\n### Possible solutions\n\n- While updating a SIM's Rate Plan, ensure the provided `RatePlan` exists on your Account.\n- While transferring a SIM to another Account, ensure the provided `RatePlan` is present in the target Account.\n",
    "causes": "* While updating a SIM's Rate Plan, your request was rejected because the Rate Plan was not found.\n* While transferring a SIM to another Account, your request was rejected because the given Rate Plan was not found in the target Account.",
    "solutions": "* While updating a SIM's Rate Plan, ensure the provided `RatePlan` exists on your Account.\n* While transferring a SIM to another Account, ensure the provided `RatePlan` is present in the target Account.",
    "description": "Raised whenever the given Rate Plan is not found.",
    "date_created": "2020-09-15T11:20:54Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33111,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Command exceeded max length",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever a Command from your SIM exceeds the maximum length of 160 characters. As a result the Command is truncated but still delivered to the target Callback URL.\n\n### Possible causes\n\n- The Command from your SIM in text mode exceeded the maximum length of 160 characters.\n\n### Possible solutions\n\n- Ensure that Commands in text mode do not exceed the maximum length.\n",
    "causes": "* The Command from your SIM in text mode exceeded the maximum length of 160 characters.",
    "solutions": "* Ensure that Commands in text mode do not exceed the maximum length.",
    "description": "Raised whenever a Command from your SIM exceeds the maximum length of 160 characters. As a result the Command is truncated but still delivered to the target Callback URL.",
    "date_created": "2020-09-15T11:21:37Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33118,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Number of Commands exceeded",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever there are too many Commands queued for an individual SIM.\n\n### Possible causes\n\n- While sending a Command, your Command was rejected because there are already more than 100 commands queued for your individual Narrowband SIM.\n\n### Possible solutions\n\n- While sending a Command, ensure there are less than 100 commands queued for an individual Narrowband SIM.\n",
    "causes": "* While sending a Command, your Command was rejected because there are already more than 100 commands queued for your individual Narrowband SIM.",
    "solutions": "* While sending a Command, ensure there are less than 100 commands queued for an individual Narrowband SIM.",
    "description": "Raised whenever there are too many Commands queued for an individual SIM.",
    "date_created": "2020-09-15T11:22:28Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33119,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIM connectivity reset not allowed",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever a SIM connectivity reset is requested but not permitted.\n\n### Possible causes\n\n- This operation is temporarily unavailable because the downstream carrier is undergoing maintenance and not accepting requests.\n- Your SIM either does not support this operation or is not in a status where it can connect to a cellular network.\n\n### Possible solutions\n\n- Try again later if there is an ongoing maintenance.\n- Verify the SIM is not a Narrowband SIM.\n- Ensure the SIM is either in status `ready` or `active`.\n",
    "causes": "* This operation is temporarily unavailable because the downstream carrier is undergoing maintenance and not accepting requests.\n* Your SIM either does not support this operation or is not in a status where it can connect to a cellular network.",
    "solutions": "* Try again later if there is an ongoing maintenance.\n* Verify the SIM is not a Narrowband SIM.\n* Ensure the SIM is either in status `ready` or `active`.",
    "description": "Raised whenever a SIM connectivity reset is requested but not permitted.",
    "date_created": "2020-09-15T11:23:17Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33120,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SIM connectivity reset in progress",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever a SIM connectivity reset is in progress while another SIM connectivity reset is requested.\n\n### Possible causes\n\n- The SIM you requested has already a connectivity reset in progress which must complete before resetting again.\n\n### Possible solutions\n\n- Try again later and ensure the SIM's `ResetStatus` is not `resetting`.\n",
    "causes": "* The SIM you requested has already a connectivity reset in progress which must complete before resetting again.",
    "solutions": "* Try again later and ensure the SIM's `ResetStatus` is not `resetting`.",
    "description": "Raised whenever a SIM connectivity reset is in progress while another SIM connectivity reset is requested.",
    "date_created": "2020-09-15T11:23:57Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33121,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Parameter Combination",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever a request contains conflicting parameters.\n\n### Possible causes\n\n- While updating your SIM, the request was rejected because you cannot update `Status` and `ResetStatus` simultaneously.\n- Updating a SIM's status to `suspended` and removing its Rate Plan is not permitted.\n\n### Possible solutions\n\n- While updating a SIM, ensure not to update `Status` and `ResetStatus` within the same request.\n- While updating a SIM, you cannot simultaneously update its `Status` to `suspended` and remove its Rate Plan.\n",
    "causes": "* While updating your SIM, the request was rejected because you cannot update `Status` and `ResetStatus` simultaneously.\n* Updating a SIM's status to `suspended` and removing its Rate Plan is not permitted.",
    "solutions": "* While updating a SIM, ensure not to update `Status` and `ResetStatus` within the same request.\n* While updating a SIM, you cannot simultaneously update its `Status` to `suspended` and remove its Rate Plan.",
    "description": "Raised whenever a request contains conflicting parameters.",
    "date_created": "2020-09-15T11:24:41Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33122,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rate Plan Is Not Allowed",
    "secondary_message": "Cannot activate a SIM on a Rate Plan with deprecated Data Metering.",
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nCannot activate a SIM on a Rate Plan with deprecated Data Metering.\n\n### Possible causes\n\nSIM update request was rejected because the SIM cannot be activated on a Rate Plan with deprecated Data Metering.\n\n### Possible solutions\n\nConsider using a Rate Plan with `payg` Data Metering.\n",
    "causes": "SIM update request was rejected because the SIM cannot be activated on a Rate Plan with deprecated Data Metering.",
    "solutions": "Consider using a Rate Plan with `payg` Data Metering.",
    "description": "Cannot activate a SIM on a Rate Plan with deprecated Data Metering.",
    "date_created": "2022-09-30T11:01:55Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unauthorized",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever the requested operation is not permitted.\n\n### Possible causes\n\n- Your Account has been suspended and an asynchronous request has been canceled.\n- While sending Commands to your SIM, your Command was rejected by its Rate Plan.\n- While transferring your SIM to another Account, your request was rejected because the SIM must be `new` and the new Account must either be the requesting Account or a Subaccount of the requesting Account.\n\n### Possible solutions\n\n- While sending a Command, ensure the Rate Plan associated to the given SIM has Commands enabled.\n- Contact Twilio Support to help with the SIM transfer.\n",
    "causes": "* Your Account has been suspended and an asynchronous request has been canceled.\n* While sending Commands to your SIM, your Command was rejected by its Rate Plan.\n* While transferring your SIM to another Account, your request was rejected because the SIM must be `new` and the new Account must either be the requesting Account or a Subaccount of the requesting Account.",
    "solutions": "* While sending a Command, ensure the Rate Plan associated to the given SIM has Commands enabled.\n* Contact Twilio Support to help with the SIM transfer.",
    "description": "Raised whenever the requested operation is not permitted.",
    "date_created": "2020-09-15T11:25:20Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 33203,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Messaging not allowed",
    "secondary_message": null,
    "product": "Programmable Wireless",
    "products_used": [
      "iot"
    ],
    "docs": "\n## Description\n\nRaised whenever a Command from your SIM is received but not permitted.\n\n### Possible causes\n\n- The SIM that sent the Command, is not in status `ready` or `active`.\n- The associated Rate Plan of the SIM does not have commands enabled.\n- Breakout Commands from your SIMs are only permitted for Narrowband SIMs.\n\n### Possible solutions\n\n- While sending Commands from your SIM, verify that the SIM is either in status `ready` or `active`.\n- While sending Commands from your SIM, ensure that the associated Rate Plan of the SIM has commands enabled.\n",
    "causes": "* The SIM that sent the Command, is not in status `ready` or `active`.\n* The associated Rate Plan of the SIM does not have commands enabled.\n* Breakout Commands from your SIMs are only permitted for Narrowband SIMs.",
    "solutions": "* While sending Commands from your SIM, verify that the SIM is either in status `ready` or `active`.\n* While sending Commands from your SIM, ensure that the associated Rate Plan of the SIM has commands enabled.",
    "description": "Raised whenever a Command from your SIM is received but not permitted.",
    "date_created": "2020-09-15T11:26:30Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 34002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Callee Busy",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nTwilio received a busy indication from the destination when attempting to complete a voice call. The called party was already on another call or the destination network reported the callee as unavailable because the line was busy.\n\n### Possible causes\n\n- The destination phone number is currently in use\n- The destination carrier returned a busy response for the call attempt\n- The called device or PBX rejected the call with a busy status\n- Call forwarding or downstream routing sent the call to a busy endpoint\n\n### Possible solutions\n\n- Retry the call later when the destination is available\n- Confirm that you are dialing the correct phone number in valid `E.164` format\n- Review your call logs and call status to verify that the call ended with a busy result\n- If you call a SIP endpoint or PBX, verify that the destination is registered, reachable, and not configured to reject calls as busy\n- If the issue happens repeatedly for the same destination, contact the destination carrier or system administrator to confirm the line status and call routing\n\n#### Additional resources\n\n- [Call resource](/docs/voice/api/call-resource)\n- [Call status and callbacks](/docs/voice/api/call-resource#call-status-values)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n",
    "causes": "* The destination phone number is currently in use\n* The destination carrier returned a busy response for the call attempt\n* The called device or PBX rejected the call with a busy status\n* Call forwarding or downstream routing sent the call to a busy endpoint",
    "solutions": "* Retry the call later when the destination is available\n* Confirm that you are dialing the correct phone number in valid `E.164` format\n* Review your call logs and call status to verify that the call ended with a busy result\n* If you call a SIP endpoint or PBX, verify that the destination is registered, reachable, and not configured to reject calls as busy\n* If the issue happens repeatedly for the same destination, contact the destination carrier or system administrator to confirm the line status and call routing",
    "description": "Twilio received a busy indication from the destination when attempting to complete a voice call. The called party was already on another call or the destination network reported the callee as unavailable because the line was busy.",
    "date_created": "2017-09-15T19:46:00Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 34003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Callee did not answer",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThis error indicates that Twilio attempted to connect the call, but the called party did not answer before the ringing timeout expired. In Programmable Voice, this outcome maps to the terminal call status `no-answer`. For outbound Calls API requests, `Timeout` defaults to 60 seconds. For outbound `<Dial>` calls, `timeout` defaults to 30 seconds.\n\n### Possible causes\n\n- The called party did not pick up before the configured timeout was reached.\n- Your application set a short `Timeout` value when creating the call through the Calls API.\n- Your TwiML used a short `<Dial timeout>` value, which causes Twilio to end the dialing attempt with `DialCallStatus` set to `no-answer` when the limit is reached.\n- The destination rejected the call. Twilio can report a rejected call as `no-answer`.\n\n### Possible solutions\n\n- Increase the Calls API `Timeout` value if the destination needs more time to answer. The maximum supported value is 600 seconds.\n- Increase `<Dial timeout>` if you are dialing from TwiML. The minimum value is 5 seconds, the maximum is 600 seconds, and some call flows include an additional 5-second buffer.\n- Track call progress with `StatusCallbackEvent` and review the terminal `CallStatus` and `SipResponseCode` values to confirm whether the call timed out or was rejected.\n- Review the call in Call Logs or Voice Insights to confirm that Twilio received and processed the request, then compare successful and unsuccessful calls to identify whether the issue is isolated to specific destinations. ([help.twilio.com](https://help.twilio.com/articles/360022103694-Troubleshooting-Twilio-Programmable-Voice-Calls-that-Don-t-Connect))\n\n#### Additional resources\n\n- [Call resource](/docs/voice/api/call-resource)\n- [TwiML Voice: `<Dial>`](/docs/voice/twiml/dial)\n- [Troubleshooting Twilio Programmable Voice Calls that Don't Connect](https://help.twilio.com/articles/360022103694-Troubleshooting-Twilio-Programmable-Voice-Calls-that-Don-t-Connect)\n",
    "causes": "* The called party did not pick up before the configured timeout was reached.\n* Your application set a short `Timeout` value when creating the call through the Calls API.\n* Your TwiML used a short `<Dial timeout>` value, which causes Twilio to end the dialing attempt with `DialCallStatus` set to `no-answer` when the limit is reached.\n* The destination rejected the call. Twilio can report a rejected call as `no-answer`.",
    "solutions": "* Increase the Calls API `Timeout` value if the destination needs more time to answer. The maximum supported value is 600 seconds.\n* Increase `<Dial timeout>` if you are dialing from TwiML. The minimum value is 5 seconds, the maximum is 600 seconds, and some call flows include an additional 5-second buffer.\n* Track call progress with `StatusCallbackEvent` and review the terminal `CallStatus` and `SipResponseCode` values to confirm whether the call timed out or was rejected.\n* Review the call in Call Logs or Voice Insights to confirm that Twilio received and processed the request, then compare successful and unsuccessful calls to identify whether the issue is isolated to specific destinations. ([help.twilio.com](https://help.twilio.com/articles/360022103694-Troubleshooting-Twilio-Programmable-Voice-Calls-that-Don-t-Connect))",
    "description": "This error indicates that Twilio attempted to connect the call, but the called party did not answer before the ringing timeout expired. In Programmable Voice, this outcome maps to the terminal call status `no-answer`. For outbound Calls API requests, `Timeout` defaults to 60 seconds. For outbound `<Dial>` calls, `timeout` defaults to 30 seconds.",
    "date_created": "2017-09-15T19:46:33Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 34004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Error during fax transmission",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nEither poor connection quality to the recipient or the recipient terminated the fax early.\n",
    "causes": null,
    "solutions": null,
    "description": "Either poor connection quality to the recipient or the recipient terminated the fax early.",
    "date_created": "2017-09-15T19:46:44Z",
    "last_updated": "2020-08-04T10:00:17.043Z"
  },
  {
    "code": 34005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Programmable Fax is no longer available",
    "secondary_message": "Twilio ended support for Programmable Fax for all accounts on December 17, 2021",
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe Programmable Fax API by Twilio is no longer supported\n\n### Possible causes\n\nYou are trying to use the Programmable Fax API which is no longer available\n\n### Possible solutions\n\nPlease consult the migration guide on: https://support.twilio.com/hc/en-us/articles/223136667-Fax-Support-on-Twilio\n",
    "causes": "You are trying to use the Programmable Fax API which is no longer available",
    "solutions": "Please consult the migration guide on: https://support.twilio.com/hc/en-us/articles/223136667-Fax-Support-on-Twilio",
    "description": "The Programmable Fax API by Twilio is no longer supported",
    "date_created": "2021-12-10T22:28:37Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 34106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No Fax TwiML action specified",
    "secondary_message": "Missing Receive verb in TwiML",
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nMissing [Receive](https://help.twilio.com/hc/en-us/articles/1260800821230-Programmable-Fax-Migration-Guide-for-Documo-mFax#receive) verb in received TwiML.\n\nSimplest implementation is `<Receive />`\n",
    "causes": null,
    "solutions": null,
    "description": "Missing [Receive](https://help.twilio.com/hc/en-us/articles/1260800821230-Programmable-Fax-Migration-Guide-for-Documo-mFax#receive) verb in received TwiML. Simplest implementation is `<Receive />`",
    "date_created": "2017-09-08T04:30:59Z",
    "last_updated": "2020-08-04T10:00:17.134Z"
  },
  {
    "code": 34108,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Other End Incompatible",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe receiving fax machine answered, but then rejected your incoming media.\n\nTry reducing the size of your pdf or sending at a lower quality or resolution. Make sure your pdf is a standard size (US Letter, A4) and portrait-oriented.\n",
    "causes": null,
    "solutions": null,
    "description": "The receiving fax machine answered, but then rejected your incoming media. Try reducing the size of your pdf or sending at a lower quality or resolution. Make sure your pdf is a standard size (US Letter, A4) and portrait-oriented.",
    "date_created": "2017-09-15T19:47:56Z",
    "last_updated": "2020-08-04T10:00:17.02Z"
  },
  {
    "code": 35111,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SendAt timestamp is missing",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create a scheduled message with `ScheduleType` set to `fixed` and do not include `SendAt`. Scheduled messages require both parameters, and `SendAt` must be a timestamp in ISO-8601 format.\n\n### Possible causes\n\n- You set `ScheduleType` to `fixed` but left out `SendAt`.\n- You tried to schedule a message without providing the send time Twilio needs to create the scheduled `Message` resource.\n\n### Possible solutions\n\n- Include `SendAt` whenever you set `ScheduleType` to `fixed`. Use an ISO-8601 timestamp.\n- Make sure the scheduled send time is between 15 minutes and 35 days from the time Twilio receives the `POST` request.\n- Create the message with a `MessagingServiceSid` when you schedule delivery. Without it, Twilio treats the request as non-scheduled.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Messaging API Overview](/docs/messaging/api)\n",
    "causes": "* You set `ScheduleType` to `fixed` but left out `SendAt`.\n* You tried to schedule a message without providing the send time Twilio needs to create the scheduled `Message` resource.",
    "solutions": "* Include `SendAt` whenever you set `ScheduleType` to `fixed`. Use an ISO-8601 timestamp.\n* Make sure the scheduled send time is between 15 minutes and 35 days from the time Twilio receives the `POST` request.\n* Create the message with a `MessagingServiceSid` when you schedule delivery. Without it, Twilio treats the request as non-scheduled.",
    "description": "This error occurs when you try to create a scheduled message with `ScheduleType` set to `fixed` and do not include `SendAt`. Scheduled messages require both parameters, and `SendAt` must be a timestamp in ISO-8601 format.",
    "date_created": "2020-10-09T04:53:21Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 35114,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Scheduling does not support this timestamp",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `SendAt` value for a scheduled message is outside the supported scheduling window or is not accepted as a valid timestamp. Use an ISO 8601 UTC timestamp, and make sure Twilio receives the request between 15 minutes and 35 days before the scheduled send time.\n\n### Possible causes\n\n- The `SendAt` value is less than 15 minutes in the future when Twilio receives the request.\n- The `SendAt` value is more than 35 days in the future.\n- The `SendAt` value is not formatted as a valid ISO 8601 UTC timestamp such as `2026-05-15T14:30:00Z`.\n- Your application calculates `SendAt` too close to the minimum scheduling window, and the request reaches Twilio after that minimum has passed.\n- Your application converts the scheduled time incorrectly because of a time zone or UTC formatting issue.\n\n### Possible solutions\n\n- Format `SendAt` as an ISO 8601 timestamp in UTC using the pattern `YYYY-MM-DDTHH:MM:SSZ`.\n- Update the scheduled time so Twilio receives the request at least 15 minutes before `SendAt`.\n- Update the scheduled time so `SendAt` is no more than 35 days in the future.\n- Add a buffer beyond the minimum window if you are scheduling close to the earliest supported time.\n- Generate and validate the timestamp in UTC before you send the API request.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Message resource API reference](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The `SendAt` value is less than 15 minutes in the future when Twilio receives the request.\n* The `SendAt` value is more than 35 days in the future.\n* The `SendAt` value is not formatted as a valid ISO 8601 UTC timestamp such as `2026-05-15T14:30:00Z`.\n* Your application calculates `SendAt` too close to the minimum scheduling window, and the request reaches Twilio after that minimum has passed.\n* Your application converts the scheduled time incorrectly because of a time zone or UTC formatting issue.",
    "solutions": "* Format `SendAt` as an ISO 8601 timestamp in UTC using the pattern `YYYY-MM-DDTHH:MM:SSZ`.\n* Update the scheduled time so Twilio receives the request at least 15 minutes before `SendAt`.\n* Update the scheduled time so `SendAt` is no more than 35 days in the future.\n* Add a buffer beyond the minimum window if you are scheduling close to the earliest supported time.\n* Generate and validate the timestamp in UTC before you send the API request.",
    "description": "This error occurs when the `SendAt` value for a scheduled message is outside the supported scheduling window or is not accepted as a valid timestamp. Use an ISO 8601 UTC timestamp, and make sure Twilio receives the request between 15 minutes and 35 days before the scheduled send time.",
    "date_created": "2020-10-07T18:38:38Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 35115,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Scheduling does not support this timestamp",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when `SendAt` falls outside the supported window for a scheduled message. Set `SendAt` to a UTC ISO-8601 timestamp that is more than 5 minutes (300 seconds) from the request time and no more than 35 days in the future.\n\n### Possible causes\n\n- `SendAt` is less than 5 minutes from when Twilio receives the request.\n- `SendAt` is more than 35 days in the future.\n- You created the timestamp too close to the minimum lead time, and application delay pushed it out of range before Twilio received the `POST` request.\n- `SendAt` is not in the expected `YYYY-MM-DDTHH:MM:SSZ` format in UTC.\n\n### Possible solutions\n\n- Update `SendAt` so it is more than 5 minutes (300 seconds) from the request time and no more than 35 days in the future.\n- Send `SendAt` as a UTC ISO-8601 timestamp in `YYYY-MM-DDTHH:MM:SSZ` format.\n- If you schedule close to the minimum allowed time, add buffer before you send the API request so Twilio receives it within the supported window.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging API Overview](/docs/messaging/api)\n",
    "causes": "* `SendAt` is less than 5 minutes from when Twilio receives the request.\n* `SendAt` is more than 35 days in the future.\n* You created the timestamp too close to the minimum lead time, and application delay pushed it out of range before Twilio received the `POST` request.\n* `SendAt` is not in the expected `YYYY-MM-DDTHH:MM:SSZ` format in UTC.",
    "solutions": "* Update `SendAt` so it is more than 5 minutes (300 seconds) from the request time and no more than 35 days in the future.\n* Send `SendAt` as a UTC ISO-8601 timestamp in `YYYY-MM-DDTHH:MM:SSZ` format.\n* If you schedule close to the minimum allowed time, add buffer before you send the API request so Twilio receives it within the supported window.",
    "description": "This error occurs when `SendAt` falls outside the supported window for a scheduled message. Set `SendAt` to a UTC ISO-8601 timestamp that is more than 5 minutes (300 seconds) from the request time and no more than 35 days in the future.",
    "date_created": "2023-07-27T15:07:19Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 35117,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Scheduling does not support this timestamp",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create a scheduled message with a `SendAt` value outside the supported scheduling window. Set `SendAt` in ISO 8601 format and choose a time between 15 minutes and 35 days in the future.\n\n### Possible causes\n\n- `SendAt` is less than 15 minutes from the time Twilio receives the `POST` request.\n- `SendAt` is more than 35 days in the future.\n- Your application scheduled the message too close to the minimum window, so processing time caused the request to arrive after the requested time fell inside the 15-minute limit.\n\n### Possible solutions\n\n- Update `SendAt` so the scheduled time is at least 15 minutes ahead and no more than 35 days ahead when Twilio receives the request.\n- Format `SendAt` as an ISO 8601 timestamp, for example `2021-11-30T20:36:27Z`.\n- If you schedule messages near the minimum window, add a small buffer so request and network processing time do not push the timestamp out of range.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Message Resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* `SendAt` is less than 15 minutes from the time Twilio receives the `POST` request.\n* `SendAt` is more than 35 days in the future.\n* Your application scheduled the message too close to the minimum window, so processing time caused the request to arrive after the requested time fell inside the 15-minute limit.",
    "solutions": "* Update `SendAt` so the scheduled time is at least 15 minutes ahead and no more than 35 days ahead when Twilio receives the request.\n* Format `SendAt` as an ISO 8601 timestamp, for example `2021-11-30T20:36:27Z`.\n* If you schedule messages near the minimum window, add a small buffer so request and network processing time do not push the timestamp out of range.",
    "description": "This error occurs when you create a scheduled message with a `SendAt` value outside the supported scheduling window. Set `SendAt` in ISO 8601 format and choose a time between 15 minutes and 35 days in the future.",
    "date_created": "2023-07-27T15:15:56Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 35118,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "MessagingServiceSid is required to schedule a message",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create a scheduled Message without `MessagingServiceSid`. To schedule a message, send the request through a Messaging Service and include the scheduling parameters in that request. If you want to use a specific sender, you can also include `From`, but the request still requires `MessagingServiceSid`.\n\n### Possible causes\n\n- Your request included `ScheduleType` and `SendAt`, but did not include `MessagingServiceSid`.\n- Your application tried to schedule the message by passing only `From`. Scheduled messages require a Messaging Service even when you want to use a specific sender.\n- Your application passed an empty, misspelled, or malformed `MessagingServiceSid` value. A valid Messaging Service SID starts with `MG`.\n\n### Possible solutions\n\n- Add `MessagingServiceSid` to the API request whenever you set `ScheduleType` and `SendAt`.\n- Create or select a Messaging Service, then resend the request using that service's `MessagingServiceSid`.\n- If you also pass `From`, make sure that sender is part of the Messaging Service's Sender Pool.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Messaging Services](/docs/messaging/services)\n- [Message resource API reference](/docs/messaging/api/message-resource)\n",
    "causes": "* Your request included `ScheduleType` and `SendAt`, but did not include `MessagingServiceSid`.\n* Your application tried to schedule the message by passing only `From`. Scheduled messages require a Messaging Service even when you want to use a specific sender.\n* Your application passed an empty, misspelled, or malformed `MessagingServiceSid` value. A valid Messaging Service SID starts with `MG`.",
    "solutions": "* Add `MessagingServiceSid` to the API request whenever you set `ScheduleType` and `SendAt`.\n* Create or select a Messaging Service, then resend the request using that service's `MessagingServiceSid`.\n* If you also pass `From`, make sure that sender is part of the Messaging Service's Sender Pool.",
    "description": "This error occurs when you try to create a scheduled Message without `MessagingServiceSid`. To schedule a message, send the request through a Messaging Service and include the scheduling parameters in that request. If you want to use a specific sender, you can also include `From`, but the request still requires `MessagingServiceSid`.",
    "date_created": "2022-06-18T01:07:28Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 35125,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum limit reached in the account for scheduling messages",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create another scheduled message after your Account or Subaccount has reached Twilio's limit for scheduled messages. Twilio supports up to 1,000,000 scheduled messages at one time for each Account or Subaccount, and a Subaccount's limit does not consume the parent Account's allocation.\n\n### Possible causes\n\n- Your Account or Subaccount already has the maximum number of messages in `scheduled` status.\n- Previously scheduled messages have not yet reached their `SendAt` time, so they are still counted against the scheduling limit.\n- Messages you no longer need were not canceled, so they are still using scheduled-message capacity.\n\n### Possible solutions\n\n- Wait for existing scheduled messages to be sent. When scheduled messages are sent, capacity becomes available for new scheduling requests.\n- Cancel scheduled messages you no longer need by updating the Message resource and setting `Status` to `canceled`.\n- If you manage separate workloads with Subaccounts, schedule those messages in the appropriate Subaccount because each Subaccount has its own allocation.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Message resource API reference](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* Your Account or Subaccount already has the maximum number of messages in `scheduled` status.\n* Previously scheduled messages have not yet reached their `SendAt` time, so they are still counted against the scheduling limit.\n* Messages you no longer need were not canceled, so they are still using scheduled-message capacity.",
    "solutions": "* Wait for existing scheduled messages to be sent. When scheduled messages are sent, capacity becomes available for new scheduling requests.\n* Cancel scheduled messages you no longer need by updating the Message resource and setting `Status` to `canceled`.\n* If you manage separate workloads with Subaccounts, schedule those messages in the appropriate Subaccount because each Subaccount has its own allocation.",
    "description": "This error occurs when you try to create another scheduled message after your Account or Subaccount has reached Twilio's limit for scheduled messages. Twilio supports up to 1,000,000 scheduled messages at one time for each Account or Subaccount, and a Subaccount's limit does not consume the parent Account's allocation.",
    "date_created": "2021-11-22T23:10:25Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 35126,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The ScheduleType value provided is not supported for this channel",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to schedule a Programmable Messaging message with a `ScheduleType` value that the selected channel does not accept. For scheduled messages, Twilio accepts only `fixed`, and scheduled messaging is supported for SMS, MMS, RCS, and WhatsApp.\n\n### Possible causes\n\n- You set `ScheduleType` to a value other than `fixed`.\n- You tried to schedule a message on a channel that does not support Message Scheduling. Scheduled messaging is supported for SMS, MMS, RCS, and WhatsApp.\n- You submitted a scheduling request without `MessagingServiceSid`. To create a scheduled message, include `MessagingServiceSid` with `ScheduleType` and `SendAt`.\n\n### Possible solutions\n\n- Set `ScheduleType` to `fixed`.\n- Send the message through a supported channel if you need scheduling. Use SMS, MMS, RCS, or WhatsApp for scheduled sends.\n- Include `MessagingServiceSid` and a valid `SendAt` value when you create the message. `SendAt` must be an ISO-8601 timestamp between 15 minutes and 35 days in the future.\n- If you are sending on a channel that does not support scheduling, remove the scheduling parameters and send the message immediately.\n\n#### Additional resources\n\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Get started with Messaging Services](/docs/messaging/tutorials/send-messages-with-messaging-services)\n",
    "causes": "* You set `ScheduleType` to a value other than `fixed`.\n* You tried to schedule a message on a channel that does not support Message Scheduling. Scheduled messaging is supported for SMS, MMS, RCS, and WhatsApp.\n* You submitted a scheduling request without `MessagingServiceSid`. To create a scheduled message, include `MessagingServiceSid` with `ScheduleType` and `SendAt`.",
    "solutions": "* Set `ScheduleType` to `fixed`.\n* Send the message through a supported channel if you need scheduling. Use SMS, MMS, RCS, or WhatsApp for scheduled sends.\n* Include `MessagingServiceSid` and a valid `SendAt` value when you create the message. `SendAt` must be an ISO-8601 timestamp between 15 minutes and 35 days in the future.\n* If you are sending on a channel that does not support scheduling, remove the scheduling parameters and send the message immediately.",
    "description": "This error occurs when you try to schedule a Programmable Messaging message with a `ScheduleType` value that the selected channel does not accept. For scheduled messages, Twilio accepts only `fixed`, and scheduled messaging is supported for SMS, MMS, RCS, and WhatsApp.",
    "date_created": "2021-12-08T23:30:53Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 35127,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Messages' Body and ContentVariables cannot be provided together",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when your request sends free-form message text in `Body` and template variable substitutions in `ContentVariables` at the same time. To send a content template, use `ContentSid` and optional `ContentVariables`. Do not include `Body` in the same request.\n\n### Possible causes\n\n- Your request included both `Body` and `ContentVariables`.\n- You intended to send a content template, but your request still included `Body` instead of using `ContentSid` for the message content.\n- Your application mixes a standard Messaging API send with a content template send in the same request.\n\n### Possible solutions\n\n- If you are sending a standard text or MMS message, remove `ContentVariables` and send the request with `Body` and optional `MediaUrl`.\n- If you are sending a content template, remove `Body`, include `ContentSid`, and add `ContentVariables` only when you need to substitute template placeholders.\n- If your request includes `ContentVariables`, make sure it is part of a template-based send that uses `ContentSid`.\n\n#### Additional resources\n\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Content API Quickstart](/docs/content/create-and-send-your-first-content-api-template)\n",
    "causes": "* Your request included both `Body` and `ContentVariables`.\n* You intended to send a content template, but your request still included `Body` instead of using `ContentSid` for the message content.\n* Your application mixes a standard Messaging API send with a content template send in the same request.",
    "solutions": "* If you are sending a standard text or MMS message, remove `ContentVariables` and send the request with `Body` and optional `MediaUrl`.\n* If you are sending a content template, remove `Body`, include `ContentSid`, and add `ContentVariables` only when you need to substitute template placeholders.\n* If your request includes `ContentVariables`, make sure it is part of a template-based send that uses `ContentSid`.",
    "description": "This error occurs when your request sends free-form message text in `Body` and template variable substitutions in `ContentVariables` at the same time. To send a content template, use `ContentSid` and optional `ContentVariables`. Do not include `Body` in the same request.",
    "date_created": "2023-05-30T22:18:35Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 35132,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Bulk : Provided Attributes JSON is not valid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a bulk messaging request includes `Attributes` that are not valid JSON.\n\n### Possible causes\n\n- The `Attributes` value is not valid JSON.\n- The attribute payload is malformed or does not match the expected format. This is an inference based on the error text.\n\n### Possible solutions\n\n- Update the `Attributes` value so it is valid JSON before you resend the request.\n- Check each attribute for the expected format and correct any malformed fields.\n\n#### Additional resources\n\n- [Messaging API overview](/docs/messaging/api)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* The `Attributes` value is not valid JSON.\n* The attribute payload is malformed or does not match the expected format. This is an inference based on the error text.",
    "solutions": "* Update the `Attributes` value so it is valid JSON before you resend the request.\n* Check each attribute for the expected format and correct any malformed fields.",
    "description": "Twilio returns this error when a bulk messaging request includes `Attributes` that are not valid JSON.",
    "date_created": "2023-05-30T21:25:11Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 35133,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid 'Messages' array provided in the request",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when the `Messages` array in your request is invalid. The array is either empty or contains more items than the endpoint accepts. Twilio returns request validation details in the API response when a request body is invalid.\n\n### Possible causes\n\n- Your request sent an empty `Messages` array.\n- Your request included more `Messages` items than Twilio accepts in a single request.\n- Your application built the request payload incorrectly, so the final `Messages` array sent to Twilio did not contain the expected items.\n\n### Possible solutions\n\n- Add at least one valid item to the `Messages` array before you resend the request.\n- If you are sending a large batch, split it into smaller requests so the `Messages` array stays within the supported limit for a single request.\n- Log and inspect the final request body your application sends to Twilio so you can confirm the `Messages` array is present and contains the expected number of items. Twilio includes validation details for invalid requests in the API response.\n- If you are using Twilio Communications API for bulk or personalized messaging, review the request structure and the endpoint limits before resending the request.\n\n#### Additional resources\n\n- [Twilio Communications API](/docs/bulk-messaging)\n- [Personalization](/docs/bulk-messaging/personalization)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Your request sent an empty `Messages` array.\n* Your request included more `Messages` items than Twilio accepts in a single request.\n* Your application built the request payload incorrectly, so the final `Messages` array sent to Twilio did not contain the expected items.",
    "solutions": "* Add at least one valid item to the `Messages` array before you resend the request.\n* If you are sending a large batch, split it into smaller requests so the `Messages` array stays within the supported limit for a single request.\n* Log and inspect the final request body your application sends to Twilio so you can confirm the `Messages` array is present and contains the expected number of items. Twilio includes validation details for invalid requests in the API response.\n* If you are using Twilio Communications API for bulk or personalized messaging, review the request structure and the endpoint limits before resending the request.",
    "description": "This error appears when the `Messages` array in your request is invalid. The array is either empty or contains more items than the endpoint accepts. Twilio returns request validation details in the API response when a request body is invalid.",
    "date_created": "2023-05-30T22:22:42Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 35134,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "`Messages` array contains duplicate `To` numbers.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when your request includes the same destination more than once in the Messages array. Bulk messaging requests use a recipient list, and each recipient entry must be unique.\n\n### Possible causes\n\n- The same phone number or channel address appears more than once in the request payload.\n- Recipient values were not normalized to a consistent format before you built the request, which can cause the same destination to be submitted more than once.\n\n### Possible solutions\n\n- Remove duplicate destinations before you send the request. Ensure each recipient appears only once in the Messages array.\n- Normalize phone numbers to E.164 or use a consistent channel address format before you compare and deduplicate recipients.\n- Validate and format phone numbers before sending so you can deduplicate against a single canonical value. Use Lookup if you need to confirm the format of each number.\n\n#### Additional resources\n\n- [Getting started with the Twilio Communications API](/docs/bulk-messaging/getting-started)\n- [Formatting and Validation](/docs/lookup/v2-api/formatting-validation)\n- [Formatting International Phone Numbers](https://help.twilio.com/articles/223183008-Formatting-International-Phone-Numbers)\n",
    "causes": "* The same phone number or channel address appears more than once in the request payload.\n* Recipient values were not normalized to a consistent format before you built the request, which can cause the same destination to be submitted more than once.",
    "solutions": "* Remove duplicate destinations before you send the request. Ensure each recipient appears only once in the Messages array.\n* Normalize phone numbers to E.164 or use a consistent channel address format before you compare and deduplicate recipients.\n* Validate and format phone numbers before sending so you can deduplicate against a single canonical value. Use Lookup if you need to confirm the format of each number.",
    "description": "This error occurs when your request includes the same destination more than once in the Messages array. Bulk messaging requests use a recipient list, and each recipient entry must be unique.",
    "date_created": "2023-07-17T00:58:05Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 36001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast SID Not Found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Broadcast SID in your request wasn't found. Provide a non-empty Broadcast SID that matches an existing Broadcast resource. Broadcast SIDs are 34 alphanumeric characters prefixed with `BC`.\n\n### Possible causes\n\n- You didn't include a Broadcast SID in the request.\n- The Broadcast SID does not exist.\n- The value is not a valid Broadcast SID format. Broadcast SIDs use a `BC` prefix and 34 alphanumeric characters.\n\n### Possible solutions\n\n- Send a non-empty Broadcast SID.\n- Verify that the Broadcast SID is 34 alphanumeric characters and starts with `BC`.\n- Use the SID for an existing broadcast before you retry the request.\n\n#### Additional resources\n\n- [Messaging API overview](/docs/messaging/api)\n- [What is a SID?](/docs/glossary/what-is-a-sid)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* You didn't include a Broadcast SID in the request.\n* The Broadcast SID does not exist.\n* The value is not a valid Broadcast SID format. Broadcast SIDs use a `BC` prefix and 34 alphanumeric characters.",
    "solutions": "* Send a non-empty Broadcast SID.\n* Verify that the Broadcast SID is 34 alphanumeric characters and starts with `BC`.\n* Use the SID for an existing broadcast before you retry the request.",
    "description": "The Broadcast SID in your request wasn't found. Provide a non-empty Broadcast SID that matches an existing Broadcast resource. Broadcast SIDs are 34 alphanumeric characters prefixed with `BC`.",
    "date_created": "2023-12-15T21:47:15Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 36002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast Request Limit Reached",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when your account has reached the limit for Broadcast requests and can't create another Broadcast.\n\n### Possible causes\n\n- Your account already has the maximum allowed number of Broadcast requests.\n\n### Possible solutions\n\n- Wait for your existing Broadcasts to process before you create another Broadcast.\n- If any existing Broadcasts are in `PENDING_UPLOAD`, upload the required file so those Broadcasts can resume processing.\n- If you regularly send high-volume traffic, organize your senders and configuration with a Messaging Service so you can more effectively manage messaging at scale.\n\n#### Additional resources\n\n- [Messaging Services](/docs/messaging/services)\n- [Build to scale: queueing and latency on Twilio](/docs/messaging/guides/scaling-queueing-latency)\n- [Understanding Twilio Rate Limits and Message Queues](https://help.twilio.com/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues)\n",
    "causes": "* Your account already has the maximum allowed number of Broadcast requests.",
    "solutions": "* Wait for your existing Broadcasts to process before you create another Broadcast.\n* If any existing Broadcasts are in `PENDING_UPLOAD`, upload the required file so those Broadcasts can resume processing.\n* If you regularly send high-volume traffic, organize your senders and configuration with a Messaging Service so you can more effectively manage messaging at scale.",
    "description": "This error occurs when your account has reached the limit for Broadcast requests and can't create another Broadcast.",
    "date_created": "2023-12-15T21:48:35Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 36003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast Upload File Size Exceeded",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe Broadcast upload file is larger than the allowed 25 MB limit.\n\n### Possible causes\n\nYou attempted to upload a file that is greater than 25 MB.\n\n### Possible solutions\n\nUpload a file that is less than 25 MB.\n\n#### Additional resources\n\n- [Programmable Messaging](/docs/messaging)\n- [Messaging API Overview](/docs/messaging/api)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "You attempted to upload a file that is greater than 25 MB.",
    "solutions": "Upload a file that is less than 25 MB.",
    "description": "The Broadcast upload file is larger than the allowed 25 MB limit.",
    "date_created": "2023-12-15T21:50:01Z",
    "last_updated": "2026-04-22T23:41:07-05:00"
  },
  {
    "code": 36004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Error Retrieving File",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nTwilio returns this error when it cannot retrieve the Broadcast upload file from your request body. For Broadcast uploads, attach a GZIP-compressed JSON file as the value of the `file` key. Twilio APIs accept `multipart/form-data` for requests that include file content.\n\n### Possible causes\n\n- The request body did not include a `file` key for the Broadcast upload.\n- The uploaded file was sent under a different field name, so Twilio could not find the required `file` key.\n- The request body format prevented Twilio from reading the uploaded file. Twilio APIs expect `multipart/form-data` or `application/x-www-form-urlencoded`, and file uploads should be sent in `multipart/form-data`.\n\n### Possible solutions\n\n- Send the upload as a `.json.gz` file and attach it as the value of the `file` key in the Broadcast Upload request body.\n- Make sure the request uses `multipart/form-data` so the uploaded file is sent as a retrievable form part.\n- If the request still fails, review the Error Logs or Messaging logs in Console to inspect the failing request and confirm which upload Twilio received.\n\n#### Additional resources\n- [Programmable Messaging](/docs/messaging)\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The request body did not include a `file` key for the Broadcast upload.\n* The uploaded file was sent under a different field name, so Twilio could not find the required `file` key.\n* The request body format prevented Twilio from reading the uploaded file. Twilio APIs expect `multipart/form-data` or `application/x-www-form-urlencoded`, and file uploads should be sent in `multipart/form-data`.",
    "solutions": "* Send the upload as a `.json.gz` file and attach it as the value of the `file` key in the Broadcast Upload request body.\n* Make sure the request uses `multipart/form-data` so the uploaded file is sent as a retrievable form part.\n* If the request still fails, review the Error Logs or Messaging logs in Console to inspect the failing request and confirm which upload Twilio received.",
    "description": "Twilio returns this error when it cannot retrieve the Broadcast upload file from your request body. For Broadcast uploads, attach a GZIP-compressed JSON file as the value of the `file` key. Twilio APIs accept `multipart/form-data` for requests that include file content.",
    "date_created": "2023-12-15T21:51:10Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 36005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast File Type Invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you upload a Broadcast file that is not a `.json.gz` file. For Broadcast uploads, provide a GZIP-compressed JSON file and attach it as the value of the `file` key in the request body.\n\n### Possible causes\n\n- You uploaded a file that is not a `.json.gz` file.\n- You uploaded JSON that was not GZIP-compressed.\n- You uploaded a compressed file in a format other than `.json.gz`.\n\n### Possible solutions\n\n- Create a GZIP-compressed JSON file and upload it with a `.json.gz` extension.\n- Attach the upload file as the value of the `file` key in the Broadcast Upload request body.\n- If the upload is rejected again, verify that the file is under 25 MB before retrying.\n- Review the request in Messaging logs or Error Logs to confirm which upload failed and what file was sent.\n\n#### Additional resources\n- [Programmable Messaging](/docs/messaging)\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* You uploaded a file that is not a `.json.gz` file.\n* You uploaded JSON that was not GZIP-compressed.\n* You uploaded a compressed file in a format other than `.json.gz`.",
    "solutions": "* Create a GZIP-compressed JSON file and upload it with a `.json.gz` extension.\n* Attach the upload file as the value of the `file` key in the Broadcast Upload request body.\n* If the upload is rejected again, verify that the file is under 25 MB before retrying.\n* Review the request in Messaging logs or Error Logs to confirm which upload failed and what file was sent.",
    "description": "This error occurs when you upload a Broadcast file that is not a `.json.gz` file. For Broadcast uploads, provide a GZIP-compressed JSON file and attach it as the value of the `file` key in the request body.",
    "date_created": "2023-12-15T21:53:10Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 36006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast Cannot Be Canceled",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you try to cancel a Broadcast that is already in a non-cancelable state. You can cancel a Broadcast only while it is still in progress. Twilio returns this error when the Broadcast status is `EXECUTION_COMPLETED`, `EXECUTION_FAILURE`, or `CANCELED`.\n\n### Possible causes\n\n- The Broadcast already completed execution successfully.\n- The Broadcast completed with a failure.\n- The Broadcast was already canceled.\n\n### Possible solutions\n\n- Check the current Broadcast status before you send the cancel request.\n- Cancel the Broadcast only while it is still in progress and not in `EXECUTION_COMPLETED`, `EXECUTION_FAILURE`, or `CANCELED`.\n- Verify that the Broadcast SID you provide belongs to the Broadcast you intend to cancel.\n- Review the failed request in the Console Debugger or Messaging error logs to confirm which Broadcast SID was used and what state it was in when the request failed.\n\n#### Additional resources\n- [Programmable Messaging](/docs/messaging)\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The Broadcast already completed execution successfully.\n* The Broadcast completed with a failure.\n* The Broadcast was already canceled.",
    "solutions": "* Check the current Broadcast status before you send the cancel request.\n* Cancel the Broadcast only while it is still in progress and not in `EXECUTION_COMPLETED`, `EXECUTION_FAILURE`, or `CANCELED`.\n* Verify that the Broadcast SID you provide belongs to the Broadcast you intend to cancel.\n* Review the failed request in the Console Debugger or Messaging error logs to confirm which Broadcast SID was used and what state it was in when the request failed.",
    "description": "This error occurs when you try to cancel a Broadcast that is already in a non-cancelable state. You can cancel a Broadcast only while it is still in progress. Twilio returns this error when the Broadcast status is `EXECUTION_COMPLETED`, `EXECUTION_FAILURE`, or `CANCELED`.",
    "date_created": "2023-12-15T21:54:14Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 36007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast Upload Status Check Failure",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you try to upload a file to a Broadcast that is not in the `PENDING_UPLOAD` state.\n\n### Possible causes\n\n- The Broadcast SID you provided belongs to a Broadcast that has already moved out of `PENDING_UPLOAD`.\n- The Broadcast is in one of these states instead: `UPLOADED`, `QUEUED`, `EXECUTING`, `EXECUTION_FAILURE`, `EXECUTION_COMPLETED`, `CANCELATION_REQUESTED`, or `CANCELED`.\n\n### Possible solutions\n\n- Check the Broadcast status before you upload the file.\n- Upload the file only to a Broadcast SID that is currently in `PENDING_UPLOAD`.\n- If you selected the wrong Broadcast SID, retry the upload with the correct Broadcast.\n\n#### Additional resources\n- [Twilio Bulk Messaging](/docs/bulk-messaging)\n- [Getting started with Twilio Bulk Messaging](/docs/bulk-messaging/getting-started)\n- [Troubleshooting Bulk Messaging](/docs/bulk-messaging/troubleshooting)\n",
    "causes": "* The Broadcast SID you provided belongs to a Broadcast that has already moved out of `PENDING_UPLOAD`.\n* The Broadcast is in one of these states instead: `UPLOADED`, `QUEUED`, `EXECUTING`, `EXECUTION_FAILURE`, `EXECUTION_COMPLETED`, `CANCELATION_REQUESTED`, or `CANCELED`.",
    "solutions": "* Check the Broadcast status before you upload the file.\n* Upload the file only to a Broadcast SID that is currently in `PENDING_UPLOAD`.\n* If you selected the wrong Broadcast SID, retry the upload with the correct Broadcast.",
    "description": "This error occurs when you try to upload a file to a Broadcast that is not in the `PENDING_UPLOAD` state.",
    "date_created": "2024-01-04T23:14:38Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 36008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Page Token",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe `pageToken` query parameter is invalid.\n\nUse a valid Broadcast SID that is 34 alphanumeric characters long and starts with `BC`.\n\n### Possible causes\n\n- The `pageToken` value is shorter or longer than 34 characters.\n- The `pageToken` value contains non-alphanumeric characters.\n- The `pageToken` value does not start with `BC`.\n\n### Possible solutions\n\n- Send a `pageToken` value that is exactly 34 alphanumeric characters long.\n- Ensure the `pageToken` value starts with `BC`.\n- Remove any spaces, punctuation, or other non-alphanumeric characters from the `pageToken` value.\n- If you are paginating through results, pass the token exactly as returned by the previous response.\n\n#### Additional resources\n\n- [Operations resource](/docs/bulk-messaging/api/operation-resource)\n- [Operations and Message Tracking](/docs/bulk-messaging/operations-and-message-tracking)\n- [Getting started with Twilio Bulk Messaging](/docs/bulk-messaging/getting-started)\n",
    "causes": "* The `pageToken` value is shorter or longer than 34 characters.\n* The `pageToken` value contains non-alphanumeric characters.\n* The `pageToken` value does not start with `BC`.",
    "solutions": "* Send a `pageToken` value that is exactly 34 alphanumeric characters long.\n* Ensure the `pageToken` value starts with `BC`.\n* Remove any spaces, punctuation, or other non-alphanumeric characters from the `pageToken` value.\n* If you are paginating through results, pass the token exactly as returned by the previous response.",
    "description": "The `pageToken` query parameter is invalid. Use a valid Broadcast SID that is 34 alphanumeric characters long and starts with `BC`.",
    "date_created": "2024-03-04T21:37:42Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 36009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Stats for Broadcast SID Not Found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nTwilio returns this error when it cannot find stats for the Broadcast SID in your request.\n\n### Possible causes\n\n- The Broadcast SID is empty.\n- The Broadcast SID does not match an existing Broadcast.\n- Stats for the Broadcast are not available yet.\n\n### Possible solutions\n\n- Provide a non-empty Broadcast SID.\n- Confirm that you are using the exact Broadcast SID returned when you created the Broadcast.\n- Retry the request after the Broadcast has had time to generate stats.\n\n#### Additional resources\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n- [Messaging API Overview](/docs/messaging/api)\n- [Troubleshooting Twilio](/docs/usage/troubleshooting)\n",
    "causes": "* The Broadcast SID is empty.\n* The Broadcast SID does not match an existing Broadcast.\n* Stats for the Broadcast are not available yet.",
    "solutions": "* Provide a non-empty Broadcast SID.\n* Confirm that you are using the exact Broadcast SID returned when you created the Broadcast.\n* Retry the request after the Broadcast has had time to generate stats.",
    "description": "Twilio returns this error when it cannot find stats for the Broadcast SID in your request.",
    "date_created": "2024-08-06T19:22:34Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 37000,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Call permission not granted by consumer",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe business-initiated WhatsApp call failed because the consumer had not granted permission to initiate the call.\n\n### Possible causes\n\nThe business-initiated WhatsApp call was placed to the consumer without the necessary call permission being accepted.\n\n### Possible solutions\n\nEnsure that call permission has been requested and accepted before initiating a call with the consumer.\n",
    "causes": "The business-initiated WhatsApp call was placed to the consumer without the necessary call permission being accepted.",
    "solutions": "Ensure that call permission has been requested and accepted before initiating a call with the consumer.",
    "description": "The business-initiated WhatsApp call failed because the consumer had not granted permission to initiate the call.",
    "date_created": "2024-09-10T01:16:46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Outbound calls are not supported in this region",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe business-initiated WhatsApp call failed because it is not supported in the Twilio region.\n\n### Possible causes\n\nBusiness-initiated WhatsApp calls are not supported in all Twilio regions.\n\n### Possible solutions\n\nEnsure that a business-initiated WhatsApp call is placed in the supported Twilio Region.\n",
    "causes": "Business-initiated WhatsApp calls are not supported in all Twilio regions.",
    "solutions": "Ensure that a business-initiated WhatsApp call is placed in the supported Twilio Region.",
    "description": "The business-initiated WhatsApp call failed because it is not supported in the Twilio region.",
    "date_created": "2024-11-18T18:15:50Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Calling is not enabled on the business number",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe business-initiated WhatsApp call failed because WhatsApp Business Calling is not enabled on the From number. The From number of the business-initiated call should be your WhatsApp sender with the WhatsApp Business Calling enabled.\n\n### Possible causes\n\nWhatsApp Business Calling is not enabled on the From number.\n\n### Possible solutions\n\nConfigure your sender for WhatsApp Business Calling. Please see [how to configure your sender for WhatsApp Business Calling](/docs/voice/whatsapp-business-calling#configure-your-sender-for-whatsapp-business-calling) for details.\n",
    "causes": "WhatsApp Business Calling is not enabled on the From number.",
    "solutions": "Configure your sender for WhatsApp Business Calling. Please see [how to configure your sender for WhatsApp Business Calling](/docs/voice/whatsapp-business-calling#configure-your-sender-for-whatsapp-business-calling) for details.",
    "description": "The business-initiated WhatsApp call failed because WhatsApp Business Calling is not enabled on the From number. The From number of the business-initiated call should be your WhatsApp sender with the WhatsApp Business Calling enabled.",
    "date_created": "2025-06-09T14:12:36.168Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Duplicated call",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe business-initiated WhatsApp call failed because there is an ongoing call from the business number to the same consumer number.\n\n### Possible causes\n\nA call is already ongoing with the receiver.\n\n### Possible solutions\n\nTry again later when the ongoing call ends.\n",
    "causes": "A call is already ongoing with the receiver.",
    "solutions": "Try again later when the ongoing call ends.",
    "description": "The business-initiated WhatsApp call failed because there is an ongoing call from the business number to the same consumer number.",
    "date_created": "2025-06-09T14:15:11.46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Call rate limit exceeded",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nLimit reached for maximum calls that can be initiated by the business phone number.\n\n### Possible causes\n\nCall rate limit exceeded.\n\n### Possible solutions\n\nTry again later or reduce the frequency or amount of business-initiated calls.\n",
    "causes": "Call rate limit exceeded.",
    "solutions": "Try again later or reduce the frequency or amount of business-initiated calls.",
    "description": "Limit reached for maximum calls that can be initiated by the business phone number.",
    "date_created": "2025-06-09T14:16:37.066Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Could not change calling status on the WhatsApp Sender",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe update business number calling status failed because WhatsApp rejected it.\n\n### Possible causes\n\nThe Sender is offline\n\n### Possible solutions\n\nVerify the phone number status in the WhatsApp Manager.\n",
    "causes": "The Sender is offline",
    "solutions": "Verify the phone number status in the WhatsApp Manager.",
    "description": "The update business number calling status failed because WhatsApp rejected it.",
    "date_created": "2025-06-10T22:29:57.687Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Max business-initiated calls to this number in 24 hours reached",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when you attempt more than five connected business-initiated WhatsApp calls to the same number in a 24-hour period. Outbound WhatsApp calling requires call permission from the consumer, and once permission is granted you can place five calls per 24 hours for up to seven days before you must request permission again.\n\n### Possible causes\n\n- You already completed more than five connected business-initiated calls to the same number in the past 24 hours.\n- Your application kept placing or retrying outbound calls to the same user after permission was granted, which used the five-call allowance for that 24-hour period.\n\n### Possible solutions\n\n- Wait until the rolling 24-hour window has passed, then place the call again.\n- Reduce the frequency of business-initiated calls to the same number.\n- Track connected calls per destination number in your application and stop new attempts before you reach the five-call limit. This follows from the WhatsApp Business Calling restriction for business-initiated calls.\n- If the current permission window has expired after seven days, or if permission has been revoked, send a new `VOICE_CALL_REQUEST` permission request before placing another business-initiated call.\n\n#### Additional resources\n\n- [WhatsApp Business Calling](/docs/voice/whatsapp-business-calling)\n- [Call resource API](/docs/voice/api/call-resource)\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n",
    "causes": "* You already completed more than five connected business-initiated calls to the same number in the past 24 hours.\n* Your application kept placing or retrying outbound calls to the same user after permission was granted, which used the five-call allowance for that 24-hour period.",
    "solutions": "* Wait until the rolling 24-hour window has passed, then place the call again.\n* Reduce the frequency of business-initiated calls to the same number.\n* Track connected calls per destination number in your application and stop new attempts before you reach the five-call limit. This follows from the WhatsApp Business Calling restriction for business-initiated calls.\n* If the current permission window has expired after seven days, or if permission has been revoked, send a new `VOICE_CALL_REQUEST` permission request before placing another business-initiated call.",
    "description": "This error occurs when you attempt more than five connected business-initiated WhatsApp calls to the same number in a 24-hour period. Outbound WhatsApp calling requires call permission from the consumer, and once permission is granted you can place five calls per 24 hours for up to seven days before you must request permission again.",
    "date_created": "2025-07-01T23:21:44.897Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 37007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Business-initiated calling is not available in the country",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe business-initiated WhatsApp call failed because this feature is not available in the country associated with the From number's country code. To use business-initiated calling, the country code must be in the list of supported countries. For more information and the complete list of supported countries, please refer to [Meta's WhatsApp Business Calling API documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/calling#availability).\n\n### Possible causes\n\nBusiness-initiated calling is not available in the country.\n\n### Possible solutions\n\nPlease update the From or Caller ID to a WhatsApp phone number whose country code is included in Meta's list of supported countries.\n",
    "causes": "Business-initiated calling is not available in the country.",
    "solutions": "Please update the From or Caller ID to a WhatsApp phone number whose country code is included in Meta's list of supported countries.",
    "description": "The business-initiated WhatsApp call failed because this feature is not available in the country associated with the From number's country code. To use business-initiated calling, the country code must be in the list of supported countries. For more information and the complete list of supported countries, please refer to [Meta's WhatsApp Business Calling API documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/calling#availability).",
    "date_created": "2025-07-08T16:53:09.087Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Outbound call fails due to invalid from number",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe business-initiated WhatsApp call failed because the specified \"From\" number (or caller ID) is invalid. The \"From\" number (or caller ID) must be a registered WhatsApp Sender on the account making the call.\n\n### Possible causes\n\n- The \"From\" number (or caller ID) is not a registered WhatsApp Sender for your account.\n- An incorrect value was used in the \"From\" number (or caller ID).\n\n### Possible solutions\n\n- Verify that the \"From\" number (or caller ID) you specified matches a valid WhatsApp Sender registered to your account.\n- Ensure the value of the \"From\" (or caller ID) uses the correct format: It must start with \"whatsapp:\", followed by the registered WhatsApp Sender in the E.164 format (e.g., \"whatsapp:+14155551234\").\n",
    "causes": "* The \"From\" number (or caller ID) is not a registered WhatsApp Sender for your account.\n* An incorrect value was used in the \"From\" number (or caller ID).",
    "solutions": "* Verify that the \"From\" number (or caller ID) you specified matches a valid WhatsApp Sender registered to your account.\n* Ensure the value of the \"From\" (or caller ID) uses the correct format: It must start with \"whatsapp:\", followed by the registered WhatsApp Sender in the E.164 format (e.g., \"whatsapp:+14155551234\").",
    "description": "The business-initiated WhatsApp call failed because the specified \"From\" number (or caller ID) is invalid. The \"From\" number (or caller ID) must be a registered WhatsApp Sender on the account making the call.",
    "date_created": "2025-07-17T21:00:13.446Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Voice application not configured",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe user-initiated WhatsApp call failed because no voice application (TwiML application) is configured on the WhatsApp Sender.\n\n### Possible causes\n\nYour WhatsApp Sender does not have a voice application configured.\n\n### Possible solutions\n\nPlease configure a voice application on the WhatsApp Sender either in Console or using Twilio API. For more details, please refer to [Configure your sender for WhatsApp Business Calling](/docs/voice/whatsapp-business-calling#configure-your-sender-for-whatsapp-business-calling).\n",
    "causes": "Your WhatsApp Sender does not have a voice application configured.",
    "solutions": "Please configure a voice application on the WhatsApp Sender either in Console or using Twilio API. For more details, please refer to [Configure your sender for WhatsApp Business Calling](/docs/voice/whatsapp-business-calling#configure-your-sender-for-whatsapp-business-calling).",
    "description": "The user-initiated WhatsApp call failed because no voice application (TwiML application) is configured on the WhatsApp Sender.",
    "date_created": "2025-07-22T17:05:34.482Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Voice Call Permanent Permission Exists",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nCall permission request cannot be sent because a permanent permission has already been approved by the user for this business account phone number.\n\n### Possible causes\n\nCall permission request can't be sent because a permanent permission already exists.\n\n### Possible solutions\n\nSending a call permission request is not needed for this user at this time.\n",
    "causes": "Call permission request can't be sent because a permanent permission already exists.",
    "solutions": "Sending a call permission request is not needed for this user at this time.",
    "description": "Call permission request cannot be sent because a permanent permission has already been approved by the user for this business account phone number.",
    "date_created": "2026-02-12T23:02:13-08:00",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 37011,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Voice: Dialing out to PSTN or Teams is not allowed",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nFrom a WhatsApp inbound call, the customer cannot place an outbound call to PSTN or Teams numbers.\n\n### Possible causes\n\nDialing out to PSTN or Teams numbers from an inbound WhatsApp call is not allowed by Meta's policy.\n\n### Possible solutions\n\nDo not attempt to dial out to PSTN or Teams numbers from a WhatsApp inbound call.\n\n#### Additional resources\n\n- [WhatsApp Business Calling: Current restrictions to user-initiated calling](/docs/voice/whatsapp-business-calling#current-restrictions-to-user-initiated-calling)\n",
    "causes": "Dialing out to PSTN or Teams numbers from an inbound WhatsApp call is not allowed by Meta's policy.",
    "solutions": "Do not attempt to dial out to PSTN or Teams numbers from a WhatsApp inbound call.",
    "description": "From a WhatsApp inbound call, the customer cannot place an outbound call to PSTN or Teams numbers.",
    "date_created": "2026-08-05T11:41:26-07:00",
    "last_updated": "2026-08-05T11:41:26-07:00"
  },
  {
    "code": 38000,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Teams: Invalid To number",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe outbound call to a Teams number fails because the destination number is invalid. The destination Teams number must be provisioned in the account placing the call.\n\n### Possible causes\n\n- The destination Teams number might be provisioned in a different account.\n- The number might not be in the ready state. The number might be in uploading or released.\n\n### Possible solutions\n\n- Verify the destination number is a Teams number provisioned in the account placing the call.\n- Check the number's state in the connector configuration.\n",
    "causes": "* The destination Teams number might be provisioned in a different account.\n* The number might not be in the ready state. The number might be in uploading or released.",
    "solutions": "* Verify the destination number is a Teams number provisioned in the account placing the call.\n* Check the number's state in the connector configuration.",
    "description": "The outbound call to a Teams number fails because the destination number is invalid. The destination Teams number must be provisioned in the account placing the call.",
    "date_created": "2025-08-13T17:12:34.906Z",
    "last_updated": "2026-08-04T13:07:40-07:00"
  },
  {
    "code": 38001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Teams: Unassigned To number",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe outbound call to a Teams number fails because the destination number is provisioned but not assigned to a user yet.\n\n### Possible causes\n\n- The destination Teams number is not assigned to a user.\n\n### Possible solutions\n\n- Ask your Teams admin whether the number is assigned to a user.\n",
    "causes": "* The destination Teams number is not assigned to a user.",
    "solutions": "* Ask your Teams admin whether the number is assigned to a user.",
    "description": "The outbound call to a Teams number fails because the destination number is provisioned but not assigned to a user yet.",
    "date_created": "2026-08-04T13:07:40-07:00",
    "last_updated": "2026-08-04T13:07:40-07:00"
  },
  {
    "code": 40000,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Content-Type of 'application/json' not set",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You responded with a 200 HTTP response but did not provide a `Content-Type` header of 'application/json'\n\n### Possible solutions\n\n- Add `Content-Type` header of 'application/json'\n\n### Example\n\n```json\n{\n\t\"instruction\": \"accept\"\n}\n```\n\nwith no `Content-Type` header provided.\n",
    "causes": "* You responded with a 200 HTTP response but did not provide a `Content-Type` header of 'application/json'",
    "solutions": "* Add `Content-Type` header of 'application/json'",
    "description": "",
    "date_created": "2016-05-19T19:42:01Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40001,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Assignment Instruction response is not valid JSON. Ensure it is not escaped",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when TaskRouter receives an Assignment Instruction response that is not valid JSON. A common cause is returning a JSON string that has been escaped instead of returning a raw JSON object in the HTTP response body.\n\nTaskRouter expects your Assignment Callback or related instruction-generating endpoint to respond with properly formatted JSON. If the payload is double-encoded, escaped, malformed, or returned with unexpected formatting, TaskRouter cannot parse it and raises error `40001`.\n\n#### Example\n\n##### Valid JSON (Not Escaped)\n\n```json\n{\n  \"instruction\": \"call\",\n  \"from\": \"+15558675309\",\n  \"url\": \"http://example.com/agent_answer\",\n  \"status_callback_url\":\n    \"http://example.com/agent_answer_status_callback\"\n}\n```\n\n##### Invalid JSON (Escaped)\n\n```json\n{\\r\\n  \\\"instruction\\\": \\\"call\\\",\\r\\n  \\\"from\\\": \\\"+15558675309\\\",\\r\\n  \\\"url\\\": \\\"http:\\/\\/example.com\\/agent_answer\\\",   \\r\\n  \\\"status_callback_url\\\":\\r\\n    \\\"http:\\/\\/example.com\\/agent_answer_status_callback\\\"\\r\\n}\n```\n\n### Possible causes\n\n- Your application returns JSON as an escaped string instead of a JSON object.\n- The response body is being serialized twice before being sent.\n- Your web framework is wrapping the JSON payload in quotes.\n- The callback handler is returning text or HTML instead of JSON.\n- The response contains malformed JSON syntax, such as missing braces, commas, or quotes.\n- The endpoint is setting an unexpected response format or content type for the Assignment Instruction response.\n\n### Possible solutions\n\n- Return a raw JSON object in the HTTP response body, not a stringified or escaped JSON value.\n- Check your server code for double serialization, such as calling JSON encoding on data that has already been encoded.\n- Verify that your Assignment Callback response is valid JSON by testing the endpoint directly.\n- Confirm your application returns the expected `Content-Type` header, such as `application/json`, when sending Assignment Instructions.\n- Review framework-specific response helpers to ensure they serialize the payload only once.\n- Inspect logs or captured HTTP responses to confirm the response body matches the expected JSON structure.\n\n### Related resources\n\n- `/docs/taskrouter`\n- `/docs/taskrouter/api/task-assignment`\n- `/docs/taskrouter/quickstart`\n",
    "causes": "* Your application returns JSON as an escaped string instead of a JSON object.\n* The response body is being serialized twice before being sent.\n* Your web framework is wrapping the JSON payload in quotes.\n* The callback handler is returning text or HTML instead of JSON.\n* The response contains malformed JSON syntax, such as missing braces, commas, or quotes.\n* The endpoint is setting an unexpected response format or content type for the Assignment Instruction response.",
    "solutions": "* Return a raw JSON object in the HTTP response body, not a stringified or escaped JSON value.\n* Check your server code for double serialization, such as calling JSON encoding on data that has already been encoded.\n* Verify that your Assignment Callback response is valid JSON by testing the endpoint directly.\n* Confirm your application returns the expected `Content-Type` header, such as `application/json`, when sending Assignment Instructions.\n* Review framework-specific response helpers to ensure they serialize the payload only once.\n* Inspect logs or captured HTTP responses to confirm the response body matches the expected JSON structure.",
    "description": "This error occurs when TaskRouter receives an Assignment Instruction response that is not valid JSON. A common cause is returning a JSON string that has been escaped instead of returning a raw JSON object in the HTTP response body. TaskRouter expects your Assignment Callback or related instruction-generating endpoint to respond with properly formatted JSON. If the payload is double-encoded, escaped, malformed, or returned with unexpected formatting, TaskRouter cannot parse it and raises error `40001`.",
    "date_created": "2020-07-15T22:41:36Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 40005,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Assignment Callback response does not contain Instruction",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis warning occurs when TaskRouter receives a `200 OK` Assignment Callback response with a JSON body, but that body does not include the required `instruction` key. If you want TaskRouter to take immediate action on the Reservation, return a valid JSON object that includes `instruction`. If you want to handle the Reservation later, return an empty JSON document such as `{}` and update the Reservation through the Reservations API when you are ready.\n\n### Possible causes\n\n- Your Assignment Callback returned JSON that did not include the required `instruction` key.\n- Your application attempted to send an assignment instruction, such as `accept`, `reject`, `dequeue`, `call`, or `redirect`, but omitted the `instruction` field from the JSON response.\n- Your application intended to defer the decision and handle the Reservation asynchronously, but returned non-empty JSON instead of an empty JSON document such as `{}`.\n\n### Possible solutions\n\n- If you want TaskRouter to act immediately, return `Content-Type: application/json` and a valid JSON object that includes `instruction` with a supported value such as `accept`, `reject`, `dequeue`, `call`, or `redirect`.\n- If you want to process the Reservation asynchronously, return an empty JSON document such as `{}` with `200 OK`, then accept or reject the Reservation later through the Reservations API.\n- Verify that your Assignment Callback response body is valid JSON and includes `instruction` whenever you return an assignment instruction.\n\n#### Additional resources\n\n- [Handling Assignment Callbacks](/docs/taskrouter/handle-assignment-callbacks)\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n- [Lifecycle of a Task: Workflows and assignment](/docs/taskrouter/lifecycle-task-workflows-and-assignment)\n",
    "causes": "* Your Assignment Callback returned JSON that did not include the required `instruction` key.\n* Your application attempted to send an assignment instruction, such as `accept`, `reject`, `dequeue`, `call`, or `redirect`, but omitted the `instruction` field from the JSON response.\n* Your application intended to defer the decision and handle the Reservation asynchronously, but returned non-empty JSON instead of an empty JSON document such as `{}`.",
    "solutions": "* If you want TaskRouter to act immediately, return `Content-Type: application/json` and a valid JSON object that includes `instruction` with a supported value such as `accept`, `reject`, `dequeue`, `call`, or `redirect`.\n* If you want to process the Reservation asynchronously, return an empty JSON document such as `{}` with `200 OK`, then accept or reject the Reservation later through the Reservations API.\n* Verify that your Assignment Callback response body is valid JSON and includes `instruction` whenever you return an assignment instruction.",
    "description": "This warning occurs when TaskRouter receives a `200 OK` Assignment Callback response with a JSON body, but that body does not include the required `instruction` key. If you want TaskRouter to take immediate action on the Reservation, return a valid JSON object that includes `instruction`. If you want to handle the Reservation later, return an empty JSON document such as `{}` and update the Reservation through the Reservations API when you are ready.",
    "date_created": "2020-03-11T21:23:50Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 40100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TaskRouter->Reject",
    "secondary_message": "Your Reject instruction does not include a valid `activity_sid` parameter.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nYour Reject instruction does not include a valid `activity_sid` parameter.\n\n### Possible causes\n\n- You did not include an `activity_sid` parameter in your `reject` instruction.\n- You did include an `activity_sid` but it was invalid or no longer exists.\n\n### Possible solutions\n\n- Confirm a valid `ActivitySid` value is is being passed by your code into the request payload JSON's `activity_sid` parameter: `{ \"instruction\": \"reject\", \"activity_sid\": \"WA0123456789abcdef0123456789abcdef\" }`\n",
    "causes": "* You did not include an `activity_sid` parameter in your `reject` instruction.\n* You did include an `activity_sid` but it was invalid or no longer exists.",
    "solutions": "* Confirm a valid `ActivitySid` value is is being passed by your code into the request payload JSON's `activity_sid` parameter: `{ \"instruction\": \"reject\", \"activity_sid\": \"WA0123456789abcdef0123456789abcdef\" }`",
    "description": "Your Reject instruction does not include a valid `activity_sid` parameter.",
    "date_created": "2016-03-31T17:14:39Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40110,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Call",
    "secondary_message": "Call Instruction does not have a valid 'to' parameter provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You did not provide a \"to\" parameter on your 'call' instruction.\n- You provided an invalid format in your \"to\" field.\n\n### Possible solutions\n\n- Make certain \"to\" contains a valid phone number, client URI, or SIP URI.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"call\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"url\": \"https://example.com/twiml\"\r\n}\n```\n",
    "causes": "* You did not provide a \"to\" parameter on your 'call' instruction.\n* You provided an invalid format in your \"to\" field.",
    "solutions": "* Make certain \"to\" contains a valid phone number, client URI, or SIP URI.",
    "description": "",
    "date_created": "2016-03-31T17:14:40Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40111,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Call",
    "secondary_message": "Call Instruction does not have a valid 'from' parameter provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You did not provide a \"from\" parameter on your 'call' instruction.\n- You provided an invalid format in your \"from\" field.\n\n### Possible solutions\n\n- Make certain \"from\" contains a validated caller ID if you're dialing the PSTN.\n- Make certain \"from\" contains an acceptable caller field when connecting to client or SIP.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"call\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"url\": \"https://example.com/twiml\"\r\n}\n```\n",
    "causes": "* You did not provide a \"from\" parameter on your 'call' instruction.\n* You provided an invalid format in your \"from\" field.",
    "solutions": "* Make certain \"from\" contains a validated caller ID if you're dialing the PSTN.\n* Make certain \"from\" contains an acceptable caller field when connecting to client or SIP.",
    "description": "",
    "date_created": "2016-03-31T17:14:40Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40112,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Call",
    "secondary_message": "Call Instruction does not have a valid 'url' parameter provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You did not provide a \"url\" parameter on your 'call' instruction.\n- You provided an invalid format in your \"url\" field.\n\n### Possible solutions\n\n- Make certain \"url\" is provided and contains a well formed HTTP or HTTPS URL.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"call\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"url\": \"https://example.com/twiml?querystring=1234\"\r\n}\n```\n",
    "causes": "* You did not provide a \"url\" parameter on your 'call' instruction.\n* You provided an invalid format in your \"url\" field.",
    "solutions": "* Make certain \"url\" is provided and contains a well formed HTTP or HTTPS URL.",
    "description": "",
    "date_created": "2016-03-31T17:14:40Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40113,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Call",
    "secondary_message": "Call Instruction encountered an error when requesting an outgoing call be made from the API.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Un-routable address provided for \"to\" field.\n- Invalid caller-id passed to \"from\" field.\n- Poorly formed URL passed to \"url\" field.\n- Internal Twilio API error.\n\n### Possible solutions\n\n- Make certain \"to\" contains a routable phone number, client URI or SIP URI.\n- Make certain \"to\" is to a country you have permissions set to call.\n- Make certain \"from\" contains an acceptable caller ID for the chosen \"to\" address.\n- Make certain \"url\" is a valid HTTP/HTTPS URL.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"call\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"url\": \"https://example.com/twiml\"\r\n}\n```\n",
    "causes": "* Un-routable address provided for \"to\" field.\n* Invalid caller-id passed to \"from\" field.\n* Poorly formed URL passed to \"url\" field.\n* Internal Twilio API error.",
    "solutions": "* Make certain \"to\" contains a routable phone number, client URI or SIP URI.\n* Make certain \"to\" is to a country you have permissions set to call.\n* Make certain \"from\" contains an acceptable caller ID for the chosen \"to\" address.\n* Make certain \"url\" is a valid HTTP/HTTPS URL.",
    "description": "",
    "date_created": "2016-03-31T17:14:41Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40114,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Call",
    "secondary_message": "Call Instruction can only be issued on a currently pending reservation.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Reservation has been moved to a non-Pending state.\n\n### Possible solutions\n\n- Make certain that the Reservation is currently Pending.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"call\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"url\": \"https://example.com/twiml\"\r\n}\n```\n",
    "causes": "* The Reservation has been moved to a non-Pending state.",
    "solutions": "* Make certain that the Reservation is currently Pending.",
    "description": "",
    "date_created": "2016-08-22T22:59:40Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40120,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Direct",
    "secondary_message": "Redirect Instruction does not have a valid 'url' parameter provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You did not provide a \"url\" parameter on your 'redirect' instruction.\n- You provided an invalid format in your \"url\" field.\n\n### Possible solutions\n\n- Make certain \"url\" is provided and contains a well formed HTTP or HTTPS URL.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"redirect\",\r\n\t\"call_sid\": \"CA0123456789abcdef0123456789abcdef\",\r\n\t\"url\": \"https://example.com/twiml?querystring=1234\"\r\n}\n```\n",
    "causes": "* You did not provide a \"url\" parameter on your 'redirect' instruction.\n* You provided an invalid format in your \"url\" field.",
    "solutions": "* Make certain \"url\" is provided and contains a well formed HTTP or HTTPS URL.",
    "description": "",
    "date_created": "2016-03-31T17:14:41Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40121,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Direct",
    "secondary_message": "Redirect Instruction does not have a valid 'call\\_sid' parameter provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You did not provide a \"call\\_sid\" parameter on your 'redirect' instruction.\n- You provided an invalid value for the \"call\\_sid\" parameter.\n\n### Possible solutions\n\n- Make certain \"call\\_sid\" is provided an is a 34char string starting with CA that represents a live call.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"redirect\",\r\n\t\"call_sid\": \"CA0123456789abcdef0123456789abcdef\",\r\n\t\"url\": \"https://example.com/twiml?querystring=1234\"\r\n}\n```\n",
    "causes": "* You did not provide a \"call\\_sid\" parameter on your 'redirect' instruction.\n* You provided an invalid value for the \"call\\_sid\" parameter.",
    "solutions": "* Make certain \"call\\_sid\" is provided an is a 34char string starting with CA that represents a live call.",
    "description": "",
    "date_created": "2016-03-31T17:14:41Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40122,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Direct",
    "secondary_message": "Direct Instruction encountered an error when redirecting a call via the API.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The call being redirected is no longer in progress.\n- The call\\_sid passed doesn't reference an actual call\n\n### Possible solutions\n\n- Make certain \"call\\_sid\" is provided an is a 34 char string starting with CA that represents a live call.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"redirect\",\r\n\t\"call_sid\": \"CA0123456789abcdef0123456789abcdef\",\r\n\t\"url\": \"https://example.com/twiml?querystring=1234\"\r\n}\n```\n",
    "causes": "* The call being redirected is no longer in progress.\n* The call\\_sid passed doesn't reference an actual call",
    "solutions": "* Make certain \"call\\_sid\" is provided an is a 34 char string starting with CA that represents a live call.",
    "description": "",
    "date_created": "2016-03-31T17:14:42Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40123,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Redirect",
    "secondary_message": "Redirect Instruction can only be issued on a currently pending reservation.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Reservation has been moved to a non-Pending state.\n\n### Possible solutions\n\n- Make certain that the Reservation is currently Pending.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"redirect\",\r\n\t\"call_sid\": \"CA0123456789abcdef0123456789abcdef\",\r\n\t\"url\": \"https://example.com/twiml?querystring=1234\"\r\n}\n```\n",
    "causes": "* The Reservation has been moved to a non-Pending state.",
    "solutions": "* Make certain that the Reservation is currently Pending.",
    "description": "",
    "date_created": "2016-08-22T23:00:20Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40130,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Dequeue",
    "secondary_message": "Dequeue Instruction does not have a valid 'post\\_work\\_activity\\_sid' provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You provided a \"post\\_work\\_activity\\_sid\"\" that was invalid or no longer exists.\n\n### Possible solutions\n\n- Confirm a valid ActivitySid is being passed in the \"post\\_work\\_activity\\_sid\" parameter exists in your workspace.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"dequeue\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* You provided a \"post\\_work\\_activity\\_sid\"\" that was invalid or no longer exists.",
    "solutions": "* Confirm a valid ActivitySid is being passed in the \"post\\_work\\_activity\\_sid\" parameter exists in your workspace.",
    "description": "",
    "date_created": "2016-03-31T17:14:42Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40131,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Dequeue",
    "secondary_message": "Dequeue Instruction does not have a valid 'to' parameter provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You did not provide a \"to\" parameter on your 'dequeue' instruction.\n- You provided an invalid format in your \"to\" field.\n\n### Possible solutions\n\n- Make certain \"to\" contains a valid phone number, client URI, or SIP URI.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"dequeue\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* You did not provide a \"to\" parameter on your 'dequeue' instruction.\n* You provided an invalid format in your \"to\" field.",
    "solutions": "* Make certain \"to\" contains a valid phone number, client URI, or SIP URI.",
    "description": "",
    "date_created": "2016-03-31T17:14:42Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40132,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Dequeue",
    "secondary_message": "Dequeue Instruction does not have a valid 'from' parameter provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You did not provide a \"from\" parameter on your 'dequeue' instruction.\n- You provided an invalid format in your \"from\" field.\n\n### Possible solutions\n\n- Make certain \"from\" contains a validated caller ID if you're dialing the PSTN.\n- Make certain \"from\" contains an acceptable caller field when connecting to client or SIP.\n\n### Example\n\n```bash\n{\n\t\"instruction\": \"dequeue\",\n\t\"to\": \"client:alice\",\n\t\"from\": \"bob\",\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\n}\n```\n",
    "causes": "* You did not provide a \"from\" parameter on your 'dequeue' instruction.\n* You provided an invalid format in your \"from\" field.",
    "solutions": "* Make certain \"from\" contains a validated caller ID if you're dialing the PSTN.\n* Make certain \"from\" contains an acceptable caller field when connecting to client or SIP.",
    "description": "",
    "date_created": "2016-03-31T17:14:43Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40133,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Dequeue",
    "secondary_message": "Dequeue Instruction encountered an error when requesting an outgoing call be made from the API.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Un-routable address provided for \"to\" field.\n- Invalid caller-id passed to \"from\" field.\n- Internal Twilio API error.\n\n### Possible solutions\n\n- Make certain \"to\" contains a routable phone number, client URI or SIP URI.\n- Make certain \"to\" is to a country you have permissions set to call.\n- Make certain \"from\" contains an acceptable caller ID for the chosen \"to\" address.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"dequeue\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"18001234567\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* Un-routable address provided for \"to\" field.\n* Invalid caller-id passed to \"from\" field.\n* Internal Twilio API error.",
    "solutions": "* Make certain \"to\" contains a routable phone number, client URI or SIP URI.\n* Make certain \"to\" is to a country you have permissions set to call.\n* Make certain \"from\" contains an acceptable caller ID for the chosen \"to\" address.",
    "description": "",
    "date_created": "2016-03-31T17:14:43Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40134,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Dequeue Instruction does not have a valid 'status_callback_events' parameter",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You provided an invalid format in your \"status\\_callback\\_events\" field.\n\n### Possible solutions\n\n- Make certain \"status\\_callback\\_events\" contains a valid comma separated string of events to subscribe to if responding to an assignment callback\n- Make certain each \"DequeueStatusCallbackEvent\" contains an acceptable event to subscribe to if making a `POST` /v1/Workspaces/\\{WorkspaceSid}/Tasks/\\{TaskSid}/Reservations/\\{ReservationSid}\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"dequeue\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\",\r\n    \"status_callback_events\": \"initiated,ringing,answered,completed\"\r\n}\n```\n",
    "causes": "* You provided an invalid format in your \"status\\_callback\\_events\" field.",
    "solutions": "* Make certain \"status\\_callback\\_events\" contains a valid comma separated string of events to subscribe to if responding to an assignment callback\n* Make certain each \"DequeueStatusCallbackEvent\" contains an acceptable event to subscribe to if making a `POST` /v1/Workspaces/{WorkspaceSid}/Tasks/{TaskSid}/Reservations/{ReservationSid}",
    "description": "",
    "date_created": "2016-07-28T22:11:03Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40135,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Dequeue",
    "secondary_message": "Dequeue Instruction can only be issued on a currently pending reservation.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Reservation has been moved to a non-Pending state.\n\n### Possible solutions\n\n- Make certain that the Reservation is currently Pending.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"dequeue\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"18001234567\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* The Reservation has been moved to a non-Pending state.",
    "solutions": "* Make certain that the Reservation is currently Pending.",
    "description": "",
    "date_created": "2016-08-22T23:02:11Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40136,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TaskRouter->Conference",
    "secondary_message": "Conference Instruction can only be issued on a currently pending reservation.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Reservation has been moved to a non-Pending state.\n\n### Possible solutions\n\n- Make certain that the Reservation is currently Pending.\n\n### Example\n\n```bash\n{\n\t\"instruction\": \"conference\",\n\t\"to\": \"client:alice\",\n\t\"from\": \"+18001234567\"\n}\n```\n",
    "causes": "* The Reservation has been moved to a non-Pending state.",
    "solutions": "* Make certain that the Reservation is currently Pending.",
    "description": "",
    "date_created": "2018-12-03T19:12:13Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40137,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing 'to' parameter when issuing Conference instruction",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nA valid 'to' parameter must be provided when using the Conference Instruction\n\n### Possible causes\n\n- A 'to' parameter was not passed when issuing the Conference instruction\n- The 'to' parameter supplied to the Conference instruction was invalid\n\n### Possible solutions\n\n- Supply a valid 'to' parameter when issuing the Conference instruction\n\n#### Example\n\n```bash\n{\r\n\t\"instruction\": \"conference\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"+18001234567\"\r\n}\n```\n",
    "causes": "* A 'to' parameter was not passed when issuing the Conference instruction\n* The 'to' parameter supplied to the Conference instruction was invalid",
    "solutions": "* Supply a valid 'to' parameter when issuing the Conference instruction",
    "description": "A valid 'to' parameter must be provided when using the Conference Instruction",
    "date_created": "2020-08-19T23:07:18Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40138,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing 'from' parameter when issuing Conference instruction",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nA valid 'from' parameter was not passed to the 'conference' instruction\n\n### Possible causes\n\n- A 'from' parameter was not passed when issuing the Conference instruction\n- The 'from' parameter supplied to the Conference instruction was invalid\n\n### Possible solutions\n\n- Supply a valid 'from' parameter when issuing the Conference instruction\n\n#### Example\n\n```bash\n{\r\n\t\"instruction\": \"conference\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"+18001234567\"\r\n}\n```\n",
    "causes": "* A 'from' parameter was not passed when issuing the Conference instruction\n* The 'from' parameter supplied to the Conference instruction was invalid",
    "solutions": "* Supply a valid 'from' parameter when issuing the Conference instruction",
    "description": "A valid 'from' parameter was not passed to the 'conference' instruction",
    "date_created": "2020-08-21T00:09:55Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40139,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to issue Conference Instruction due to invalid ActivitySid",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nConference Instruction requires a valid `post_work_activity_sid`\n\n### Possible causes\n\n- The provided `post_work_activity_sid` is invalid or no longer exists in the operating Workspace.\n\n### Possible solutions\n\n- Ensure that a valid ActivitySid is provided in the `post_work_activity_sid` property in the Worker's attributes or request parameters.\n\n#### Example\n\n```bash\n{\r\n\t\"instruction\": \"conference\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"bob\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* The provided `post_work_activity_sid` is invalid or no longer exists in the operating Workspace.",
    "solutions": "* Ensure that a valid ActivitySid is provided in the `post_work_activity_sid` property in the Worker's attributes or request parameters.",
    "description": "Conference Instruction requires a valid `post_work_activity_sid`",
    "date_created": "2020-09-14T21:40:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40140,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to issue Dequeue instruction due to missing 'call_sid' property",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Task was not created via the `<Enqueue>` verb\n- The `call_sid` property is missing in the Task's attributes\n\n### Possible solutions\n\n- Only issue Dequeue instruction on Tasks created via the `<Enqueue>` verb\n- Ensure that `call_sid` property is present in the Task's attributes\n",
    "causes": "* The Task was not created via the `<Enqueue>` verb\n* The `call_sid` property is missing in the Task's attributes",
    "solutions": "* Only issue Dequeue instruction on Tasks created via the `<Enqueue>` verb\n* Ensure that `call_sid` property is present in the Task's attributes",
    "description": "",
    "date_created": "2016-04-27T19:38:39Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40141,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Conference",
    "secondary_message": "Conference Instruction does not have a valid 'from' parameter provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You did not provide a 'from' parameter on your 'conference' instruction.\n- You provided an invalid format in your \"from\" field.\n\n### Possible solutions\n\n- Make certain 'from' contains a validated caller ID if you're dialing the PSTN.\n- Make certain 'from' contains an acceptable caller field.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"conference\",\r\n\t\"room_name\": \"abc\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"18001234567\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* You did not provide a 'from' parameter on your 'conference' instruction.\n* You provided an invalid format in your \"from\" field.",
    "solutions": "* Make certain 'from' contains a validated caller ID if you're dialing the PSTN.\n* Make certain 'from' contains an acceptable caller field.",
    "description": "",
    "date_created": "2016-04-27T19:40:13Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40142,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conference instruction failed: missing 'call_sid' or 'outbound_to'",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when you issue a TaskRouter `conference` instruction for a voice task that is missing the call attributes TaskRouter needs to connect the worker and caller. For inbound voice tasks created through `<Enqueue>`, accept the Reservation with `conference` to bridge the worker into a conference with the inbound caller. If you create a voice task manually and want to use `conference`, include at least `call_sid` and `to` in the Task attributes. For outbound voice tasks, include `outbound_to` in the Task attributes.\n\n### Possible causes\n\n- The Task was not created through `<Enqueue>` for an inbound voice call.\n- The Task attributes do not include `call_sid` for the voice task.\n- The Task attributes do not include `outbound_to` for the outbound voice task.\n- The Task was created manually for a voice flow and does not include the minimum attributes required to use `conference`, such as `call_sid` and `to`.\n\n### Possible solutions\n\n- For inbound voice routing, create the Task through `<Enqueue>` before accepting the Reservation with `conference`.\n- Review the Task attributes before you issue `conference`. Add `call_sid` for inbound voice tasks.\n- For outbound voice tasks, add `outbound_to` to the Task attributes before you issue `conference`.\n- If you create voice tasks manually, include at least `call_sid` and `to` in the Task attributes so TaskRouter can execute the `conference` instruction.\n\n#### Additional resources\n\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n- [How TaskRouter Works](/docs/taskrouter/how-taskrouter-works)\n- [Call Control Concepts](/docs/taskrouter/contact-center-blueprint/call-control-concepts)\n",
    "causes": "* The Task was not created through `<Enqueue>` for an inbound voice call.\n* The Task attributes do not include `call_sid` for the voice task.\n* The Task attributes do not include `outbound_to` for the outbound voice task.\n* The Task was created manually for a voice flow and does not include the minimum attributes required to use `conference`, such as `call_sid` and `to`.",
    "solutions": "* For inbound voice routing, create the Task through `<Enqueue>` before accepting the Reservation with `conference`.\n* Review the Task attributes before you issue `conference`. Add `call_sid` for inbound voice tasks.\n* For outbound voice tasks, add `outbound_to` to the Task attributes before you issue `conference`.\n* If you create voice tasks manually, include at least `call_sid` and `to` in the Task attributes so TaskRouter can execute the `conference` instruction.",
    "description": "This error occurs when you issue a TaskRouter `conference` instruction for a voice task that is missing the call attributes TaskRouter needs to connect the worker and caller. For inbound voice tasks created through `<Enqueue>`, accept the Reservation with `conference` to bridge the worker into a conference with the inbound caller. If you create a voice task manually and want to use `conference`, include at least `call_sid` and `to` in the Task attributes. For outbound voice tasks, include `outbound_to` in the Task attributes.",
    "date_created": "2016-04-27T19:40:40Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 40143,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Conference",
    "secondary_message": "Conference Instruction does not have a valid 'post\\_work\\_activity\\_sid' provided.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- You provided a 'post\\_work\\_activity\\_sid' that was invalid or no longer exists.\n\n### Possible solutions\n\n- Confirm a valid ActivitySid is being passed in the 'post\\_work\\_activity\\_sid' parameter and it exists in your workspace.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"conference\",\r\n\t\"room_name\": \"abc\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"18001234567\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* You provided a 'post\\_work\\_activity\\_sid' that was invalid or no longer exists.",
    "solutions": "* Confirm a valid ActivitySid is being passed in the 'post\\_work\\_activity\\_sid' parameter and it exists in your workspace.",
    "description": "",
    "date_created": "2016-04-27T19:42:29Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40144,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Conference",
    "secondary_message": "Conference Instruction does not have a pending Reservation for the Task",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The original caller has hungup\n- The Task has been moved into a 'canceled' state\n\n### Possible solutions\n\n- Make sure the Task created has not been canceled prior to issuing 'conference' instruction\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"conference\",\r\n\t\"room_name\": \"abc\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"18001234567\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* The original caller has hungup\n* The Task has been moved into a 'canceled' state",
    "solutions": "* Make sure the Task created has not been canceled prior to issuing 'conference' instruction",
    "description": "",
    "date_created": "2016-04-27T19:43:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40145,
    "log_level": "ERROR",
    "log_type": null,
    "message": "TaskRouter->Conference",
    "secondary_message": "Conference Instruction encountered an error when requesting an outgoing call be made from the API.",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Un-routable address provided for 'to' field.\n- Invalid caller-id passed to 'from' field.\n- Missing 'room\\_name' field.\n- Internal Twilio API error.\n\n### Possible solutions\n\n- Make certain 'to' contains a routable phone number, client URI or SIP URI.\n- Make certain 'to' is to a country you have permissions set to call.\n- Make certain 'from' contains an acceptable caller ID for the chosen 'to' address.\n- Make certain 'room\\_name' is a valid Conference Room Name.\n\n### Example\n\n```bash\n{\r\n\t\"instruction\": \"conference\",\r\n\t\"room_name\": \"abc\",\r\n\t\"to\": \"client:alice\",\r\n\t\"from\": \"18001234567\",\r\n\t\"post_work_activity_sid\": \"WA0123456789abcdef0123456789abcdef\"\r\n}\n```\n",
    "causes": "* Un-routable address provided for 'to' field.\n* Invalid caller-id passed to 'from' field.\n* Missing 'room\\_name' field.\n* Internal Twilio API error.",
    "solutions": "* Make certain 'to' contains a routable phone number, client URI or SIP URI.\n* Make certain 'to' is to a country you have permissions set to call.\n* Make certain 'from' contains an acceptable caller ID for the chosen 'to' address.\n* Make certain 'room\\_name' is a valid Conference Room Name.",
    "description": "",
    "date_created": "2016-04-27T19:43:34Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40146,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to issue Supervise Instruction due to invalid Reservation state",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThe Reservation is not in a valid state for the Supervise instruction to be used, the Reservation cannot be pending or canceled.\n\n### Possible causes\n\n- A Reservation has not yet been accepted by a Worker.\n- The Reservation has already been canceled.\n\n### Possible solutions\n\n- Confirm that the Reservation has been accepted by the assigned Worker\n",
    "causes": "* A Reservation has not yet been accepted by a Worker.\n* The Reservation has already been canceled.",
    "solutions": "* Confirm that the Reservation has been accepted by the assigned Worker",
    "description": "The Reservation is not in a valid state for the Supervise instruction to be used, the Reservation cannot be pending or canceled.",
    "date_created": "2020-08-21T00:35:05Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40147,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Supervise instruction failed: missing or invalid 'contact_uri'",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when you issue a Supervise instruction and the Supervisor's Worker attributes do not include a valid `contact_uri`. TaskRouter stores Worker attributes as JSON and needs `contact_uri` to know whom to call.\n\n### Possible causes\n\n- The Supervisor's Worker attributes do not include `contact_uri`.\n- The Supervisor's Worker attributes are not valid JSON, so TaskRouter cannot read `contact_uri`.\n- The `contact_uri` value is invalid.\n- The `contact_uri` value does not point to a valid phone number or client ID for your implementation.\n\n### Possible solutions\n\n- Update the Supervisor's Worker attributes to include a valid `contact_uri`.\n- Make sure the Worker attributes are valid JSON before you save them.\n- Set `contact_uri` to the phone number or client ID that should receive the Supervise call.\n- Fetch the Worker after updating it to confirm the attributes were saved, then retry the Supervise instruction.\n\n#### Additional resources\n\n- [Worker Resource](/docs/taskrouter/api/worker)\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n- [TaskRouter: Skills-based routing for contact centers](/docs/taskrouter)\n",
    "causes": "* The Supervisor's Worker attributes do not include `contact_uri`.\n* The Supervisor's Worker attributes are not valid JSON, so TaskRouter cannot read `contact_uri`.\n* The `contact_uri` value is invalid.\n* The `contact_uri` value does not point to a valid phone number or client ID for your implementation.",
    "solutions": "* Update the Supervisor's Worker attributes to include a valid `contact_uri`.\n* Make sure the Worker attributes are valid JSON before you save them.\n* Set `contact_uri` to the phone number or client ID that should receive the Supervise call.\n* Fetch the Worker after updating it to confirm the attributes were saved, then retry the Supervise instruction.",
    "description": "This error occurs when you issue a Supervise instruction and the Supervisor's Worker attributes do not include a valid `contact_uri`. TaskRouter stores Worker attributes as JSON and needs `contact_uri` to know whom to call.",
    "date_created": "2020-09-14T21:45:11Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 40148,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to issue Supervise instruction due to missing ‘from’ property",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nA valid `from` parameter was not passed to the 'supervise' instruction\n\n### Possible causes\n\n- The `from` property is missing in the Task's attributes.\n- The `from` property in the Task's attributes is invalid.\n\n### Possible solutions\n\n- Ensure that a valid `from` property is provided in the Task's attributes.\n",
    "causes": "* The `from` property is missing in the Task's attributes.\n* The `from` property in the Task's attributes is invalid.",
    "solutions": "* Ensure that a valid `from` property is provided in the Task's attributes.",
    "description": "A valid `from` parameter was not passed to the 'supervise' instruction",
    "date_created": "2019-08-15T21:57:00Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40149,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to issue Conference instruction due to missing ‘conference_sid’",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThe conference instruction issued as a result of the transfer can only be issued on a task which has a `conference_sid` in its attributes.\n\n### Possible causes\n\n- The Conference instruction was issued on the wrong Task.\n- The Task attributes were modified and no longer contain the `conference_sid` property.\n\n### Possible solutions\n\n- Confirm the Conference instruction is issued on the correct voice Task.\n- Ensure that the `conference_sid` is present in the Task's attributes.\n",
    "causes": "* The Conference instruction was issued on the wrong Task.\n* The Task attributes were modified and no longer contain the `conference_sid` property.",
    "solutions": "* Confirm the Conference instruction is issued on the correct voice Task.\n* Ensure that the `conference_sid` is present in the Task's attributes.",
    "description": "The conference instruction issued as a result of the transfer can only be issued on a task which has a `conference_sid` in its attributes.",
    "date_created": "2020-09-14T21:48:16Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40151,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TaskRouter->Invalid instruction",
    "secondary_message": "Invalid instruction issued on a task being transferred. Valid instructions are: ACCEPT, REJECT, CONFERENCE, SUPERVISE",
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Instruction is not acceptable for transferred tasks\n- Internal Twilio API error.\n\n### Possible solutions\n\n- Make certain that instruction is accept, reject, conference, or supervise\n\n### Example\n\n```bash\n{\n\t\"instruction\": \"conference\"\n}\n```\n",
    "causes": "* Instruction is not acceptable for transferred tasks\n* Internal Twilio API error.",
    "solutions": "* Make certain that instruction is accept, reject, conference, or supervise",
    "description": "",
    "date_created": "2018-12-04T05:30:07Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40152,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Queue for Known Worker",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nWorker isn't part of the queue specified in the Workflow target for re-targeted Task.\n\n### Possible causes\n\nThe Worker targeted by the Known Worker Routing feature is not a member of the TaskQueue referenced in the Workflow Target\n\n### Possible solutions\n\nEnsure the Worker is a member of the TaskQueue referenced in the Workflow Target. Find out more about the Known Worker Routing feature here: https://www.twilio.com/docs/taskrouter/workflow-configuration/known-agent-routing\n",
    "causes": "The Worker targeted by the Known Worker Routing feature is not a member of the TaskQueue referenced in the Workflow Target",
    "solutions": "Ensure the Worker is a member of the TaskQueue referenced in the Workflow Target. Find out more about the Known Worker Routing feature here: https://www.twilio.com/docs/taskrouter/workflow-configuration/known-agent-routing",
    "description": "Worker isn't part of the queue specified in the Workflow target for re-targeted Task.",
    "date_created": "2021-06-25T16:47:46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40153,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Absolute Paging used when iterating TaskRouter resources",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThe absolute paging query type that is being used has been deprecated. Starting Dec. 1, 2021 we will no longer return data for this query, and instead return a 400-response for requests of query type /Workers?Page=\\&PageSize=.\n\nPlease update your application to instead utilize relative paging: /Workers?PageToken=PA\\<task\\_sid>, where `<task_sid>` is the last item of the current page.\n\n### Possible causes\n\nNot using the latest Twilio helper libraries. Constructing requests directly which use Page & PageSize query parameters directly.\n\n### Possible solutions\n\nUtilize the latest Twilio helper libraries. Rely upon the PageToken instead of the Page Number for paging.\n",
    "causes": "Not using the latest Twilio helper libraries. Constructing requests directly which use Page & PageSize query parameters directly.",
    "solutions": "Utilize the latest Twilio helper libraries. Rely upon the PageToken instead of the Page Number for paging.",
    "description": "The absolute paging query type that is being used has been deprecated. Starting Dec. 1, 2021 we will no longer return data for this query, and instead return a 400-response for requests of query type /Workers?Page=\\&PageSize=. Please update your application to instead utilize relative paging: /Workers?PageToken=PA\\<task\\_sid>, where `<task_sid>` is the last item of the current page.",
    "date_created": "2021-09-01T17:45:23Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40154,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Known Worker information",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nWorker information is missing or not valid.\n\n### Possible causes\n\nThe Task does not have a field that holds the Known Worker information, the Worker information specified is invalid, or the specified Worker does not exist in TaskRouter.\n\n### Possible solutions\n\nEnsure the Task field referenced in the Workflow definition is provided in the Task's attributes. If Worker information is provided, make sure that the Worker does exist in TaskRouter. Find out more about the Known Worker Routing feature here: https://www.twilio.com/docs/taskrouter/workflow-configuration/known-agent-routing\n",
    "causes": "The Task does not have a field that holds the Known Worker information, the Worker information specified is invalid, or the specified Worker does not exist in TaskRouter.",
    "solutions": "Ensure the Task field referenced in the Workflow definition is provided in the Task's attributes. If Worker information is provided, make sure that the Worker does exist in TaskRouter. Find out more about the Known Worker Routing feature here: https://www.twilio.com/docs/taskrouter/workflow-configuration/known-agent-routing",
    "description": "Worker information is missing or not valid.",
    "date_created": "2021-09-21T20:28:43Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40155,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Workspace for Known Worker",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nWorker is not part of the workspace referenced by the Workflow target\n\n### Possible causes\n\nThe Worker targeted by the Known Worker Routing feature is not a member of the Workspace referenced by the Workflow Target\n\n### Possible solutions\n\nEnsure the Worker is a member of the Workspace referenced by the Workflow that is configured to use Known Agent Routing. Find out more about the Known Worker Routing feature here: https://www.twilio.com/docs/taskrouter/workflow-configuration/known-agent-routing\n",
    "causes": "The Worker targeted by the Known Worker Routing feature is not a member of the Workspace referenced by the Workflow Target",
    "solutions": "Ensure the Worker is a member of the Workspace referenced by the Workflow that is configured to use Known Agent Routing. Find out more about the Known Worker Routing feature here: https://www.twilio.com/docs/taskrouter/workflow-configuration/known-agent-routing",
    "description": "Worker is not part of the workspace referenced by the Workflow target",
    "date_created": "2022-12-29T10:57:28Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 40157,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Dequeue Instruction does not have a valid 'status_callback_url' parameter",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Assignment Callback response includes a `dequeue` instruction with a `status_callback_url` value that TaskRouter cannot use. In a `dequeue` instruction, `status_callback_url` is optional, but if you provide it, it must be a well-formed `http://` or `https://` URL string that TaskRouter can use for asynchronous webhook `GET` requests about the worker call.\n\n### Possible causes\n\n- You provided `status_callback_url` as an empty string.\n- You provided `status_callback_url` with the wrong data type instead of a URL string.\n- The `status_callback_url` value is not a well-formed `http://` or `https://` URL.\n- Your application generated a `dequeue` instruction payload where `status_callback_url` was serialized incorrectly, so TaskRouter did not receive a valid URL string.\n\n### Possible solutions\n\n- Set `status_callback_url` to a complete `http://` or `https://` URL string.\n- Remove `status_callback_url` from the `dequeue` instruction if you do not need asynchronous worker call status webhooks.\n- Verify that your Assignment Callback returns valid JSON for the `dequeue` instruction and that `status_callback_url` is serialized as a string.\n- If you also send `status_callback_events`, provide a valid `status_callback_url` so TaskRouter has a destination for those event webhooks.\n\n#### Additional resources\n\n- [Handling Assignment Callbacks](/docs/taskrouter/handle-assignment-callbacks)\n- [Queueing Twilio calls with TaskRouter](/docs/taskrouter/twiml-queue-calls)\n- [Webhooks (HTTP callbacks): Connection Overrides](/docs/usage/webhooks/webhooks-connection-overrides)\n",
    "causes": "* You provided `status_callback_url` as an empty string.\n* You provided `status_callback_url` with the wrong data type instead of a URL string.\n* The `status_callback_url` value is not a well-formed `http://` or `https://` URL.\n* Your application generated a `dequeue` instruction payload where `status_callback_url` was serialized incorrectly, so TaskRouter did not receive a valid URL string.",
    "solutions": "* Set `status_callback_url` to a complete `http://` or `https://` URL string.\n* Remove `status_callback_url` from the `dequeue` instruction if you do not need asynchronous worker call status webhooks.\n* Verify that your Assignment Callback returns valid JSON for the `dequeue` instruction and that `status_callback_url` is serialized as a string.\n* If you also send `status_callback_events`, provide a valid `status_callback_url` so TaskRouter has a destination for those event webhooks.",
    "description": "This error occurs when your Assignment Callback response includes a `dequeue` instruction with a `status_callback_url` value that TaskRouter cannot use. In a `dequeue` instruction, `status_callback_url` is optional, but if you provide it, it must be a well-formed `http://` or `https://` URL string that TaskRouter can use for asynchronous webhook `GET` requests about the worker call.",
    "date_created": "2022-10-19T17:51:01Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 40158,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call Instruction does not have a valid 'status_callback_url' parameter",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Assignment Callback returns an `instruction` of `call` and includes a `status_callback_url` value that is not a valid URL string. `status_callback_url` is optional for a Call Instruction, but if you include it, provide a valid callback URL so Twilio can send call status updates for the worker call.\n\n### Possible causes\n\n- You sent `status_callback_url` as an empty string.\n- You sent `status_callback_url` with the wrong data type instead of a URL string.\n- You sent a malformed `status_callback_url` value that is not a complete `http://` or `https://` URL.\n\n### Possible solutions\n\n- Set `status_callback_url` to a well-formed `http://` or `https://` URL string in the JSON response for your `\"instruction\":\"call\"` Assignment Callback.\n- If you do not need status callbacks for the worker call, omit `status_callback_url` instead of sending an empty value.\n- Validate your Assignment Callback payload before you return it so `status_callback_url` is serialized as a string and contains the exact endpoint Twilio should request when the worker call completes.\n- Review the full Call Instruction payload and confirm related fields such as `url`, `from`, and `to` are also valid for the outbound worker call.\n\n#### Additional resources\n\n- [Handling Assignment Callbacks](/docs/taskrouter/handle-assignment-callbacks)\n- [How TaskRouter Works](/docs/taskrouter/how-taskrouter-works)\n- [TaskRouter REST API Reference](/docs/taskrouter/api)\n",
    "causes": "* You sent `status_callback_url` as an empty string.\n* You sent `status_callback_url` with the wrong data type instead of a URL string.\n* You sent a malformed `status_callback_url` value that is not a complete `http://` or `https://` URL.",
    "solutions": "* Set `status_callback_url` to a well-formed `http://` or `https://` URL string in the JSON response for your `\"instruction\":\"call\"` Assignment Callback.\n* If you do not need status callbacks for the worker call, omit `status_callback_url` instead of sending an empty value.\n* Validate your Assignment Callback payload before you return it so `status_callback_url` is serialized as a string and contains the exact endpoint Twilio should request when the worker call completes.\n* Review the full Call Instruction payload and confirm related fields such as `url`, `from`, and `to` are also valid for the outbound worker call.",
    "description": "This error occurs when your Assignment Callback returns an `instruction` of `call` and includes a `status_callback_url` value that is not a valid URL string. `status_callback_url` is optional for a Call Instruction, but if you include it, provide a valid callback URL so Twilio can send call status updates for the worker call.",
    "date_created": "2023-02-22T06:56:07Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 40159,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conference Instruction does not have a valid 'status_callback_url' parameter",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a TaskRouter `conference` instruction with a `status_callback_url` value that Twilio cannot validate. Conference instructions accept Conference Participants API parameters for the worker leg, and `status_callback_url` must be a valid HTTP or HTTPS URL string.\n\n### Possible causes\n\n- You set `status_callback_url` to an empty string.\n- You passed `status_callback_url` with the wrong data type instead of a string.\n- You provided a malformed URL in `status_callback_url`.\n- The URL is missing the `http://` or `https://` scheme.\n- Your application generated the assignment instruction dynamically and serialized `status_callback_url` incorrectly.\n\n### Possible solutions\n\n- Set `status_callback_url` to a complete, well-formed HTTP or HTTPS URL string.\n- Include the full scheme and host in the callback URL, for example `https://example.com/conference-events`.\n- If you build assignment instructions in code, make sure `status_callback_url` is serialized as a string value.\n- If you do not need conference status callbacks, omit `status_callback_url` instead of sending an empty value.\n- Review the Conference Participants API parameters you pass through the TaskRouter `conference` instruction and correct any invalid callback configuration before retrying the reservation update.\n\n#### Additional resources\n\n- [Task Reservation Resource](/docs/taskrouter/api/reservations)\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n- [Assigning Tasks to Workers: Handling Assignment Callbacks](/docs/taskrouter/handle-assignment-callbacks)\n",
    "causes": "* You set `status_callback_url` to an empty string.\n* You passed `status_callback_url` with the wrong data type instead of a string.\n* You provided a malformed URL in `status_callback_url`.\n* The URL is missing the `http://` or `https://` scheme.\n* Your application generated the assignment instruction dynamically and serialized `status_callback_url` incorrectly.",
    "solutions": "* Set `status_callback_url` to a complete, well-formed HTTP or HTTPS URL string.\n* Include the full scheme and host in the callback URL, for example `https://example.com/conference-events`.\n* If you build assignment instructions in code, make sure `status_callback_url` is serialized as a string value.\n* If you do not need conference status callbacks, omit `status_callback_url` instead of sending an empty value.\n* Review the Conference Participants API parameters you pass through the TaskRouter `conference` instruction and correct any invalid callback configuration before retrying the reservation update.",
    "description": "This error occurs when you send a TaskRouter `conference` instruction with a `status_callback_url` value that Twilio cannot validate. Conference instructions accept Conference Participants API parameters for the worker leg, and `status_callback_url` must be a valid HTTP or HTTPS URL string.",
    "date_created": "2023-02-22T06:58:39Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 45001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "General Service Error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio Flex returned a general service error while processing your request. This error indicates that Flex could not complete the operation because of an internal service issue.\n\n### Possible causes\n\n- A temporary Flex platform issue interrupted the request.\n- A dependent Twilio service required by Flex did not respond as expected.\n- The request reached Flex successfully, but Flex could not finish processing it because of an internal error.\n- A transient network or service communication problem affected the operation.\n\n### Possible solutions\n\n- Retry the request. Temporary service errors often resolve without changes to your application.\n- Check whether the error is reproducible with the same request and inputs.\n- Review your request parameters and configuration to confirm the request is valid for the Flex feature you are using.\n- If you are using the Flex API, capture the request details, response body, and any related error information from your application logs.\n- If the issue continues, contact support and include the error code, the time of the failure, and any relevant request identifiers.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n",
    "causes": "* A temporary Flex platform issue interrupted the request.\n* A dependent Twilio service required by Flex did not respond as expected.\n* The request reached Flex successfully, but Flex could not finish processing it because of an internal error.\n* A transient network or service communication problem affected the operation.",
    "solutions": "* Retry the request. Temporary service errors often resolve without changes to your application.\n* Check whether the error is reproducible with the same request and inputs.\n* Review your request parameters and configuration to confirm the request is valid for the Flex feature you are using.\n* If you are using the Flex API, capture the request details, response body, and any related error information from your application logs.\n* If the issue continues, contact support and include the error code, the time of the failure, and any relevant request identifiers.",
    "description": "Twilio Flex returned a general service error while processing your request. This error indicates that Flex could not complete the operation because of an internal service issue.",
    "date_created": "2018-10-01T08:48:39Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Authentication Error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio returned this error because the request to a protected resource did not include valid authentication credentials. This can happen when credentials are missing, incorrect, expired, or do not have permission to access the requested resource.\n\n### Possible causes\n\n- The request did not include authentication credentials.\n- The Account SID, API Key, API Secret, or auth token is incorrect.\n- The request used expired or revoked credentials.\n- The credentials are valid but do not have access to the requested Flex resource.\n- The request sent the wrong authorization header format or malformed credentials.\n\n### Possible solutions\n\n- Confirm that your request includes authentication credentials.\n- Verify that you are using the correct Account SID, API Key, API Secret, or auth token for the account and environment you want to access.\n- Regenerate or rotate credentials if you suspect they have expired, been revoked, or been exposed.\n- Check that the credentials you are using have permission to access the requested Flex resource.\n- Review your authorization header and request formatting to make sure credentials are sent correctly.\n- If you use API Keys or IAM controls, review your authentication setup and key management configuration.\n\n#### Additional resources\n\n- [Twilio IAM documentation](/docs/iam)\n- [Flex documentation](/docs/flex)\n- [API keys and credentials](/docs/iam/api-keys)\n",
    "causes": "* The request did not include authentication credentials.\n* The Account SID, API Key, API Secret, or auth token is incorrect.\n* The request used expired or revoked credentials.\n* The credentials are valid but do not have access to the requested Flex resource.\n* The request sent the wrong authorization header format or malformed credentials.",
    "solutions": "* Confirm that your request includes authentication credentials.\n* Verify that you are using the correct Account SID, API Key, API Secret, or auth token for the account and environment you want to access.\n* Regenerate or rotate credentials if you suspect they have expired, been revoked, or been exposed.\n* Check that the credentials you are using have permission to access the requested Flex resource.\n* Review your authorization header and request formatting to make sure credentials are sent correctly.\n* If you use API Keys or IAM controls, review your authentication setup and key management configuration.",
    "description": "Twilio returned this error because the request to a protected resource did not include valid authentication credentials. This can happen when credentials are missing, incorrect, expired, or do not have permission to access the requested resource.",
    "date_created": "2018-10-01T08:49:49Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Authorization Error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\n45003 indicates that the request was authenticated, but the credentials do not have permission to access the requested Flex resource or perform the requested action.\n\n### Possible causes\n\n- Your account credentials do not have access to the requested Flex resource.\n- The request is using the wrong Account SID, API Key, or Auth Token for the target resource.\n- The resource belongs to a different account or subaccount.\n- The action requires a role or permission that has not been granted.\n- The request targets a Flex API endpoint or object that your credentials are not allowed to modify.\n\n### Possible solutions\n\n- Confirm that you are using the correct credentials for the account or subaccount that owns the resource.\n- Verify that the resource identifier in the request is correct and belongs to your account.\n- Review your Flex user roles and permissions, then update access as needed.\n- If you are using API Keys, make sure the key is associated with the correct account and environment.\n- Retry the request only after you confirm that the authenticated identity is allowed to access the target resource.\n- If you manage multiple accounts or subaccounts, make sure the request is scoped to the intended account.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n- [Identity and Access Management](/docs/iam)\n- [API Keys overview](/docs/iam/api-keys)\n",
    "causes": "* Your account credentials do not have access to the requested Flex resource.\n* The request is using the wrong Account SID, API Key, or Auth Token for the target resource.\n* The resource belongs to a different account or subaccount.\n* The action requires a role or permission that has not been granted.\n* The request targets a Flex API endpoint or object that your credentials are not allowed to modify.",
    "solutions": "* Confirm that you are using the correct credentials for the account or subaccount that owns the resource.\n* Verify that the resource identifier in the request is correct and belongs to your account.\n* Review your Flex user roles and permissions, then update access as needed.\n* If you are using API Keys, make sure the key is associated with the correct account and environment.\n* Retry the request only after you confirm that the authenticated identity is allowed to access the target resource.\n* If you manage multiple accounts or subaccounts, make sure the request is scoped to the intended account.",
    "description": "45003 indicates that the request was authenticated, but the credentials do not have permission to access the requested Flex resource or perform the requested action.",
    "date_created": "2018-10-01T08:51:10Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Validation Error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error indicates that the request body did not pass validation for the Flex API endpoint you called. Twilio returns this error when one or more fields are missing, use an invalid type or format, or contain values that do not match the expected schema.\n\n### Possible causes\n\n- A required property is missing from the request body.\n- A field contains a value in an unsupported format.\n- A field uses the wrong data type, such as sending a string where the API expects an object or boolean.\n- A property value is outside the allowed range or set of accepted values.\n- The request includes unexpected or malformed JSON.\n\n### Possible solutions\n\n- Review the error message in the response body and identify which field failed validation.\n- Compare your request body against the endpoint requirements in the Flex API documentation and confirm that all required fields are present.\n- Verify that each field uses the expected data type and format.\n- Ensure your request body is valid JSON and does not include malformed or unsupported properties.\n- Retry the request after correcting the invalid input.\n\n#### Additional resources\n\n- [Twilio Flex documentation](/docs/flex)\n",
    "causes": "* A required property is missing from the request body.\n* A field contains a value in an unsupported format.\n* A field uses the wrong data type, such as sending a string where the API expects an object or boolean.\n* A property value is outside the allowed range or set of accepted values.\n* The request includes unexpected or malformed JSON.",
    "solutions": "* Review the error message in the response body and identify which field failed validation.\n* Compare your request body against the endpoint requirements in the Flex API documentation and confirm that all required fields are present.\n* Verify that each field uses the expected data type and format.\n* Ensure your request body is valid JSON and does not include malformed or unsupported properties.\n* Retry the request after correcting the invalid input.",
    "description": "This error indicates that the request body did not pass validation for the Flex API endpoint you called. Twilio returns this error when one or more fields are missing, use an invalid type or format, or contain values that do not match the expected schema.",
    "date_created": "2018-10-01T08:52:05Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Service Unavailable",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio could not complete the request because the Flex service or a dependent Twilio service was temporarily unavailable. This error usually indicates a transient platform issue or a timeout while processing the request.\n\n### Possible causes\n\n- The Flex service was temporarily unavailable\n- A dependent Twilio service did not respond in time\n- The request timed out while Twilio was processing it\n- A temporary internal service disruption affected the request\n\n### Possible solutions\n\n- Retry the request after a short delay\n- Use exponential backoff if you retry requests automatically\n- Check whether the issue affects a single request or multiple requests in your workflow\n- Review your application logs to confirm the request parameters and timing\n- If the problem continues, contact support with the request details and timestamps\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n",
    "causes": "* The Flex service was temporarily unavailable\n* A dependent Twilio service did not respond in time\n* The request timed out while Twilio was processing it\n* A temporary internal service disruption affected the request",
    "solutions": "* Retry the request after a short delay\n* Use exponential backoff if you retry requests automatically\n* Check whether the issue affects a single request or multiple requests in your workflow\n* Review your application logs to confirm the request parameters and timing\n* If the problem continues, contact support with the request details and timestamps",
    "description": "Twilio could not complete the request because the Flex service or a dependent Twilio service was temporarily unavailable. This error usually indicates a transient platform issue or a timeout while processing the request.",
    "date_created": "2018-10-01T08:53:15Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Resource Not Found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio returned this error because the Flex API request referenced a resource that does not exist or is not available in the account context used for the request. This usually happens when the request includes an incorrect identifier, uses the wrong account or subaccount, or targets a resource that was deleted.\n\n### Possible causes\n\n- The request includes an incorrect resource SID or identifier.\n- The request targets a resource that was deleted and is no longer available.\n- The request uses the wrong Account SID, subaccount, or environment for the resource.\n- The request URL or path parameter does not match the expected Flex resource.\n- The authenticated user or credential does not have access to the requested resource.\n\n### Possible solutions\n\n- Verify that the resource SID in the request is correct and belongs to the Flex resource you want to access.\n- Confirm that you are sending the request to the correct account or subaccount.\n- Check whether the resource still exists in the Flex Console or in the API response from a list endpoint.\n- Review the request path and parameters to make sure you are using the correct endpoint and resource identifier.\n- Make sure the API key, Auth Token, or other credentials used for the request have access to the resource.\n- If your application stores resource identifiers, confirm that your stored SID has not become stale after the resource was removed or recreated.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n- [Twilio API authentication](/docs/iam/api)\n",
    "causes": "* The request includes an incorrect resource SID or identifier.\n* The request targets a resource that was deleted and is no longer available.\n* The request uses the wrong Account SID, subaccount, or environment for the resource.\n* The request URL or path parameter does not match the expected Flex resource.\n* The authenticated user or credential does not have access to the requested resource.",
    "solutions": "* Verify that the resource SID in the request is correct and belongs to the Flex resource you want to access.\n* Confirm that you are sending the request to the correct account or subaccount.\n* Check whether the resource still exists in the Flex Console or in the API response from a list endpoint.\n* Review the request path and parameters to make sure you are using the correct endpoint and resource identifier.\n* Make sure the API key, Auth Token, or other credentials used for the request have access to the resource.\n* If your application stores resource identifiers, confirm that your stored SID has not become stale after the resource was removed or recreated.",
    "description": "Twilio returned this error because the Flex API request referenced a resource that does not exist or is not available in the account context used for the request. This usually happens when the request includes an incorrect identifier, uses the wrong account or subaccount, or targets a resource that was deleted.",
    "date_created": "2019-07-08T11:27:47Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Resource Conflict Error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error indicates that your request conflicts with the current state of the target resource. Twilio could not apply the requested change because the resource already exists in a different state, has been updated by another operation, or does not allow the change you requested in its current status.\n\n### Possible causes\n\n- You tried to create or update a resource with values that conflict with an existing resource state.\n- You sent an update request for a resource that was already modified by a previous request.\n- You attempted an operation that is not allowed for the resource's current status.\n- Your request included parameters that are inconsistent with the current configuration of the resource.\n- The Console or API request body contains additional context about the specific field or resource state that caused the conflict.\n\n### Possible solutions\n\n- Review the resource's current state before retrying the request.\n- Confirm that the change you want has not already been applied.\n- Compare your request parameters with the existing resource configuration and remove conflicting values.\n- If multiple systems or users can update the same resource, make sure you are not sending overlapping updates at the same time.\n- Check the Console error details or response body for the specific resource and field that triggered the conflict.\n- Retry the request only after you correct the conflicting state or request parameters.\n\n#### Additional resources\n\n- [Twilio Flex documentation](/docs/flex)\n",
    "causes": "* You tried to create or update a resource with values that conflict with an existing resource state.\n* You sent an update request for a resource that was already modified by a previous request.\n* You attempted an operation that is not allowed for the resource's current status.\n* Your request included parameters that are inconsistent with the current configuration of the resource.\n* The Console or API request body contains additional context about the specific field or resource state that caused the conflict.",
    "solutions": "* Review the resource's current state before retrying the request.\n* Confirm that the change you want has not already been applied.\n* Compare your request parameters with the existing resource configuration and remove conflicting values.\n* If multiple systems or users can update the same resource, make sure you are not sending overlapping updates at the same time.\n* Check the Console error details or response body for the specific resource and field that triggered the conflict.\n* Retry the request only after you correct the conflicting state or request parameters.",
    "description": "This error indicates that your request conflicts with the current state of the target resource. Twilio could not apply the requested change because the resource already exists in a different state, has been updated by another operation, or does not allow the change you requested in its current status.",
    "date_created": "2019-07-02T08:43:53Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unprocessable Request",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio returned this error because Flex could not process the request. The request was understood, but one or more values, resource states, or prerequisites made it invalid for the requested operation.\n\n### Possible causes\n\n- The request body contains invalid, malformed, or unsupported parameter values.\n- A required field is missing from the request.\n- The request targets a Flex resource that is in a state that does not allow the requested action.\n- The request does not meet the prerequisites required for the Flex feature or API operation you are trying to use.\n- The request format does not match what the Flex API expects.\n\n### Possible solutions\n\n- Review the request payload and confirm that all required parameters are included.\n- Verify that each parameter value uses the expected format and allowed values.\n- Confirm that the Flex resource you are updating or acting on exists and is in a valid state for that operation.\n- Check your Flex configuration and make sure any required setup has been completed before you retry the request.\n- Compare your request against the relevant Flex API endpoint documentation and correct any mismatched fields or invalid data before sending the request again.\n\n#### Additional resources\n\n- [Twilio Flex documentation](/docs/flex)\n",
    "causes": "* The request body contains invalid, malformed, or unsupported parameter values.\n* A required field is missing from the request.\n* The request targets a Flex resource that is in a state that does not allow the requested action.\n* The request does not meet the prerequisites required for the Flex feature or API operation you are trying to use.\n* The request format does not match what the Flex API expects.",
    "solutions": "* Review the request payload and confirm that all required parameters are included.\n* Verify that each parameter value uses the expected format and allowed values.\n* Confirm that the Flex resource you are updating or acting on exists and is in a valid state for that operation.\n* Check your Flex configuration and make sure any required setup has been completed before you retry the request.\n* Compare your request against the relevant Flex API endpoint documentation and correct any mismatched fields or invalid data before sending the request again.",
    "description": "Twilio returned this error because Flex could not process the request. The request was understood, but one or more values, resource states, or prerequisites made it invalid for the requested operation.",
    "date_created": "2019-07-08T11:30:06Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Configuration Error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\n45009 indicates that Flex could not complete the requested action because the configuration for a Flex component, feature, or related setting is invalid, incomplete, or inconsistent. Review the configuration associated with the action that triggered the error and correct any unsupported or missing values.\n\n### Possible causes\n\n- A required Flex configuration value is missing.\n- A configuration value is malformed or uses an unsupported format.\n- A Flex component or feature is referencing a resource, attribute, or setting that does not exist.\n- Custom code, a plugin, or a configuration update introduced a value that Flex cannot process.\n- Environment-specific settings do not match the account, workspace, or service configuration being used.\n\n### Possible solutions\n\n- Review the configuration that was changed most recently and confirm all required values are present.\n- Validate identifiers, attribute names, and other configuration values for spelling, formatting, and correctness.\n- If you use Flex plugins or customizations, test again after removing or isolating the recent change to identify the invalid setting.\n- Confirm that any referenced Twilio resources, such as TaskRouter, Sync, or other Flex-related services, exist in the same account and environment.\n- If the error persists after you verify the configuration, review your Flex setup and deployment process for mismatched environment variables or outdated settings.\n\n#### Additional resources\n\n- [Twilio Flex documentation](/docs/flex)\n- [Use the Twilio CLI with Flex Plugins](/docs/flex/developer/plugins/cli)\n",
    "causes": "* A required Flex configuration value is missing.\n* A configuration value is malformed or uses an unsupported format.\n* A Flex component or feature is referencing a resource, attribute, or setting that does not exist.\n* Custom code, a plugin, or a configuration update introduced a value that Flex cannot process.\n* Environment-specific settings do not match the account, workspace, or service configuration being used.",
    "solutions": "* Review the configuration that was changed most recently and confirm all required values are present.\n* Validate identifiers, attribute names, and other configuration values for spelling, formatting, and correctness.\n* If you use Flex plugins or customizations, test again after removing or isolating the recent change to identify the invalid setting.\n* Confirm that any referenced Twilio resources, such as TaskRouter, Sync, or other Flex-related services, exist in the same account and environment.\n* If the error persists after you verify the configuration, review your Flex setup and deployment process for mismatched environment variables or outdated settings.",
    "description": "45009 indicates that Flex could not complete the requested action because the configuration for a Flex component, feature, or related setting is invalid, incomplete, or inconsistent. Review the configuration associated with the action that triggered the error and correct any unsupported or missing values.",
    "date_created": "2019-07-08T11:33:15Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rate Limit Exceeded",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThe rate of access to this resource exceeds the prescribed limits.\n\n### Possible causes\n\nYour application is requesting Flex API resources at a rate that is higher than expected.\n\n### Possible solutions\n\nVerify that your application is not misbehaving and the load is expected. If everything is as expected then contact Customer Support to review your use case and limits.\n",
    "causes": "Your application is requesting Flex API resources at a rate that is higher than expected.",
    "solutions": "Verify that your application is not misbehaving and the load is expected. If everything is as expected then contact Customer Support to review your use case and limits.",
    "description": "The rate of access to this resource exceeds the prescribed limits.",
    "date_created": "2019-03-20T15:52:46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45050,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Authentication error - Missing User Attributes",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFlex returns this error when the authentication response for a user does not include the required user attributes. For Flex authentication and user provisioning, the required attributes include `roles`, `full_name`, and `email`.\n\n### Possible causes\n\n- Your identity provider or authentication service did not send one or more mandatory attributes, such as `roles`, `full_name`, or `email`.\n- The attribute names in your SAML assertion were mapped incorrectly, so Flex could not interpret them. For example, Flex expects attribute names such as `roles` rather than a namespaced claim URL.\n- The `roles` attribute was not passed in the claims, or it was not provided in a format Flex can interpret as a list of roles.\n- Your user provisioning flow omitted required fields or sent empty values for `full_name`, `email`, or `roles`. The Flex Users API requires all three fields when you provision a user.\n\n### Possible solutions\n\n- Update your identity provider or custom authentication service to send `full_name`, `email`, and `roles` for every Flex user who signs in.\n- Verify that your SAML assertion uses the expected attribute names and remove namespace-style claim names that prevent Flex from mapping the attributes correctly.\n- Make sure `roles` includes at least one valid Flex role. Valid roles include `agent`, `supervisor`, and `admin`.\n- If you provision users through the Flex Users API, include the required `email`, `full_name`, and `roles` fields in the `/Users/Provision` request before you mint the user's authentication token.\n- Sign in again and confirm that the user record shows the expected full name, email, and assigned roles. You can verify these attributes in Flex UI or in the TaskRouter Worker record.\n\n#### Additional resources\n\n- [Configuring SSO and IdP in Flex](/docs/flex/admin-guide/setup/sso-configuration)\n- [Flex SDK authentication](/docs/flex/developer/flex-sdk/authentication)\n- [Flex Users API](/docs/flex/developer/user-management/flex-users-api)\n",
    "causes": "* Your identity provider or authentication service did not send one or more mandatory attributes, such as `roles`, `full_name`, or `email`.\n* The attribute names in your SAML assertion were mapped incorrectly, so Flex could not interpret them. For example, Flex expects attribute names such as `roles` rather than a namespaced claim URL.\n* The `roles` attribute was not passed in the claims, or it was not provided in a format Flex can interpret as a list of roles.\n* Your user provisioning flow omitted required fields or sent empty values for `full_name`, `email`, or `roles`. The Flex Users API requires all three fields when you provision a user.",
    "solutions": "* Update your identity provider or custom authentication service to send `full_name`, `email`, and `roles` for every Flex user who signs in.\n* Verify that your SAML assertion uses the expected attribute names and remove namespace-style claim names that prevent Flex from mapping the attributes correctly.\n* Make sure `roles` includes at least one valid Flex role. Valid roles include `agent`, `supervisor`, and `admin`.\n* If you provision users through the Flex Users API, include the required `email`, `full_name`, and `roles` fields in the `/Users/Provision` request before you mint the user's authentication token.\n* Sign in again and confirm that the user record shows the expected full name, email, and assigned roles. You can verify these attributes in Flex UI or in the TaskRouter Worker record.",
    "description": "Flex returns this error when the authentication response for a user does not include the required user attributes. For Flex authentication and user provisioning, the required attributes include `roles`, `full_name`, and `email`.",
    "date_created": "2024-03-19T18:09:22Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 45101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Configuration Not Found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio could not find the requested configuration for your account. This error occurs when your request references a Flex configuration resource that does not exist or is not available in the account context you used.\n\n### Possible causes\n\n- The configuration has not been created for the account yet.\n- The request uses an incorrect Account SID or environment.\n- The configuration identifier in the request is invalid or does not match an existing resource.\n- The configuration was deleted or is no longer available.\n\n### Possible solutions\n\n- Confirm that the configuration exists in the account you are using.\n- Verify that you are sending the request with the correct Account SID and credentials.\n- Check the configuration identifier and any request parameters for typos or mismatched values.\n- If the configuration does not exist, create it before retrying the request.\n- If you manage multiple accounts or environments, make sure you are querying the intended Flex instance.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n- [Twilio IAM documentation](/docs/iam)\n",
    "causes": "* The configuration has not been created for the account yet.\n* The request uses an incorrect Account SID or environment.\n* The configuration identifier in the request is invalid or does not match an existing resource.\n* The configuration was deleted or is no longer available.",
    "solutions": "* Confirm that the configuration exists in the account you are using.\n* Verify that you are sending the request with the correct Account SID and credentials.\n* Check the configuration identifier and any request parameters for typos or mismatched values.\n* If the configuration does not exist, create it before retrying the request.\n* If you manage multiple accounts or environments, make sure you are querying the intended Flex instance.",
    "description": "Twilio could not find the requested configuration for your account. This error occurs when your request references a Flex configuration resource that does not exist or is not available in the account context you used.",
    "date_created": "2018-10-01T08:54:26Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Collision On Configuration Change",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error occurs when two or more configuration update requests for the same Flex account happen at nearly the same time. Twilio could not apply your change because another request modified the same configuration before your update completed.\n\n### Possible causes\n\n- Multiple users or services attempted to update the same Flex configuration at the same time.\n- Your application sent overlapping update requests without waiting for the previous request to finish.\n- An automated deployment, script, or CI/CD job updated Flex configuration while you were making a manual change.\n- Your application retried a configuration update after the underlying configuration had already changed.\n\n### Possible solutions\n\n- Retry the configuration update after the other change completes.\n- Make configuration updates sequentially instead of sending concurrent requests.\n- Review your deployment workflows and automation to make sure only one process updates the same Flex configuration at a time.\n- Add retry logic with a short delay and fetch the latest configuration before sending another update.\n- Coordinate manual and automated changes so they do not target the same configuration simultaneously.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n",
    "causes": "* Multiple users or services attempted to update the same Flex configuration at the same time.\n* Your application sent overlapping update requests without waiting for the previous request to finish.\n* An automated deployment, script, or CI/CD job updated Flex configuration while you were making a manual change.\n* Your application retried a configuration update after the underlying configuration had already changed.",
    "solutions": "* Retry the configuration update after the other change completes.\n* Make configuration updates sequentially instead of sending concurrent requests.\n* Review your deployment workflows and automation to make sure only one process updates the same Flex configuration at a time.\n* Add retry logic with a short delay and fetch the latest configuration before sending another update.\n* Coordinate manual and automated changes so they do not target the same configuration simultaneously.",
    "description": "This error occurs when two or more configuration update requests for the same Flex account happen at nearly the same time. Twilio could not apply your change because another request modified the same configuration before your update completed.",
    "date_created": "2018-10-01T08:55:12Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Workspace Not Configured",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio could not complete the request because your Flex configuration does not include a valid TaskRouter Workspace. Set a Workspace SID in the configuration before you retry the operation.\n\n### Possible causes\n\n- Your Flex environment does not have a Workspace SID configured.\n- The configured Workspace SID is empty, malformed, or does not match an existing TaskRouter Workspace.\n- The application is pointing to the wrong account, region, or environment, so the expected Workspace is not available.\n- A deployment or configuration change removed or overwrote the Workspace setting.\n\n### Possible solutions\n\n- Review your Flex and TaskRouter configuration and confirm that a valid Workspace SID is set.\n- In Console, verify that the TaskRouter Workspace exists and belongs to the same account you are using for Flex.\n- If you manage configuration through code or environment variables, update the Workspace value and redeploy your application.\n- If you recently changed accounts or environments, make sure your credentials and configuration point to the correct Workspace.\n- Retry the request after you save the corrected configuration.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n- [TaskRouter documentation](/docs/taskrouter)\n- [Find your way around TaskRouter Workspaces, Workflows, and TaskQueues](/docs/taskrouter)\n",
    "causes": "* Your Flex environment does not have a Workspace SID configured.\n* The configured Workspace SID is empty, malformed, or does not match an existing TaskRouter Workspace.\n* The application is pointing to the wrong account, region, or environment, so the expected Workspace is not available.\n* A deployment or configuration change removed or overwrote the Workspace setting.",
    "solutions": "* Review your Flex and TaskRouter configuration and confirm that a valid Workspace SID is set.\n* In Console, verify that the TaskRouter Workspace exists and belongs to the same account you are using for Flex.\n* If you manage configuration through code or environment variables, update the Workspace value and redeploy your application.\n* If you recently changed accounts or environments, make sure your credentials and configuration point to the correct Workspace.\n* Retry the request after you save the corrected configuration.",
    "description": "Twilio could not complete the request because your Flex configuration does not include a valid TaskRouter Workspace. Set a Workspace SID in the configuration before you retry the operation.",
    "date_created": "2018-10-01T08:56:00Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45109,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Skills Limit Exceeded",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you try to add or save more Skills than the current Flex configuration allows. Flex uses Skills in the Admin UI for skills-based routing, and TaskRouter Worker attributes determine which tasks an agent is eligible to handle.\n\n### Possible causes\n\n- You assigned too many Skills to an agent in Flex Admin or Teams view while updating the agent profile.\n- Your application updated a TaskRouter Worker and sent too many values in the `skills` array inside the Worker's `attributes`.\n- Your routing design depends on too many individual Skills for the same agent instead of using TaskQueues and TaskRouter expressions to segment work.\n\n### Possible solutions\n\n- Review the affected agent or Worker and remove unused, duplicate, or overly specific entries from the `skills` list before saving again.\n- Simplify your routing model by grouping work into broader Skills and then routing with TaskQueues and TaskRouter expressions where appropriate.\n- If you manage agents through the API, validate the Worker `attributes` payload before updating the Worker so the `skills` array only includes the minimum set required for routing.\n\n#### Additional resources\n- [Configure Skill-Based Routing](/docs/flex/onboarding-guide/configure-skill-based-routing)\n- [Routing Part 1: Assign skills to your Flex agents](/docs/flex/admin-guide/tutorials/skills-assignment)\n- [Worker Resource](/docs/taskrouter/api/worker)\n",
    "causes": "* You assigned too many Skills to an agent in Flex Admin or Teams view while updating the agent profile.\n* Your application updated a TaskRouter Worker and sent too many values in the `skills` array inside the Worker's `attributes`.\n* Your routing design depends on too many individual Skills for the same agent instead of using TaskQueues and TaskRouter expressions to segment work.",
    "solutions": "* Review the affected agent or Worker and remove unused, duplicate, or overly specific entries from the `skills` list before saving again.\n* Simplify your routing model by grouping work into broader Skills and then routing with TaskQueues and TaskRouter expressions where appropriate.\n* If you manage agents through the API, validate the Worker `attributes` payload before updating the Worker so the `skills` array only includes the minimum set required for routing.",
    "description": "This error occurs when you try to add or save more Skills than the current Flex configuration allows. Flex uses Skills in the Admin UI for skills-based routing, and TaskRouter Worker attributes determine which tasks an agent is eligible to handle.",
    "date_created": "2022-08-29T08:24:09Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 45201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Resource Not Found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio returned this error because your request referenced a Flex resource that does not exist or is not available in the context of the request. This usually means the resource identifier is incorrect, the resource was deleted, or the request is targeting the wrong account, region, or environment.\n\n### Possible causes\n\n- The resource SID or identifier in the request is incorrect.\n- The resource was deleted and is no longer available.\n- The request is using the wrong Flex account, subaccount, or environment.\n- The request URL includes an invalid path or a resource type that does not match the identifier you provided.\n- Your application is attempting to retrieve a resource before it has been created or after it has expired.\n\n### Possible solutions\n\n- Verify that the resource identifier in your request is correct and matches the expected Flex resource.\n- Confirm that the resource still exists in the Console or through the API response from the create or list operation.\n- Check that you are sending the request to the correct account or subaccount and using the correct credentials.\n- Review the request URL and parameters to make sure they match the resource you want to access.\n- If your application stores resource identifiers, make sure it is not using stale or deleted values.\n- Retry the request only after confirming the resource exists and is available in the current environment.\n\n#### Additional resources\n\n- [Twilio Flex documentation](/docs/flex)\n",
    "causes": "* The resource SID or identifier in the request is incorrect.\n* The resource was deleted and is no longer available.\n* The request is using the wrong Flex account, subaccount, or environment.\n* The request URL includes an invalid path or a resource type that does not match the identifier you provided.\n* Your application is attempting to retrieve a resource before it has been created or after it has expired.",
    "solutions": "* Verify that the resource identifier in your request is correct and matches the expected Flex resource.\n* Confirm that the resource still exists in the Console or through the API response from the create or list operation.\n* Check that you are sending the request to the correct account or subaccount and using the correct credentials.\n* Review the request URL and parameters to make sure they match the resource you want to access.\n* If your application stores resource identifiers, make sure it is not using stale or deleted values.\n* Retry the request only after confirming the resource exists and is available in the current environment.",
    "description": "Twilio returned this error because your request referenced a Flex resource that does not exist or is not available in the context of the request. This usually means the resource identifier is incorrect, the resource was deleted, or the request is targeting the wrong account, region, or environment.",
    "date_created": "2018-10-16T06:00:03Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45202,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Resource Already Exists",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThe request tried to create a Flex resource that already exists. Twilio returns this error when the resource you are creating conflicts with an existing resource that has the same unique identifier or configuration.\n\n### Possible causes\n\n- You sent a create request for a resource that already exists in your Flex account.\n- The request included a unique value, such as a name or identifier, that is already in use.\n- Your application retried a create operation after the first request had already succeeded.\n- Your integration is creating duplicate resources because it is not checking for an existing resource before sending the request.\n\n### Possible solutions\n\n- Review the resource identifier in your request and confirm that it is unique.\n- Check whether the resource already exists before you try to create it.\n- If you intended to update an existing resource, use the appropriate update operation instead of creating a new resource.\n- Make sure your application handles retries safely so it does not create duplicate requests.\n- Review your Flex configuration and API request parameters for duplicate values.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n",
    "causes": "* You sent a create request for a resource that already exists in your Flex account.\n* The request included a unique value, such as a name or identifier, that is already in use.\n* Your application retried a create operation after the first request had already succeeded.\n* Your integration is creating duplicate resources because it is not checking for an existing resource before sending the request.",
    "solutions": "* Review the resource identifier in your request and confirm that it is unique.\n* Check whether the resource already exists before you try to create it.\n* If you intended to update an existing resource, use the appropriate update operation instead of creating a new resource.\n* Make sure your application handles retries safely so it does not create duplicate requests.\n* Review your Flex configuration and API request parameters for duplicate values.",
    "description": "The request tried to create a Flex resource that already exists. Twilio returns this error when the resource you are creating conflicts with an existing resource that has the same unique identifier or configuration.",
    "date_created": "2018-10-16T06:00:40Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45203,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Requested Chat User not found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio could not find the Chat User requested for a Chat Channel operation. This error usually means the Chat User was deleted, was never created, or the request referenced the wrong user identity.\n\n### Possible causes\n\n- The Chat User for the agent or end user does not exist.\n- The request uses an incorrect Chat User identity or SID.\n- A custom implementation deleted the Chat User that Flex expects to use.\n- User provisioning or identity synchronization did not complete as expected.\n- An agent signed in with identity data that does not match the existing Chat User record.\n\n### Possible solutions\n\n- Verify that the Chat User exists for the identity used in the request.\n- Confirm that your implementation passes the correct user identity and any related Chat Channel identifiers.\n- If you manage Chat Users outside of Flex, make sure your application does not remove users that active or future conversations depend on.\n- Retry after confirming that user provisioning completed successfully.\n- If you use single sign-on, verify that the user profile information synchronized from your identity provider is correct and consistent.\n- Have the agent sign in again if the user record may not have been created or synchronized correctly.\n- Review any custom Flex or backend logic that creates, updates, or deletes Chat Users.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n- [Programmable Chat documentation](/docs/chat)\n- [Set up single sign-on for Flex](/docs/flex/admin-guide/setup/sso-configuration)\n",
    "causes": "* The Chat User for the agent or end user does not exist.\n* The request uses an incorrect Chat User identity or SID.\n* A custom implementation deleted the Chat User that Flex expects to use.\n* User provisioning or identity synchronization did not complete as expected.\n* An agent signed in with identity data that does not match the existing Chat User record.",
    "solutions": "* Verify that the Chat User exists for the identity used in the request.\n* Confirm that your implementation passes the correct user identity and any related Chat Channel identifiers.\n* If you manage Chat Users outside of Flex, make sure your application does not remove users that active or future conversations depend on.\n* Retry after confirming that user provisioning completed successfully.\n* If you use single sign-on, verify that the user profile information synchronized from your identity provider is correct and consistent.\n* Have the agent sign in again if the user record may not have been created or synchronized correctly.\n* Review any custom Flex or backend logic that creates, updates, or deletes Chat Users.",
    "description": "Twilio could not find the Chat User requested for a Chat Channel operation. This error usually means the Chat User was deleted, was never created, or the request referenced the wrong user identity.",
    "date_created": "2019-07-08T11:49:22Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45204,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Requested Flex Chat Channel is not found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nWe could not find the Flex Chat Channel referenced by your request. Flex stores messaging interactions in Chat channels. For inbound messaging, we create channels as messages arrive based on your Flex channel configuration. For outbound messaging, create the channel first and then use the returned channel identifier in later requests.\n\n### Possible causes\n\n- The request uses a Channel SID that does not exist, is malformed, or no longer points to an available Flex Chat Channel. Fetch and delete operations on the Flex Chat Channel Resource require a valid `Sid`.\n- You are trying to run an outbound messaging flow before creating the Flex Chat Channel. To start an outbound interaction, create the channel with the Flex Chat Channel Resource and save the returned `sid`.\n- Your inbound messaging channel is not configured to create a Flex Chat Channel. Flex requires the phone number or channel to be registered with Flex and mapped through a Flex Flow and message handler.\n- You are reusing channel details from a completed interaction. When an interaction ends, the Chat Channel is set to `inactive` and the related Proxy session is deleted. Channel Janitor can also clean up completed conversations, which makes old channel identifiers unsuitable for a new interaction.\n\n### Possible solutions\n\n- Verify that your request uses the correct Flex Chat Channel SID. Fetch or list the Flex Chat Channel Resource and use the exact `sid` returned by the API in subsequent requests.\n- For outbound messaging, create the Flex Chat Channel first with `POST /v1/Channels`. Include the required fields such as `flexFlowSid`, `identity`, `chatUserFriendlyName`, and `chatFriendlyName`, then use the returned channel SID when you send messages through the chat channel.\n- For inbound messaging, confirm that the phone number or channel is registered with Flex and connected to the correct Flex Flow. If the channel is still not created, trace the message through your phone number configuration, Flex Proxy Service session, and the Flex Chat Service channel in Console.\n- If the previous interaction has already ended, start a new interaction instead of reusing the old channel details. Keep Channel Janitor enabled unless you intentionally manage long-lived channels.\n\n#### Additional resources\n\n- [Flex Chat Channel Resource](/docs/flex/developer/messaging/chat-channel)\n- [Receive Inbound Messages from SMS, WhatsApp, and Facebook Messenger](/docs/flex/developer/messaging/inbound-messages-channels)\n- [Send outbound messages via SMS, WhatsApp, and other Channels](/docs/flex/developer/messaging/outbound-messages-channels)\n",
    "causes": "* The request uses a Channel SID that does not exist, is malformed, or no longer points to an available Flex Chat Channel. Fetch and delete operations on the Flex Chat Channel Resource require a valid `Sid`.\n* You are trying to run an outbound messaging flow before creating the Flex Chat Channel. To start an outbound interaction, create the channel with the Flex Chat Channel Resource and save the returned `sid`.\n* Your inbound messaging channel is not configured to create a Flex Chat Channel. Flex requires the phone number or channel to be registered with Flex and mapped through a Flex Flow and message handler.\n* You are reusing channel details from a completed interaction. When an interaction ends, the Chat Channel is set to `inactive` and the related Proxy session is deleted. Channel Janitor can also clean up completed conversations, which makes old channel identifiers unsuitable for a new interaction.",
    "solutions": "* Verify that your request uses the correct Flex Chat Channel SID. Fetch or list the Flex Chat Channel Resource and use the exact `sid` returned by the API in subsequent requests.\n* For outbound messaging, create the Flex Chat Channel first with `POST /v1/Channels`. Include the required fields such as `flexFlowSid`, `identity`, `chatUserFriendlyName`, and `chatFriendlyName`, then use the returned channel SID when you send messages through the chat channel.\n* For inbound messaging, confirm that the phone number or channel is registered with Flex and connected to the correct Flex Flow. If the channel is still not created, trace the message through your phone number configuration, Flex Proxy Service session, and the Flex Chat Service channel in Console.\n* If the previous interaction has already ended, start a new interaction instead of reusing the old channel details. Keep Channel Janitor enabled unless you intentionally manage long-lived channels.",
    "description": "We could not find the Flex Chat Channel referenced by your request. Flex stores messaging interactions in Chat channels. For inbound messaging, we create channels as messages arrive based on your Flex channel configuration. For outbound messaging, create the channel first and then use the returned channel identifier in later requests.",
    "date_created": "2019-07-08T11:50:13Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 45205,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Requested Flex Flow is not found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Flex request or related messaging request references a Flex Flow that Twilio cannot locate. A Flex Flow links a messaging identity, such as an SMS number or web chat identity, to Flex and defines how inbound messages are handled.\n\n### Possible causes\n\n- The request references a Flex Flow SID that does not exist when Twilio tries to fetch, update, or use a Flex Flow resource identified by an `FO` SID.\n- No Flex Flow exists for the messaging identity you are connecting to Flex. Each phone number, chat channel, or other messaging contact identity needs a corresponding Flex Flow.\n- For SMS, the phone number was not registered on the Flex Messaging page and no Flex Flow was created for that number.\n\n### Possible solutions\n\n- Verify the Flex Flow SID in your request. Then confirm that the resource can be fetched from `/v1/FlexFlows/{Sid}` or that it appears in the Flex Console.\n- Create a Flex Flow for every messaging identity that you connect to Flex. You can manage Flex Flows in the Flex Console or with the Flex Flow API.\n- For SMS, register the phone number on the Flex Messaging page so Twilio links the number's message handler to Proxy and creates a Flex Flow. If you configure SMS manually, point the phone number's message handler to the Flex Proxy Service and create the Flex Flow entry through the API.\n- When you create or update the Flex Flow, provide the integration settings required for the selected `integrationType`. Use `integration.flowSid` for `studio`, `integration.url` for `external`, and `integration.workspaceSid`, `integration.workflowSid`, and `integration.channel` for `task`.\n\n#### Additional resources\n\n- [Manage Flex Flows](/docs/flex/developer/messaging/manage-flows)\n- [Flex Flow resource API reference](/docs/flex/developer/messaging/flow)\n- [Receive inbound messages from SMS, WhatsApp, and Facebook Messenger](/docs/flex/developer/messaging/inbound-messages-channels)\n",
    "causes": "* The request references a Flex Flow SID that does not exist when Twilio tries to fetch, update, or use a Flex Flow resource identified by an `FO` SID.\n* No Flex Flow exists for the messaging identity you are connecting to Flex. Each phone number, chat channel, or other messaging contact identity needs a corresponding Flex Flow.\n* For SMS, the phone number was not registered on the Flex Messaging page and no Flex Flow was created for that number.",
    "solutions": "* Verify the Flex Flow SID in your request. Then confirm that the resource can be fetched from `/v1/FlexFlows/{Sid}` or that it appears in the Flex Console.\n* Create a Flex Flow for every messaging identity that you connect to Flex. You can manage Flex Flows in the Flex Console or with the Flex Flow API.\n* For SMS, register the phone number on the Flex Messaging page so Twilio links the number's message handler to Proxy and creates a Flex Flow. If you configure SMS manually, point the phone number's message handler to the Flex Proxy Service and create the Flex Flow entry through the API.\n* When you create or update the Flex Flow, provide the integration settings required for the selected `integrationType`. Use `integration.flowSid` for `studio`, `integration.url` for `external`, and `integration.workspaceSid`, `integration.workflowSid`, and `integration.channel` for `task`.",
    "description": "This error occurs when a Flex request or related messaging request references a Flex Flow that Twilio cannot locate. A Flex Flow links a messaging identity, such as an SMS number or web chat identity, to Flex and defines how inbound messages are handled.",
    "date_created": "2019-09-26T11:41:41Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45206,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Chat User is already a member of the Chat Channel",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio returned this warning because your request attempted to add a Chat User to a Chat Channel where that user is already a member. Twilio does not create a duplicate membership for the same user in the same channel.\n\n### Possible causes\n\n- Your application sent the same add-member request more than once for the same Chat User and Chat Channel.\n- Retry logic submitted a duplicate request after a timeout or delayed response.\n- Your Flex integration attempted to add a worker or user to a channel without first checking existing channel membership.\n- Concurrent requests in your application tried to add the same user to the same channel at nearly the same time.\n\n### Possible solutions\n\n- Check whether the user is already a member of the Chat Channel before creating a new membership.\n- Update your application logic to make add-member requests idempotent so duplicate submissions do not trigger this warning.\n- Review retry behavior in your client or server code and prevent automatic retries from creating duplicate membership requests.\n- If you are using Flex, review the workflow or plugin logic that adds participants to chat channels and remove duplicate membership actions.\n- Treat this warning as a non-fatal conflict when the intended result is that the user is already present in the channel.\n\n#### Additional resources\n\n- [Twilio Chat documentation](/docs/chat)\n- [Twilio Flex documentation](/docs/flex)\n",
    "causes": "* Your application sent the same add-member request more than once for the same Chat User and Chat Channel.\n* Retry logic submitted a duplicate request after a timeout or delayed response.\n* Your Flex integration attempted to add a worker or user to a channel without first checking existing channel membership.\n* Concurrent requests in your application tried to add the same user to the same channel at nearly the same time.",
    "solutions": "* Check whether the user is already a member of the Chat Channel before creating a new membership.\n* Update your application logic to make add-member requests idempotent so duplicate submissions do not trigger this warning.\n* Review retry behavior in your client or server code and prevent automatic retries from creating duplicate membership requests.\n* If you are using Flex, review the workflow or plugin logic that adds participants to chat channels and remove duplicate membership actions.\n* Treat this warning as a non-fatal conflict when the intended result is that the user is already present in the channel.",
    "description": "Twilio returned this warning because your request attempted to add a Chat User to a Chat Channel where that user is already a member. Twilio does not create a duplicate membership for the same user in the same channel.",
    "date_created": "2019-09-26T11:42:45Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45207,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Chat User per Chat Channel limit reached. User is part of too many Chat Channels.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error occurs when a user has reached the maximum number of Chat Channels they can belong to at the same time. In Flex, this usually means an agent was not removed from older or inactive Chat Channels after work on a task finished.\n\n### Possible causes\n\n- The user is still a member of too many active or inactive Chat Channels.\n- Flex orchestration did not remove the agent from the Chat Channel after the related task was completed.\n- A custom task channel or custom Flex implementation is not correctly configured to handle chat channel membership.\n- Custom code is adding users to channels without removing them when the conversation is finished.\n- The configured Chat Channel membership limit is too low for your current workflow.\n\n### Possible solutions\n\n- Review the user's existing Chat Channel memberships and remove them from inactive channels that are no longer needed.\n- Check your Flex workflow and task lifecycle to confirm agents are removed from Chat Channels when work is complete.\n- Review any custom Flex UI or backend logic that manages chat-capable task channels and channel membership.\n- If you manage channels directly, use the Programmable Chat API to remove members from channels that should no longer be associated with the user.\n- If your use case requires a higher limit, review your Chat Channel limit settings in Console and adjust them if appropriate.\n- If the issue happens repeatedly, audit your implementation for channels that remain open or tasks that never complete properly.\n\n#### Additional resources\n\n- [Flex documentation](/docs/flex)\n- [Programmable Chat documentation](/docs/chat)\n",
    "causes": "* The user is still a member of too many active or inactive Chat Channels.\n* Flex orchestration did not remove the agent from the Chat Channel after the related task was completed.\n* A custom task channel or custom Flex implementation is not correctly configured to handle chat channel membership.\n* Custom code is adding users to channels without removing them when the conversation is finished.\n* The configured Chat Channel membership limit is too low for your current workflow.",
    "solutions": "* Review the user's existing Chat Channel memberships and remove them from inactive channels that are no longer needed.\n* Check your Flex workflow and task lifecycle to confirm agents are removed from Chat Channels when work is complete.\n* Review any custom Flex UI or backend logic that manages chat-capable task channels and channel membership.\n* If you manage channels directly, use the Programmable Chat API to remove members from channels that should no longer be associated with the user.\n* If your use case requires a higher limit, review your Chat Channel limit settings in Console and adjust them if appropriate.\n* If the issue happens repeatedly, audit your implementation for channels that remain open or tasks that never complete properly.",
    "description": "This error occurs when a user has reached the maximum number of Chat Channels they can belong to at the same time. In Flex, this usually means an agent was not removed from older or inactive Chat Channels after work on a task finished.",
    "date_created": "2019-09-26T11:43:01Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45208,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Chat Channel with this unique name already exists",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio could not create the Chat Channel because another active Chat Channel already uses the same unique name. Unique channel names must be distinct among active channels.\n\n### Possible causes\n\n- You attempted to create a new Chat Channel with a `UniqueName` value that is already assigned to an active channel.\n- Your application retried channel creation with the same `UniqueName` after the first channel was already created.\n- A previous channel with that unique name still exists and has not been marked inactive or removed.\n\n### Possible solutions\n\n- Use the existing active Chat Channel instead of creating a new one.\n- Update your application logic to generate a different `UniqueName` for each new channel you create.\n- If you no longer need the existing channel, mark the channel as inactive by updating the channel attributes to set `status` to `inactive`.\n- Remove the existing Chat Channel if it is no longer needed, then create a new channel with that unique name.\n- Check for an existing channel before you create a new one so your application does not submit duplicate channel creation requests.\n\n#### Additional resources\n\n- [Twilio Flex documentation](/docs/flex)\n- [Twilio Programmable Chat documentation](/docs/chat)\n",
    "causes": "* You attempted to create a new Chat Channel with a `UniqueName` value that is already assigned to an active channel.\n* Your application retried channel creation with the same `UniqueName` after the first channel was already created.\n* A previous channel with that unique name still exists and has not been marked inactive or removed.",
    "solutions": "* Use the existing active Chat Channel instead of creating a new one.\n* Update your application logic to generate a different `UniqueName` for each new channel you create.\n* If you no longer need the existing channel, mark the channel as inactive by updating the channel attributes to set `status` to `inactive`.\n* Remove the existing Chat Channel if it is no longer needed, then create a new channel with that unique name.\n* Check for an existing channel before you create a new one so your application does not submit duplicate channel creation requests.",
    "description": "Twilio could not create the Chat Channel because another active Chat Channel already uses the same unique name. Unique channel names must be distinct among active channels.",
    "date_created": "2019-09-26T11:43:18Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45209,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Adding user to Chat Channel timed out",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error occurs when Flex cannot complete the step that adds a user to a Chat Channel before the request times out. In legacy Flex Webchat, Twilio creates the Chat Channel and then adds the Programmable Chat user as a channel member during `startEngagement`.\n\n### Possible causes\n\n- A timeout occurred while Twilio was adding the user to the Chat Channel.\n- The legacy Webchat address or Flex Flow configuration is incorrect, such as an invalid Chat Service or Studio Flow configuration.\n- The Chat Channel was not created or linked correctly in the Flex Chat Service.\n- A custom messaging orchestration flow is in use without the required Flex message handlers or `ChatOrchestrator` override.\n\n### Possible solutions\n\n- Refresh the browser and retry the webchat session.\n- Verify your legacy Webchat address and Flex Flow configuration, including the Chat Service and Studio Flow used for the webchat channel.\n- In Twilio Console, confirm that the Chat Channel exists in the Flex Chat Service and that the interaction appears there.\n- Review the Studio Flow Execution Logs for the webchat or messaging flow and fix any failing widgets or downstream requests.\n- If you use custom messaging orchestration, make sure your channel configuration and `ChatOrchestrator` override match your implementation.\n- If you still use Flex Webchat 2.0, migrate to Webchat 3.x.x.\n\n#### Additional resources\n\n- [Set up and use Flex Webchat 2.0](/docs/flex/developer/messaging/webchat/setup)\n- [Flex Messaging FAQ and Troubleshooting](/docs/flex/developer/messaging/faq-and-troubleshooting)\n- [Manage legacy Webchat Addresses](/docs/flex/admin-guide/tutorials/webchat-setup)\n",
    "causes": "* A timeout occurred while Twilio was adding the user to the Chat Channel.\n* The legacy Webchat address or Flex Flow configuration is incorrect, such as an invalid Chat Service or Studio Flow configuration.\n* The Chat Channel was not created or linked correctly in the Flex Chat Service.\n* A custom messaging orchestration flow is in use without the required Flex message handlers or `ChatOrchestrator` override.",
    "solutions": "* Refresh the browser and retry the webchat session.\n* Verify your legacy Webchat address and Flex Flow configuration, including the Chat Service and Studio Flow used for the webchat channel.\n* In Twilio Console, confirm that the Chat Channel exists in the Flex Chat Service and that the interaction appears there.\n* Review the Studio Flow Execution Logs for the webchat or messaging flow and fix any failing widgets or downstream requests.\n* If you use custom messaging orchestration, make sure your channel configuration and `ChatOrchestrator` override match your implementation.\n* If you still use Flex Webchat 2.0, migrate to Webchat 3.x.x.",
    "description": "This error occurs when Flex cannot complete the step that adds a user to a Chat Channel before the request times out. In legacy Flex Webchat, Twilio creates the Chat Channel and then adds the Programmable Chat user as a channel member during `startEngagement`.",
    "date_created": "2019-09-26T11:48:14Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 45210,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Flex Flow creation failed",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error means Flex could not create the Flex Flow. Most often, the create request is missing required parameters, contains invalid values, or conflicts with an existing Flex Flow configuration.\n\n### Possible causes\n\n- The request did not include one or more required parameters such as `friendlyName`, `chatServiceSid`, or `channelType`.\n- The `channelType` value is not supported. Flex Flow creation supports `web`, `sms`, `facebook`, `whatsapp`, `line`, and `custom`.\n- The request used `integrationType` without the matching integration settings. `studio` requires `integration.flowSid`, `external` requires `integration.url`, and `task` requires `integration.workspaceSid`, `integration.workflowSid`, and `integration.channel`.\n- One or more request attributes conflicted with an existing Flex Flow.\n\n### Possible solutions\n\n- Include all required top-level fields in the create request. At minimum, send `friendlyName`, `chatServiceSid`, and `channelType`.\n- Verify that `channelType` and `integrationType` use supported values only.\n- If you use `studio`, `external`, or `task`, add the required integration fields for that integration type before you retry the request.\n- Review the error details returned in the API response, then correct the invalid or missing fields and submit the request again.\n- If the request conflicts with an existing Flex Flow, update the new Flow configuration so it does not overlap with an existing one.\n\n#### Additional resources\n\n- [Flex Flow resource](/docs/flex/developer/messaging/flow)\n- [Manage Flex Flows](/docs/flex/developer/messaging/manage-flows)\n- [Flex Messaging Limits](/docs/flex/developer/messaging/limits)\n",
    "causes": "* The request did not include one or more required parameters such as `friendlyName`, `chatServiceSid`, or `channelType`.\n* The `channelType` value is not supported. Flex Flow creation supports `web`, `sms`, `facebook`, `whatsapp`, `line`, and `custom`.\n* The request used `integrationType` without the matching integration settings. `studio` requires `integration.flowSid`, `external` requires `integration.url`, and `task` requires `integration.workspaceSid`, `integration.workflowSid`, and `integration.channel`.\n* One or more request attributes conflicted with an existing Flex Flow.",
    "solutions": "* Include all required top-level fields in the create request. At minimum, send `friendlyName`, `chatServiceSid`, and `channelType`.\n* Verify that `channelType` and `integrationType` use supported values only.\n* If you use `studio`, `external`, or `task`, add the required integration fields for that integration type before you retry the request.\n* Review the error details returned in the API response, then correct the invalid or missing fields and submit the request again.\n* If the request conflicts with an existing Flex Flow, update the new Flow configuration so it does not overlap with an existing one.",
    "description": "This error means Flex could not create the Flex Flow. Most often, the create request is missing required parameters, contains invalid values, or conflicts with an existing Flex Flow configuration.",
    "date_created": "2022-02-15T13:43:50Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45211,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Provided identity is reserved by system",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create a Flex Chat Channel and the required `identity` value is one that the system reserves for internal use. The `identity` parameter uniquely identifies the chat user for the new channel, so you must send your own valid user identity in the request.\n\n### Possible causes\n\n- You sent a reserved value in the `identity` field while creating a channel with `POST /Channels`.\n- Your channel creation logic is assigning a system-reserved identity instead of a unique identity for the chat user. Flex requires `identity` for channel creation, and custom chat integrations also rely on a unique user identity.\n- Your application is reusing an identity value that is not intended for customer identities in Flex messaging. Flex Flows connect messaging identities to Flex, and the channel request must provide a valid chat user identity.\n\n### Possible solutions\n\n- Change the `identity` value in your request to a different valid identity and try again.\n- Make sure the `identity` you send uniquely identifies the chat user for the channel you are creating.\n- If you use a custom chat integration, generate identities from your own customer or application user IDs instead of hardcoded system-style values.\n- Do not use PII such as a phone number or email address as a custom chat identity. Use a stable application identifier instead.\n- Review the code that creates the Flex channel and confirm it sends the correct `flexFlowSid` and a valid non-reserved `identity` for the user.\n\n#### Additional resources\n\n- [Flex Chat Channel Resource](/docs/flex/developer/messaging/chat-channel)\n- [Manage Flex Flows](/docs/flex/developer/messaging/manage-flows)\n- [Integrate a Custom Chat Client with Flex](/docs/flex/developer/messaging/integrate-custom-chat-client)\n",
    "causes": "* You sent a reserved value in the `identity` field while creating a channel with `POST /Channels`.\n* Your channel creation logic is assigning a system-reserved identity instead of a unique identity for the chat user. Flex requires `identity` for channel creation, and custom chat integrations also rely on a unique user identity.\n* Your application is reusing an identity value that is not intended for customer identities in Flex messaging. Flex Flows connect messaging identities to Flex, and the channel request must provide a valid chat user identity.",
    "solutions": "* Change the `identity` value in your request to a different valid identity and try again.\n* Make sure the `identity` you send uniquely identifies the chat user for the channel you are creating.\n* If you use a custom chat integration, generate identities from your own customer or application user IDs instead of hardcoded system-style values.\n* Do not use PII such as a phone number or email address as a custom chat identity. Use a stable application identifier instead.\n* Review the code that creates the Flex channel and confirm it sends the correct `flexFlowSid` and a valid non-reserved `identity` for the user.",
    "description": "This error occurs when you create a Flex Chat Channel and the required `identity` value is one that the system reserves for internal use. The `identity` parameter uniquely identifies the chat user for the new channel, so you must send your own valid user identity in the request.",
    "date_created": "2020-08-10T12:49:03Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 45212,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Flex Flow creation failed",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create a Flex Flow and Twilio cannot complete the request. The create request can fail when required parameters are missing, parameter values are invalid for the selected integration, or the new Flex Flow conflicts with an existing Flex Flow.\n\n### Possible causes\n\n- The request is missing a required create parameter such as `FriendlyName`, `ChatServiceSid`, or `ChannelType`.\n- `ChannelType` is not one of the supported values for a Flex Flow.\n- `IntegrationType` is invalid, or the request is missing integration-specific parameters required for that integration.\n- You set `IntegrationType` to `studio` but did not provide a valid `Integration.FlowSid`.\n- You set `IntegrationType` to `external` but did not provide a valid `Integration.Url`.\n- You set `IntegrationType` to `task` but did not provide `Integration.WorkspaceSid`, `Integration.WorkflowSid`, or `Integration.Channel`.\n- A request attribute such as `ContactIdentity` conflicts with an existing Flex Flow for the same messaging identity or message handler.\n- Your account has reached the Flex Flow limit.\n\n### Possible solutions\n\n- Review the error details returned in the API response and correct the specific field that failed validation.\n- Confirm that the request includes `FriendlyName`, `ChatServiceSid`, and `ChannelType`.\n- Verify that `ChannelType` is set to a supported value such as `web`, `sms`, `facebook`, `whatsapp`, `line`, or `custom`.\n- Verify that `IntegrationType` is set to `studio`, `external`, or `task`.\n- If you use `studio`, provide a valid `Integration.FlowSid`.\n- If you use `external`, provide a valid absolute URL in `Integration.Url`.\n- If you use `task`, provide valid values for `Integration.WorkspaceSid`, `Integration.WorkflowSid`, and `Integration.Channel`.\n- Check your existing Flex Flows in Console or through the API and remove or update any flow that uses the same contact identity or messaging configuration.\n- If you are near the account limit, delete unused Flex Flows before creating a new one.\n\n#### Additional resources\n\n- [Flex Flow resource](/docs/flex/developer/messaging/flow)\n- [Manage Flex Flows](/docs/flex/developer/messaging/manage-flows)\n- [Flex Messaging Limits](/docs/flex/developer/messaging/limits)\n",
    "causes": "* The request is missing a required create parameter such as `FriendlyName`, `ChatServiceSid`, or `ChannelType`.\n* `ChannelType` is not one of the supported values for a Flex Flow.\n* `IntegrationType` is invalid, or the request is missing integration-specific parameters required for that integration.\n* You set `IntegrationType` to `studio` but did not provide a valid `Integration.FlowSid`.\n* You set `IntegrationType` to `external` but did not provide a valid `Integration.Url`.\n* You set `IntegrationType` to `task` but did not provide `Integration.WorkspaceSid`, `Integration.WorkflowSid`, or `Integration.Channel`.\n* A request attribute such as `ContactIdentity` conflicts with an existing Flex Flow for the same messaging identity or message handler.\n* Your account has reached the Flex Flow limit.",
    "solutions": "* Review the error details returned in the API response and correct the specific field that failed validation.\n* Confirm that the request includes `FriendlyName`, `ChatServiceSid`, and `ChannelType`.\n* Verify that `ChannelType` is set to a supported value such as `web`, `sms`, `facebook`, `whatsapp`, `line`, or `custom`.\n* Verify that `IntegrationType` is set to `studio`, `external`, or `task`.\n* If you use `studio`, provide a valid `Integration.FlowSid`.\n* If you use `external`, provide a valid absolute URL in `Integration.Url`.\n* If you use `task`, provide valid values for `Integration.WorkspaceSid`, `Integration.WorkflowSid`, and `Integration.Channel`.\n* Check your existing Flex Flows in Console or through the API and remove or update any flow that uses the same contact identity or messaging configuration.\n* If you are near the account limit, delete unused Flex Flows before creating a new one.",
    "description": "This error occurs when you try to create a Flex Flow and Twilio cannot complete the request. The create request can fail when required parameters are missing, parameter values are invalid for the selected integration, or the new Flex Flow conflicts with an existing Flex Flow.",
    "date_created": "2022-02-16T07:55:23Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45301,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Error occurred when connecting to a Meeting Participant",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error means Flex couldn't finish connecting another user as a meeting participant. Flex reports this error when it encounters a service error while connecting to a user. In practice, this can appear during live call workflows that require Flex to connect another participant, such as call monitoring or warm transfer.\n\n### Possible causes\n\n- Flex encountered a service error while trying to connect the participant.\n- The action was attempted in a workflow that depends on a live, conference-based call. For warm transfer, the call must be live, you can't already be in another transfer, and the action won't work while you're on hold.\n- The user attempting the action wasn't allowed to monitor or join the target interaction. Admins can monitor calls, while supervisors who aren't team owners can't monitor call transactions.\n- Team ownership or team membership changes weren't yet reflected in Flex UI. After a team owner change, refresh Flex UI. After moving a user to a team, that user must complete an activity in Flex UI before they appear correctly on the Teams page.\n\n### Possible solutions\n\n- Retry the action after confirming the interaction is still live and conference-based, and that you're not on hold or already in another transfer.\n- If you're monitoring a call, make sure the acting user is an admin or owns the target agent's team. If you recently changed team ownership, refresh Flex UI before trying again.\n- Open the Flex Status Report or download an error report to capture more detail about the failure. If the issue is part of a broader platform disruption, review the Twilio Status page.\n- Review Flex error logs in Debugger and run System checkup in Console to identify runtime or configuration issues.\n\n#### Additional resources\n\n- [Warm transfer](/docs/flex/end-user-guide/warm-transfer)\n- [Monitor agent activity](/docs/flex/end-user-guide/real-time-reporting/monitor-agent-activity)\n- [User Guide to Troubleshooting the Flex UI](/docs/flex/end-user-guide/troubleshooting)\n",
    "causes": "* Flex encountered a service error while trying to connect the participant.\n* The action was attempted in a workflow that depends on a live, conference-based call. For warm transfer, the call must be live, you can't already be in another transfer, and the action won't work while you're on hold.\n* The user attempting the action wasn't allowed to monitor or join the target interaction. Admins can monitor calls, while supervisors who aren't team owners can't monitor call transactions.\n* Team ownership or team membership changes weren't yet reflected in Flex UI. After a team owner change, refresh Flex UI. After moving a user to a team, that user must complete an activity in Flex UI before they appear correctly on the Teams page.",
    "solutions": "* Retry the action after confirming the interaction is still live and conference-based, and that you're not on hold or already in another transfer.\n* If you're monitoring a call, make sure the acting user is an admin or owns the target agent's team. If you recently changed team ownership, refresh Flex UI before trying again.\n* Open the Flex Status Report or download an error report to capture more detail about the failure. If the issue is part of a broader platform disruption, review the Twilio Status page.\n* Review Flex error logs in Debugger and run System checkup in Console to identify runtime or configuration issues.",
    "description": "This error means Flex couldn't finish connecting another user as a meeting participant. Flex reports this error when it encounters a service error while connecting to a user. In practice, this can appear during live call workflows that require Flex to connect another participant, such as call monitoring or warm transfer.",
    "date_created": "2020-01-14T21:10:52Z",
    "last_updated": "2026-04-16T22:35:24+01:00"
  },
  {
    "code": 45302,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Participant was disconnected before setting up Meeting",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nUser was disconnected from media before setting up Meeting\n\n### Possible causes\n\nBad connectivity, User error\n\n### Possible solutions\n\nPlease verify user connectivity and retry\n",
    "causes": "Bad connectivity, User error",
    "solutions": "Please verify user connectivity and retry",
    "description": "User was disconnected from media before setting up Meeting",
    "date_created": "2020-01-14T21:11:50Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45303,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Participant was busy",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nUser was busy and could not connect to media\n\n### Possible causes\n\nUser was already engaged on the media channel\n\n### Possible solutions\n\nDisconnect media and retry.\n",
    "causes": "User was already engaged on the media channel",
    "solutions": "Disconnect media and retry.",
    "description": "User was busy and could not connect to media",
    "date_created": "2020-01-14T21:12:48Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45304,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal timeout error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error means Flex did not complete an internal operation before the timeout limit was reached. It typically indicates a temporary service-side delay while Flex is processing a live interaction or another time-sensitive operation.\n\n### Possible causes\n\n- A Twilio service that Flex depends on did not respond before the operation timed out.\n- Network connectivity issues between the agent desktop and Twilio delayed or interrupted the request.\n- The action was attempted during a live voice workflow and the interaction state changed before Flex could finish processing it.\n\n### Possible solutions\n\n- Retry the operation.\n- Before retrying, confirm that the interaction is still active. If you are performing a warm transfer, make sure the call is live, conference-based, not on hold, and not already in another transfer.\n- Verify the agent's network connection and confirm that your browser, proxy, or VPN allows access to required Flex domains such as `*.twilio.com`.\n- Open the Flex Status Report or download an error report to capture logs and service status details for the failed session.\n- If multiple users see the same timeout, check the Twilio Status page and review the related events in Debugger.\n\n#### Additional resources\n\n- [User Guide to Troubleshooting the Flex UI](/docs/flex/end-user-guide/troubleshooting)\n- [Error Handling and Debugging](/docs/flex/developer/ui/errors-and-debugging)\n- [Warm transfer](/docs/flex/end-user-guide/warm-transfer)\n",
    "causes": "* A Twilio service that Flex depends on did not respond before the operation timed out.\n* Network connectivity issues between the agent desktop and Twilio delayed or interrupted the request.\n* The action was attempted during a live voice workflow and the interaction state changed before Flex could finish processing it.",
    "solutions": "* Retry the operation.\n* Before retrying, confirm that the interaction is still active. If you are performing a warm transfer, make sure the call is live, conference-based, not on hold, and not already in another transfer.\n* Verify the agent's network connection and confirm that your browser, proxy, or VPN allows access to required Flex domains such as `*.twilio.com`.\n* Open the Flex Status Report or download an error report to capture logs and service status details for the failed session.\n* If multiple users see the same timeout, check the Twilio Status page and review the related events in Debugger.",
    "description": "This error means Flex did not complete an internal operation before the timeout limit was reached. It typically indicates a temporary service-side delay while Flex is processing a live interaction or another time-sensitive operation.",
    "date_created": "2020-01-14T21:13:41Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45305,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": " No answer from Participant",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning appears when Flex tries to connect another participant in a voice interaction and does not receive a media response from that participant. You can see this during actions such as a consult call or warm transfer when the target participant does not answer or is not ready to take the call.\n\n### Possible causes\n\n- The participant was inactive and did not answer the call request.\n- The participant was marked as available in Flex but was actually absent, so Flex routed the call and it went unanswered. ([help.twilio.com](https://help.twilio.com/articles/48864939563547))\n- The participant could not complete the call because their browser did not have access to a working microphone or audio device. Flex rejects incoming and outgoing calls until the device issue is fixed.\n\n### Possible solutions\n\n- Retry the operation after confirming that the target participant is active and able to answer the call.\n- If this happened during a warm transfer, cancel the consult call and start it again after confirming the receiving agent or queue is ready.\n- Make sure agents who are away from their desks are set to `Offline` or another non-available activity so Flex does not route calls to them. ([help.twilio.com](https://help.twilio.com/articles/48864939563547))\n- Verify microphone permissions, headset connection, and the selected audio device in Flex before retrying the call.\n\n#### Additional resources\n\n- [Warm transfer](/docs/flex/end-user-guide/warm-transfer)\n- [Initial Audio Device Check](/docs/flex/end-user-guide/initial-audio-device-check)\n- [Understanding Missed Calls Logged for Absent Agents in Twilio Flex](https://help.twilio.com/articles/48864939563547)\n",
    "causes": "* The participant was inactive and did not answer the call request.\n* The participant was marked as available in Flex but was actually absent, so Flex routed the call and it went unanswered. ([help.twilio.com](https://help.twilio.com/articles/48864939563547))\n* The participant could not complete the call because their browser did not have access to a working microphone or audio device. Flex rejects incoming and outgoing calls until the device issue is fixed.",
    "solutions": "* Retry the operation after confirming that the target participant is active and able to answer the call.\n* If this happened during a warm transfer, cancel the consult call and start it again after confirming the receiving agent or queue is ready.\n* Make sure agents who are away from their desks are set to `Offline` or another non-available activity so Flex does not route calls to them. ([help.twilio.com](https://help.twilio.com/articles/48864939563547))\n* Verify microphone permissions, headset connection, and the selected audio device in Flex before retrying the call.",
    "description": "This warning appears when Flex tries to connect another participant in a voice interaction and does not receive a media response from that participant. You can see this during actions such as a consult call or warm transfer when the target participant does not answer or is not ready to take the call.",
    "date_created": "2020-01-14T21:14:37Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45306,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Meeting was canceled",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning indicates that Flex canceled a consult or conference step before the additional participant was connected. In Flex voice workflows, this can happen during a warm transfer or consult flow when the transfer is canceled before the meeting is established.\n\n### Possible causes\n\n- The initiating agent canceled the consult call before the target agent or queue accepted it.\n- A transfer was canceled through the Flex UI or by programmatically canceling the voice task transfer with `cancelVoiceTaskTransfer`.\n- The transfer was started from a call that was not live and conference-based.\n- The initiating agent was on hold when the transfer was attempted.\n- Another transfer was already in progress.\n- The transfer targeted a task queue that had not been used in the last 30 days.\n\n### Possible solutions\n\n- If the cancellation was intentional, no action is required.\n- If the transfer should continue, start the consult or warm transfer again.\n- Make sure you start the transfer from a live, conference-based call.\n- Make sure the initiating agent is active on the call and not on hold.\n- Confirm that no other transfer is already in progress before starting a new one.\n- If you are transferring to a queue that has not been used recently, create an inbound task that routes to that queue, then retry the warm transfer.\n- If you cancel transfers programmatically, review the logic that calls `cancelVoiceTaskTransfer` or other transfer cancel actions.\n\n#### Additional resources\n\n- [Warm transfer](/docs/flex/end-user-guide/warm-transfer)\n- [Core concepts: Voice](/docs/flex/admin-guide/core-concepts/voice)\n- [Flex SDK methods](/docs/flex/developer/flex-sdk/sdk-methods)\n",
    "causes": "* The initiating agent canceled the consult call before the target agent or queue accepted it.\n* A transfer was canceled through the Flex UI or by programmatically canceling the voice task transfer with `cancelVoiceTaskTransfer`.\n* The transfer was started from a call that was not live and conference-based.\n* The initiating agent was on hold when the transfer was attempted.\n* Another transfer was already in progress.\n* The transfer targeted a task queue that had not been used in the last 30 days.",
    "solutions": "* If the cancellation was intentional, no action is required.\n* If the transfer should continue, start the consult or warm transfer again.\n* Make sure you start the transfer from a live, conference-based call.\n* Make sure the initiating agent is active on the call and not on hold.\n* Confirm that no other transfer is already in progress before starting a new one.\n* If you are transferring to a queue that has not been used recently, create an inbound task that routes to that queue, then retry the warm transfer.\n* If you cancel transfers programmatically, review the logic that calls `cancelVoiceTaskTransfer` or other transfer cancel actions.",
    "description": "This warning indicates that Flex canceled a consult or conference step before the additional participant was connected. In Flex voice workflows, this can happen during a warm transfer or consult flow when the transfer is canceled before the meeting is established.",
    "date_created": "2020-01-14T21:15:31Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45307,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Add Participant Not Allowed",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAdding participant to the meeting is not allowed in the current meeting state\n\n### Possible causes\n\nMeeting is not in the right state for adding the participants\n\n### Possible solutions\n\nRetry operation\n",
    "causes": "Meeting is not in the right state for adding the participants",
    "solutions": "Retry operation",
    "description": "Adding participant to the meeting is not allowed in the current meeting state",
    "date_created": "2020-05-08T21:27:02Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45308,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Add Participant Not Allowed",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAdding participant to the meeting is not allowed in the current meeting state\n\n### Possible causes\n\nMeeting is not in the right state for adding the participants\n\n### Possible solutions\n\nRetry operation\n",
    "causes": "Meeting is not in the right state for adding the participants",
    "solutions": "Retry operation",
    "description": "Adding participant to the meeting is not allowed in the current meeting state",
    "date_created": "2022-09-17T01:43:39Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45309,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Modify Participant Not Allowed",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nError occurred when trying to modify a participant\n\n### Possible causes\n\nMeeting is not setup successfully for the operation\n\n### Possible solutions\n\nRetry operation.\n",
    "causes": "Meeting is not setup successfully for the operation",
    "solutions": "Retry operation.",
    "description": "Error occurred when trying to modify a participant",
    "date_created": "2020-05-08T21:29:35Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45310,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant Not Found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error means Flex couldn't find the participant you tried to manage in a live meeting or conference-based call. Flex can only act on active participants in an in-progress conference. If the participant's call ended, the conference ended, or the call was modified to use new TwiML, the participant is no longer available for participant actions.\n\n### Possible causes\n\n- The participant disconnected or was removed from the live call before Flex completed the action.\n- The conference ended and no longer has any active participants to manage.\n- The call was modified to use new TwiML, so the original participant is no longer part of the active conference state.\n- The action was attempted after the call stopped meeting the live conference-based requirements used by features such as warm transfer or call monitoring.\n\n### Possible solutions\n\n- Confirm that the interaction is still live and conference-based, then retry the action against the current participant state.\n- If you are using warm transfer, make sure the call is live, you are not on hold, and another transfer is not already in progress.\n- If the participant already left the call, start a new consult or monitoring session, or add the participant back to the active call if needed.\n- Review the Flex Status Report or Twilio Debugger for more detail about the failure. If the issue continues, run System checkup in Console to identify Flex configuration issues.\n\n#### Additional resources\n\n- [Warm transfer](/docs/flex/end-user-guide/warm-transfer)\n- [Monitor agent activity](/docs/flex/end-user-guide/real-time-reporting/monitor-agent-activity)\n- [Conferences Participants subresource](/docs/voice/api/conference-participant-resource)\n",
    "causes": "* The participant disconnected or was removed from the live call before Flex completed the action.\n* The conference ended and no longer has any active participants to manage.\n* The call was modified to use new TwiML, so the original participant is no longer part of the active conference state.\n* The action was attempted after the call stopped meeting the live conference-based requirements used by features such as warm transfer or call monitoring.",
    "solutions": "* Confirm that the interaction is still live and conference-based, then retry the action against the current participant state.\n* If you are using warm transfer, make sure the call is live, you are not on hold, and another transfer is not already in progress.\n* If the participant already left the call, start a new consult or monitoring session, or add the participant back to the active call if needed.\n* Review the Flex Status Report or Twilio Debugger for more detail about the failure. If the issue continues, run System checkup in Console to identify Flex configuration issues.",
    "description": "This error means Flex couldn't find the participant you tried to manage in a live meeting or conference-based call. Flex can only act on active participants in an in-progress conference. If the participant's call ended, the conference ended, or the call was modified to use new TwiML, the participant is no longer available for participant actions.",
    "date_created": "2020-05-08T21:30:25Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45312,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Remove Participant Request Failed",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nError occurred when trying to remove a participant\n\n### Possible causes\n\nVoice API returned an error while trying to remove the participant\n\n### Possible solutions\n\nRetry operation\n",
    "causes": "Voice API returned an error while trying to remove the participant",
    "solutions": "Retry operation",
    "description": "Error occurred when trying to remove a participant",
    "date_created": "2020-05-08T21:31:24Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45313,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Transfer Failed",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error means Flex could not complete a transfer request. It typically occurs when the transfer times out before completion or when the underlying Voice API request fails during the transfer flow.\n\n### Possible causes\n\n- The transfer request timed out before Flex could complete it.\n- The underlying Voice API returned an error while Flex was creating or updating the transfer call.\n- You tried to start a warm transfer when the current call was not a live, conference-based call.\n- You tried to start a warm transfer while another transfer was already in progress or while your participant was on hold.\n- You transferred to a task queue that had not been used in the last 30 days, which can prevent the queue from being available for the transfer flow until it is reset.\n\n### Possible solutions\n\n- Retry the transfer.\n- Before you start a warm transfer, make sure the call is live and conference-based, make sure you are not already involved in another transfer, and make sure you are not on hold.\n- If you are transferring to a queue that has been idle for more than 30 days, route an inbound task to that queue first to reset it, then try the transfer again.\n- Review the related Voice Call Logs, Debugger events, and Request Inspector details in Console to identify the underlying call error that caused the transfer to fail. ([help.twilio.com](https://help.twilio.com/articles/360021755854))\n- If the failure happens in a customized Flex deployment, review Flex UI error reports and logs to capture more context around the failed transfer action.\n\n#### Additional resources\n\n- [Warm transfer](/docs/flex/end-user-guide/warm-transfer)\n- [Flex Dialpad known limitations](/docs/flex/admin-guide/setup/voice/dialpad-limitations)\n- [Troubleshooting Voice Calls](/docs/voice/troubleshooting)\n",
    "causes": "* The transfer request timed out before Flex could complete it.\n* The underlying Voice API returned an error while Flex was creating or updating the transfer call.\n* You tried to start a warm transfer when the current call was not a live, conference-based call.\n* You tried to start a warm transfer while another transfer was already in progress or while your participant was on hold.\n* You transferred to a task queue that had not been used in the last 30 days, which can prevent the queue from being available for the transfer flow until it is reset.",
    "solutions": "* Retry the transfer.\n* Before you start a warm transfer, make sure the call is live and conference-based, make sure you are not already involved in another transfer, and make sure you are not on hold.\n* If you are transferring to a queue that has been idle for more than 30 days, route an inbound task to that queue first to reset it, then try the transfer again.\n* Review the related Voice Call Logs, Debugger events, and Request Inspector details in Console to identify the underlying call error that caused the transfer to fail. ([help.twilio.com](https://help.twilio.com/articles/360021755854))\n* If the failure happens in a customized Flex deployment, review Flex UI error reports and logs to capture more context around the failed transfer action.",
    "description": "This error means Flex could not complete a transfer request. It typically occurs when the transfer times out before completion or when the underlying Voice API request fails during the transfer flow.",
    "date_created": "2020-05-08T21:32:13Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 45350,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "An unexpected error occurred.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error indicates that Flex could not complete the request because an unexpected internal failure occurred while processing it. In Flex Conversations, interaction channel creation is asynchronous, so a request can be accepted first and still fail while Flex creates or configures the underlying channel.\n\n### Possible causes\n\n- A temporary internal Flex service failure interrupted request processing.\n- The request was accepted, but the asynchronous channel setup did not finish successfully.\n- A downstream conversation or participant operation failed while Flex was creating or configuring the channel.\n\n### Possible solutions\n\n- Retry the request.\n- If you are creating an interaction, do not rely only on the initial `POST /Interactions` response. Fetch the interaction or channel state after the request completes to confirm that setup succeeded.\n- Listen for `task.canceled` events so you can detect interaction channel creation failures in your application flow.\n- Review the Twilio Console Debugger or Flex error logs to capture more detail about the failing request.\n- If the issue continues, check the Twilio status page and then contact support through the Help Center with details about the failing requests.\n\n#### Additional resources\n\n- [Interactions API](/docs/flex/developer/conversations/interactions-api)\n- [Best Practices for Flex Conversations](/docs/flex/developer/conversations/best-practices)\n- [Error Handling and Debugging](/docs/flex/developer/ui/errors-and-debugging)\n",
    "causes": "* A temporary internal Flex service failure interrupted request processing.\n* The request was accepted, but the asynchronous channel setup did not finish successfully.\n* A downstream conversation or participant operation failed while Flex was creating or configuring the channel.",
    "solutions": "* Retry the request.\n* If you are creating an interaction, do not rely only on the initial `POST /Interactions` response. Fetch the interaction or channel state after the request completes to confirm that setup succeeded.\n* Listen for `task.canceled` events so you can detect interaction channel creation failures in your application flow.\n* Review the Twilio Console Debugger or Flex error logs to capture more detail about the failing request.\n* If the issue continues, check the Twilio status page and then contact support through the Help Center with details about the failing requests.",
    "description": "This error indicates that Flex could not complete the request because an unexpected internal failure occurred while processing it. In Flex Conversations, interaction channel creation is asynchronous, so a request can be accepted first and still fail while Flex creates or configures the underlying channel.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 45351,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Channel Participant properties.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to add Participant `<participant sid>` to Channel `<meeting sid>`. Channel Participant properties must contain exactly one of \"identity\" or an \"address\"/\"proxy\\_address\" pair.\n\n### Possible causes\n\nA create Conversation or add Participant request was made with a Participant having both or neither of identity and address specified.\n\n### Possible solutions\n\nSpecify either identity or address for Participants\n",
    "causes": "A create Conversation or add Participant request was made with a Participant having both or neither of identity and address specified.",
    "solutions": "Specify either identity or address for Participants",
    "description": "Failed to add Participant `<participant sid>` to Channel `<meeting sid>`. Channel Participant properties must contain exactly one of \"identity\" or an \"address\"/\"proxy\\_address\" pair.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45352,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to create an outbound Channel.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create a Conversation due to an error from Twilio Conversations API.\n\n### Possible causes\n\nConversations API returned an error\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "Conversations API returned an error",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to create a Conversation due to an error from Twilio Conversations API.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45353,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "A duplicate create Channel request was dropped.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThe Conversation sid `<conversation sid>` already has a mapped Channel sid `<channel sid>`.\n\n### Possible causes\n\nMultiple concurrent inbound messages to a non-existent conversation triggered multiple create Channel requests for the same Conversation. The duplicate request was dropped.\n\n### Possible solutions\n\nNo Action.\n",
    "causes": "Multiple concurrent inbound messages to a non-existent conversation triggered multiple create Channel requests for the same Conversation. The duplicate request was dropped.",
    "solutions": "No Action.",
    "description": "The Conversation sid `<conversation sid>` already has a mapped Channel sid `<channel sid>`.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45354,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot create a Channel for a closed Conversation.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create Channel `<channel sid>` because the Conversation `<conversation sid>` is in a closed state.\n\n### Possible causes\n\nAn inbound message triggered a Channel to start, but the associated Conversation was closed or deleted before the request was processed.\n\n### Possible solutions\n\nNo Action.\n",
    "causes": "An inbound message triggered a Channel to start, but the associated Conversation was closed or deleted before the request was processed.",
    "solutions": "No Action.",
    "description": "Failed to create Channel `<channel sid>` because the Conversation `<conversation sid>` is in a closed state.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45355,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to create a channel.  No Participants found.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create Channel `<channel sid>` because no Participants were found in the associated Conversation `<conversation sid>`.\n\n### Possible causes\n\nNo Participants were found in a Conversation that triggered a new Channel to be created. The Participant may have been removed after the Conversation was created.\n\n### Possible solutions\n\nClose this Conversation and start a new one.\n",
    "causes": "No Participants were found in a Conversation that triggered a new Channel to be created. The Participant may have been removed after the Conversation was created.",
    "solutions": "Close this Conversation and start a new one.",
    "description": "Failed to create Channel `<channel sid>` because no Participants were found in the associated Conversation `<conversation sid>`.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45356,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to create a channel. Downstream error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to retrieve Conversation `<conversation sid>` due to an error from Twilio Conversations API.\n\n### Possible causes\n\nAn error occurred retrieving Conversation data from conversations api.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "An error occurred retrieving Conversation data from conversations api.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to retrieve Conversation `<conversation sid>` due to an error from Twilio Conversations API.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45357,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Downstream error configuring Channel.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to retrieve Participant(s) for Conversation `<conversation sid>` due to an error from Twilio Conversations API.\n\n### Possible causes\n\nAn error occurred retrieving Participant data from conversations api.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "An error occurred retrieving Participant data from conversations api.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to retrieve Participant(s) for Conversation `<conversation sid>` due to an error from Twilio Conversations API.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45358,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to close Channel.  Missing status parameter.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to close Channel `<channel sid>`. No Channel status parameter was provided.\n\n### Possible causes\n\nUpdate Channel request was made without valid 'status' parameter.\n\n### Possible solutions\n\nThe only supported operation on a Channel is to update the status to \"closed\". A status parameter must be provided.\n",
    "causes": "Update Channel request was made without valid 'status' parameter.",
    "solutions": "The only supported operation on a Channel is to update the status to \"closed\". A status parameter must be provided.",
    "description": "Failed to close Channel `<channel sid>`. No Channel status parameter was provided.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45359,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to close Channel.  Invalid status parameter.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to close Channel `<channel sid>`. The channel status provided was invalid.\n\n### Possible causes\n\nUpdate Channel request was made with invalid 'status'.\n\n### Possible solutions\n\nThe only supported status change to a Channel is \"closed\".\n",
    "causes": "Update Channel request was made with invalid 'status'.",
    "solutions": "The only supported status change to a Channel is \"closed\".",
    "description": "Failed to close Channel `<channel sid>`. The channel status provided was invalid.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45360,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to close or delete Conversation.  Downstream error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to update Conversation `<conversation sid>` due to an error from Twilio Conversations API.\n\n### Possible causes\n\nConversations API returned an error\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "Conversations API returned an error",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to update Conversation `<conversation sid>` due to an error from Twilio Conversations API.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45361,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to add Participant. Downstream error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to add Participant to Conversation `<conversation sid>` due to an error from Twilio Conversations API.\n\n### Possible causes\n\nConversations API returned an error\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "Conversations API returned an error",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to add Participant to Conversation `<conversation sid>` due to an error from Twilio Conversations API.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45362,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to remove Participant.  Not found.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to remove Participant `<participant sid>` from Channel `<channel sid>` because the Participant was not found.\n\n### Possible causes\n\nThe Participant may have already been removed.\n\n### Possible solutions\n\nNo Action.\n",
    "causes": "The Participant may have already been removed.",
    "solutions": "No Action.",
    "description": "Failed to remove Participant `<participant sid>` from Channel `<channel sid>` because the Participant was not found.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45363,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to remove Participant.  Downstream error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to remove Participant `<participant sid>` from Conversation `<conversation sid>` due to an error from Twilio Conversations API.\n\n### Possible causes\n\nConversations API returned an error\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "Conversations API returned an error",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to remove Participant `<participant sid>` from Conversation `<conversation sid>` due to an error from Twilio Conversations API.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45366,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to create Channel.  Invalid request parameters.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create Channel `<channel sid>` due to invalid request parameters.\n\n### Possible causes\n\nInvalid or missing parameters supplied in the create Channel request.\n\n### Possible solutions\n\nEnsure that request parameters are in accordance with the public documentation.\n",
    "causes": "Invalid or missing parameters supplied in the create Channel request.",
    "solutions": "Ensure that request parameters are in accordance with the public documentation.",
    "description": "Failed to create Channel `<channel sid>` due to invalid request parameters.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45367,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to add Participant.  Invalid request parameters.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to add participant `<participant sid>` to Channel `<channel sid>` due to invalid request parameters.\n\n### Possible causes\n\nsInvalid or missing parameters supplied in the create participant request.\n\n### Possible solutions\n\nEnsure that request parameters are in accordance with the public documentation.\n",
    "causes": "sInvalid or missing parameters supplied in the create participant request.",
    "solutions": "Ensure that request parameters are in accordance with the public documentation.",
    "description": "Failed to add participant `<participant sid>` to Channel `<channel sid>` due to invalid request parameters.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45368,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to delete Channel.  Not found.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to delete Channel `<channel sid>`. Not found.\n\n### Possible causes\n\nThe Channel was not created or has already been deleted.\n\n### Possible solutions\n\nNo Action.\n",
    "causes": "The Channel was not created or has already been deleted.",
    "solutions": "No Action.",
    "description": "Failed to delete Channel `<channel sid>`. Not found.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45369,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to create inbound Channel.  Internal error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create outbound Channel due to an internal error.\n\n### Possible causes\n\nWe failed to create an outbound Channel due to an unexpected error condition.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "We failed to create an outbound Channel due to an unexpected error condition.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to create outbound Channel due to an internal error.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45370,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to create outbound Channel.  Internal error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create inbound Channel due to an internal error.\n\n### Possible causes\n\nWe failed to create an inbound Channel due to an unexpected error condition.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "We failed to create an inbound Channel due to an unexpected error condition.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to create inbound Channel due to an internal error.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45371,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to close Channel.  Internal error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to update Channel `<channel sid>` due to an internal error.\n\n### Possible causes\n\nWe failed to update the status of a Channel (e.g., to close the Channel) due to an unexpected error condition.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "We failed to update the status of a Channel (e.g., to close the Channel) due to an unexpected error condition.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to update Channel `<channel sid>` due to an internal error.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45372,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to add Participant.  Internal error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to add a Participant to Channel `<channel sid>` due to an internal error.\n\n### Possible causes\n\nWe failed to add a Participant to a Channel due to an unexpected error condition.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "We failed to add a Participant to a Channel due to an unexpected error condition.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to add a Participant to Channel `<channel sid>` due to an internal error.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45373,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to remove Participant.  Internal error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to remove Participant `<participant sid>` l due to an internal error.\n\n### Possible causes\n\nWe failed to remove a Participant from a Channel due to an unexpected error condition.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "We failed to remove a Participant from a Channel due to an unexpected error condition.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to remove Participant `<participant sid>` l due to an internal error.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45374,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to delete Channel.  Internal error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to delete Channel `<channel sid>` due to an internal error.\n\n### Possible causes\n\nWe failed to delete a Channel due to an unexpected error condition.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.\n",
    "causes": "We failed to delete a Channel due to an unexpected error condition.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our [status page](https://status.twilio.com/) has no information, [contact support](https://support.twilio.com/) with details about the requests that are failing, and we will investigate.",
    "description": "Failed to delete Channel `<channel sid>` due to an internal error.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45375,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to delete Channel.  Invalid Account sid.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to delete Channel `<channel sid>` due to invalid AccountSid.\n\n### Possible causes\n\nWe failed to delete a Channel since the provided AccountSid did not match witth our records.\n\n### Possible solutions\n\nEnsure the AccountSid being used is the same as the one used to create the resource\n",
    "causes": "We failed to delete a Channel since the provided AccountSid did not match witth our records.",
    "solutions": "Ensure the AccountSid being used is the same as the one used to create the resource",
    "description": "Failed to delete Channel `<channel sid>` due to invalid AccountSid.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45376,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to add a participant.  Conversation was closed or not found.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to add Participant `<participant_sid>`. Conversation `<conversation_sid>` was closed or not found.\n\n### Possible causes\n\nWe did not add a Participant to a Channel because the Channel has either been closed or deleted.\n\n### Possible solutions\n\nEnsure that the target Conversation is in the correct state.\n",
    "causes": "We did not add a Participant to a Channel because the Channel has either been closed or deleted.",
    "solutions": "Ensure that the target Conversation is in the correct state.",
    "description": "Failed to add Participant `<participant_sid>`. Conversation `<conversation_sid>` was closed or not found.",
    "date_created": "2022-03-22T22:56:51Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45377,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account SID not authorized. ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThe account sid provided is not authorized to make changes to this Channel.\n\n### Possible causes\n\nThe request was not completed because the AccountSid provided does not match the credentials in our records.\n\n### Possible solutions\n\nEnsure the AccountSid being used is the same as the one used to create the resource.\n",
    "causes": "The request was not completed because the AccountSid provided does not match the credentials in our records.",
    "solutions": "Ensure the AccountSid being used is the same as the one used to create the resource.",
    "description": "The account sid provided is not authorized to make changes to this Channel.",
    "date_created": "2022-12-15T21:48:27Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45378,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to inactivate Channel. Internal error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to inactivate a Channel `<channel sid>` due to an internal error.\n\n### Possible causes\n\nWe failed to inactive a Channel due to an unexpected error condition.\n\n### Possible solutions\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We failed to inactive a Channel due to an unexpected error condition.",
    "solutions": "Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "Failed to inactivate a Channel `<channel sid>` due to an internal error.",
    "date_created": "2023-08-28T21:54:17Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45379,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to inactivate Channel. Downstream error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to inactivate a Channel `<channel sid>` due to an error from Twilio Conversations API.\n\n### Possible causes\n\nConversations API returned an error\n\n### Possible solutions\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "Conversations API returned an error",
    "solutions": "Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "Failed to inactivate a Channel `<channel sid>` due to an error from Twilio Conversations API.",
    "date_created": "2023-08-28T21:55:10Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45380,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to activate Channel. Internal error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to activate a Channel `<channel sid>` due to an internal error.\n\n### Possible causes\n\nWe failed to active a Channel due to an unexpected error condition.\n\n### Possible solutions\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We failed to active a Channel due to an unexpected error condition.",
    "solutions": "Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "Failed to activate a Channel `<channel sid>` due to an internal error.",
    "date_created": "2023-08-28T21:55:58Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45381,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to activate Channel. Downstream error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to activate a Channel `<channel sid>` due to an error from Twilio Conversations API.\n\n### Possible causes\n\nConversations API returned an error\n\n### Possible solutions\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "Conversations API returned an error",
    "solutions": "Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "Failed to activate a Channel `<channel sid>` due to an error from Twilio Conversations API.",
    "date_created": "2023-08-28T21:56:43Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45401,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "RTA feed callback returned not successful response code",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nCall to defined rta\\_callback\\_url returned with not successful response code\n\n### Possible causes\n\nRTA callback is misconfigured or down\n\n### Possible solutions\n\nChange account configuration and set correct value for rta\\_callback\\_url\n",
    "causes": "RTA callback is misconfigured or down",
    "solutions": "Change account configuration and set correct value for rta\\_callback\\_url",
    "description": "Call to defined rta\\_callback\\_url returned with not successful response code",
    "date_created": "2020-06-08T06:19:53Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45402,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "RTA feed callback response time exceeded the threshold",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThe RTA Feed callback is taking longer than a defined threshold to respond\n\n### Possible causes\n\nIssues on WFM vendor side\n\n### Possible solutions\n\nPlease contact the WFM Vendor for troubleshooting\n",
    "causes": "Issues on WFM vendor side",
    "solutions": "Please contact the WFM Vendor for troubleshooting",
    "description": "The RTA Feed callback is taking longer than a defined threshold to respond",
    "date_created": "2021-06-17T12:12:55Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45600,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Flex UI error",
    "secondary_message": "Error thrown by Flex UI.",
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFlex UI instance experienced a thrown Flex UI Error A JavaScript error has occurred within Flex UI.\n\n### Possible causes\n\n- There may have been an issue initializing Flex UI (no network, wrong config)\n- There may be an error happening in Flex UI code\n- There may be an error happening in user's custom code/plugin\n\n### Possible solutions\n\n- Fix custom code\n- Fix configuration\n",
    "causes": "* There may have been an issue initializing Flex UI (no network, wrong config)\n* There may be an error happening in Flex UI code\n* There may be an error happening in user's custom code/plugin",
    "solutions": "* Fix custom code\n* Fix configuration",
    "description": "Flex UI instance experienced a thrown Flex UI Error A JavaScript error has occurred within Flex UI.",
    "date_created": "2020-11-26T14:31:02Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45601,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Custom Flex UI error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nError thrown by a user's custom code/plugin.\n\n### Possible causes\n\n- Custom code has been written to throw and report a Flex error event\n\n### Possible solutions\n\n- Fix custom code so that the error is not thrown\n- Remove code which throws and reports a custom Flex error event\n",
    "causes": "* Custom code has been written to throw and report a Flex error event",
    "solutions": "* Fix custom code so that the error is not thrown\n* Remove code which throws and reports a custom Flex error event",
    "description": "Error thrown by a user's custom code/plugin.",
    "date_created": "2021-04-30T09:13:54Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45700,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Unexpected error occurred. Unable to process WebChat request.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing create WebChat conversation request.\n\n### Possible causes\n\nWe encountered an unexpected error while processing your create WebChat endpoint.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error while processing your create WebChat endpoint.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing create WebChat conversation request.",
    "date_created": "2022-10-03T20:38:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45701,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Unexpected error occurred. Service unavailable. ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing create WebChat request. Our service is currently unavailable.\n\n### Possible causes\n\nWe encountered an unexpected error while processing your request. Our service is currently unavailable.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our [status page](https://status.twilio.com/) to see if we are having an outage.\n\nIf our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error while processing your request. Our service is currently unavailable.",
    "solutions": "Retry the request. Check our [status page](https://status.twilio.com/) to see if we are having an outage. If our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing create WebChat request. Our service is currently unavailable.",
    "date_created": "2022-10-03T20:52:38Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45711,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to create webchat participant. Unauthorized ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create webchat participant. Credentials provided in request are invalid for the action.\n\n### Possible causes\n\nRequest is attempting to access resource where access is not allowed for given credentials.\n\n### Possible solutions\n\nCheck that accessed resource is set correctly or apply for permissions.\n",
    "causes": "Request is attempting to access resource where access is not allowed for given credentials.",
    "solutions": "Check that accessed resource is set correctly or apply for permissions.",
    "description": "Failed to create webchat participant. Credentials provided in request are invalid for the action.",
    "date_created": "2022-10-03T21:42:06Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45715,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to create webchat participant. Invalid request parameters. ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create participant due to invalid request parameters.\n\n### Possible causes\n\nThe address configuration associated with the address SID provided could have invalid parameters. This could be because the account credentials provided are not associated with the address SID provided.\n\n### Possible solutions\n\nEnsure the account credentials and address SID provided are correct and are all associated with the intended account.\n\nEnsure that the request parameters are in accordance with the public documentation.\n",
    "causes": "The address configuration associated with the address SID provided could have invalid parameters. This could be because the account credentials provided are not associated with the address SID provided.",
    "solutions": "Ensure the account credentials and address SID provided are correct and are all associated with the intended account. Ensure that the request parameters are in accordance with the public documentation.",
    "description": "Failed to create participant due to invalid request parameters.",
    "date_created": "2022-10-03T21:38:31Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45719,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to create webchat participant. Too many requests ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create participant for webchat conversation. Too many requests\n\n### Possible causes\n\nYour account is sending too many concurrent Rest API requests to Twilio servers.\n\n### Possible solutions\n\nAn API Request that receives an error 429 response is never processed and is always safe to retry. Please wait for a short period of time and make the request again, or alter your client's settings to issue fewer concurrent requests to the Twilio API.\n",
    "causes": "Your account is sending too many concurrent Rest API requests to Twilio servers.",
    "solutions": "An API Request that receives an error 429 response is never processed and is always safe to retry. Please wait for a short period of time and make the request again, or alter your client's settings to issue fewer concurrent requests to the Twilio API.",
    "description": "Failed to create participant for webchat conversation. Too many requests",
    "date_created": "2022-10-03T21:45:31Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45731,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pre-engagement data too large. ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create webchat conversation. Pre-engagement data too large.\n\n### Possible causes\n\nPre engagment data is over the maximum allowed size of 16KB.\n\n### Possible solutions\n\nEnsure pre-engagement data is less than 16KB.\n\nRead more about creating valid attributes [here.](/docs/conversations-classic/attributes)\n",
    "causes": "Pre engagment data is over the maximum allowed size of 16KB.",
    "solutions": "Ensure pre-engagement data is less than 16KB. Read more about creating valid attributes [here.](/docs/conversations-classic/attributes)",
    "description": "Failed to create webchat conversation. Pre-engagement data too large.",
    "date_created": "2022-10-03T21:21:13Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45733,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pre-engagement data is not in valid JSON format.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create webchat conversation. Pre-engagement data not in valid JSON format.\n\n### Possible causes\n\nPre-engagement data is not in valid JSON format.\n\n### Possible solutions\n\nEnsure pre-engagement data is in valid JSON format.\n\nRead more about creating valid attributes [here.](/docs/conversations-classic/attributes)\n",
    "causes": "Pre-engagement data is not in valid JSON format.",
    "solutions": "Ensure pre-engagement data is in valid JSON format. Read more about creating valid attributes [here.](/docs/conversations-classic/attributes)",
    "description": "Failed to create webchat conversation. Pre-engagement data not in valid JSON format.",
    "date_created": "2022-10-03T21:23:17Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45741,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to create webchat conversation. Account not authorized ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create webchat conversation for provided address SID. Account not authorized\n\n### Possible causes\n\nRequest attempted to access resource where access is not allowed for given credentials.\n\n### Possible solutions\n\nCheck that credentials are correct.\n\nCheck that accessed resource is set correctly or apply for permissions.\n",
    "causes": "Request attempted to access resource where access is not allowed for given credentials.",
    "solutions": "Check that credentials are correct. Check that accessed resource is set correctly or apply for permissions.",
    "description": "Failed to create webchat conversation for provided address SID. Account not authorized",
    "date_created": "2022-10-03T21:31:47Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45744,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to create webchat conversation. A resource provided could not be found.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create webchat conversation for provided address SID. Resource not found\n\n### Possible causes\n\nA resource provided in create webchat conversation request could not be found by conversations API.\n\n### Possible solutions\n\nEnsure the account credentials and address SID provided in the request are correct and are all associated with the intended account.\n\nEnsure there's a default messaging service configured. Read more about setting up a service [here.](/docs/conversations-classic/fundamentals#configuring-default-conversation-services-and-messaging-services)\n\nRead more about the create conversation request [here.](/docs/conversations-classic/api/conversation-resource#create-a-conversation-resource)\n\nRead more about messaging service resource [here.](/docs/messaging/api/service-resource)\n",
    "causes": "A resource provided in create webchat conversation request could not be found by conversations API.",
    "solutions": "Ensure the account credentials and address SID provided in the request are correct and are all associated with the intended account. Ensure there's a default messaging service configured. Read more about setting up a service [here.](/docs/conversations-classic/fundamentals#configuring-default-conversation-services-and-messaging-services) Read more about the create conversation request [here.](/docs/conversations-classic/api/conversation-resource#create-a-conversation-resource) Read more about messaging service resource [here.](/docs/messaging/api/service-resource)",
    "description": "Failed to create webchat conversation for provided address SID. Resource not found",
    "date_created": "2022-10-03T21:34:33Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45745,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid or missing parameters in the create conversation request.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to create webchat conversation for provided address SID due to invalid request parameters.\n\n### Possible causes\n\nInvalid or missing parameters in the create conversation request.\n\n### Possible solutions\n\nEnsure that request parameters are in accordance with the public documentation.\n",
    "causes": "Invalid or missing parameters in the create conversation request.",
    "solutions": "Ensure that request parameters are in accordance with the public documentation.",
    "description": "Failed to create webchat conversation for provided address SID due to invalid request parameters.",
    "date_created": "2022-10-03T21:27:00Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45760,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to validate address configuration. Auto create data missing.  ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nUnable to validate address configuration for provided address SID. Auto create data missing.\n\n### Possible causes\n\nAddress configuration data associated with the provided address SID is missing auto create data.\n\n### Possible solutions\n\nEnsure that the address SID provided is valid and associated with the correct account.\n\nEnsure that the auto create data associated with the address is present and in the correct format. More information on creating and updating an address configuration resource can be found [here.](/docs/conversations-classic/api/address-configuration-resource#addressconfiguration-properties)\n",
    "causes": "Address configuration data associated with the provided address SID is missing auto create data.",
    "solutions": "Ensure that the address SID provided is valid and associated with the correct account. Ensure that the auto create data associated with the address is present and in the correct format. More information on creating and updating an address configuration resource can be found [here.](/docs/conversations-classic/api/address-configuration-resource#addressconfiguration-properties)",
    "description": "Unable to validate address configuration for provided address SID. Auto create data missing.",
    "date_created": "2022-10-03T20:56:58Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45761,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to validate address configuration. Auto create not enabled.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nUnable to validate address configuration for provided address SID. Auto create not enabled.\n\n### Possible causes\n\nAddress configuration data associated with the provided address SID does not have auto create enabled in address configuration. When disabled, conversations will not be auto-created on incoming messages.\n\n### Possible solutions\n\n\"Ensure the address SID provided is valid and associated with the correct account.\n\nEnsure the address configuration associated with the address is correct. Read more about creating and updating an address configuration resource [here.](/docs/conversations-classic/api/address-configuration-resource#fetch-an-addressconfiguration-resource)\"\n",
    "causes": "Address configuration data associated with the provided address SID does not have auto create enabled in address configuration. When disabled, conversations will not be auto-created on incoming messages.",
    "solutions": "\"Ensure the address SID provided is valid and associated with the correct account. Ensure the address configuration associated with the address is correct. Read more about creating and updating an address configuration resource [here.](/docs/conversations-classic/api/address-configuration-resource#fetch-an-addressconfiguration-resource)\"",
    "description": "Unable to validate address configuration for provided address SID. Auto create not enabled.",
    "date_created": "2022-10-03T21:10:04Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45762,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to validate address configuration. Auto create type is empty or invalid.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to validate address configuration associated with provided address SID. Auto create type is empty or invalid.\n\n### Possible causes\n\nAddress configuration associated with the provided address SID has an invalid or missing auto create type.\n\nThe address configuration could be incorrect or out of date.\n\n### Possible solutions\n\nEnsure that the address SID provided is valid and associated with the correct account.\n\nEnsure the auto create type is present and set in the address configuration and is set to one of the valid types: webhook, studio, or default. More information on creating and updating an address configuration resource can be found [here.](/docs/conversations-classic/api/address-configuration-resource#addressconfiguration-properties)\n",
    "causes": "Address configuration associated with the provided address SID has an invalid or missing auto create type. The address configuration could be incorrect or out of date.",
    "solutions": "Ensure that the address SID provided is valid and associated with the correct account. Ensure the auto create type is present and set in the address configuration and is set to one of the valid types: webhook, studio, or default. More information on creating and updating an address configuration resource can be found [here.](/docs/conversations-classic/api/address-configuration-resource#addressconfiguration-properties)",
    "description": "Failed to validate address configuration associated with provided address SID. Auto create type is empty or invalid.",
    "date_created": "2022-10-03T21:14:03Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45763,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to validate address configuration. Auto create studio flow SID missing.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nUnable to validate address configuration for provided address SID. Auto create studio flow SID missing.\n\n### Possible causes\n\nAddress configuration associated with the provided address SID has auto create type set to STUDIO but no corresponding studio flow SID.\n\n### Possible solutions\n\nEnsure that the address SID provided is valid and associated with the correct account.\n\nEnsure that the auto create type in address configuration is correct. If your auto create type is set to STUDIO, ensure the studio flow SID is present and correct in address configuration.\n\nRead more about creating and updating an address configuration resource [here.](/docs/conversations-classic/api/address-configuration-resource#create-an-addressconfiguration-resource)\n\nRead more about creating a studio flow [here.](/docs/usage/webhooks/webhooks-overview)\n",
    "causes": "Address configuration associated with the provided address SID has auto create type set to STUDIO but no corresponding studio flow SID.",
    "solutions": "Ensure that the address SID provided is valid and associated with the correct account. Ensure that the auto create type in address configuration is correct. If your auto create type is set to STUDIO, ensure the studio flow SID is present and correct in address configuration. Read more about creating and updating an address configuration resource [here.](/docs/conversations-classic/api/address-configuration-resource#create-an-addressconfiguration-resource) Read more about creating a studio flow [here.](/docs/usage/webhooks/webhooks-overview)",
    "description": "Unable to validate address configuration for provided address SID. Auto create studio flow SID missing.",
    "date_created": "2022-10-03T21:16:41Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45764,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to validate address configuration. Auto create webhook URL missing. ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nUnable to validate address configuration for provided address SID. Auto create webhook URL missing.\n\n### Possible causes\n\nAddress configuration associated with the provided address SID has auto create type set to WEBHOOK but no webhook URL was provided.\n\n### Possible solutions\n\nEnsure that the address SID provided is valid and associated with the correct account.\n\nEnsure that the auto create type provided is correct. If your auto create type is WEBHOOK, ensure the webhook url is present and valid in the address configuration.\n\nRead more about creating and updating an address configuration resource [here.](/docs/conversations-classic/api/address-configuration-resource#create-an-addressconfiguration-resource)\n\nRead more about webhooks and their applications [here.](/docs/usage/webhooks/webhooks-overview)\n",
    "causes": "Address configuration associated with the provided address SID has auto create type set to WEBHOOK but no webhook URL was provided.",
    "solutions": "Ensure that the address SID provided is valid and associated with the correct account. Ensure that the auto create type provided is correct. If your auto create type is WEBHOOK, ensure the webhook url is present and valid in the address configuration. Read more about creating and updating an address configuration resource [here.](/docs/conversations-classic/api/address-configuration-resource#create-an-addressconfiguration-resource) Read more about webhooks and their applications [here.](/docs/usage/webhooks/webhooks-overview)",
    "description": "Unable to validate address configuration for provided address SID. Auto create webhook URL missing.",
    "date_created": "2022-10-03T21:18:58Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45765,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Address configuration data not found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nNo address configuration data found for provided address SID.\n\n### Possible causes\n\nNo address configuration has been created for the provided address SID.\n\nThe address SID provided is incorrect.\n\n### Possible solutions\n\n\"Ensure the provided address SID is correct and that the asscoiated address configuration has been created.\n\nRead more about creating and updating an address configuration resource [here.](/docs/conversations-classic/api/address-configuration-resource#create-an-addressconfiguration-resource)\"\n",
    "causes": "No address configuration has been created for the provided address SID. The address SID provided is incorrect.",
    "solutions": "\"Ensure the provided address SID is correct and that the asscoiated address configuration has been created. Read more about creating and updating an address configuration resource [here.](/docs/conversations-classic/api/address-configuration-resource#create-an-addressconfiguration-resource)\"",
    "description": "No address configuration data found for provided address SID.",
    "date_created": "2022-10-04T16:07:38Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 45770,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to create InteractionChannel. Downstream Error. ",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn error occurred while creating an interactionChannel. Downstream Error.\n\n### Possible causes\n\nWe encountered an unexpected error while processing createInteractionChannel Request, Downstream Error.\n\n### Possible solutions\n\n\"Retry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\"\n",
    "causes": "We encountered an unexpected error while processing createInteractionChannel Request, Downstream Error.",
    "solutions": "\"Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.\"",
    "description": "An error occurred while creating an interactionChannel. Downstream Error.",
    "date_created": "2023-03-24T16:09:04Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45771,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to create InboundConversation. Internal Error.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred while creating Inbound Conversation.\n\n### Possible causes\n\nWe encountered an unexpected error processing the request.\n\n### Possible solutions\n\n\"Retry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\"\n",
    "causes": "We encountered an unexpected error processing the request.",
    "solutions": "\"Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.\"",
    "description": "An unexpected error occurred while creating Inbound Conversation.",
    "date_created": "2023-03-24T16:09:49Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45772,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to perform operation. Required header is either missing or incorrect.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFailed to perform operation. Required header is either missing or incorrect.\n\n### Possible causes\n\nMandatory headers might be missing in the request.\n\n### Possible solutions\n\nProvide all the mandatory headers.\n",
    "causes": "Mandatory headers might be missing in the request.",
    "solutions": "Provide all the mandatory headers.",
    "description": "Failed to perform operation. Required header is either missing or incorrect.",
    "date_created": "2023-11-22T12:25:30Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45773,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error. Failed to create token.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing init token request.\n\n### Possible causes\n\nWe encountered an unexpected error when creating token.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error when creating token.",
    "solutions": "Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing init token request.",
    "date_created": "2023-11-22T15:38:26Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45774,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error. Failed to refresh token.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing refresh token request.\n\n### Possible causes\n\nWe encountered an unexpected error when refreshing token.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error when refreshing token.",
    "solutions": "Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing refresh token request.",
    "date_created": "2023-11-22T15:41:28Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45775,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Failed to refresh token. Invalid token provided.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning appears when Flex cannot refresh a session token because the token supplied in the refresh request is invalid. Flex user tokens are JWE tokens used to authenticate access to the Flex application, and the Flex SDK provides dedicated methods to validate, refresh, and update those tokens during a session.\n\n### Possible causes\n\n- The token sent in the refresh request is malformed or otherwise fails token validation.\n- The token has expired, the expiration value is invalid, or the system that generated the token has incorrect time settings.\n- The token was generated with invalid claims or account values, such as incorrect `iss` or `sub`.\n\n### Possible solutions\n\n- Generate a new Flex user token and retry the request. Flex user tokens are JWE tokens, and the token API supports a `ttl` value with a default of 3600 seconds.\n- If you use the Flex SDK, call `refreshToken` with the current refresh token and `ssoProfileSid`. Use `validateToken` before retrying if you need to confirm that the token is still valid.\n- After your backend issues a new token, pass it to `client.updateToken` so the current session and connected services use the updated credentials. Store the new token and refresh token that your application receives after a successful update.\n- If validation continues to fail, reissue the token on your backend with the correct claims and account values. If you build your own authentication flow, keep token minting on the backend and do not expose `AuthToken` in front-end applications.\n\n#### Additional resources\n\n- [Flex SDK authentication](/docs/flex/developer/flex-sdk/authentication)\n- [Flex SDK methods](/docs/flex/developer/flex-sdk/sdk-methods)\n- [Flex User Token API](/docs/flex/developer/user-management/flex-token-api)\n",
    "causes": "* The token sent in the refresh request is malformed or otherwise fails token validation.\n* The token has expired, the expiration value is invalid, or the system that generated the token has incorrect time settings.\n* The token was generated with invalid claims or account values, such as incorrect `iss` or `sub`.",
    "solutions": "* Generate a new Flex user token and retry the request. Flex user tokens are JWE tokens, and the token API supports a `ttl` value with a default of 3600 seconds.\n* If you use the Flex SDK, call `refreshToken` with the current refresh token and `ssoProfileSid`. Use `validateToken` before retrying if you need to confirm that the token is still valid.\n* After your backend issues a new token, pass it to `client.updateToken` so the current session and connected services use the updated credentials. Store the new token and refresh token that your application receives after a successful update.\n* If validation continues to fail, reissue the token on your backend with the correct claims and account values. If you build your own authentication flow, keep token minting on the backend and do not expose `AuthToken` in front-end applications.",
    "description": "This warning appears when Flex cannot refresh a session token because the token supplied in the refresh request is invalid. Flex user tokens are JWE tokens used to authenticate access to the Flex application, and the Flex SDK provides dedicated methods to validate, refresh, and update those tokens during a session.",
    "date_created": "2023-11-22T15:44:53Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 45776,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to fetch Configuration for deployment key.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error occurs when Flex cannot retrieve the configuration associated with a deployment key. For Webchat 3.x.x, the deployment key is linked to a chat address in Console and is used when Twilio loads the webchat configuration for your widget.\n\n### Possible causes\n\n- Twilio encountered an unexpected internal error while retrieving the configuration for the deployment key.\n- Your website is still using an older or replaced deployment key in the webchat embed code.\n- The deployment key is not linked to the expected chat address in Flex, or the linked configuration is incomplete.\n\n### Possible solutions\n\n- Retry the request.\n- Check the Twilio status page for an active Flex or chat-related incident before making additional changes.\n- In Console, verify that the deployment key still exists and is linked to the correct chat address under Flex > Channel management > Messaging.\n- If you recently replaced the deployment key, update your website with the latest webchat embed code for the new deployment key and chat address.\n- If the problem continues and no incident is posted, contact support with the deployment key SID, the time of the failure, and request details so Twilio can investigate.\n\n#### Additional resources\n\n- [Set up and use Webchat 3.x.x](/docs/flex/developer/conversations/webchat/setup)\n- [Webchat 3.x.x security](/docs/flex/developer/conversations/webchat/security)\n- [Checking Twilio Service and API Status with the Status Page](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page)\n",
    "causes": "* Twilio encountered an unexpected internal error while retrieving the configuration for the deployment key.\n* Your website is still using an older or replaced deployment key in the webchat embed code.\n* The deployment key is not linked to the expected chat address in Flex, or the linked configuration is incomplete.",
    "solutions": "* Retry the request.\n* Check the Twilio status page for an active Flex or chat-related incident before making additional changes.\n* In Console, verify that the deployment key still exists and is linked to the correct chat address under Flex > Channel management > Messaging.\n* If you recently replaced the deployment key, update your website with the latest webchat embed code for the new deployment key and chat address.\n* If the problem continues and no incident is posted, contact support with the deployment key SID, the time of the failure, and request details so Twilio can investigate.",
    "description": "This error occurs when Flex cannot retrieve the configuration associated with a deployment key. For Webchat 3.x.x, the deployment key is linked to a chat address in Console and is used when Twilio loads the webchat configuration for your widget.",
    "date_created": "2023-11-22T15:52:05Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 45777,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Address Configuration not found for deployment key.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning appears when your Flex Webchat deployment key does not have a chat address configuration linked to it. To use Webchat 3.x.x, create a deployment key, connect that deployment key to a messaging address, and then use the embed code generated for that deployment key on your website.\n\n### Possible causes\n\n- You created a deployment key but did not complete the step to connect it to a chat address in Flex > Channel management > Messaging.\n- Your website is using a deployment key that is not the one linked to the active chat address.\n- You replaced your webchat configuration with a new deployment key and chat address, but your website is still using the older deployment key. Twilio does not let you change the deployment key SID or address configuration SID on an existing mapping.\n\n### Possible solutions\n\n- In Console, go to Flex > Channel management > Messaging and create a Chat address with Conversations as the address implementation. Select the correct deployment key SID when you create the address, then save the configuration.\n- In Flex > Channel management > Webchat, open the deployment key you want to use and copy the current embed code to your website so the site uses the deployment key that is linked to your chat address.\n- If you need to move to a different deployment key, create a new deployment key and a new chat address, then replace the existing embed code on your website. Twilio does not let you update the deployment key SID or address configuration SID for an existing mapping.\n\n#### Additional resources\n\n- [Set up and use Webchat 3.x.x](/docs/flex/developer/conversations/webchat/setup)\n- [Webchat 3.x.x overview](/docs/flex/developer/conversations/webchat)\n- [Webchat 3.x.x security](/docs/flex/developer/conversations/webchat/security)\n",
    "causes": "* You created a deployment key but did not complete the step to connect it to a chat address in Flex > Channel management > Messaging.\n* Your website is using a deployment key that is not the one linked to the active chat address.\n* You replaced your webchat configuration with a new deployment key and chat address, but your website is still using the older deployment key. Twilio does not let you change the deployment key SID or address configuration SID on an existing mapping.",
    "solutions": "* In Console, go to Flex > Channel management > Messaging and create a Chat address with Conversations as the address implementation. Select the correct deployment key SID when you create the address, then save the configuration.\n* In Flex > Channel management > Webchat, open the deployment key you want to use and copy the current embed code to your website so the site uses the deployment key that is linked to your chat address.\n* If you need to move to a different deployment key, create a new deployment key and a new chat address, then replace the existing embed code on your website. Twilio does not let you update the deployment key SID or address configuration SID for an existing mapping.",
    "description": "This warning appears when your Flex Webchat deployment key does not have a chat address configuration linked to it. To use Webchat 3.x.x, create a deployment key, connect that deployment key to a messaging address, and then use the embed code generated for that deployment key on your website.",
    "date_created": "2023-11-22T15:55:48Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 45778,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Configuration not found for provided Deployment Key.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nDeployment configuration not found for provided deployment key.\n\n### Possible causes\n\nNo deployment configuration associated with the given deployment key.\n\n### Possible solutions\n\nEnsure the deployment key is correct and there exists a valid deployment configuration associated with it.\n",
    "causes": "No deployment configuration associated with the given deployment key.",
    "solutions": "Ensure the deployment key is correct and there exists a valid deployment configuration associated with it.",
    "description": "Deployment configuration not found for provided deployment key.",
    "date_created": "2023-11-22T16:01:14Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45780,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Operation failed: too many concurrent API requests",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning occurs when your account sends too many concurrent requests for the Flex API operation you are calling. Flex endpoints return `HTTP 429` when rate limits are exceeded, and a request that receives `HTTP 429` was not processed.\n\n### Possible causes\n\n- Your application sent too many concurrent requests to the same Flex endpoint.\n- A burst of traffic exceeded the rate limit for the Flex endpoint you are using.\n- Your client is retrying too quickly after a throttled request.\n- Your integration is polling Flex resources too frequently instead of reducing repeated `GET` requests.\n- For Flex Conversations, you exceeded an endpoint-specific limit such as the Interactions API limit of 20 requests per second per endpoint per account or the Flex Webchat orchestrator limit of 5 requests per second.\n\n### Possible solutions\n\n- Wait briefly and retry the request.\n- Implement retries with exponential backoff so your client does not immediately send another burst of requests.\n- Throttle or queue requests in your application to reduce concurrent calls to the Twilio API.\n- Review the rate limits for the specific Flex endpoints your integration uses and keep traffic below those limits.\n- Reduce unnecessary polling. Use webhooks or store the data you need on your own servers when possible so you do not repeatedly fetch the same resources.\n- Monitor the `Twilio-Concurrent-Requests` and `Twilio-Request-Duration` response headers so you can see when request volume is approaching account concurrency limits.\n- If you still hit this warning after reducing traffic and adding backoff, contact Support with your use case and request details.\n\n#### Additional resources\n\n- [API best practices](/docs/usage/rest-api-best-practices)\n- [File Attachments and API Limits](/docs/flex/developer/conversations/limits)\n- [Twilio API response Error 429 \"Too Many Requests\"](https://help.twilio.com/articles/360044308153-Twilio-API-response-Error-429-Too-Many-Requests-)\n",
    "causes": "* Your application sent too many concurrent requests to the same Flex endpoint.\n* A burst of traffic exceeded the rate limit for the Flex endpoint you are using.\n* Your client is retrying too quickly after a throttled request.\n* Your integration is polling Flex resources too frequently instead of reducing repeated `GET` requests.\n* For Flex Conversations, you exceeded an endpoint-specific limit such as the Interactions API limit of 20 requests per second per endpoint per account or the Flex Webchat orchestrator limit of 5 requests per second.",
    "solutions": "* Wait briefly and retry the request.\n* Implement retries with exponential backoff so your client does not immediately send another burst of requests.\n* Throttle or queue requests in your application to reduce concurrent calls to the Twilio API.\n* Review the rate limits for the specific Flex endpoints your integration uses and keep traffic below those limits.\n* Reduce unnecessary polling. Use webhooks or store the data you need on your own servers when possible so you do not repeatedly fetch the same resources.\n* Monitor the `Twilio-Concurrent-Requests` and `Twilio-Request-Duration` response headers so you can see when request volume is approaching account concurrency limits.\n* If you still hit this warning after reducing traffic and adding backoff, contact Support with your use case and request details.",
    "description": "This warning occurs when your account sends too many concurrent requests for the Flex API operation you are calling. Flex endpoints return `HTTP 429` when rate limits are exceeded, and a request that receives `HTTP 429` was not processed.",
    "date_created": "2023-11-22T15:47:49Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 45781,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error. Failed to create deployment key.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing create deployment key request.\n\n### Possible causes\n\nWe encountered an unexpected error when creating deployment key.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error when creating deployment key.",
    "solutions": "Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing create deployment key request.",
    "date_created": "2023-11-21T07:55:35Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45782,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error. Failed to delete deployment key.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing delete deployment key request.\n\n### Possible causes\n\nWe encountered an unexpected error when deleting deployment key.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error when deleting deployment key.",
    "solutions": "Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing delete deployment key request.",
    "date_created": "2023-11-23T04:10:28Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45784,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error. Failed to get deployment keys.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing get all deployment keys request.\n\n### Possible causes\n\nWe encountered an unexpected error when processing get all deployment keys request.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error when processing get all deployment keys request.",
    "solutions": "Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing get all deployment keys request.",
    "date_created": "2023-11-23T04:11:46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45785,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error. Failed to delete deployment keys.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing delete all deployment keys request.\n\n### Possible causes\n\nWe encountered an unexpected error when deleting deployment keys.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error when deleting deployment keys.",
    "solutions": "Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing delete all deployment keys request.",
    "date_created": "2023-11-23T04:15:09Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45788,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error. Failed to update deployment key.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred when processing update deployment key request.\n\n### Possible causes\n\nWe encountered an unexpected error when updating deployment key.\n\n### Possible solutions\n\nRetry the request.\n\nCheck our status page to see if we are having an outage.\n\nIf our status page has no information, contact support with details about the requests that are failing, and we will investigate.\n",
    "causes": "We encountered an unexpected error when updating deployment key.",
    "solutions": "Retry the request. Check our status page to see if we are having an outage. If our status page has no information, contact support with details about the requests that are failing, and we will investigate.",
    "description": "An unexpected error occurred when processing update deployment key request.",
    "date_created": "2023-11-23T04:18:55Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45789,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Deployment key is already linked to other address  configuration sid.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nDeployment key is already linked to another address configuration Sid.\n\n### Possible causes\n\nYou cannot link deployment key to multiple address configuration Sids.\n\n### Possible solutions\n\nFirst unlink the deployment key from current address configuration Sid.\n",
    "causes": "You cannot link deployment key to multiple address configuration Sids.",
    "solutions": "First unlink the deployment key from current address configuration Sid.",
    "description": "Deployment key is already linked to another address configuration Sid.",
    "date_created": "2023-11-23T04:22:19Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45794,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Max deployment keys limit reached for this account.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nMax deployment keys limit reached for this account.\n\n### Possible causes\n\nAccount already has maximum allowed number of deployment keys.\n\n### Possible solutions\n\nDelete any of the existing deployment key to create more.\n",
    "causes": "Account already has maximum allowed number of deployment keys.",
    "solutions": "Delete any of the existing deployment key to create more.",
    "description": "Max deployment keys limit reached for this account.",
    "date_created": "2023-11-23T04:23:48Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45795,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Friendly name must be between 1 and  64 characters long.",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nFriendly name must be between 1 and 64 characters long.\n\n### Possible causes\n\nThe friendly name must consists of at least 1 character and up to a maximum of 64 characters.\n\n### Possible solutions\n\nProvide a friendly name that is between 1 and 64 characters in length.\n",
    "causes": "The friendly name must consists of at least 1 character and up to a maximum of 64 characters.",
    "solutions": "Provide a friendly name that is between 1 and 64 characters in length.",
    "description": "Friendly name must be between 1 and 64 characters long.",
    "date_created": "2023-11-23T04:39:05Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45796,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Operation failed: conflict with current resource state",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning indicates that Twilio could not complete the Flex operation because the target resource was in a conflicting state. This usually happens when another update reaches the same resource at about the same time, so your request no longer matches the resource's latest state.\n\n### Possible causes\n\n- Another request updated the same resource before this request completed, so the requested change now conflicts with the resource's current state.\n- Multiple simultaneous requests from different threads, services, or plugins tried to modify the same resource.\n- The request includes data or a state transition that conflicts with values already stored on the target resource.\n\n### Possible solutions\n\n- Retry the request after a short delay.\n- Add retry logic with exponential backoff so overlapping updates can finish before you send the next request.\n- Check the current state of the resource before retrying. Confirm that the update is still needed and that the desired change is not already present.\n- Serialize updates to the same resource and wait for the first request to complete before sending another modification.\n- Review the console message body or error details for more context about which part of the resource state caused the conflict.\n- If the resource you are updating supports optimistic concurrency control, use `ETag` and `If-Match` to reject stale writes cleanly.\n\n#### Additional resources\n\n- [API mutation and conflict resolution](/docs/usage/mutation-and-conflict-resolution)\n- [API best practices](/docs/usage/rest-api-best-practices)\n- [Error Handling and Debugging](/docs/flex/developer/ui/errors-and-debugging)\n",
    "causes": "* Another request updated the same resource before this request completed, so the requested change now conflicts with the resource's current state.\n* Multiple simultaneous requests from different threads, services, or plugins tried to modify the same resource.\n* The request includes data or a state transition that conflicts with values already stored on the target resource.",
    "solutions": "* Retry the request after a short delay.\n* Add retry logic with exponential backoff so overlapping updates can finish before you send the next request.\n* Check the current state of the resource before retrying. Confirm that the update is still needed and that the desired change is not already present.\n* Serialize updates to the same resource and wait for the first request to complete before sending another modification.\n* Review the console message body or error details for more context about which part of the resource state caused the conflict.\n* If the resource you are updating supports optimistic concurrency control, use `ETag` and `If-Match` to reject stale writes cleanly.",
    "description": "This warning indicates that Twilio could not complete the Flex operation because the target resource was in a conflicting state. This usually happens when another update reaches the same resource at about the same time, so your request no longer matches the resource's latest state.",
    "date_created": "2023-11-23T04:40:21Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 45797,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Support Access Token Generated",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nA support access token was generated for this account, providing read-only access to this member of Twilio Support to account data, including worker, task, interaction and configuration data.\n\n### Possible causes\n\nA member of Twilio Support obtained customer approval to generate a support access token in order to provide support to the customer.\n\n### Possible solutions\n\nThis support access token will expire after 1hr.\n",
    "causes": "A member of Twilio Support obtained customer approval to generate a support access token in order to provide support to the customer.",
    "solutions": "This support access token will expire after 1hr.",
    "description": "A support access token was generated for this account, providing read-only access to this member of Twilio Support to account data, including worker, task, interaction and configuration data.",
    "date_created": "2024-06-18T21:40:46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45798,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Error processing SCIM request - internal server error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nAn internal error occurred while processing SCIM request.\n\n### Possible causes\n\nAn internal error occurred while processing SCIM request.\n\n### Possible solutions\n\nPlease try again later.\n",
    "causes": "An internal error occurred while processing SCIM request.",
    "solutions": "Please try again later.",
    "description": "An internal error occurred while processing SCIM request.",
    "date_created": "2025-03-03T19:55:56Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 45799,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Error processing SCIM request - client error",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nA user error happened while processing SCIM request.\n\n### Possible causes\n\nA create user request where a user already exists or a delete user request where user doesn't exist, or a create\\_user request with missing required fields like full name , roles or not using email as username in IDP.\n\n### Possible solutions\n\nPlease correct the attributes in IDP and retry.\n",
    "causes": "A create user request where a user already exists or a delete user request where user doesn't exist, or a create\\_user request with missing required fields like full name , roles or not using email as username in IDP.",
    "solutions": "Please correct the attributes in IDP and retry.",
    "description": "A user error happened while processing SCIM request.",
    "date_created": "2025-03-03T19:56:48Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 46001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Request Body",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio can't parse the JSON in the request body.\n\n### Possible causes\n\n- The request body contains invalid or malformed JSON.\n\n### Possible solutions\n\n- Ensure the request body contains valid JSON.\n- Verify the JSON syntax is correct and all brackets, quotes, and commas are properly formatted.\n",
    "causes": "* The request body contains invalid or malformed JSON.",
    "solutions": "* Ensure the request body contains valid JSON.\n* Verify the JSON syntax is correct and all brackets, quotes, and commas are properly formatted.",
    "description": "Twilio can't parse the JSON in the request body.",
    "date_created": "2026-05-08T22:22:41-04:00",
    "last_updated": "2026-05-08T22:22:41-04:00"
  },
  {
    "code": 46002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Schema",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe submitted data can be parsed but doesn't comply with the required JSON schema.\n\n### Possible causes\n\n- A required attribute is missing from the request.\n- A required attribute is null or empty.\n- The value of an attribute isn't an accepted value.\n- The resource already exists and is limited to one per account.\n- Other attribute validation errors.\n\n### Possible solutions\n\n- Verify that all required attributes are present in the request.\n- Ensure required attributes aren't null or empty.\n- Verify that attribute values match the expected format and allowed values.\n- Review the API documentation for the correct schema requirements.\n",
    "causes": "* A required attribute is missing from the request.\n* A required attribute is null or empty.\n* The value of an attribute isn't an accepted value.\n* The resource already exists and is limited to one per account.\n* Other attribute validation errors.",
    "solutions": "* Verify that all required attributes are present in the request.\n* Ensure required attributes aren't null or empty.\n* Verify that attribute values match the expected format and allowed values.\n* Review the API documentation for the correct schema requirements.",
    "description": "The submitted data can be parsed but doesn't comply with the required JSON schema.",
    "date_created": "2026-05-08T22:22:41-04:00",
    "last_updated": "2026-05-08T22:22:41-04:00"
  },
  {
    "code": 46003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Unique Name",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe `uniqueName` provided is invalid.\n\n### Possible causes\n\nThe `uniqueName` doesn't meet one or more of the following validation rules:\n\n- Length must be between 1 and 50 characters.\n- Only letters (a-z), digits (0-9), dash (-), and underscore (\\_) are allowed.\n- Blank spaces aren't allowed.\n- Special characters aren't allowed.\n- `uniqueName` isn't case sensitive.\n- `uniqueName` must not already exist in the account.\n- `uniqueName` must not match the format of a configuration ID (for example, `voice_clientconfiguration_xxxxx`).\n- `uniqueName` must not be \"DEFAULT\" (not case sensitive).\n\n### Possible solutions\n\n- Ensure the `uniqueName` is between 1 and 50 characters.\n- Use only letters, digits, dashes, and underscores.\n- Remove any spaces or special characters.\n- Choose a `uniqueName` that doesn't already exist in your account.\n- Avoid using \"DEFAULT\" as a `uniqueName`.\n",
    "causes": "The `uniqueName` doesn't meet one or more of the following validation rules: - Length must be between 1 and 50 characters.\n- Only letters (a-z), digits (0-9), dash (-), and underscore (\\_) are allowed.\n- Blank spaces aren't allowed.\n- Special characters aren't allowed.\n- `uniqueName` isn't case sensitive.\n- `uniqueName` must not already exist in the account.\n- `uniqueName` must not match the format of a configuration ID (for example, `voice_clientconfiguration_xxxxx`).\n- `uniqueName` must not be \"DEFAULT\" (not case sensitive).",
    "solutions": "* Ensure the `uniqueName` is between 1 and 50 characters.\n* Use only letters, digits, dashes, and underscores.\n* Remove any spaces or special characters.\n* Choose a `uniqueName` that doesn't already exist in your account.\n* Avoid using \"DEFAULT\" as a `uniqueName`.",
    "description": "The `uniqueName` provided is invalid.",
    "date_created": "2026-05-08T22:22:41-04:00",
    "last_updated": "2026-05-08T22:22:41-04:00"
  },
  {
    "code": 46004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Configuration Not Found",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe requested configuration doesn't exist in the account.\n\n### Possible causes\n\n- The configuration ID doesn't exist in the account.\n- The configuration `uniqueName` doesn't exist in the account.\n- The default configuration isn't set for the account.\n\n### Possible solutions\n\n- Verify the configuration ID or `uniqueName` is correct.\n- Ensure the configuration exists in your account.\n- Create a configuration if one doesn't exist.\n",
    "causes": "* The configuration ID doesn't exist in the account.\n* The configuration `uniqueName` doesn't exist in the account.\n* The default configuration isn't set for the account.",
    "solutions": "* Verify the configuration ID or `uniqueName` is correct.\n* Ensure the configuration exists in your account.\n* Create a configuration if one doesn't exist.",
    "description": "The requested configuration doesn't exist in the account.",
    "date_created": "2026-05-08T22:22:41-04:00",
    "last_updated": "2026-05-08T22:22:41-04:00"
  },
  {
    "code": 46007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Use of Unique Name",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe `uniqueName` can only be used to retrieve a configuration.\n\n### Possible causes\n\n- Attempting to update a configuration using `uniqueName` instead of the configuration ID.\n- Attempting to delete a configuration using `uniqueName` instead of the configuration ID.\n\n### Possible solutions\n\n- Use the configuration ID for update and delete operations. The `uniqueName` can only be used with `GET` requests to retrieve a configuration.\n",
    "causes": "* Attempting to update a configuration using `uniqueName` instead of the configuration ID.\n* Attempting to delete a configuration using `uniqueName` instead of the configuration ID.",
    "solutions": "* Use the configuration ID for update and delete operations. The `uniqueName` can only be used with `GET` requests to retrieve a configuration.",
    "description": "The `uniqueName` can only be used to retrieve a configuration.",
    "date_created": "2026-05-08T22:22:41-04:00",
    "last_updated": "2026-05-08T22:22:41-04:00"
  },
  {
    "code": 46008,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nAn unexpected internal error occurred while processing the request.\n\n### Possible causes\n\n- A temporary issue with the Twilio service may have occurred.\n\n### Possible solutions\n\n- Retry the request.\n- Review the [Twilio Status Page](https://status.twilio.com/) for any ongoing incidents.\n- If the issue persists, [contact Twilio Support](https://www.twilio.com/help/contact) with details about the request.\n",
    "causes": "* A temporary issue with the Twilio service may have occurred.",
    "solutions": "* Retry the request.\n* Review the [Twilio Status Page](https://status.twilio.com/) for any ongoing incidents.\n* If the issue persists, [contact Twilio Support](https://www.twilio.com/help/contact) with details about the request.",
    "description": "An unexpected internal error occurred while processing the request.",
    "date_created": "2026-05-08T22:22:41-04:00",
    "last_updated": "2026-05-08T22:22:41-04:00"
  },
  {
    "code": 46009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Forbidden Access",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nAccess to the requested configuration is forbidden.\n\n### Possible causes\n\n- The configuration exists but belongs to another account.\n- Insufficient permissions to access the configuration.\n\n### Possible solutions\n\n- Verify you are using the correct account credentials.\n- Ensure you have the necessary permissions to access the configuration.\n- Contact your account administrator if you believe you should have access.\n",
    "causes": "* The configuration exists but belongs to another account.\n* Insufficient permissions to access the configuration.",
    "solutions": "* Verify you are using the correct account credentials.\n* Ensure you have the necessary permissions to access the configuration.\n* Contact your account administrator if you believe you should have access.",
    "description": "Access to the requested configuration is forbidden.",
    "date_created": "2026-05-08T22:22:41-04:00",
    "last_updated": "2026-05-08T22:22:41-04:00"
  },
  {
    "code": 46010,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "TwiML/API attributes ignored",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nConfigurations: TwiML or API attributes are ignored because a configuration ID is present. The settings defined in the configuration are applied instead.\n\n### Possible causes\n\nA voice workflow must use either a configuration ID or TwiML/API attributes, but not both.\n\n### Possible solutions\n\n- Remove the TwiML or API attributes from your code.\n- Remove the configuration ID from your code.\n\n#### Additional resources\n\n- [Configurations documentation](/docs/configurations)\n",
    "causes": "A voice workflow must use either a configuration ID or TwiML/API attributes, but not both.",
    "solutions": "* Remove the TwiML or API attributes from your code.\n* Remove the configuration ID from your code.",
    "description": "Configurations: TwiML or API attributes are ignored because a configuration ID is present. The settings defined in the configuration are applied instead.",
    "date_created": "2026-06-05T11:54:15-05:00",
    "last_updated": "2026-07-08T13:15:39-05:00"
  },
  {
    "code": 48000,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid request payload",
    "secondary_message": "The callback request payload provided is invalid",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe callback request payload provided is invalid\n\n### Possible causes\n\n- You might be using an old version of Frontline application.\n\n### Possible solutions\n\n- Update your Frontline application.\n",
    "causes": "* You might be using an old version of Frontline application.",
    "solutions": "* Update your Frontline application.",
    "description": "The callback request payload provided is invalid",
    "date_created": "2021-09-24T08:04:55Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48001,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Callback URL is not set",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou tried to use a Frontline feature that requires a Callback URL, but no Callback URL is configured for your Frontline setup. Configure the Callback URL in Frontline before retrying the request.\n\n### Possible causes\n\n- No Callback URL is configured in Frontline.\n- The Frontline configuration is incomplete for the feature you are trying to use.\n- Your application is calling a Frontline workflow or action that depends on a configured Callback URL.\n\n### Possible solutions\n\n- Open the Frontline configuration for your account and add a valid Callback URL.\n- Verify that the Callback URL points to an endpoint your application serves and can receive requests on.\n- Confirm that the URL is correctly formatted and uses a publicly reachable `https` endpoint if your integration requires it.\n- Retry the request after you save the updated Frontline configuration.\n\n#### Additional resources\n\n- [Frontline documentation](/docs/frontline)\n- [Twilio IAM documentation](/docs/iam)\n",
    "causes": "* No Callback URL is configured in Frontline.\n* The Frontline configuration is incomplete for the feature you are trying to use.\n* Your application is calling a Frontline workflow or action that depends on a configured Callback URL.",
    "solutions": "* Open the Frontline configuration for your account and add a valid Callback URL.\n* Verify that the Callback URL points to an endpoint your application serves and can receive requests on.\n* Confirm that the URL is correctly formatted and uses a publicly reachable `https` endpoint if your integration requires it.\n* Retry the request after you save the updated Frontline configuration.",
    "description": "You tried to use a Frontline feature that requires a Callback URL, but no Callback URL is configured for your Frontline setup. Configure the Callback URL in Frontline before retrying the request.",
    "date_created": "2021-09-24T08:05:44Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 48002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Callback URL is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not process the request because the callback URL you provided is not valid. This error occurs when a request includes a malformed URL, an unsupported scheme, or a callback value that cannot be used to deliver webhooks.\n\n### Possible causes\n\n- The callback URL is malformed\n- The URL uses an unsupported or invalid scheme\n- The URL contains invalid characters or formatting errors\n- The callback URL value is empty, truncated, or incomplete\n- The request parameter that contains the callback URL was populated with the wrong value\n\n### Possible solutions\n\n- Confirm that the callback URL is a complete, properly formatted URL\n- Use `https://` for production webhook endpoints\n- Check for common formatting issues such as missing hostname, missing scheme, extra spaces, or invalid characters\n- Verify that you passed the callback URL in the correct request parameter for the API resource you are using\n- If you generate the URL in code, log the final value before sending the request to Twilio and confirm that it matches the endpoint you expect\n- Test the webhook endpoint with a public, reachable URL and confirm your application returns a valid HTTP response\n",
    "causes": "* The callback URL is malformed\n* The URL uses an unsupported or invalid scheme\n* The URL contains invalid characters or formatting errors\n* The callback URL value is empty, truncated, or incomplete\n* The request parameter that contains the callback URL was populated with the wrong value",
    "solutions": "* Confirm that the callback URL is a complete, properly formatted URL\n* Use `https://` for production webhook endpoints\n* Check for common formatting issues such as missing hostname, missing scheme, extra spaces, or invalid characters\n* Verify that you passed the callback URL in the correct request parameter for the API resource you are using\n* If you generate the URL in code, log the final value before sending the request to Twilio and confirm that it matches the endpoint you expect\n* Test the webhook endpoint with a public, reachable URL and confirm your application returns a valid HTTP response",
    "description": "Twilio could not process the request because the callback URL you provided is not valid. This error occurs when a request includes a malformed URL, an unsupported scheme, or a callback value that cannot be used to deliver webhooks.",
    "date_created": "2021-09-24T08:06:20Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 48003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Callback returned an invalid response",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Your Frontline integration service returned a response which is invalid.\n- Your service returned a response that was too large. Responses are capped at 64k.\n\n### Possible solutions\n\n- Make sure that callback returns a valid JSON which has the required fields that are defined in Frontline Docs.\n- Make sure that your response size is less than 64k.\n",
    "causes": "* Your Frontline integration service returned a response which is invalid.\n* Your service returned a response that was too large. Responses are capped at 64k.",
    "solutions": "* Make sure that callback returns a valid JSON which has the required fields that are defined in Frontline Docs.\n* Make sure that your response size is less than 64k.",
    "description": "",
    "date_created": "2021-09-24T08:06:56Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Callback returned an error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis error occurs when Twilio Frontline sends a request to one of your configured callback URLs and your application returns an error response instead of completing successfully. It can affect the callback URLs you configure for Frontline features such as CRM lookups, outgoing conversations, templates, and custom routing.\n\n### Possible causes\n- Your Frontline callback URL points to the wrong path, an outdated deployment, or another endpoint that returns an HTTP error response.\n- Your callback endpoint starts handling the request but fails because of an application exception, dependency failure, or other server-side processing error.\n- Your webhook validation or authentication logic rejects the request and returns `401` or `403`, including cases where signature validation uses the wrong URL or modified request data.\n- Your endpoint redirects the request to another URL, and the redirected request no longer reaches the handler you expected.\n\n### Possible solutions\n- In Frontline Console, review each configured callback URL and make sure it points to the correct public endpoint for the callback you are using. Check CRM, Outgoing Conversations, Templates, and Routing callbacks separately.\n- Test the callback URL directly and confirm that your application returns a successful response instead of a `4xx` or `5xx` error. Use the Twilio Debugger to inspect the webhook request and response details.\n- Review your application logs and fix any unhandled exceptions, failed downstream calls, or other server-side errors that occur while processing the callback.\n- If you validate the `X-Twilio-Signature` header, validate it against the exact URL Twilio requested and the original request parameters or body so valid Frontline requests are not rejected.\n- Remove unexpected HTTP redirects or URL rewrites so the callback request reaches your intended handler directly.\n\n#### Additional resources\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n- [Getting Started with Twilio Webhooks](/docs/usage/webhooks/getting-started-twilio-webhooks)\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n",
    "causes": "* Your Frontline callback URL points to the wrong path, an outdated deployment, or another endpoint that returns an HTTP error response.\n* Your callback endpoint starts handling the request but fails because of an application exception, dependency failure, or other server-side processing error.\n* Your webhook validation or authentication logic rejects the request and returns `401` or `403`, including cases where signature validation uses the wrong URL or modified request data.\n* Your endpoint redirects the request to another URL, and the redirected request no longer reaches the handler you expected.",
    "solutions": "* In Frontline Console, review each configured callback URL and make sure it points to the correct public endpoint for the callback you are using. Check CRM, Outgoing Conversations, Templates, and Routing callbacks separately.\n* Test the callback URL directly and confirm that your application returns a successful response instead of a `4xx` or `5xx` error. Use the Twilio Debugger to inspect the webhook request and response details.\n* Review your application logs and fix any unhandled exceptions, failed downstream calls, or other server-side errors that occur while processing the callback.\n* If you validate the `X-Twilio-Signature` header, validate it against the exact URL Twilio requested and the original request parameters or body so valid Frontline requests are not rejected.\n* Remove unexpected HTTP redirects or URL rewrites so the callback request reaches your intended handler directly.",
    "description": "This error occurs when Twilio Frontline sends a request to one of your configured callback URLs and your application returns an error response instead of completing successfully. It can affect the callback URLs you configure for Frontline features such as CRM lookups, outgoing conversations, templates, and custom routing.",
    "date_created": "2021-09-24T08:07:57Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 48005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Callback failed due to timeout",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio received a timeout while waiting for your Frontline Integration Service callback response. Frontline expects your callback endpoint to return a response within 6 seconds. If your service takes longer, Twilio can't complete the request and returns this error.\n\n### Possible causes\n\n- Your Frontline Integration Service performs work that takes longer than 6 seconds before sending a response.\n- Your callback endpoint depends on a slow upstream service, such as a CRM, identity provider, or internal API.\n- Your server is experiencing high latency or resource contention, which delays the callback response.\n- Network issues between Twilio and your callback endpoint increase response time beyond the timeout limit.\n- Your endpoint does not return a complete HTTP response after receiving the callback request.\n\n### Possible solutions\n\n- Update your callback implementation so it returns a response in less than 6 seconds.\n- Move long-running work out of the synchronous callback flow. Return a response quickly, then complete follow-up processing asynchronously in your application.\n- Review your endpoint logs and application performance metrics to identify slow operations, blocked requests, or failed upstream dependencies.\n- Reduce external dependencies during callback handling when possible.\n- Verify that your callback URL is publicly reachable and that your server can consistently accept and respond to requests without delay.\n- Add timeout handling, retry logic, and performance monitoring in your application so you can detect and fix slow callbacks before they affect Frontline requests.\n\n#### Additional resources\n\n- [Frontline documentation](/docs/frontline)\n- [Help Center](https://help.twilio.com/)\n",
    "causes": "* Your Frontline Integration Service performs work that takes longer than 6 seconds before sending a response.\n* Your callback endpoint depends on a slow upstream service, such as a CRM, identity provider, or internal API.\n* Your server is experiencing high latency or resource contention, which delays the callback response.\n* Network issues between Twilio and your callback endpoint increase response time beyond the timeout limit.\n* Your endpoint does not return a complete HTTP response after receiving the callback request.",
    "solutions": "* Update your callback implementation so it returns a response in less than 6 seconds.\n* Move long-running work out of the synchronous callback flow. Return a response quickly, then complete follow-up processing asynchronously in your application.\n* Review your endpoint logs and application performance metrics to identify slow operations, blocked requests, or failed upstream dependencies.\n* Reduce external dependencies during callback handling when possible.\n* Verify that your callback URL is publicly reachable and that your server can consistently accept and respond to requests without delay.\n* Add timeout handling, retry logic, and performance monitoring in your application so you can detect and fix slow callbacks before they affect Frontline requests.",
    "description": "Twilio received a timeout while waiting for your Frontline Integration Service callback response. Frontline expects your callback endpoint to return a response within 6 seconds. If your service takes longer, Twilio can't complete the request and returns this error.",
    "date_created": "2021-10-26T09:16:05Z",
    "last_updated": "2026-07-14T08:30:02-04:00"
  },
  {
    "code": 48010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Custom Routing Callback failed to execute successfully",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The callback endpoint returned an error code.\n- The callback processing is exceeding 10 seconds.\n\n### Possible solutions\n\n- Check your callback execution logic to ensure it is processing the callback calls correctly and passing back `200 OK`.\n- Make sure that callback processing time is less than 10 seconds.\n",
    "causes": "* The callback endpoint returned an error code.\n* The callback processing is exceeding 10 seconds.",
    "solutions": "* Check your callback execution logic to ensure it is processing the callback calls correctly and passing back `200 OK`.\n* Make sure that callback processing time is less than 10 seconds.",
    "description": "",
    "date_created": "2021-11-18T11:10:26Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48011,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Custom Routing Callback failed due to an internal error",
    "secondary_message": "An internal error has occurred that prevented Twilio from processing your callback.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn internal error has occurred that prevented Twilio from processing your callback.\n\n### Possible causes\n\n- We failed to execute callback request.\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n",
    "causes": "* We failed to execute callback request.",
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!",
    "description": "An internal error has occurred that prevented Twilio from processing your callback.",
    "date_created": "2021-11-18T11:11:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Frontline user conversation limit exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA conversation could not be created because the Conversations user associated to the given Frontline user is a participant in too many conversations.\n\n### Possible causes\n\n- The Conversations user associated to the given Frontline user attempted to create a conversation and exceeded the Conversations service's maximum user conversations limit.\n\n### Possible solutions\n\n- If you frequently exceed the user conversations limit for the Frontline Conversations service, you may want to consider raising your user conversations limit.\n\n  - Read more about Conversations API user conversations limits in our [docs](/docs/conversations-classic/conversations-limits#maximum-channelsconversations-per-identity).\n  - In order to request a limit increase, please contact [customer support](http://twilio.com/console/support/tickets/create).\n- Ask the Frontline user to close or transfer some of their active conversations.\n- Delete conversations the user is a participant in.\n",
    "causes": "* The Conversations user associated to the given Frontline user attempted to create a conversation and exceeded the Conversations service's maximum user conversations limit.",
    "solutions": "* If you frequently exceed the user conversations limit for the Frontline Conversations service, you may want to consider raising your user conversations limit.\n\n  * Read more about Conversations API user conversations limits in our [docs](/docs/conversations-classic/conversations-limits#maximum-channelsconversations-per-identity).\n  * In order to request a limit increase, please contact [customer support](http://twilio.com/console/support/tickets/create).\n* Ask the Frontline user to close or transfer some of their active conversations.\n* Delete conversations the user is a participant in.",
    "description": "A conversation could not be created because the Conversations user associated to the given Frontline user is a participant in too many conversations.",
    "date_created": "2022-04-20T15:48:11Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 48024,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Contact conversation limit exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA Chat conversation could not be created because the Conversations user associated to the given contact is a participant in too many conversations.\n\n### Possible causes\n\n- The Conversations user associated to the given contact attempted to create a conversation over Chat channel and exceeded the Conversations service's maximum user conversations limit.\n\n### Possible solutions\n\n- If you frequently exceed the user conversations limit for the Frontline Conversations service, you may want to consider raising your user conversations limit.\n\n  - Read more about Conversations API user conversations limits in our [docs](/docs/conversations-classic/conversations-limits#maximum-channelsconversations-per-identity).\n  - In order to request a limit increase, please contact [customer support](http://twilio.com/console/support/tickets/create).\n- Close or delete conversations the user is a participant in.\n",
    "causes": "* The Conversations user associated to the given contact attempted to create a conversation over Chat channel and exceeded the Conversations service's maximum user conversations limit.",
    "solutions": "* If you frequently exceed the user conversations limit for the Frontline Conversations service, you may want to consider raising your user conversations limit.\n\n  * Read more about Conversations API user conversations limits in our [docs](/docs/conversations-classic/conversations-limits#maximum-channelsconversations-per-identity).\n  * In order to request a limit increase, please contact [customer support](http://twilio.com/console/support/tickets/create).\n* Close or delete conversations the user is a participant in.",
    "description": "A Chat conversation could not be created because the Conversations user associated to the given contact is a participant in too many conversations.",
    "date_created": "2022-04-20T15:49:36Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 48025,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation: Invalid contact address",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA conversation could not be created because the provided contact address was invalid.\n\n### Possible causes\n\n- The contact phone number used to initiate a new conversation was invalid.\n\n### Possible solutions\n\n- Make sure that the contact address returned from the CRM callback is correct and properly formatted in [E.164 format](/docs/glossary/what-e164), including any channel prefixes if relevant.\n  - Check out the [docs](/docs/frontline/my-customers) on CRM callbacks for additional information.\n",
    "causes": "* The contact phone number used to initiate a new conversation was invalid.",
    "solutions": "* Make sure that the contact address returned from the CRM callback is correct and properly formatted in [E.164 format](/docs/glossary/what-e164), including any channel prefixes if relevant.\n  * Check out the [docs](/docs/frontline/my-customers) on CRM callbacks for additional information.",
    "description": "A conversation could not be created because the provided contact address was invalid.",
    "date_created": "2022-04-20T15:50:49Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48026,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation: Invalid proxy address",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA conversation could not be created because the provided Twilio proxy address for the Frontline user was invalid.\n\n### Possible causes\n\n- The outgoing conversation callback returned an invalid Twilio proxy number or no number at all.\n\n### Possible solutions\n\n- Make sure that the `proxy_address` value returned from the Outgoing Conversation callback is present and properly formatted in [E.164 format](/docs/glossary/what-e164), including any channel prefixes if relevant.\n  - Check out the [docs](/docs/frontline/outgoing-conversations) on how to create outgoing conversations.\n",
    "causes": "* The outgoing conversation callback returned an invalid Twilio proxy number or no number at all.",
    "solutions": "* Make sure that the `proxy_address` value returned from the Outgoing Conversation callback is present and properly formatted in [E.164 format](/docs/glossary/what-e164), including any channel prefixes if relevant.\n  * Check out the [docs](/docs/frontline/outgoing-conversations) on how to create outgoing conversations.",
    "description": "A conversation could not be created because the provided Twilio proxy address for the Frontline user was invalid.",
    "date_created": "2022-04-20T15:51:50Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48027,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation: Proxy address equals contact address",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA conversation could not be created because the provided Twilio proxy address was the same as contact address.\n\n### Possible causes\n\n- The outgoing conversation callback returned a Twilio proxy number that was the same as the contact address.\n\n### Possible solutions\n\n- Make sure that the `proxy_address` value that is returned from the Outgoing Conversation callback is different from the contact address.\n\n  - Check out the [docs](/docs/frontline/nodejs-demo-quickstart#sign-up-for-a-twilio-account-and-get-a-phone-number) on how to configure Twilio proxy numbers.\n  - Check out the [docs](/docs/frontline/nodejs-demo-quickstart#configure-the-twilio-frontline-integration-service) on how to use your Twilio proxy number within the integration service.\n  - Check out the [docs](/docs/frontline/outgoing-conversations) on how to create outgoing conversations.\n",
    "causes": "* The outgoing conversation callback returned a Twilio proxy number that was the same as the contact address.",
    "solutions": "* Make sure that the `proxy_address` value that is returned from the Outgoing Conversation callback is different from the contact address.\n\n  * Check out the [docs](/docs/frontline/nodejs-demo-quickstart#sign-up-for-a-twilio-account-and-get-a-phone-number) on how to configure Twilio proxy numbers.\n  * Check out the [docs](/docs/frontline/nodejs-demo-quickstart#configure-the-twilio-frontline-integration-service) on how to use your Twilio proxy number within the integration service.\n  * Check out the [docs](/docs/frontline/outgoing-conversations) on how to create outgoing conversations.",
    "description": "A conversation could not be created because the provided Twilio proxy address was the same as contact address.",
    "date_created": "2022-04-20T15:52:38Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48028,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation: Unauthorized use of the proxy address",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA conversation could not be created because your Twilio account is not authorized to use the provided Twilio proxy address.\n\n### Possible causes\n\n- The outgoing conversation callback returned a Twilio proxy number that was created under a different Twilio account.\n\n### Possible solutions\n\n- Make sure that the `proxy_address` value that is returned from the Outgoing Conversation callback belongs to the Twilio account under which the conversation is being created.\n  - Check out the [docs](/docs/frontline/nodejs-demo-quickstart#configure-the-twilio-frontline-integration-service) on how to configure your Twilio credentials in the integration service.\n",
    "causes": "* The outgoing conversation callback returned a Twilio proxy number that was created under a different Twilio account.",
    "solutions": "* Make sure that the `proxy_address` value that is returned from the Outgoing Conversation callback belongs to the Twilio account under which the conversation is being created.\n  * Check out the [docs](/docs/frontline/nodejs-demo-quickstart#configure-the-twilio-frontline-integration-service) on how to configure your Twilio credentials in the integration service.",
    "description": "A conversation could not be created because your Twilio account is not authorized to use the provided Twilio proxy address.",
    "date_created": "2022-04-20T15:53:25Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48029,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation: Contact address type does not match proxy address type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA conversation could not be created because the provided Twilio proxy address does not match the contact's expected channel type.\n\n### Possible causes\n\n- The outgoing conversation callback returned a Twilio proxy number that does not match the channel type of the contact address.\n\n### Possible solutions\n\n- Make sure that the `proxy_address` value that is returned from the Outgoing Conversation callback has the same type as the channel over which the conversation is being created (i.e., for a WhatsApp conversation, use a Twilio proxy number with the prefix *whatsapp:*).\n  - Check out the [docs](/docs/frontline/outgoing-conversations) on how to create outgoing conversations.\n",
    "causes": "* The outgoing conversation callback returned a Twilio proxy number that does not match the channel type of the contact address.",
    "solutions": "* Make sure that the `proxy_address` value that is returned from the Outgoing Conversation callback has the same type as the channel over which the conversation is being created (i.e., for a WhatsApp conversation, use a Twilio proxy number with the prefix *whatsapp:*).\n  * Check out the [docs](/docs/frontline/outgoing-conversations) on how to create outgoing conversations.",
    "description": "A conversation could not be created because the provided Twilio proxy address does not match the contact's expected channel type.",
    "date_created": "2022-04-20T15:54:05Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48030,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation: Proxy address is not WhatsApp-enabled sender",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA WhatsApp conversation could not be created because the provided Twilio proxy number is not a WhatsApp-enabled sender.\n\n### Possible causes\n\n- The Outgoing Conversation callback returned a Twilio proxy number that was properly formatted, but not configured as a WhatsApp-enabled sender.\n\n### Possible solutions\n\n- Make sure that the `proxy_address` value that is returned from the Outgoing Conversation callback is a WhatsApp-enabled sender.\n\n  - Check out the [docs](/docs/whatsapp/api#using-twilio-phone-numbers-with-whatsapp) for how to configure WhatsApp-enabled senders as a Twilio proxy number.\n  - Manage your WhatsApp-enabled senders from the [console](https://twilio.com/console/sms/whatsapp/senders).\n",
    "causes": "* The Outgoing Conversation callback returned a Twilio proxy number that was properly formatted, but not configured as a WhatsApp-enabled sender.",
    "solutions": "* Make sure that the `proxy_address` value that is returned from the Outgoing Conversation callback is a WhatsApp-enabled sender.\n\n  * Check out the [docs](/docs/whatsapp/api#using-twilio-phone-numbers-with-whatsapp) for how to configure WhatsApp-enabled senders as a Twilio proxy number.\n  * Manage your WhatsApp-enabled senders from the [console](https://twilio.com/console/sms/whatsapp/senders).",
    "description": "A WhatsApp conversation could not be created because the provided Twilio proxy number is not a WhatsApp-enabled sender.",
    "date_created": "2022-04-20T15:54:50Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48031,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation already exists for this contact and proxy address",
    "secondary_message": null,
    "product": "Connect",
    "products_used": [
      "conversations"
    ],
    "docs": "\n## Description\n\nYou can't create a new outgoing Frontline conversation when the same contact address and Twilio proxy address are already bound to another conversation in the same channel. Twilio uses the contact and proxy address pair as the routing binding for inbound messages, so that pair must remain unique until the existing conversation is closed, the participant is removed, or the conversation is deleted.\n\n### Possible causes\n\n- Another Frontline user is already engaged in a conversation with the same contact by using the same Twilio proxy number.\n- A conversation was created with the same contact and Twilio proxy number, but no Frontline user was added to the conversation, so the conversation was never routed to a Frontline user.\n- The existing conversation is still not closed, so the contact and proxy address pair is still reserved for that conversation.\n\n### Possible solutions\n\n- If another Frontline user is assigned to the conversation, have that user close the conversation or transfer it to the user who started the new outgoing conversation request.\n- If no Frontline user is assigned to the conversation, add the user who started the new outgoing conversation to the existing conversation or close the existing conversation.\n- If the existing conversation is no longer needed, remove the participant, delete the conversation, or set the conversation state to `closed` so the contact and proxy address pair can be used again.\n- If you need a separate simultaneous conversation with the same contact, use a different Twilio proxy address. The same contact can participate in multiple conversations only when each conversation uses a different proxy address.\n- Review your inbound routing or autocreation configuration so inbound messages are assigned to the correct conversation and do not leave an unassigned conversation open. Consider setting a close timer for conversations that should end after inactivity.\n\n#### Additional resources\n\n- [Inbound Message Handling and Autocreation](/docs/conversations-classic/inbound-autocreation)\n- [States and Timers in Conversations](/docs/conversations-classic/states-timers)\n- [Twilio Conversations Overview](/docs/conversations-classic/overview)\n",
    "causes": "* Another Frontline user is already engaged in a conversation with the same contact by using the same Twilio proxy number.\n* A conversation was created with the same contact and Twilio proxy number, but no Frontline user was added to the conversation, so the conversation was never routed to a Frontline user.\n* The existing conversation is still not closed, so the contact and proxy address pair is still reserved for that conversation.",
    "solutions": "* If another Frontline user is assigned to the conversation, have that user close the conversation or transfer it to the user who started the new outgoing conversation request.\n* If no Frontline user is assigned to the conversation, add the user who started the new outgoing conversation to the existing conversation or close the existing conversation.\n* If the existing conversation is no longer needed, remove the participant, delete the conversation, or set the conversation state to `closed` so the contact and proxy address pair can be used again.\n* If you need a separate simultaneous conversation with the same contact, use a different Twilio proxy address. The same contact can participate in multiple conversations only when each conversation uses a different proxy address.\n* Review your inbound routing or autocreation configuration so inbound messages are assigned to the correct conversation and do not leave an unassigned conversation open. Consider setting a close timer for conversations that should end after inactivity.",
    "description": "You can't create a new outgoing Frontline conversation when the same contact address and Twilio proxy address are already bound to another conversation in the same channel. Twilio uses the contact and proxy address pair as the routing binding for inbound messages, so that pair must remain unique until the existing conversation is closed, the participant is removed, or the conversation is deleted.",
    "date_created": "2022-04-20T15:55:39Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 48032,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation: Missing Messaging service",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA conversation could not be created because the Messaging service required for Frontline is missing.\n\n### Possible causes\n\n- You may have deleted the Messaging service that auto-creates conversations in the Frontline Conversations service.\n\n### Possible solutions\n\n- Configure a new \"Default Messaging Service\" from the console, under the [Conversations defaults](https://console.twilio.com/us1/develop/conversations/manage/defaults?frameUrl=%2Fconsole%2Fconversations%2Fconfiguration%2Fdefaults%3Fx-target-region%3Dus1).\n  - Check out the [docs](/docs/frontline/nodejs-demo-quickstart#configure-twilio-conversations) on how to configure Conversations to work with Frontline.\n- Reach out to [customer support](http://twilio.com/console/support/tickets/create) for any additional help.\n",
    "causes": "* You may have deleted the Messaging service that auto-creates conversations in the Frontline Conversations service.",
    "solutions": "* Configure a new \"Default Messaging Service\" from the console, under the [Conversations defaults](https://console.twilio.com/us1/develop/conversations/manage/defaults?frameUrl=%2Fconsole%2Fconversations%2Fconfiguration%2Fdefaults%3Fx-target-region%3Dus1).\n  * Check out the [docs](/docs/frontline/nodejs-demo-quickstart#configure-twilio-conversations) on how to configure Conversations to work with Frontline.\n* Reach out to [customer support](http://twilio.com/console/support/tickets/create) for any additional help.",
    "description": "A conversation could not be created because the Messaging service required for Frontline is missing.",
    "date_created": "2022-04-20T15:56:27Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48033,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Outgoing conversation: Invalid contact identity",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA conversation could not be created because the provided contact chat identity was invalid.\n\n### Possible causes\n\n- The contact chat identity was not formatted properly.\n- A reserved identity was used for contact chat identity.\n\n### Possible solutions\n\n- Make sure that the contact chat identity returned from the CRM callback is formatted properly and does not violate the following rules.\n\n  - Should not match a User SID pattern `US[0-9a-f]{32}`.\n  - Should not be a reserved identity (`system`, `private`, `unique`).\n  - Should not be longer than 256 characters.\n- We recommend following the standard URI specification and avoid the following reserved characters `! * ' ( ) ; : @ & = + $ , / ? % # [ ]` for identity.\n",
    "causes": "* The contact chat identity was not formatted properly.\n* A reserved identity was used for contact chat identity.",
    "solutions": "* Make sure that the contact chat identity returned from the CRM callback is formatted properly and does not violate the following rules.\n\n  * Should not match a User SID pattern `US[0-9a-f]{32}`.\n  * Should not be a reserved identity (`system`, `private`, `unique`).\n  * Should not be longer than 256 characters.\n* We recommend following the standard URI specification and avoid the following reserved characters `! * ' ( ) ; : @ & = + $ , / ? % # [ ]` for identity.",
    "description": "A conversation could not be created because the provided contact chat identity was invalid.",
    "date_created": "2022-04-20T15:57:23Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 48050,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal service error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Frontline encountered an internal error.\n\n### Possible solutions\n\n- Please reach out to [customer support](http://twilio.com/console/support/tickets/create).\n",
    "causes": "* Frontline encountered an internal error.",
    "solutions": "* Please reach out to [customer support](http://twilio.com/console/support/tickets/create).",
    "description": "",
    "date_created": "2022-04-20T15:58:06Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 49008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Profile Connector Installation Not Found",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThe value inside of the UniqueName field (legacy name) is not found to be associated with a known entity, either in the Twilio marketplace, or in our internal Profile Connector SID Database.\n\n### Possible causes\n\nThe Profile Connector \\{Profile Connector Instance SID or Unique Name} was not found.\n\n### Possible solutions\n\nEnsure that you have the correct Profile Connector Instance SID.\n",
    "causes": "The Profile Connector {Profile Connector Instance SID or Unique Name} was not found.",
    "solutions": "Ensure that you have the correct Profile Connector Instance SID.",
    "description": "The value inside of the UniqueName field (legacy name) is not found to be associated with a known entity, either in the Twilio marketplace, or in our internal Profile Connector SID Database.",
    "date_created": "2024-08-16T21:01:19Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 49009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Credentials Malformed",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThe credential SID associated with either the Profile Connector Instance SID or the Unique Name was invalid. Please check configuration and update credentials\n\n### Possible causes\n\nCredentials are present, but aren't parse-able due to an invalid SID placed inside of the configuration.\n\n### Possible solutions\n\nPlease ensure the correct value inside of the SegmentUnifyApiKey.\n",
    "causes": "Credentials are present, but aren't parse-able due to an invalid SID placed inside of the configuration.",
    "solutions": "Please ensure the correct value inside of the SegmentUnifyApiKey.",
    "description": "The credential SID associated with either the Profile Connector Instance SID or the Unique Name was invalid. Please check configuration and update credentials",
    "date_created": "2024-08-16T21:00:08Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50000,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: FriendlyName not provided",
    "secondary_message": "Request does not contain required \"FriendlyName\" parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required \"FriendlyName\" parameter.\n\n### Possible solutions\n\n- Confirm a valid FriendlyName is being passed in request.\n",
    "causes": "* Request does not contain required \"FriendlyName\" parameter.",
    "solutions": "* Confirm a valid FriendlyName is being passed in request.",
    "description": "",
    "date_created": "2016-04-15T11:19:12Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Account SID not provided",
    "secondary_message": "Request does not contain required Account SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Account SID parameter.\n\n### Possible solutions\n\n- Confirm a valid Account SID is being passed in request.\n",
    "causes": "* Request does not contain required Account SID parameter.",
    "solutions": "* Confirm a valid Account SID is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:43Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Resource is being deleted",
    "secondary_message": "The resource your request relates to is currently being deleted.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The resource your request relates to is currently being deleted.\n\n### Possible solutions\n\n- Try the same request again later.\n",
    "causes": "* The resource your request relates to is currently being deleted.",
    "solutions": "* Try the same request again later.",
    "description": "",
    "date_created": "2016-03-31T17:14:43Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Friendly name too long",
    "secondary_message": "Specified friendly name is too long",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified friendly name is too long\n\n### Possible solutions\n\n- Confirm a valid FriendlyName is being passed in request.\n",
    "causes": "* Specified friendly name is too long",
    "solutions": "* Confirm a valid FriendlyName is being passed in request.",
    "description": "",
    "date_created": "2019-02-06T13:20:59Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Unique Name too long",
    "secondary_message": "Specified unique name is too long",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified unique name is too long\n\n### Possible solutions\n\n- Confirm a valid UniqueName is being passed in request.\n",
    "causes": "* Specified unique name is too long",
    "solutions": "* Confirm a valid UniqueName is being passed in request.",
    "description": "",
    "date_created": "2019-02-06T13:22:43Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Programmable Chat: Invalid Account SID",
    "secondary_message": "Specified Account SID does not match pattern \"AC\\[0-9a-f]\\{32}\"",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Programmable Chat request includes an Account SID that does not match the required Account SID format. An Account SID is a 34-character SID that begins with `AC` and is followed by 32 hexadecimal characters.\n\n### Possible causes\n\n- The Account SID value in the request does not match the required pattern `AC[0-9a-f]{32}`.\n- The request uses a different Twilio SID type instead of an Account SID. For example, an API Key SID uses the `SK` prefix, while an Account SID uses the `AC` prefix.\n- The Account SID was copied incorrectly, truncated, or altered before the request was sent. This is the most likely outcome when the submitted value no longer matches the required Account SID format.\n\n### Possible solutions\n\n- Copy the Account SID directly from the Twilio Console and send that value in the request. ([help.twilio.com](https://help.twilio.com/articles/14726256820123-What-is-a-Twilio-Account-SID-and-where-can-I-find-it-))\n- Verify that the Account SID starts with `AC` and contains 32 hexadecimal characters after the prefix.\n- Make sure you are passing an Account SID, not another credential such as an API Key SID. API Key SIDs use the `SK` prefix and are not interchangeable with Account SIDs.\n- If you build requests from environment variables or application configuration, confirm that the correct Account SID is loaded for the request. For production REST API authentication, use API keys as credentials and keep the Account SID value only where the API requires it.\n\n#### Additional resources\n\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n- [What Is a Twilio Account SID and Where Can I Find It?](https://help.twilio.com/articles/14726256820123-What-is-a-Twilio-Account-SID-and-where-can-I-find-it-)\n- [API keys overview](/docs/iam/api-keys)\n",
    "causes": "* The Account SID value in the request does not match the required pattern `AC[0-9a-f]{32}`.\n* The request uses a different Twilio SID type instead of an Account SID. For example, an API Key SID uses the `SK` prefix, while an Account SID uses the `AC` prefix.\n* The Account SID was copied incorrectly, truncated, or altered before the request was sent. This is the most likely outcome when the submitted value no longer matches the required Account SID format.",
    "solutions": "* Copy the Account SID directly from the Twilio Console and send that value in the request. ([help.twilio.com](https://help.twilio.com/articles/14726256820123-What-is-a-Twilio-Account-SID-and-where-can-I-find-it-))\n* Verify that the Account SID starts with `AC` and contains 32 hexadecimal characters after the prefix.\n* Make sure you are passing an Account SID, not another credential such as an API Key SID. API Key SIDs use the `SK` prefix and are not interchangeable with Account SIDs.\n* If you build requests from environment variables or application configuration, confirm that the correct Account SID is loaded for the request. For production REST API authentication, use API keys as credentials and keep the Account SID value only where the API requires it.",
    "description": "This error occurs when a Programmable Chat request includes an Account SID that does not match the required Account SID format. An Account SID is a 34-character SID that begins with `AC` and is followed by 32 hexadecimal characters.",
    "date_created": "2022-02-10T13:31:32Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 50050,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Service Instance not found",
    "secondary_message": "Specified Service Instance does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Service Instance does not exist.\n\n### Possible solutions\n\n- Confirm a valid Service Instance is being passed in request.\n",
    "causes": "* Specified Service Instance does not exist.",
    "solutions": "* Confirm a valid Service Instance is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:44Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50051,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Service SID not provided",
    "secondary_message": "Request does not contain required Service SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Service SID parameter.\n\n### Possible solutions\n\n- Confirm a valid Service SID is being passed in request.\n",
    "causes": "* Request does not contain required Service SID parameter.",
    "solutions": "* Confirm a valid Service SID is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:44Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50052,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid consumption interval format",
    "secondary_message": "Request does not contain valid consumption interval.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain valid consumption interval.\n\n### Possible solutions\n\n- Confirm a valid consumption interval format is being passed in request.\n",
    "causes": "* Request does not contain valid consumption interval.",
    "solutions": "* Confirm a valid consumption interval format is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:44Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50053,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid typing indicator format",
    "secondary_message": "Request does not contain valid typing indicator timeout.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain valid typing indicator timeout.\n\n### Possible solutions\n\n- Confirm a valid typing indicator timeout is being passed in request.\n",
    "causes": "* Request does not contain valid typing indicator timeout.",
    "solutions": "* Confirm a valid typing indicator timeout is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50054,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid webhook format",
    "secondary_message": "Request does not contain correctly formatted parameters for webhooks.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameters for webhooks.\n\n### Possible solutions\n\n- Confirm a valid webhook parameters are being passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameters for webhooks.",
    "solutions": "* Confirm a valid webhook parameters are being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50055,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid webhook method",
    "secondary_message": "Request does not contain valid HTTP method for webhook.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain valid HTTP method for webhook.\n\n### Possible solutions\n\n- Confirm a valid HTTP method for webhook is being passed in request.\n",
    "causes": "* Request does not contain valid HTTP method for webhook.",
    "solutions": "* Confirm a valid HTTP method for webhook is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50056,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Webhook disabled processing of command",
    "secondary_message": "Defined webhook returned other than \"200 OK\" HTTP code and Programmable Chat Service disabled processing of command.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Defined webhook returned other than `200 OK` HTTP code and Programmable Chat Service disabled processing of command.\n\n### Possible solutions\n\n- Confirm that defined webhooks are processing Programmable Chat Service's webhook calls correctly.\n",
    "causes": "* Defined webhook returned other than `200 OK` HTTP code and Programmable Chat Service disabled processing of command.",
    "solutions": "* Confirm that defined webhooks are processing Programmable Chat Service's webhook calls correctly.",
    "description": "",
    "date_created": "2016-03-31T17:14:46Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50057,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Webhook call failed to execute successfully",
    "secondary_message": "The event triggered webhook call failed to execute successfully",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The Webhook endpoint called returned an error code\n\n### Possible solutions\n\n- Check your Webhook execution logic to ensure it is processing the webhook calls correctly and passing back `200 OK`\n",
    "causes": "* The Webhook endpoint called returned an error code",
    "solutions": "* Check your Webhook execution logic to ensure it is processing the webhook calls correctly and passing back `200 OK`",
    "description": "",
    "date_created": "2016-04-01T11:43:41Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50058,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Notification template too long",
    "secondary_message": "Specified notification template parameter is too long",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified notification template parameter is too long.\n\n### Possible solutions\n\n- Confirm a valid length notification template is being passed in request.\n",
    "causes": "* Specified notification template parameter is too long.",
    "solutions": "* Confirm a valid length notification template is being passed in request.",
    "description": "",
    "date_created": "2017-10-30T13:04:16Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50059,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Notification sound name too long",
    "secondary_message": "Specified notification sound parameter is too long",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified notification sound parameter is too long.\n\n### Possible solutions\n\n- Confirm a valid length notification sound parameter is being passed in request.\n",
    "causes": "* Specified notification sound parameter is too long.",
    "solutions": "* Confirm a valid length notification sound parameter is being passed in request.",
    "description": "",
    "date_created": "2017-11-06T07:50:30Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50060,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid user channels limit format",
    "secondary_message": "Request does not contain correctly formatted parameter for user channels limit",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for user channels limit.\n\n### Possible solutions\n\n- Confirm a valid user channels limit parameter is passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for user channels limit.",
    "solutions": "* Confirm a valid user channels limit parameter is passed in request.",
    "description": "",
    "date_created": "2017-11-06T07:56:20Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50061,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid channel members limit format",
    "secondary_message": "Request does not contain correctly formatted parameter for channel members limit",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for channel members limit.\n\n### Possible solutions\n\n- Confirm a valid channel members limit parameter is passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for channel members limit.",
    "solutions": "* Confirm a valid channel members limit parameter is passed in request.",
    "description": "",
    "date_created": "2017-11-06T07:57:43Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50063,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Actions per second limit exceeded",
    "secondary_message": "Service instance actions per second limit exceeded",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Your application is generating too many actions per second (APS) for Chat service instance\n- Note that the APS limit is enforced for commands such as sending a Message or creating a Channel - not Read actions\n\n### Possible solutions\n\n- Make sure your application (client or backend) uses a good exponential back-off algorithm like the [one advocated by Amazon](https://www.awsarchitectureblog.com/2015/03/backoff.html) to retry on HTTP 429 (rate limiting) responses\n- Reduce the rate of requests and introduce basic rate control, e.g. for user or channel provisioning use-cases\n- Reduce number of concurrent requests\n",
    "causes": "* Your application is generating too many actions per second (APS) for Chat service instance\n* Note that the APS limit is enforced for commands such as sending a Message or creating a Channel - not Read actions",
    "solutions": "* Make sure your application (client or backend) uses a good exponential back-off algorithm like the [one advocated by Amazon](https://www.awsarchitectureblog.com/2015/03/backoff.html) to retry on HTTP 429 (rate limiting) responses\n* Reduce the rate of requests and introduce basic rate control, e.g. for user or channel provisioning use-cases\n* Reduce number of concurrent requests",
    "description": "",
    "date_created": "2017-03-30T11:05:13Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50065,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid webhook retry count",
    "secondary_message": "Request does not contain correctly formatted parameter for webhook retry count.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for webhook retry count.\n\n### Possible solutions\n\n- Confirm a valid webhook parameters are being passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for webhook retry count.",
    "solutions": "* Confirm a valid webhook parameters are being passed in request.",
    "description": "",
    "date_created": "2017-11-06T09:41:53Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50068,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Service instance unique name invalid",
    "secondary_message": "Request does not contain correctly formatted service instance unique name",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted service instance unique name\n\n### Possible solutions\n\n- Confirm a valid service instance unique name is being passed in request.\n",
    "causes": "* Request does not contain correctly formatted service instance unique name",
    "solutions": "* Confirm a valid service instance unique name is being passed in request.",
    "description": "",
    "date_created": "2018-10-10T11:03:15Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50069,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Service instance with provided unique name already exists",
    "secondary_message": "Request contains already existing service instance unique name",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Request contains already existing service instance unique name\n\n### Possible solutions\n\n- Provide non-existent service instance unique name in the request\n",
    "causes": "* Request contains already existing service instance unique name",
    "solutions": "* Provide non-existent service instance unique name in the request",
    "description": "",
    "date_created": "2018-10-10T11:21:17Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50074,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Global actions per second limit exceeded",
    "secondary_message": "Service instance global actions per second limit exceeded.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nService instance global actions per second limit exceeded.\n\n### Possible causes\n\n- Your application is generating too many actions per second (APS) for Chat service instance either to a specific Chat API endpoint or across different Chat API endpoints\n- Note that the APS limit is enforced for commands such as sending a Message or creating a Channel - not Read actions\n\n### Possible solutions\n\n- Make sure your application (client or backend) uses a good exponential back-off algorithm like the [one advocated by Amazon](https://www.awsarchitectureblog.com/2015/03/backoff.html) to retry on HTTP 429 (rate limiting) responses\n- Reduce the rate of requests and introduce basic rate control, e.g. for user or channel provisioning use-cases\n- Reduce number of concurrent requests\n",
    "causes": "* Your application is generating too many actions per second (APS) for Chat service instance either to a specific Chat API endpoint or across different Chat API endpoints\n* Note that the APS limit is enforced for commands such as sending a Message or creating a Channel - not Read actions",
    "solutions": "* Make sure your application (client or backend) uses a good exponential back-off algorithm like the [one advocated by Amazon](https://www.awsarchitectureblog.com/2015/03/backoff.html) to retry on HTTP 429 (rate limiting) responses\n* Reduce the rate of requests and introduce basic rate control, e.g. for user or channel provisioning use-cases\n* Reduce number of concurrent requests",
    "description": "Service instance global actions per second limit exceeded.",
    "date_created": "2020-05-07T08:09:56Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50076,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Webhook failed to execute successfully due to timeout",
    "secondary_message": "Webhook's response isn't received in 5 seconds",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nProgrammable Chat: Webhook failed to execute successfully due to timeout\n\n### Possible causes\n\n- Application side processing is exceeding 5 seconds.\n- Some network blips might cause delay in returning the response to chat\n\n### Possible solutions\n\n- Make sure that webhook processing time is less than 5 seconds\n- Make webhook processing asynchronous on the app side and return response immediately\n",
    "causes": "* Application side processing is exceeding 5 seconds.\n* Some network blips might cause delay in returning the response to chat",
    "solutions": "* Make sure that webhook processing time is less than 5 seconds\n* Make webhook processing asynchronous on the app side and return response immediately",
    "description": "Programmable Chat: Webhook failed to execute successfully due to timeout",
    "date_created": "2021-02-16T11:22:51Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 50077,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid pre-webhook url",
    "secondary_message": "Request does not contain a valid url for pre-webhook.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nRequest does not contain a valid url for pre-webhook.\n\n### Possible causes\n\n- Provided url has the wrong format.\n\n### Possible solutions\n\n- Make sure that url is complete and properly encoded.\n- Make sure that url contains valid protocol and hostname and doesn't contain invalid characters.\n",
    "causes": "* Provided url has the wrong format.",
    "solutions": "* Make sure that url is complete and properly encoded.\n* Make sure that url contains valid protocol and hostname and doesn't contain invalid characters.",
    "description": "Request does not contain a valid url for pre-webhook.",
    "date_created": "2024-01-29T21:51:18Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50078,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid post-webhook url",
    "secondary_message": "Request does not contain a valid url for post-webhook.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nRequest does not contain a valid url for post-webhook.\n\n### Possible causes\n\n- Provided url has the wrong format.\n\n### Possible solutions\n\n- Make sure that url is complete and properly encoded.\n- Make sure that url contains valid protocol and hostname and doesn't contain invalid characters.\n",
    "causes": "* Provided url has the wrong format.",
    "solutions": "* Make sure that url is complete and properly encoded.\n* Make sure that url contains valid protocol and hostname and doesn't contain invalid characters.",
    "description": "Request does not contain a valid url for post-webhook.",
    "date_created": "2024-01-29T21:49:14Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50100,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Role not found",
    "secondary_message": "Specified Role does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Role does not exist.\n\n### Possible solutions\n\n- Confirm a valid Role is being passed in request.\n",
    "causes": "* Specified Role does not exist.",
    "solutions": "* Confirm a valid Role is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel role not found",
    "secondary_message": "Specified Channel Role does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Channel Role does not exist.\n\n### Possible solutions\n\n- Confirm a valid Channel Role is being passed in request.\n",
    "causes": "* Specified Channel Role does not exist.",
    "solutions": "* Confirm a valid Channel Role is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50102,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Deployment role not found",
    "secondary_message": "Specified Deployment Role does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Deployment Role does not exist.\n\n### Possible solutions\n\n- Confirm a valid Deployment Role is being passed in request.\n",
    "causes": "* Specified Deployment Role does not exist.",
    "solutions": "* Confirm a valid Deployment Role is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50103,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Role SID not provided",
    "secondary_message": "Request does not contain required Role SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Role SID parameter.\n\n### Possible solutions\n\n- Confirm a valid Role SID is being passed in request.\n",
    "causes": "* Request does not contain required Role SID parameter.",
    "solutions": "* Confirm a valid Role SID is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:47Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50104,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Permission not found",
    "secondary_message": "Specified Permission does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Permission does not exist.\n\n### Possible solutions\n\n- Confirm a valid Permission is being passed in request.\n",
    "causes": "* Specified Permission does not exist.",
    "solutions": "* Confirm a valid Permission is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:47Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50105,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid role type",
    "secondary_message": "Specified Role Type does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Role Type does not exist.\n\n### Possible solutions\n\n- Confirm a valid Role Type is being passed in request.\n",
    "causes": "* Specified Role Type does not exist.",
    "solutions": "* Confirm a valid Role Type is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:47Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel creator role not found",
    "secondary_message": "Valid Channel Creator Role does not exist in this service deployment.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Valid Channel Creator Role does not exist in this service deployment.\n\n### Possible solutions\n\n- Confirm a valid Channel Creator Role exists in this service deployment.\n",
    "causes": "* Valid Channel Creator Role does not exist in this service deployment.",
    "solutions": "* Confirm a valid Channel Creator Role exists in this service deployment.",
    "description": "",
    "date_created": "2016-03-31T17:14:47Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50107,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: User not authorized for command",
    "secondary_message": "Specified User is not authorized for this command due to his Role or Permissions set.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified User is not authorized for this command due to his Role or Permissions set.\n\n### Possible solutions\n\n- Confirm a valid Role and Permissions exist for this User to execute request's provided command.\n",
    "causes": "* Specified User is not authorized for this command due to his Role or Permissions set.",
    "solutions": "* Confirm a valid Role and Permissions exist for this User to execute request's provided command.",
    "description": "",
    "date_created": "2016-03-31T17:14:48Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50109,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conversation role not found",
    "secondary_message": "Specified Conversation Role does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `roleSid` in your request does not match a Role resource in the target Conversation Service. Roles are scoped to a Conversation Service, and Twilio uses service-level roles for Users and conversation-level roles for Participants.\n\n### Possible causes\n\n- The `roleSid` value does not reference an existing `RL...` Role SID. Twilio expects a valid Role resource when you assign a role to a User or Participant.\n- The role exists in a different Conversation Service. If your application uses more than one service, you must specify the correct `IS...` Service SID instead of relying on the default shortened endpoint.\n- The request uses the wrong role scope. Users require a service-level role, while Participants require a conversation-level role.\n\n### Possible solutions\n\n- Fetch the role or list roles for the target Conversation Service and confirm that the `roleSid` you send is present before you retry the request.\n- If you work with multiple Conversation Services, send the request against the correct service-scoped endpoint and use the matching `IS...` Service SID for the role, user, or participant you are updating.\n- Assign the correct role type for the resource you are updating. Use a `service` role for a User and a `conversation` role for a Participant.\n- If the role does not exist yet, create it first with the correct `type` and permissions, then retry the request with the new `RL...` SID.\n\n#### Additional resources\n\n- [Role Resource](/docs/conversations-classic/api/role-resource)\n- [Conversations (classic) User Resource](/docs/conversations-classic/api/user-resource)\n- [Service-Scoped Conversation Participant Resource](/docs/conversations-classic/api/service-participant-resource)\n",
    "causes": "* The `roleSid` value does not reference an existing `RL...` Role SID. Twilio expects a valid Role resource when you assign a role to a User or Participant.\n* The role exists in a different Conversation Service. If your application uses more than one service, you must specify the correct `IS...` Service SID instead of relying on the default shortened endpoint.\n* The request uses the wrong role scope. Users require a service-level role, while Participants require a conversation-level role.",
    "solutions": "* Fetch the role or list roles for the target Conversation Service and confirm that the `roleSid` you send is present before you retry the request.\n* If you work with multiple Conversation Services, send the request against the correct service-scoped endpoint and use the matching `IS...` Service SID for the role, user, or participant you are updating.\n* Assign the correct role type for the resource you are updating. Use a `service` role for a User and a `conversation` role for a Participant.\n* If the role does not exist yet, create it first with the correct `type` and permissions, then retry the request with the new `RL...` SID.",
    "description": "This error occurs when the `roleSid` in your request does not match a Role resource in the target Conversation Service. Roles are scoped to a Conversation Service, and Twilio uses service-level roles for Users and conversation-level roles for Participants.",
    "date_created": "2021-10-13T12:22:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 50200,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: User not found",
    "secondary_message": "Specified User does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified User does not exist.\n\n### Possible solutions\n\n- Confirm a valid User is being passed in request.\n",
    "causes": "* Specified User does not exist.",
    "solutions": "* Confirm a valid User is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:48Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50201,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: User already exists",
    "secondary_message": "Specified User already exists for this Service.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified User already exists for this Service.\n\n### Possible solutions\n\n- Confirm a valid non-existing User is being passed in request.\n",
    "causes": "* Specified User already exists for this Service.",
    "solutions": "* Confirm a valid non-existing User is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:48Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50202,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: User SID not provided",
    "secondary_message": "Request does not contain required User SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required User SID parameter.\n\n### Possible solutions\n\n- Confirm a valid User SID is being passed in request.\n",
    "causes": "* Request does not contain required User SID parameter.",
    "solutions": "* Confirm a valid User SID is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:48Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50203,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Identity reserved",
    "secondary_message": "Specified identity is reserved for internal use.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified identity is reserved for internal use.\n\n### Possible solutions\n\n- Choose different valid identity and provide it in request.\n",
    "causes": "* Specified identity is reserved for internal use.",
    "solutions": "* Choose different valid identity and provide it in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50204,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Identity not provided",
    "secondary_message": "Request does not contain required \"Identity\" parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required \"Identity\" parameter.\n\n### Possible solutions\n\n- Confirm a valid \"Identity\" parameter is being passed in request.\n",
    "causes": "* Request does not contain required \"Identity\" parameter.",
    "solutions": "* Confirm a valid \"Identity\" parameter is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50205,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: User unauthorized to set role",
    "secondary_message": "Specified User does not have Role or Permissions to set the Role.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified User does not have Role or Permissions to set the Role.\n\n### Possible solutions\n\n- Confirm a valid User having valid Role and Permissions is being passed in request.\n",
    "causes": "* Specified User does not have Role or Permissions to set the Role.",
    "solutions": "* Confirm a valid User having valid Role and Permissions is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50206,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Identity should not match user SID pattern",
    "secondary_message": "Specified User's Identity matches User SID Pattern \"US\\[0-9a-f]\\{32}\"",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified User's Identity matches User SID Pattern \"US\\[0-9a-f]\\{32}\".\n\n### Possible solutions\n\n- Confirm a valid User's Identity is being passed in request.\n",
    "causes": "* Specified User's Identity matches User SID Pattern \"US\\[0-9a-f]{32}\".",
    "solutions": "* Confirm a valid User's Identity is being passed in request.",
    "description": "",
    "date_created": "2016-04-15T11:22:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50207,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Identity too long",
    "secondary_message": "Specified User's Identity parameter is too long",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified User's Identity parameter is too long.\n\n### Possible solutions\n\n- Confirm a valid length User's Identity is being passed in request.\n",
    "causes": "* Specified User's Identity parameter is too long.",
    "solutions": "* Confirm a valid length User's Identity is being passed in request.",
    "description": "",
    "date_created": "2016-04-15T11:23:18Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50208,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: User channel limit exceeded",
    "secondary_message": null,
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- User has joined too many channels\n\n### Possible solutions\n\n- Increase user channel limit for service instance\n- Remove user from channels\n",
    "causes": "* User has joined too many channels",
    "solutions": "* Increase user channel limit for service instance\n* Remove user from channels",
    "description": "",
    "date_created": "2017-03-30T11:28:06Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50209,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid binding type",
    "secondary_message": "Specified binding type does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified binding type does not exist.\n\n### Possible solutions\n\n- Confirm a valid binding type is being passed in request.\n",
    "causes": "* Specified binding type does not exist.",
    "solutions": "* Confirm a valid binding type is being passed in request.",
    "description": "",
    "date_created": "2017-11-06T11:43:58Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50210,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid notification level",
    "secondary_message": "Request contains unknown notification level value",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified notification level does not exist.\n\n### Possible solutions\n\n- Confirm a valid notification level is being passed in request.\n",
    "causes": "* Specified notification level does not exist.",
    "solutions": "* Confirm a valid notification level is being passed in request.",
    "description": "",
    "date_created": "2018-10-10T11:27:41Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50211,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Identity parameter not acceptable for this Participant",
    "secondary_message": "Participants on SMS, WhatsApp or other non-Chat channels cannot have Identities.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nParticipants on SMS, WhatsApp or other non-Chat channels cannot have Identities.\n\n### Possible causes\n\nThis error is fired when the parameter *Identity* is provided together with either:\n\n- MessagingBinding.Address,\n- MessagingBinding.ProxyAddress, or\n- both of the above.\n\nAs the error indicates, such a combination is not allowed. You can provide either an address binding or an Identity, but not both.\n\n### Possible solutions\n\n- Avoid using both Identity and MessagingBinding.Address parameters when creating a Conversation participant. Instead, distinguish the use-case for your participants upfront and supply either the Identity for users of Programmable Chat Web/iOS/Android SDKs, or MessagingBinding.Address for non-Chat users such as SMS, MMS, WhatsApp, etc.\n",
    "causes": "This error is fired when the parameter *Identity* is provided together with either: - MessagingBinding.Address,\n- MessagingBinding.ProxyAddress, or\n- both of the above. As the error indicates, such a combination is not allowed. You can provide either an address binding or an Identity, but not both.",
    "solutions": "* Avoid using both Identity and MessagingBinding.Address parameters when creating a Conversation participant. Instead, distinguish the use-case for your participants upfront and supply either the Identity for users of Programmable Chat Web/iOS/Android SDKs, or MessagingBinding.Address for non-Chat users such as SMS, MMS, WhatsApp, etc.",
    "description": "Participants on SMS, WhatsApp or other non-Chat channels cannot have Identities.",
    "date_created": "2018-10-10T11:43:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50212,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Programmable Chat: User already invited",
    "secondary_message": "User with specified Identity already invited to this Channel",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nUser with specified Identity already invited to this Channel\n\n### Possible causes\n\nUser with specified Identity already invited to this Channel.\n\n### Possible solutions\n\nConfirm that the Identity passed in the request is not already invited to the intended channel.\n",
    "causes": "User with specified Identity already invited to this Channel.",
    "solutions": "Confirm that the Identity passed in the request is not already invited to the intended channel.",
    "description": "User with specified Identity already invited to this Channel",
    "date_created": "2019-11-20T09:34:19Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50213,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conflicting user modification",
    "secondary_message": "The requested user is already being added or removed from this channel by a concurrent API request.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested user is already being added or removed from this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.\n\n### Possible causes\n\n- You might be adding a new user to the service instance while the user with the same identity is being removed from another thread.\n- You might be submitting multiple concurrent requests to add a user with the same identity to the service instance.\n- You might be submitting multiple concurrent requests to delete the same user by SID or identity from the service instance.\n\n### Possible solutions\n\n- Implement an operation retrier and repeat the failed user API requests after an interval of time, using an exponential backoff algorithm.\n- Review your application logic that caused the race condition when adding or removing users. Perhaps the conflicting operations are happening in a loop that could be avoided.\n",
    "causes": "* You might be adding a new user to the service instance while the user with the same identity is being removed from another thread.\n* You might be submitting multiple concurrent requests to add a user with the same identity to the service instance.\n* You might be submitting multiple concurrent requests to delete the same user by SID or identity from the service instance.",
    "solutions": "* Implement an operation retrier and repeat the failed user API requests after an interval of time, using an exponential backoff algorithm.\n* Review your application logic that caused the race condition when adding or removing users. Perhaps the conflicting operations are happening in a loop that could be avoided.",
    "description": "The requested user is already being added or removed from this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.",
    "date_created": "2020-05-05T15:22:27Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50214,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "User conversation limit exceeded",
    "secondary_message": null,
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to add a Chat user to another conversation after that identity has already joined the maximum allowed number of `active` or `inactive` Conversations (classic) and Chat Channels. In Conversations (classic), a Chat identity can belong to up to 1000 `active` or `inactive` conversations and channels.\n\n### Possible causes\n\n- The user's identity already belongs to 1000 or more `active` or `inactive` Conversations (classic) and Chat Channels.\n- The user is still a participant in older conversations that remain `active`.\n- The user is still a participant in older conversations that remain `inactive`.\n\n### Possible solutions\n\n- Increase the user conversation limit for the Service instance.\n- Remove the user from conversations they no longer need.\n- Move unused conversations to `closed` by API or with timers. `closed` conversations do not count toward the per-user limit.\n- List the user's existing conversation memberships with the User Conversation resource, then remove memberships that are no longer needed.\n\n#### Additional resources\n\n- [Conversations (classic) Limits](/docs/conversations-classic/conversations-limits)\n- [States and Timers in Conversations (classic)](/docs/conversations-classic/states-timers)\n- [User Conversation Resource](/docs/conversations-classic/api/user-conversation-resource)\n",
    "causes": "* The user's identity already belongs to 1000 or more `active` or `inactive` Conversations (classic) and Chat Channels.\n* The user is still a participant in older conversations that remain `active`.\n* The user is still a participant in older conversations that remain `inactive`.",
    "solutions": "* Increase the user conversation limit for the Service instance.\n* Remove the user from conversations they no longer need.\n* Move unused conversations to `closed` by API or with timers. `closed` conversations do not count toward the per-user limit.\n* List the user's existing conversation memberships with the User Conversation resource, then remove memberships that are no longer needed.",
    "description": "This error occurs when you try to add a Chat user to another conversation after that identity has already joined the maximum allowed number of `active` or `inactive` Conversations (classic) and Chat Channels. In Conversations (classic), a Chat identity can belong to up to 1000 `active` or `inactive` conversations and channels.",
    "date_created": "2021-10-13T12:24:20Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 50300,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel not found",
    "secondary_message": "Specified Channel does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Channel does not exist.\n\n### Possible solutions\n\n- Confirm a valid Channel is being passed in request.\n",
    "causes": "* Specified Channel does not exist.",
    "solutions": "* Confirm a valid Channel is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50301,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel key not provided",
    "secondary_message": "Request does not contain required Channel SID or Channel's Unique Name parameters.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Channel SID or Channel's Unique Name parameters.\n\n### Possible solutions\n\n- Confirm a valid Channel SID or Channel's Unique Name is being passed in request.\n",
    "causes": "* Request does not contain required Channel SID or Channel's Unique Name parameters.",
    "solutions": "* Confirm a valid Channel SID or Channel's Unique Name is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50302,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Unknown channel command",
    "secondary_message": "Specified Channel Command does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Channel Command does not exist.\n\n### Possible solutions\n\n- Confirm a valid Channel Command is being passed in request.\n",
    "causes": "* Specified Channel Command does not exist.",
    "solutions": "* Confirm a valid Channel Command is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50303,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Attributes too long",
    "secondary_message": "Specified Channel's Attributes parameter is too long.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Channel's Attributes parameter is too long.\n\n### Possible solutions\n\n- Confirm a valid length Channel's Attributes is being passed in request.\n",
    "causes": "* Specified Channel's Attributes parameter is too long.",
    "solutions": "* Confirm a valid length Channel's Attributes is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50304,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Attributes not valid JSON",
    "secondary_message": "Specified Channel's Attributes are not valid JSON.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Channel's Attributes are not valid JSON.\n\n### Possible solutions\n\n- Confirm a valid Channel's Attributes in JSON format are being passed in request.\n",
    "causes": "* Specified Channel's Attributes are not valid JSON.",
    "solutions": "* Confirm a valid Channel's Attributes in JSON format are being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50305,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel SID not provided",
    "secondary_message": "Request does not contain required Channel SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Channel SID parameter.\n\n### Possible solutions\n\n- Confirm a valid Channel SID is being passed in request.\n",
    "causes": "* Request does not contain required Channel SID parameter.",
    "solutions": "* Confirm a valid Channel SID is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50306,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Unique name should not match channel SID pattern",
    "secondary_message": "Specified Channel's Unique Name matches Channel SID Pattern \"CH\\[0-9a-f]\\{32}\".",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Channel's Unique Name matches Channel SID Pattern \"CH\\[0-9a-f]\\{32}\".\n\n### Possible solutions\n\n- Confirm a valid Channel's Unique Name is being passed in request.\n",
    "causes": "* Specified Channel's Unique Name matches Channel SID Pattern \"CH\\[0-9a-f]{32}\".",
    "solutions": "* Confirm a valid Channel's Unique Name is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50307,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel with provided unique name already exists",
    "secondary_message": "Specified Channel's Unique Name already exists in this Service deployment.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Channel's Unique Name already exists in this Service deployment.\n\n### Possible solutions\n\n- Confirm a valid non-existing Channel's Unique Name is being passed in request.\n",
    "causes": "* Specified Channel's Unique Name already exists in this Service deployment.",
    "solutions": "* Confirm a valid non-existing Channel's Unique Name is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50308,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid Date Created parameter",
    "secondary_message": "Request does not contain correctly formatted parameter for Date Created",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for Date Created.\n\n### Possible solutions\n\n- Confirm a valid Date Created parameter is passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for Date Created.",
    "solutions": "* Confirm a valid Date Created parameter is passed in request.",
    "description": "",
    "date_created": "2017-11-06T11:57:14Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50309,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Programmable Chat: Invalid Date Updated parameter",
    "secondary_message": "Request does not contain correctly formatted parameter for Date Updated",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for Date Updated.\n\n### Possible solutions\n\n- Confirm a valid Date Updated parameter is passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for Date Updated.",
    "solutions": "* Confirm a valid Date Updated parameter is passed in request.",
    "description": "",
    "date_created": "2017-11-06T11:58:29Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50310,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Author parameter is too long",
    "secondary_message": "Author parameter is too long.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Author parameter is too long.\n\n### Possible solutions\n\n- Confirm a valid length Author is being passed in request.\n",
    "causes": "* Author parameter is too long.",
    "solutions": "* Confirm a valid length Author is being passed in request.",
    "description": "",
    "date_created": "2017-11-06T11:53:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50320,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel webhook not found",
    "secondary_message": "Specified channel webhook does not exist",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified channel webhook does not exist.\n\n### Possible solutions\n\n- Confirm a valid channel webhook SID is provided in request.\n",
    "causes": "* Specified channel webhook does not exist.",
    "solutions": "* Confirm a valid channel webhook SID is provided in request.",
    "description": "",
    "date_created": "2018-10-10T12:07:09Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50321,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Too many channel webhooks",
    "secondary_message": "Webhooks limit exceeded for given channel",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Webhooks limit exceeded for given channel.\n\n### Possible solutions\n\n- Reduce number of webhooks for channel before creating new one.\n",
    "causes": "* Webhooks limit exceeded for given channel.",
    "solutions": "* Reduce number of webhooks for channel before creating new one.",
    "description": "",
    "date_created": "2018-10-10T12:31:33Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50322,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Too many channel webhook triggers",
    "secondary_message": "Triggers limit exceeded for given channel webhook",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Triggers limit exceeded for given channel webhook.\n\n### Possible solutions\n\n- Reduce number of triggers for given channel webhook before creating new one.\n",
    "causes": "* Triggers limit exceeded for given channel webhook.",
    "solutions": "* Reduce number of triggers for given channel webhook before creating new one.",
    "description": "",
    "date_created": "2018-10-10T12:33:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50323,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid channel webhook sid",
    "secondary_message": "Request does not contain correctly formatted parameter for channel webhook sid",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for channel webhook sid\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for channel webhook sid",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T15:05:29Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50324,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid channel webhook type",
    "secondary_message": "Request does not contain correctly formatted parameter for channel webhook type",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for channel webhook type.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for channel webhook type.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T15:20:55Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50325,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid channel webhook filter",
    "secondary_message": "Request does not contain correctly formatted parameter for webhook filter",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correct parameter for channel webhook filter.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain correct parameter for channel webhook filter.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T15:31:42Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50326,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid channel webhook trigger",
    "secondary_message": "Request does not contain correct parameter for webhook trigger",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correct parameter for channel webhook trigger.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain correct parameter for channel webhook trigger.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T15:53:29Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50327,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid channel webhook flow sid",
    "secondary_message": "Request does not contain correct parameter for webhook flow sid",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correct parameter for channel webhook flow sid.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain correct parameter for channel webhook flow sid.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T15:59:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50328,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel webhook type not provided",
    "secondary_message": "Request does not contain parameter for webhook type",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain parameter for channel webhook type.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain parameter for channel webhook type.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T16:01:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50329,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel webhook url not provided",
    "secondary_message": "Request does not contain parameter for webhook url",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain parameter for channel webhook url.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain parameter for channel webhook url.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T16:09:45Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50330,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel webhook filter not provided",
    "secondary_message": "Request does not contain parameter for webhook filter",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain parameter for channel webhook filter.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain parameter for channel webhook filter.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T16:12:22Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50331,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel webhook trigger not provided",
    "secondary_message": "Request does not contain parameter for webhook trigger",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain parameter for channel webhook trigger.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain parameter for channel webhook trigger.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T16:15:40Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50332,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel webhook url too long",
    "secondary_message": "Channel webhook url provided in request is too long",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Channel webhook url provided in request is too long.\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Channel webhook url provided in request is too long.",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2018-10-10T16:18:32Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50334,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channel deletion operation is in progress",
    "secondary_message": "Channel deletion operation is in progress, all the channel modifications are discarded.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nChannel deletion operation is in progress, all the channel modifications are discarded.\n\n### Possible causes\n\n- Your API request tried to update the channel while the channel deletion operation was in progress.\n\n### Possible solutions\n\n- Do not try to update the channel while the deletion operation is in progress.\n",
    "causes": "* Your API request tried to update the channel while the channel deletion operation was in progress.",
    "solutions": "* Do not try to update the channel while the deletion operation is in progress.",
    "description": "Channel deletion operation is in progress, all the channel modifications are discarded.",
    "date_created": "2021-09-27T14:01:07Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50340,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Messaging service SID not provided",
    "secondary_message": "Messaging service SID parameter is required but was not provided with an API request.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nMessaging service SID parameter is required but was not provided with an API request.\n\n### Possible causes\n\n- The API expected a MessagingServiceSid input parameter, but it was either not provided or was misspelled.\n\n### Possible solutions\n\n- Add a valid MessagingServiceSid parameter to the API request and confirm that it is not misspelled.\n",
    "causes": "* The API expected a MessagingServiceSid input parameter, but it was either not provided or was misspelled.",
    "solutions": "* Add a valid MessagingServiceSid parameter to the API request and confirm that it is not misspelled.",
    "description": "Messaging service SID parameter is required but was not provided with an API request.",
    "date_created": "2018-10-10T16:22:28Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50341,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid messaging service SID",
    "secondary_message": "An invalid messaging service SID was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nYou supplied `MessagingServiceSid` with a value that does not identify a valid Messaging Service. Use a Messaging Service SID only in requests that accept `MessagingServiceSid`, and make sure it matches the required `MG` SID format.\n\n### Possible causes\n\n- The `MessagingServiceSid` value does not match the required pattern. A valid Messaging Service SID starts with `MG` and is followed by 32 hexadecimal characters.\n- You passed a SID from a different resource type, such as `IS`, `CH`, `AC`, or `SM`, instead of a Messaging Service SID. Twilio uses resource-specific SID prefixes, and `MessagingServiceSid` only accepts an `MG` SID.\n- The SID was truncated, copied with extra characters or whitespace, or otherwise changed so it no longer matches the exact service SID returned by the Console or API.\n- If you are migrating a Programmable Chat channel, you included `MessagingServiceSid` in the migration request but used a value that is not a valid Messaging Service for that request.\n\n### Possible solutions\n\n- Copy the Messaging Service SID directly from Messaging > Services in Console, or retrieve it from the Messaging Services API, then resend the request with the exact value.\n- Validate `MessagingServiceSid` before you send the request. It must be exactly 34 characters long and match `^MG[0-9a-fA-F]{32}$`.\n- Do not use an Account, Chat Service, Channel, or Message SID in the `MessagingServiceSid` field. Send only the `MG` SID for the Messaging Service you want to use.\n- If you are migrating a Chat channel so you can add SMS or WhatsApp participants in Conversations (classic), create or identify the correct Messaging Service first, then include that `MessagingServiceSid` in the migration request.\n\n#### Additional resources\n\n- [Chat Channel Migration Resource](/docs/chat/rest/channel-migration-resource)\n- [Migrating to Conversations (classic) from Programmable Chat](/docs/conversations-classic/migrating-chat-conversations)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The `MessagingServiceSid` value does not match the required pattern. A valid Messaging Service SID starts with `MG` and is followed by 32 hexadecimal characters.\n* You passed a SID from a different resource type, such as `IS`, `CH`, `AC`, or `SM`, instead of a Messaging Service SID. Twilio uses resource-specific SID prefixes, and `MessagingServiceSid` only accepts an `MG` SID.\n* The SID was truncated, copied with extra characters or whitespace, or otherwise changed so it no longer matches the exact service SID returned by the Console or API.\n* If you are migrating a Programmable Chat channel, you included `MessagingServiceSid` in the migration request but used a value that is not a valid Messaging Service for that request.",
    "solutions": "* Copy the Messaging Service SID directly from Messaging > Services in Console, or retrieve it from the Messaging Services API, then resend the request with the exact value.\n* Validate `MessagingServiceSid` before you send the request. It must be exactly 34 characters long and match `^MG[0-9a-fA-F]{32}$`.\n* Do not use an Account, Chat Service, Channel, or Message SID in the `MessagingServiceSid` field. Send only the `MG` SID for the Messaging Service you want to use.\n* If you are migrating a Chat channel so you can add SMS or WhatsApp participants in Conversations (classic), create or identify the correct Messaging Service first, then include that `MessagingServiceSid` in the migration request.",
    "description": "You supplied `MessagingServiceSid` with a value that does not identify a valid Messaging Service. Use a Messaging Service SID only in requests that accept `MessagingServiceSid`, and make sure it matches the required `MG` SID format.",
    "date_created": "2018-10-10T16:26:34Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 50342,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Messaging service does not belong to account",
    "secondary_message": "The requested messaging service SID does not belong to your account.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested messaging service SID does not belong to your account.\n\n### Possible causes\n\nYou may have copied/pasted incorrectly, or your API request targeted a different account (e.g. if you have several Projects or several Twilio accounts).\n\n### Possible solutions\n\nDouble-check the Messaging Service SID, confirming that it belongs to your account. Check whether you are authenticating against Twilio with the same account. With these matching, the request will succeed.\n",
    "causes": "You may have copied/pasted incorrectly, or your API request targeted a different account (e.g. if you have several Projects or several Twilio accounts).",
    "solutions": "Double-check the Messaging Service SID, confirming that it belongs to your account. Check whether you are authenticating against Twilio with the same account. With these matching, the request will succeed.",
    "description": "The requested messaging service SID does not belong to your account.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50347,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Parameters are missing for channel update request",
    "secondary_message": "There are no parameters specified in this channel update request.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThere are no parameters specified in this channel update request.\n\n### Possible causes\n\n- No parameters were set in the channel update request.\n- Parameters specified in the channel update API request have incorrect names.\n\n### Possible solutions\n\n- Verify that at least one parameter is provided to the channel update API.\n- Validate that parameter names are correct according to the [API documentation](/docs/chat/rest/channel-resource#update-a-channel-resource).\n",
    "causes": "* No parameters were set in the channel update request.\n* Parameters specified in the channel update API request have incorrect names.",
    "solutions": "* Verify that at least one parameter is provided to the channel update API.\n* Validate that parameter names are correct according to the [API documentation](/docs/chat/rest/channel-resource#update-a-channel-resource).",
    "description": "There are no parameters specified in this channel update request.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50349,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conflicting channel modification",
    "secondary_message": "The requested channel is already being added or removed by a concurrent API request.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested channel is already being added or removed from this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.\n\n### Possible causes\n\n- You might be adding a new channel to the service instance while the channel with the same unique name is being removed from another thread.\n- You might be submitting multiple concurrent requests to add a channel with the same unique name to the service instance.\n- You might be submitting multiple concurrent requests to delete the same channel by SID or unique name from the service instance.\n\n### Possible solutions\n\n- Implement an operation retrier and repeat the failed channel API requests after an interval of time, using an exponential backoff algorithm.\n- Review your application logic that caused the race condition when adding or removing users. Perhaps the conflicting operations are happening in a loop that could be avoided.\n- Serialize your API requests that add or remove channels. Wait until the original request completes and returns an API response, before sending any successive channel requests.\n",
    "causes": "* You might be adding a new channel to the service instance while the channel with the same unique name is being removed from another thread.\n* You might be submitting multiple concurrent requests to add a channel with the same unique name to the service instance.\n* You might be submitting multiple concurrent requests to delete the same channel by SID or unique name from the service instance.",
    "solutions": "* Implement an operation retrier and repeat the failed channel API requests after an interval of time, using an exponential backoff algorithm.\n* Review your application logic that caused the race condition when adding or removing users. Perhaps the conflicting operations are happening in a loop that could be avoided.\n* Serialize your API requests that add or remove channels. Wait until the original request completes and returns an API response, before sending any successive channel requests.",
    "description": "The requested channel is already being added or removed from this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.",
    "date_created": "2020-06-02T07:39:44Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50350,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conversation not found",
    "secondary_message": "The requested conversation SID was not found.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested conversation SID was not found.\n\n### Possible causes\n\nThe conversation SID you are requesting does not exist under your account.\n\n### Possible solutions\n\n- Check that you have provided a Conversation SID and not some other SID (should have the prefix CH).\n- Check that the requested conversation SID belongs to the account that your REST request has targeted.\n",
    "causes": "The conversation SID you are requesting does not exist under your account.",
    "solutions": "* Check that you have provided a Conversation SID and not some other SID (should have the prefix CH).\n* Check that the requested conversation SID belongs to the account that your REST request has targeted.",
    "description": "The requested conversation SID was not found.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50351,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conversation SID not provided",
    "secondary_message": "Conversation SID parameter is required but was not provided.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nConversation SID parameter is required but was not provided.\n\n### Possible causes\n\nYour API request did not include a ConversationSid form parameter.\n\n### Possible solutions\n\nAdd a valid ConversationSid parameter to the API request, making sure you haven't spelled the parameter name wrong.\n",
    "causes": "Your API request did not include a ConversationSid form parameter.",
    "solutions": "Add a valid ConversationSid parameter to the API request, making sure you haven't spelled the parameter name wrong.",
    "description": "Conversation SID parameter is required but was not provided.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50353,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conversation with provided unique name already exists",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when your request tries to create a Conversation with a `unique_name` value that is already assigned to another Conversation in the same Conversations Service. Each Conversation `unique_name` must be unique within your service.\n\n### Possible causes\n\n- Your application sends a `unique_name` that already exists on another Conversation\n- A retry or duplicate request attempts to create the same Conversation more than once\n- Multiple application workers or processes try to create a Conversation with the same `unique_name` at nearly the same time\n- Your application reuses a static or predictable `unique_name` instead of generating a value that is unique for each Conversation\n\n### Possible solutions\n\n- Check whether a Conversation with the same `unique_name` already exists before you create a new one\n- Update your application logic to generate a unique `unique_name` for each new Conversation\n- If you need to reuse an existing conversation, fetch the existing Conversation by its identifier instead of creating a new one\n- Add idempotency or request de-duplication in your application to prevent repeated create requests with the same `unique_name`\n- If concurrent requests can create the same Conversation, add application-side locking or conflict handling so only one request creates the resource\n\n#### Additional resources\n\n- [Conversations overview](/docs/conversations)\n- [Conversations API](/docs/conversations-classic/api)\n",
    "causes": "* Your application sends a `unique_name` that already exists on another Conversation\n* A retry or duplicate request attempts to create the same Conversation more than once\n* Multiple application workers or processes try to create a Conversation with the same `unique_name` at nearly the same time\n* Your application reuses a static or predictable `unique_name` instead of generating a value that is unique for each Conversation",
    "solutions": "* Check whether a Conversation with the same `unique_name` already exists before you create a new one\n* Update your application logic to generate a unique `unique_name` for each new Conversation\n* If you need to reuse an existing conversation, fetch the existing Conversation by its identifier instead of creating a new one\n* Add idempotency or request de-duplication in your application to prevent repeated create requests with the same `unique_name`\n* If concurrent requests can create the same Conversation, add application-side locking or conflict handling so only one request creates the resource",
    "description": "Twilio returns this error when your request tries to create a Conversation with a `unique_name` value that is already assigned to another Conversation in the same Conversations Service. Each Conversation `unique_name` must be unique within your service.",
    "date_created": "2021-08-30T10:16:12Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 50360,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conversation webhook not found",
    "secondary_message": "The requested webhook SID was not found.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested webhook SID was not found.\n\n### Possible causes\n\n- The conversation webhook SID you are requesting does not exist in that conversation.\n\n### Possible solutions\n\n- Check that the requested webhook SID is actually a Webhook SID, and is not misspelled (prefix should be WH).\n- Check that the requested webhook SID belongs to the targeted conversation.\n",
    "causes": "* The conversation webhook SID you are requesting does not exist in that conversation.",
    "solutions": "* Check that the requested webhook SID is actually a Webhook SID, and is not misspelled (prefix should be WH).\n* Check that the requested webhook SID belongs to the targeted conversation.",
    "description": "The requested webhook SID was not found.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50361,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Too many conversation webhooks",
    "secondary_message": "The number of webhooks configured for this conversation exceeds the limit.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe limit for conversation-scoped webhooks is five; this request would have created a sixth, and is thus rejected.\n\n### Possible causes\n\nYou may have forgotten to remove other webhooks before adding this one. Alternatively, your use-case may include scenarios requiring more than five.\n\n### Possible solutions\n\n- Retrieve a list of the [existing webhooks](/docs/conversations-classic/api/conversation-scoped-webhook-resource#read-multiple-conversationscopedwebhook-resources) for this conversation and [remove](/docs/conversations-classic/api/conversation-scoped-webhook-resource#delete-a-conversationscopedwebhook-resource) the ones that are redundant or obsolete.\n- Consider combining some of the [existing webhooks](/docs/conversations-classic/api/conversation-scoped-webhook-resource#read-multiple-conversationscopedwebhook-resources) and forward events to a single destination.\n- Consider using [global webhooks](/docs/conversations-classic/api/webhook-configuration-resource) instead of conversation-scoped hooks.\n",
    "causes": "You may have forgotten to remove other webhooks before adding this one. Alternatively, your use-case may include scenarios requiring more than five.",
    "solutions": "* Retrieve a list of the [existing webhooks](/docs/conversations-classic/api/conversation-scoped-webhook-resource#read-multiple-conversationscopedwebhook-resources) for this conversation and [remove](/docs/conversations-classic/api/conversation-scoped-webhook-resource#delete-a-conversationscopedwebhook-resource) the ones that are redundant or obsolete.\n* Consider combining some of the [existing webhooks](/docs/conversations-classic/api/conversation-scoped-webhook-resource#read-multiple-conversationscopedwebhook-resources) and forward events to a single destination.\n* Consider using [global webhooks](/docs/conversations-classic/api/webhook-configuration-resource) instead of conversation-scoped hooks.",
    "description": "The limit for conversation-scoped webhooks is five; this request would have created a sixth, and is thus rejected.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50362,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Too many conversation webhook triggers",
    "secondary_message": "The number of keywords used to trigger the webhook configured for this conversation exceeds the limit.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe number of keywords used to trigger the webhook configured for this conversation would have exceeded the limit.\n\n### Possible causes\n\nYou are attempting to add more than 5 keywords as triggers for this webhook.\n\n### Possible solutions\n\n- Retrieve a list of the [existing keywords](/docs/conversations-classic/api/conversation-scoped-webhook-resource#fetch-a-conversationscopedwebhook-resource) used as triggers and remove the ones that are redundant or obsolete.\n- Consider creating a new scoped webhook with an alternative set of trigger keywords.\n",
    "causes": "You are attempting to add more than 5 keywords as triggers for this webhook.",
    "solutions": "* Retrieve a list of the [existing keywords](/docs/conversations-classic/api/conversation-scoped-webhook-resource#fetch-a-conversationscopedwebhook-resource) used as triggers and remove the ones that are redundant or obsolete.\n* Consider creating a new scoped webhook with an alternative set of trigger keywords.",
    "description": "The number of keywords used to trigger the webhook configured for this conversation would have exceeded the limit.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50363,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid conversation webhook SID",
    "secondary_message": "An invalid conversation webhook SID was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid conversation webhook SID was supplied.\n\n### Possible causes\n\n- Webhook SID parameter provided with the request does not match a valid SID pattern (WHxx).\n\n### Possible solutions\n\n- Add a valid Webhook SID parameter to the API request and supply a SID that exists under your account.\n",
    "causes": "* Webhook SID parameter provided with the request does not match a valid SID pattern (WHxx).",
    "solutions": "* Add a valid Webhook SID parameter to the API request and supply a SID that exists under your account.",
    "description": "An invalid conversation webhook SID was supplied.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50364,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid conversation webhook type",
    "secondary_message": "An invalid conversation webhook target was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid conversation webhook target was supplied.\n\n### Possible causes\n\n- Webhook Target parameter provided with the request does not match any of valid targets: webhook, studio, trigger.\n\n### Possible solutions\n\n- Add a valid Target parameter to the webhook API request and supply one of the supported targets.\n",
    "causes": "* Webhook Target parameter provided with the request does not match any of valid targets: webhook, studio, trigger.",
    "solutions": "* Add a valid Target parameter to the webhook API request and supply one of the supported targets.",
    "description": "An invalid conversation webhook target was supplied.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50365,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid conversation webhook filter",
    "secondary_message": "An invalid conversation webhook filter was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid conversation webhook filter was supplied.\n\n### Possible causes\n\n- One of Configuration.Filters webhook parameters provided with the request does represent a valid webhook action filter.\n\n### Possible solutions\n\n- Ensure that a list of valid Configuration.Filters parameters are passed to the API request, refer to the list of [supported actions](/docs/conversations-classic/conversations-webhooks#webhook-action-triggers).\n",
    "causes": "* One of Configuration.Filters webhook parameters provided with the request does represent a valid webhook action filter.",
    "solutions": "* Ensure that a list of valid Configuration.Filters parameters are passed to the API request, refer to the list of [supported actions](/docs/conversations-classic/conversations-webhooks#webhook-action-triggers).",
    "description": "An invalid conversation webhook filter was supplied.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50366,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid conversation webhook trigger",
    "secondary_message": "An invalid conversation webhook trigger keyword was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid conversation webhook trigger keyword was supplied.\n\n### Possible causes\n\n- One of Configuration.Triggers keywords provided with the request is an empty string.\n- One of Configuration.Triggers keywords provided with the request exceeds the maximum length limit of 248 characters.\n\n### Possible solutions\n\n- Ensure that a list of valid Configuration.Triggers keywords are passed to the API request.\n",
    "causes": "* One of Configuration.Triggers keywords provided with the request is an empty string.\n* One of Configuration.Triggers keywords provided with the request exceeds the maximum length limit of 248 characters.",
    "solutions": "* Ensure that a list of valid Configuration.Triggers keywords are passed to the API request.",
    "description": "An invalid conversation webhook trigger keyword was supplied.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50367,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid conversation webhook flow SID",
    "secondary_message": "An invalid conversation webhook flow SID was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid conversation webhook flow SID was supplied.\n\n### Possible causes\n\n- Webhook Configuration.FlowSid parameter provided with the request does not match a valid Studio flow SID pattern (FWxx).\n\n### Possible solutions\n\n- Add a valid Configuration.FlowSid parameter to the API request and supply a Studio flow SID that exists under your account.\n",
    "causes": "* Webhook Configuration.FlowSid parameter provided with the request does not match a valid Studio flow SID pattern (FWxx).",
    "solutions": "* Add a valid Configuration.FlowSid parameter to the API request and supply a Studio flow SID that exists under your account.",
    "description": "An invalid conversation webhook flow SID was supplied.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50368,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conversation webhook type not provided",
    "secondary_message": "Conversation webhook target parameter is required but was not provided.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nConversation webhook target parameter is required but was not provided.\n\n### Possible causes\n\n- The API expected a Target input parameter, but it was either not provided or was misspelled.\n\n### Possible solutions\n\n- Add a valid Target parameter to the API request and confirm that it is not misspelled.\n",
    "causes": "* The API expected a Target input parameter, but it was either not provided or was misspelled.",
    "solutions": "* Add a valid Target parameter to the API request and confirm that it is not misspelled.",
    "description": "Conversation webhook target parameter is required but was not provided.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50369,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conversation webhook URL not provided",
    "secondary_message": "Conversation webhook URL parameter is required but was not provided.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nConversation webhook URL parameter is required but was not provided.\n\n### Possible causes\n\n- The API expected a Configuration.Url input parameter, but it was either not provided or was misspelled.\n\n### Possible solutions\n\n- Add a valid Configuration.Url parameter to the API request and confirm that it is not misspelled.\n",
    "causes": "* The API expected a Configuration.Url input parameter, but it was either not provided or was misspelled.",
    "solutions": "* Add a valid Configuration.Url parameter to the API request and confirm that it is not misspelled.",
    "description": "Conversation webhook URL parameter is required but was not provided.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50370,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conversation webhook filter not provided",
    "secondary_message": "Scoped webhook filter parameter is required but was not provided.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nScoped webhook filter parameter is required but was not provided.\n\n### Possible causes\n\n- The API expected at least one Configuration.Filters input parameter, but it was either not provided or was misspelled.\n\n### Possible solutions\n\n- Add one or more valid Configuration.Filters parameters to the API request and confirm that they are not misspelled.\n",
    "causes": "* The API expected at least one Configuration.Filters input parameter, but it was either not provided or was misspelled.",
    "solutions": "* Add one or more valid Configuration.Filters parameters to the API request and confirm that they are not misspelled.",
    "description": "Scoped webhook filter parameter is required but was not provided.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50371,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conversation webhook trigger not provided",
    "secondary_message": "Scoped webhook trigger keywords are required but were not provided.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nScoped webhook trigger keywords are required but were not provided.\n\n### Possible causes\n\n- The API expected at least one Configuration.Triggers input parameter, but it was either not provided or was misspelled.\n\n### Possible solutions\n\n- Add a one or more valid Configuration.Triggers parameters to the API request and confirm that they are not misspelled.\n",
    "causes": "* The API expected at least one Configuration.Triggers input parameter, but it was either not provided or was misspelled.",
    "solutions": "* Add a one or more valid Configuration.Triggers parameters to the API request and confirm that they are not misspelled.",
    "description": "Scoped webhook trigger keywords are required but were not provided.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50372,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conversation webhook URL is too long",
    "secondary_message": "The length of provided conversation webhook URL exceeds the limit.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe length of provided conversation webhook URL exceeds the limit.\n\n### Possible causes\n\n- Your API request contains a parameter containing the URL that is longer than 512 characters.\n\n### Possible solutions\n\n- Provide a shorter webhook URL with your API request.\n",
    "causes": "* Your API request contains a parameter containing the URL that is longer than 512 characters.",
    "solutions": "* Provide a shorter webhook URL with your API request.",
    "description": "The length of provided conversation webhook URL exceeds the limit.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50373,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No Messaging Service assigned to Conversation",
    "secondary_message": "This Conversation does not have an assigned Messaging Service, therefore cannot accept non-chat participants.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThis Conversation does not have an assigned Messaging Service, therefore cannot accept non-chat participants.\n\n### Possible causes\n\n- You may be attempting to add a non-Chat participant (e.g. on SMS) to a channel from Programmable Chat. As Chat precedes the Conversations product, these channels first need to be provided a Messaging Service before they can access SMS, WhatsApp, or other channels.\n\n### Possible solutions\n\n- Update the Conversation with any existing Messaging Service SID on your account. After that, you will be able to add non-Chat participants and continue the conversation with them involved.\n",
    "causes": "* You may be attempting to add a non-Chat participant (e.g. on SMS) to a channel from Programmable Chat. As Chat precedes the Conversations product, these channels first need to be provided a Messaging Service before they can access SMS, WhatsApp, or other channels.",
    "solutions": "* Update the Conversation with any existing Messaging Service SID on your account. After that, you will be able to add non-Chat participants and continue the conversation with them involved.",
    "description": "This Conversation does not have an assigned Messaging Service, therefore cannot accept non-chat participants.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50374,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'State' field can't be empty",
    "secondary_message": "'State' field can't be empty or removed from channel.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n'State' field can't be removed or set to empty if it was already set before.\n\n### Possible causes\n\n- 'State' field is set to empty string value when channel has some non-empty state.\n\n### Possible solutions\n\n- Remove 'State' field from request parameters.\n- Set 'State' field to some valid value('active', 'inactive', 'closed', etc.)\n",
    "causes": "* 'State' field is set to empty string value when channel has some non-empty state.",
    "solutions": "* Remove 'State' field from request parameters.\n* Set 'State' field to some valid value('active', 'inactive', 'closed', etc.)",
    "description": "'State' field can't be removed or set to empty if it was already set before.",
    "date_created": "2020-09-24T12:18:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50375,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TimeToInactive should be greater or equal to 1 minute",
    "secondary_message": "Duration to transfer channel to inactive state can't be shorter than 1 minute.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n'TimeToInactive' duration should be greater or equal to 1 minute.\n\n### Possible causes\n\n- 'TimeToInactive' field is set to duration which is less than 1 minute.\n\n### Possible solutions\n\n- Set 'TimeToInactive' field to duration which is longer than 1 minute.\n",
    "causes": "* 'TimeToInactive' field is set to duration which is less than 1 minute.",
    "solutions": "* Set 'TimeToInactive' field to duration which is longer than 1 minute.",
    "description": "'TimeToInactive' duration should be greater or equal to 1 minute.",
    "date_created": "2020-09-24T12:20:35Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50376,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TimeToClosed should be greater or equal to 10 minutes",
    "secondary_message": "Duration to transfer channel to closed state can't be shorter than 10 minutes.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n'TimeToClosed' duration should be greater or equal to 10 minutes.\n\n### Possible causes\n\n- 'TimeToClosed' field is set to duration which is less than 10 minutes.\n\n### Possible solutions\n\n- Set 'TimeToClosed' field to duration which is longer than 10 minutes.\n",
    "causes": "* 'TimeToClosed' field is set to duration which is less than 10 minutes.",
    "solutions": "* Set 'TimeToClosed' field to duration which is longer than 10 minutes.",
    "description": "'TimeToClosed' duration should be greater or equal to 10 minutes.",
    "date_created": "2020-09-24T12:21:45Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50377,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Can't update conversation as it's in final closed state",
    "secondary_message": "Conversation is in closed state and can't be used anymore",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nConversation state is 'closed' so it can't be used for chatting anymore.\n\n### Possible causes\n\n- Conversation state is set manually or by timer to 'closed' which means that conversation can't be updated anymore.\n\n### Possible solutions\n\n- Create new conversation in 'active' state without 'TimeToClosed' or with some big duration to avoid unexpected movement to 'closed' state.\n",
    "causes": "* Conversation state is set manually or by timer to 'closed' which means that conversation can't be updated anymore.",
    "solutions": "* Create new conversation in 'active' state without 'TimeToClosed' or with some big duration to avoid unexpected movement to 'closed' state.",
    "description": "Conversation state is 'closed' so it can't be used for chatting anymore.",
    "date_created": "2020-09-24T12:23:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50378,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'State' parameter value is invalid",
    "secondary_message": "'State' parameter value is set to some not supported value",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n'State' parameter value is set to some not supported value. Supported values are 'active', 'inactive', 'closed'.\n\n### Possible causes\n\n- 'State' parameter value is set to values different from 'active', 'inactive', 'closed'.\n\n### Possible solutions\n\n- Use following values for 'State' parameter: 'active', 'inactive', 'closed'.\n",
    "causes": "* 'State' parameter value is set to values different from 'active', 'inactive', 'closed'.",
    "solutions": "* Use following values for 'State' parameter: 'active', 'inactive', 'closed'.",
    "description": "'State' parameter value is set to some not supported value. Supported values are 'active', 'inactive', 'closed'.",
    "date_created": "2020-09-24T12:24:40Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50379,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TimeToInactive format is invalid",
    "secondary_message": "'TimeToInactive' parameter format should be ISO8601 duration",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n'TimeToInactive' parameter supports values which are ISO8601 durations.\n\n### Possible causes\n\n- 'TimeToInactive' parameter value is not ISO8601 duration.\n\n### Possible solutions\n\n- Use ISO8601 duration format value for 'TimeToInactive' parameter. For example PT0S, PT10M, P1D etc..\n",
    "causes": "* 'TimeToInactive' parameter value is not ISO8601 duration.",
    "solutions": "* Use ISO8601 duration format value for 'TimeToInactive' parameter. For example PT0S, PT10M, P1D etc..",
    "description": "'TimeToInactive' parameter supports values which are ISO8601 durations.",
    "date_created": "2020-09-24T12:26:15Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50380,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TimeToClosed format is invalid",
    "secondary_message": "'TimeToClosed' parameter format should be ISO8601 duration",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n'TimeToClosed' parameter supported values are ISO8601 durations.\n\n### Possible causes\n\n- 'TimeToClosed' parameter value is not ISO8601 duration.\n\n### Possible solutions\n\n- Use ISO8601 duration format value for 'TimeToInactive' parameter. For example PT0S, PT10M, P1D etc..\n",
    "causes": "* 'TimeToClosed' parameter value is not ISO8601 duration.",
    "solutions": "* Use ISO8601 duration format value for 'TimeToInactive' parameter. For example PT0S, PT10M, P1D etc..",
    "description": "'TimeToClosed' parameter supported values are ISO8601 durations.",
    "date_created": "2020-09-24T12:28:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50382,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Timer can't be set without state",
    "secondary_message": "You are trying to set 'TimeToInactive' and/or 'TimeToClosed' without 'State' parameter in request",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nYou are trying to set 'TimeToInactive' and/or 'TimeToClosed' without 'State' parameter in request during conversation creation\n\n### Possible causes\n\n- 'State' parameter is missing while 'TimeToInactive' and/or 'TimeToClosed' are present\n\n### Possible solutions\n\n- Add 'State' parameter in conversation creation request\n- Remove 'TimeToInactive' and/or 'TimeToClosed' from conversation creation request\n",
    "causes": "* 'State' parameter is missing while 'TimeToInactive' and/or 'TimeToClosed' are present",
    "solutions": "* Add 'State' parameter in conversation creation request\n* Remove 'TimeToInactive' and/or 'TimeToClosed' from conversation creation request",
    "description": "You are trying to set 'TimeToInactive' and/or 'TimeToClosed' without 'State' parameter in request during conversation creation",
    "date_created": "2020-09-24T12:29:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50384,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Initial state can't be 'closed",
    "secondary_message": "It's not allowed to set 'closed' state for newly created converastion",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nYou are trying to set 'closed' state during conversation creation which is not allowed\n\n### Possible causes\n\n- 'State' parameter value is set to 'closed' which is not allowed during conversation creation\n\n### Possible solutions\n\n- Change 'State' parameter value to either 'active' or 'inactive' during conversation creation\n",
    "causes": "* 'State' parameter value is set to 'closed' which is not allowed during conversation creation",
    "solutions": "* Change 'State' parameter value to either 'active' or 'inactive' during conversation creation",
    "description": "You are trying to set 'closed' state during conversation creation which is not allowed",
    "date_created": "2020-09-24T12:31:23Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50385,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conversations are disabled in this region",
    "secondary_message": "Conversations API is not supported in this Twilio region",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nConversations features do not function in the region you've selected. The API will return this error to indicate that, preventing further activity.\n\n### Possible causes\n\n- You may be using a Programmable Chat service that in the ie1 region (at chat.ie1.twilio.com). While Conversations is backwards compatible with Chat in other respects, the product presently works only in the default region (US East).\n- You may have inadvertently specified a region (other than the default) in your Conversations SDKs.\n\n### Possible solutions\n\nIf you need access to Conversations hosted in a Twilio datacenter outside the US, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) so we can prioritize it accordingly. In the meantime, use the default Twilio URLs (e.g. conversations.twilio.com).\n",
    "causes": "* You may be using a Programmable Chat service that in the ie1 region (at chat.ie1.twilio.com). While Conversations is backwards compatible with Chat in other respects, the product presently works only in the default region (US East).\n* You may have inadvertently specified a region (other than the default) in your Conversations SDKs.",
    "solutions": "If you need access to Conversations hosted in a Twilio datacenter outside the US, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com) so we can prioritize it accordingly. In the meantime, use the default Twilio URLs (e.g. conversations.twilio.com).",
    "description": "Conversations features do not function in the region you've selected. The API will return this error to indicate that, preventing further activity.",
    "date_created": "2020-09-24T12:32:24Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50386,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conversation in 'initializing' state may not be updated or used for message sending",
    "secondary_message": "Conversation in 'initializing' state may not be updated or used for message sending",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nWhen conversation state is 'initializing', conversation may not be updated or used for message sending until it reaches states 'active' or 'inactive'. 'Initializing' state appears in GMMS conversations when not all resources were yet created to start message sending. It's possible when Conversation with Participants endpoint is used for GMMS conversation creation or when GMMS conversation is autocreated by inbound sms message.\n\n### Possible causes\n\nParticipants of GMMS conversation are not yet created in background.\n\n### Possible solutions\n\nWait till participants are created. To ensure that state is not 'initializing' wither fetch conversation till state changes to 'active' or 'inactive' or use onConversationStateUpdated webhook.\n",
    "causes": "Participants of GMMS conversation are not yet created in background.",
    "solutions": "Wait till participants are created. To ensure that state is not 'initializing' wither fetch conversation till state changes to 'active' or 'inactive' or use onConversationStateUpdated webhook.",
    "description": "When conversation state is 'initializing', conversation may not be updated or used for message sending until it reaches states 'active' or 'inactive'. 'Initializing' state appears in GMMS conversations when not all resources were yet created to start message sending. It's possible when Conversation with Participants endpoint is used for GMMS conversation creation or when GMMS conversation is autocreated by inbound sms message.",
    "date_created": "2024-11-08T18:19:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50390,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unique name should not match conversation sid pattern",
    "secondary_message": "Specified Conversation's Unique Name matches Conversation SID Pattern \"CH\\[0-9a-f]\\{32}\".",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nSpecified Conversation's Unique Name matches Conversation SID Pattern \"CH\\[0-9a-f]\\{32}\".\n\n### Possible causes\n\nSpecified Conversation's Unique Name matches Conversation SID Pattern \"CH\\[0-9a-f]\\{32}\".\n\n### Possible solutions\n\nConfirm a valid Conversation's Unique Name is being passed in request.\n",
    "causes": "Specified Conversation's Unique Name matches Conversation SID Pattern \"CH\\[0-9a-f]{32}\".",
    "solutions": "Confirm a valid Conversation's Unique Name is being passed in request.",
    "description": "Specified Conversation's Unique Name matches Conversation SID Pattern \"CH\\[0-9a-f]{32}\".",
    "date_created": "2021-10-13T12:31:22Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50391,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conflicting conversation modification",
    "secondary_message": "The requested conversation is already being added or removed by a concurrent API request.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested conversation is already being added or removed from this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.\n\n### Possible causes\n\n- You might be adding a new conversation to the service instance while the conversation with the same unique name is being removed from another thread.\n- You might be submitting multiple concurrent requests to add a conversation with the same unique name to the service instance.\n- You might be submitting multiple concurrent requests to delete the same conversation by SID or unique name from the service instance.\n\n### Possible solutions\n\n- Implement an operation retrier and repeat the failed conversation API requests after an interval of time, using an exponential backoff algorithm.\n- Review your application logic that caused the race condition when adding or removing users. Perhaps the conflicting operations are happening in a loop that could be avoided.\n- Serialize your API requests that add or remove conversations. Wait until the original request completes and returns an API response, before sending any successive conversation requests.\n",
    "causes": "* You might be adding a new conversation to the service instance while the conversation with the same unique name is being removed from another thread.\n* You might be submitting multiple concurrent requests to add a conversation with the same unique name to the service instance.\n* You might be submitting multiple concurrent requests to delete the same conversation by SID or unique name from the service instance.",
    "solutions": "* Implement an operation retrier and repeat the failed conversation API requests after an interval of time, using an exponential backoff algorithm.\n* Review your application logic that caused the race condition when adding or removing users. Perhaps the conflicting operations are happening in a loop that could be avoided.\n* Serialize your API requests that add or remove conversations. Wait until the original request completes and returns an API response, before sending any successive conversation requests.",
    "description": "The requested conversation is already being added or removed from this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.",
    "date_created": "2021-10-13T12:27:33Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50392,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "PreWebhookTimeout should be greater than 0ms",
    "secondary_message": "Duration of waiting for pre-webhook response cannot be 0ms or less.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n'PreWebhookTimeout' should be greater than 0ms.\n\n### Possible causes\n\n- 'PreWebhookTimeout' field is set with a value less than or equal to 0.\n\n### Possible solutions\n\n- set 'PreWebhookTimeout' field with a value greater than 0.\n",
    "causes": "* 'PreWebhookTimeout' field is set with a value less than or equal to 0.",
    "solutions": "* set 'PreWebhookTimeout' field with a value greater than 0.",
    "description": "'PreWebhookTimeout' should be greater than 0ms.",
    "date_created": "2021-12-03T13:00:45Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50393,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Type value should be 'private'.",
    "secondary_message": "Type parameter value is required and should be 'private'. Migration to 'public' type is not allowed.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nType parameter value is required and should be 'private'. Migration to 'public' type is not allowed.\n\n### Possible causes\n\n- No Type parameter provided\n- Provided Type parameter not equal to 'private'\n\n### Possible solutions\n\n- Change Type parameter to 'private'\n",
    "causes": "* No Type parameter provided\n* Provided Type parameter not equal to 'private'",
    "solutions": "* Change Type parameter to 'private'",
    "description": "Type parameter value is required and should be 'private'. Migration to 'public' type is not allowed.",
    "date_created": "2022-03-08T16:40:13Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50396,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "EndDate parameter should be greater than StartDate parameter",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nEndDate parameter should be greater than StartDate parameter\n\n### Possible causes\n\nEndDate parameter is before StartDate parameter\n\n### Possible solutions\n\nSet EndDate parameter greater than StartDate parameter\n",
    "causes": "EndDate parameter is before StartDate parameter",
    "solutions": "Set EndDate parameter greater than StartDate parameter",
    "description": "EndDate parameter should be greater than StartDate parameter",
    "date_created": "2024-07-02T11:44:39Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50400,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: User not member of channel",
    "secondary_message": "Specified User is not member of this Channel.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified User is not member of this Channel.\n\n### Possible solutions\n\n- Confirm a valid User who is Member of this Channel is being passed in request.\n",
    "causes": "* Specified User is not member of this Channel.",
    "solutions": "* Confirm a valid User who is Member of this Channel is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:52Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50401,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Member SID not provided",
    "secondary_message": "Request does not contain required Member SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Member SID parameter.\n\n### Possible solutions\n\n- Confirm a valid Member SID is being passed in request.\n",
    "causes": "* Request does not contain required Member SID parameter.",
    "solutions": "* Confirm a valid Member SID is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:52Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50402,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Member not found",
    "secondary_message": "Specified Member does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Member does not exist.\n\n### Possible solutions\n\n- Confirm a valid Member is being passed in request.\n",
    "causes": "* Specified Member does not exist.",
    "solutions": "* Confirm a valid Member is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:52Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50403,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Channel member limit exceeded",
    "secondary_message": "Channel has too many members",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Channel has too many members\n\n### Possible solutions\n\n- Increase channel member limit for service instance\n- Remove members from channel\n",
    "causes": "* Channel has too many members",
    "solutions": "* Increase channel member limit for service instance\n* Remove members from channel",
    "description": "",
    "date_created": "2017-03-30T11:33:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50404,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Member already exists",
    "secondary_message": "Member with specified Identity already exists in this Channel",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Member with specified Identity already exists in this Channel.\n\n### Possible solutions\n\n- Confirm that the Member Identity passed in the request is not already a member of the intended channel.\n",
    "causes": "* Member with specified Identity already exists in this Channel.",
    "solutions": "* Confirm that the Member Identity passed in the request is not already a member of the intended channel.",
    "description": "",
    "date_created": "2017-04-05T13:02:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50405,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid last consumption timestamp format",
    "secondary_message": "Request does not contain correctly formatted parameter for last consumption timestamp",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for last consumption timestamp\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for last consumption timestamp",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2017-11-06T12:17:03Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50406,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invalid last consumed message index format",
    "secondary_message": "Request does not contain correctly formatted parameter for last consumed message index",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain correctly formatted parameter for last consumed message index\n\n### Possible solutions\n\n- Confirm a valid parameter is passed in request.\n",
    "causes": "* Request does not contain correctly formatted parameter for last consumed message index",
    "solutions": "* Confirm a valid parameter is passed in request.",
    "description": "",
    "date_created": "2017-11-06T12:18:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50407,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid messaging binding address",
    "secondary_message": "An invalid participant public address was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid participant public address was supplied.\n\n### Possible causes\n\n- Participant MessagingBinding.Address parameter provided with the request is not a valid participant address.\n\n### Possible solutions\n\n- Check that the length of MessagingBinding.Address parameter does not exceed 256 characters.\n- Ensure that MessagingBinding.Address parameter contains an address with valid syntax (e.g. SMS phone numbers must follow [E.164 format](/docs/glossary/what-e164)).\n",
    "causes": "* Participant MessagingBinding.Address parameter provided with the request is not a valid participant address.",
    "solutions": "* Check that the length of MessagingBinding.Address parameter does not exceed 256 characters.\n* Ensure that MessagingBinding.Address parameter contains an address with valid syntax (e.g. SMS phone numbers must follow [E.164 format](/docs/glossary/what-e164)).",
    "description": "An invalid participant public address was supplied.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50408,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid participant proxy address",
    "secondary_message": "An invalid participant proxy address was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid participant proxy address was supplied.\n\n### Possible causes\n\n- Participant MessagingBinding.ProxyAddress parameter provided with the request is not a valid conversation proxy address.\n\n### Possible solutions\n\n- Check that the length of MessagingBinding.ProxyAddress parameter does not exceed 256 characters.\n- Ensure that MessagingBinding.ProxyAddress parameter contains an address with valid syntax (e.g. SMS phone numbers must follow [E.164 format](/docs/glossary/what-e164)).\n",
    "causes": "* Participant MessagingBinding.ProxyAddress parameter provided with the request is not a valid conversation proxy address.",
    "solutions": "* Check that the length of MessagingBinding.ProxyAddress parameter does not exceed 256 characters.\n* Ensure that MessagingBinding.ProxyAddress parameter contains an address with valid syntax (e.g. SMS phone numbers must follow [E.164 format](/docs/glossary/what-e164)).",
    "description": "An invalid participant proxy address was supplied.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50409,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant address equals proxy address",
    "secondary_message": "The supplied participant address must not equal its proxy address.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe supplied participant address must not equal its proxy address.\n\n### Possible causes\n\n- When requesting a participant to be added to a conversation, you specified the identical participant address and its proxy address parameters.\n\n### Possible solutions\n\n- Provide a participant's public address (e.g. user's SMS/MMS number) different from a conversation proxy number (e.g. Twilio SMS/MMS number) when adding a participant to the conference.\n",
    "causes": "* When requesting a participant to be added to a conversation, you specified the identical participant address and its proxy address parameters.",
    "solutions": "* Provide a participant's public address (e.g. user's SMS/MMS number) different from a conversation proxy number (e.g. Twilio SMS/MMS number) when adding a participant to the conference.",
    "description": "The supplied participant address must not equal its proxy address.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50411,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant address is empty",
    "secondary_message": "The provided participant public address parameter must not be empty.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe provided participant public address parameter must not be empty.\n\n### Possible causes\n\n- MessagingBinding.Address parameter provided with the request contains an empty string.\n\n### Possible solutions\n\n- Add a non-empty MessagingBinding.Address parameter to the API request and supply a valid participant address matching your desired channel, e.g. SMS, MMS or WhatsApp.\n",
    "causes": "* MessagingBinding.Address parameter provided with the request contains an empty string.",
    "solutions": "* Add a non-empty MessagingBinding.Address parameter to the API request and supply a valid participant address matching your desired channel, e.g. SMS, MMS or WhatsApp.",
    "description": "The provided participant public address parameter must not be empty.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50412,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant proxy address is empty",
    "secondary_message": "The provided participant proxy address parameter must not be empty.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe provided participant proxy address parameter must not be empty.\n\n### Possible causes\n\n- MessagingBinding.ProxyAddress parameter provided with the request contains an empty string.\n\n### Possible solutions\n\n- Add a non-empty MessagingBinding.ProxyAddress parameter to the API request and supply a valid participant proxy address matching your desired channel, e.g. SMS, MMS or WhatsApp.\n",
    "causes": "* MessagingBinding.ProxyAddress parameter provided with the request contains an empty string.",
    "solutions": "* Add a non-empty MessagingBinding.ProxyAddress parameter to the API request and supply a valid participant proxy address matching your desired channel, e.g. SMS, MMS or WhatsApp.",
    "description": "The provided participant proxy address parameter must not be empty.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50413,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Account is not authorized to use proxy address",
    "secondary_message": "Your account is not authorized to use the requested proxy address.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nYour account is not authorized to use the requested proxy address.\n\n### Possible causes\n\n- The provided conversation proxy address is not allowed to be used under your account.\n\n### Possible solutions\n\n- Check that MessagingBinding.ProxyAddress parameter passed to API contains a proxy address that belongs to your account. For example, use a Twilio phone number that is purchased under the same project.\n",
    "causes": "* The provided conversation proxy address is not allowed to be used under your account.",
    "solutions": "* Check that MessagingBinding.ProxyAddress parameter passed to API contains a proxy address that belongs to your account. For example, use a Twilio phone number that is purchased under the same project.",
    "description": "Your account is not authorized to use the requested proxy address.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50414,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant address type does not match proxy address type",
    "secondary_message": "The provided participant address mismatches the proxy address channel type.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe provided participant address mismatches the proxy address channel type.\n\n### Possible causes\n\n- MessagingBinding.Address and MessagingBinding.ProxyAddress passed to the API do not belong to the same communication channel.\n\n### Possible solutions\n\n- Ensure that both MessagingBinding.Address and MessagingBinding.ProxyAddress are both of the same type, e.g. both SMS or both WhatsApp.\n",
    "causes": "* MessagingBinding.Address and MessagingBinding.ProxyAddress passed to the API do not belong to the same communication channel.",
    "solutions": "* Ensure that both MessagingBinding.Address and MessagingBinding.ProxyAddress are both of the same type, e.g. both SMS or both WhatsApp.",
    "description": "The provided participant address mismatches the proxy address channel type.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50415,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Proxy address is not WhatsApp enabled sender",
    "secondary_message": "The requested participant proxy address is not a correctly configured WhatsApp number.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested participant proxy address is not a correctly configured WhatsApp number.\n\n### Possible causes\n\n- Provided MessagingBinding.ProxyAddress parameter contains a participant number that is not recognized as a valid WhatsApp number.\n\n### Possible solutions\n\n- Ensure that MessagingBinding.ProxyAddress is an [on-boarded WhatsApp number](/docs/whatsapp/api) assigned to your number pool.\n",
    "causes": "* Provided MessagingBinding.ProxyAddress parameter contains a participant number that is not recognized as a valid WhatsApp number.",
    "solutions": "* Ensure that MessagingBinding.ProxyAddress is an [on-boarded WhatsApp number](/docs/whatsapp/api) assigned to your number pool.",
    "description": "The requested participant proxy address is not a correctly configured WhatsApp number.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50416,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant and proxy address pair is already in use",
    "secondary_message": "The requested participant and proxy address pair is already registered in the system.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested participant and proxy address pair is already registered in the system.\n\n### Possible causes\n\n- You are attempting to map a non-Chat (e.g. SMS) conversation member with participant address and proxy address that are already assigned to an active conversation. For example, there may be only one unique mapping between your conversation participant's public phone number and internal (proxying) Twilio phone number, in order to route inbound messages correctly.\n\n### Possible solutions\n\n- [Locate](/docs/conversations-classic/api/conversation-resource#read-multiple-conversation-resources) a conflicting active conversation that has an identical participant added to it. Either [delete](/docs/conversations-classic/api/conversation-resource#delete-a-conversation-resource) old conversations completely if you don't need the message history, or just remove the participant that uses these numbers in a previous conversation.\n",
    "causes": "* You are attempting to map a non-Chat (e.g. SMS) conversation member with participant address and proxy address that are already assigned to an active conversation. For example, there may be only one unique mapping between your conversation participant's public phone number and internal (proxying) Twilio phone number, in order to route inbound messages correctly.",
    "solutions": "* [Locate](/docs/conversations-classic/api/conversation-resource#read-multiple-conversation-resources) a conflicting active conversation that has an identical participant added to it. Either [delete](/docs/conversations-classic/api/conversation-resource#delete-a-conversation-resource) old conversations completely if you don't need the message history, or just remove the participant that uses these numbers in a previous conversation.",
    "description": "The requested participant and proxy address pair is already registered in the system.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50417,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participants limit exceeded",
    "secondary_message": "The total number of participants in this conversation exceeds the allowed limit.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe total number of participants in this conversation exceeds the limit.\n\n### Possible causes\n\n- You are trying to add more native Programmable Chat participants than allowed in this conversation. Maximum number of conversation participants is 100 by default, can be increased to 1000 programmatically.\n\n### Possible solutions\n\n- Increase the [maximum limit](/docs/chat/rest/service-resource#update-a-service-resource) by using Developer Console or REST API. Up to [1000 participants](/docs/conversations-classic/conversations-limits) are supported.\n- Retrieve a [list of current participants](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) in this conversation and [remove](/docs/conversations-classic/api/conversation-participant-resource#delete-a-conversationparticipant-resource) the ones that are no longer required.\n- Consider reusing participant identity across multiple clients, if user behavior is similar and data may be shared.\n",
    "causes": "* You are trying to add more native Programmable Chat participants than allowed in this conversation. Maximum number of conversation participants is 100 by default, can be increased to 1000 programmatically.",
    "solutions": "* Increase the [maximum limit](/docs/chat/rest/service-resource#update-a-service-resource) by using Developer Console or REST API. Up to [1000 participants](/docs/conversations-classic/conversations-limits) are supported.\n* Retrieve a [list of current participants](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) in this conversation and [remove](/docs/conversations-classic/api/conversation-participant-resource#delete-a-conversationparticipant-resource) the ones that are no longer required.\n* Consider reusing participant identity across multiple clients, if user behavior is similar and data may be shared.",
    "description": "The total number of participants in this conversation exceeds the limit.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50418,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Non-Chat participants limit exceeded",
    "secondary_message": "The total number of SMS, WhatsApp, or other non-Chat participants in this conversation exceeds the allowed limit.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe total number of SMS, WhatsApp, or other non-Chat participants in this conversation exceeds the allowed limit.\n\n### Possible causes\n\n- You are trying to add more non-Chat participants than allowed in this conversation. [Maximum number](/docs/conversations-classic/conversations-limits) of conversation participants is 50.\n\n### Possible solutions\n\n- Retrieve a [list of current participants](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) in this conversation and [remove](/docs/conversations-classic/api/conversation-participant-resource#delete-a-conversationparticipant-resource) the ones that are no longer required.\n",
    "causes": "* You are trying to add more non-Chat participants than allowed in this conversation. [Maximum number](/docs/conversations-classic/conversations-limits) of conversation participants is 50.",
    "solutions": "* Retrieve a [list of current participants](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) in this conversation and [remove](/docs/conversations-classic/api/conversation-participant-resource#delete-a-conversationparticipant-resource) the ones that are no longer required.",
    "description": "The total number of SMS, WhatsApp, or other non-Chat participants in this conversation exceeds the allowed limit.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50419,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Conflicting member modification",
    "secondary_message": "The requested member is already being added or removed from this channel by a concurrent API request.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested member is already being added or removed from this channel concurrently with another API request. The last request will be rejected to avoid inconsistent state.\n\n### Possible causes\n\n- You might be adding a new member to the channel while the member with the same identity is being removed from another thread.\n- You might be submitting multiple concurrent requests to add a member with the same identity to the channel.\n- You might be submitting multiple concurrent requests to delete the same member by SID or identity from the channel.\n\n### Possible solutions\n\n- Implement an operation retrier and repeat the failed member API requests after an interval of time, using an exponential backoff algorithm.\n- Review your application logic that caused the race condition when adding or removing members. Perhaps the conflicting operations are happening in a loop that could be avoided.\n- Serialize your API requests that add or remove members. Wait until the original request completes and returns an API response, before sending any successive member requests.\n",
    "causes": "* You might be adding a new member to the channel while the member with the same identity is being removed from another thread.\n* You might be submitting multiple concurrent requests to add a member with the same identity to the channel.\n* You might be submitting multiple concurrent requests to delete the same member by SID or identity from the channel.",
    "solutions": "* Implement an operation retrier and repeat the failed member API requests after an interval of time, using an exponential backoff algorithm.\n* Review your application logic that caused the race condition when adding or removing members. Perhaps the conflicting operations are happening in a loop that could be avoided.\n* Serialize your API requests that add or remove members. Wait until the original request completes and returns an API response, before sending any successive member requests.",
    "description": "The requested member is already being added or removed from this channel concurrently with another API request. The last request will be rejected to avoid inconsistent state.",
    "date_created": "2020-03-03T15:25:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50420,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Messaging Binding type does not support the provided parameters",
    "secondary_message": "Sms Participant should not have MessagingBinding.Name or MessagingBinding.Level",
    "product": "Connect",
    "products_used": [
      "conversations"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create an SMS participant with unsupported `MessagingBinding` fields such as `MessagingBinding.Name` or `MessagingBinding.Level`. When you add an SMS participant, use `messagingbinding.address` for the participant phone number and `messagingbinding.proxyaddress` for your Twilio number. If you need to store a display name or other metadata for a non-chat participant, use participant `attributes`.\n\n### Possible causes\n\n- Your request includes `MessagingBinding.Name` for an SMS participant.\n- Your request includes `MessagingBinding.Level` for an SMS participant.\n- Your request mixes SMS participant parameters with fields that are not supported for that participant type.\n\n### Possible solutions\n\n- Remove `MessagingBinding.Name` and `MessagingBinding.Level` from the request.\n- For an SMS participant, provide the participant phone number in `messagingbinding.address` and your Twilio number in `messagingbinding.proxyaddress`.\n- If you are adding a chat participant instead, create the participant with `identity`.\n- If you need to store a display label or other participant metadata, save it in participant `attributes`.\n\n#### Additional resources\n\n- [Conversation Participant Resource](/docs/conversations-classic/api/conversation-participant-resource)\n- [Conversations Attributes](/docs/conversations-classic/attributes)\n- [Twilio Conversations Overview](/docs/conversations-classic/overview)\n",
    "causes": "* Your request includes `MessagingBinding.Name` for an SMS participant.\n* Your request includes `MessagingBinding.Level` for an SMS participant.\n* Your request mixes SMS participant parameters with fields that are not supported for that participant type.",
    "solutions": "* Remove `MessagingBinding.Name` and `MessagingBinding.Level` from the request.\n* For an SMS participant, provide the participant phone number in `messagingbinding.address` and your Twilio number in `messagingbinding.proxyaddress`.\n* If you are adding a chat participant instead, create the participant with `identity`.\n* If you need to store a display label or other participant metadata, save it in participant `attributes`.",
    "description": "This error occurs when you create an SMS participant with unsupported `MessagingBinding` fields such as `MessagingBinding.Name` or `MessagingBinding.Level`. When you add an SMS participant, use `messagingbinding.address` for the participant phone number and `messagingbinding.proxyaddress` for your Twilio number. If you need to store a display name or other metadata for a non-chat participant, use participant `attributes`.",
    "date_created": "2021-10-14T13:40:10Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50421,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid last read message index format",
    "secondary_message": "Request does not contain correctly formatted parameter for last read message index",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nRequest does not contain correctly formatted parameter for last read message index\n\n### Possible causes\n\nRequest does not contain correctly formatted parameter for last read message index\n\n### Possible solutions\n\nConfirm a valid parameter is passed in request.\n",
    "causes": "Request does not contain correctly formatted parameter for last read message index",
    "solutions": "Confirm a valid parameter is passed in request.",
    "description": "Request does not contain correctly formatted parameter for last read message index",
    "date_created": "2021-10-13T12:29:40Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50422,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Non-chat conversation participants limit exceeded",
    "secondary_message": "The total number of non-chat participants in this conversation exceeds the allowed limit.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe total number of non-chat participants in this conversation exceeds the allowed limit.\n\n### Possible causes\n\nYou are trying to add more non-chat participants than allowed in this conversation. Maximum number of conversation participants is 50.\n\n- You are trying to add more non-Chat participants than allowed in this conversation. [Maximum number](/docs/conversations-classic/conversations-limits) of conversation participants is 50.\n\n### Possible solutions\n\n- Retrieve a [list of current participants](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) in this conversation and [remove](/docs/conversations-classic/api/conversation-participant-resource#delete-a-conversationparticipant-resource) the ones that are no longer required.\n",
    "causes": "You are trying to add more non-chat participants than allowed in this conversation. Maximum number of conversation participants is 50. - You are trying to add more non-Chat participants than allowed in this conversation. [Maximum number](/docs/conversations-classic/conversations-limits) of conversation participants is 50.",
    "solutions": "* Retrieve a [list of current participants](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) in this conversation and [remove](/docs/conversations-classic/api/conversation-participant-resource#delete-a-conversationparticipant-resource) the ones that are no longer required.",
    "description": "The total number of non-chat participants in this conversation exceeds the allowed limit.",
    "date_created": "2021-10-13T12:36:33Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50424,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "One of the JSON requests for participant creation is invalid.",
    "secondary_message": "One of the requests in provided participants list is not a valid JSON object.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne of the requests in provided participants list is not a valid JSON object.\n\n### Possible causes\n\nYou are attempting to use invalid JSON object in the list of requests to create participants. If Conversations API is used it means that one of form parameters 'Participant' contains invalid JSON.\n\n### Possible solutions\n\nValidate that all the requests in the list of participants are strings that contain valid JSON objects. Make amendments to the requests that are not valid.\n",
    "causes": "You are attempting to use invalid JSON object in the list of requests to create participants. If Conversations API is used it means that one of form parameters 'Participant' contains invalid JSON.",
    "solutions": "Validate that all the requests in the list of participants are strings that contain valid JSON objects. Make amendments to the requests that are not valid.",
    "description": "One of the requests in provided participants list is not a valid JSON object.",
    "date_created": "2024-09-12T08:18:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50425,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant and proxy address pairs for one or more participants already in use.",
    "secondary_message": "One or more of the requested participant and proxy address pairs are already registered in the system.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne or more of the requested participant and proxy address pairs are already registered in the system.\n\n### Possible causes\n\nYou are attempting to map a non-Chat (e.g. SMS) conversation participants with participant address and proxy address that are already assigned to an active conversation. There may be only one unique mapping between your conversation participant's public phone number and internal (proxying) Twilio phone number, in order to route inbound messages correctly.\n\n### Possible solutions\n\n[Locate](/docs/conversations-classic/api/conversation-resource#read-multiple-conversation-resources) a conflicting active conversation that has an identical participant added to it. To use such participant in the new conversation either [delete](/docs/conversations-classic/api/conversation-resource#delete-a-conversation-resource) old conversations completely if you don't need the message history, or just remove the participant that uses these numbers in a previous conversation.\n",
    "causes": "You are attempting to map a non-Chat (e.g. SMS) conversation participants with participant address and proxy address that are already assigned to an active conversation. There may be only one unique mapping between your conversation participant's public phone number and internal (proxying) Twilio phone number, in order to route inbound messages correctly.",
    "solutions": "[Locate](/docs/conversations-classic/api/conversation-resource#read-multiple-conversation-resources) a conflicting active conversation that has an identical participant added to it. To use such participant in the new conversation either [delete](/docs/conversations-classic/api/conversation-resource#delete-a-conversation-resource) old conversations completely if you don't need the message history, or just remove the participant that uses these numbers in a previous conversation.",
    "description": "One or more of the requested participant and proxy address pairs are already registered in the system.",
    "date_created": "2024-09-12T08:22:09Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50426,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Request contains too many participants.",
    "secondary_message": "Request contains more participants than allowed per request.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRequest contains more participants than allowed per request.\n\n### Possible causes\n\nYou are attempting to add more participants than it's allowed to in one request of conversation with participants creation.\n\n### Possible solutions\n\nReduce the amount of participants in the request to the allowed limit. Add all the rest of the participants using [Participant Resource](/docs/conversations-classic/api/conversation-participant-resource).\n",
    "causes": "You are attempting to add more participants than it's allowed to in one request of conversation with participants creation.",
    "solutions": "Reduce the amount of participants in the request to the allowed limit. Add all the rest of the participants using [Participant Resource](/docs/conversations-classic/api/conversation-participant-resource).",
    "description": "Request contains more participants than allowed per request.",
    "date_created": "2024-09-12T08:23:06Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50427,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Errors occurred during multiple participants creation.",
    "secondary_message": "One or more other errors occurred during multiple participants creation.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne or more other errors occurred during multiple participants creation. This error is received in [Error logs](/docs/messaging/guides/debugging-tools#how-to-use-the-twilio-error-logs) in Twilio Console and contains the list of other [errors](/docs/api/errors).\n\n### Possible causes\n\nThe error during multiple participants creation is unexpected due to extensive validation done before conversation with multiple participants creation. The error may appear if there are simultaneous conflicting requests. To learn more about the possible issues that happened during participants creation read the description of the received error in [Twilio Console Error Logs](https://console.twilio.com/us1/monitor/logs/debugger/errors) and check the errors. The Possible Causes of these errors caused the failure of the whole participants creation process.\n\n### Possible solutions\n\nIt's recommended to retry the request after some time. In case of this error the failed conversation is moved to closed state and all the resources occupied by this conversation are released, that allows retry not to fail.\n",
    "causes": "The error during multiple participants creation is unexpected due to extensive validation done before conversation with multiple participants creation. The error may appear if there are simultaneous conflicting requests. To learn more about the possible issues that happened during participants creation read the description of the received error in [Twilio Console Error Logs](https://console.twilio.com/us1/monitor/logs/debugger/errors) and check the errors. The Possible Causes of these errors caused the failure of the whole participants creation process.",
    "solutions": "It's recommended to retry the request after some time. In case of this error the failed conversation is moved to closed state and all the resources occupied by this conversation are released, that allows retry not to fail.",
    "description": "One or more other errors occurred during multiple participants creation. This error is received in [Error logs](/docs/messaging/guides/debugging-tools#how-to-use-the-twilio-error-logs) in Twilio Console and contains the list of other [errors](/docs/api/errors).",
    "date_created": "2024-09-12T08:24:06Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50430,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant is not a member of conversation",
    "secondary_message": "The requested participant is not a member of this conversation.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested participant is not a member of this conversation.\n\n### Possible causes\n\n- The requested participant was removed from this conversation, or was never added to it.\n- The requested participant SID is misspelled.\n- The requested participant is a member of a different conversation.\n\n### Possible solutions\n\n- Ensure that the participant is added to the conversation. Use API to [create a new participant](/docs/conversations-classic/api/conversation-participant-resource#add-a-conversation-participant-sms).\n",
    "causes": "* The requested participant was removed from this conversation, or was never added to it.\n* The requested participant SID is misspelled.\n* The requested participant is a member of a different conversation.",
    "solutions": "* Ensure that the participant is added to the conversation. Use API to [create a new participant](/docs/conversations-classic/api/conversation-participant-resource#add-a-conversation-participant-sms).",
    "description": "The requested participant is not a member of this conversation.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50431,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant SID not provided",
    "secondary_message": "Conversation participant SID parameter is required but was not provided.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nConversation participant SID parameter is required but was not provided.\n\n### Possible causes\n\n- The API expected a participant SID input parameter, but it was either not provided or was misspelled.\n\n### Possible solutions\n\n- Add a valid participant SID parameter to the API request and confirm that it is not misspelled.\n",
    "causes": "* The API expected a participant SID input parameter, but it was either not provided or was misspelled.",
    "solutions": "* Add a valid participant SID parameter to the API request and confirm that it is not misspelled.",
    "description": "Conversation participant SID parameter is required but was not provided.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50432,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant not found",
    "secondary_message": "The requested conversation participant SID was not found.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested conversation participant SID was not found.\n\n### Possible causes\n\n- The participant SID you are requesting does not exist in this conversation.\n\n### Possible solutions\n\n- Check that the requested participant SID is not misspelled.\n- Check that the requested participant SID was added to this conversation. Use REST API to [fetch a list](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) of existing conversation participants.\n",
    "causes": "* The participant SID you are requesting does not exist in this conversation.",
    "solutions": "* Check that the requested participant SID is not misspelled.\n* Check that the requested participant SID was added to this conversation. Use REST API to [fetch a list](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) of existing conversation participants.",
    "description": "The requested conversation participant SID was not found.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50433,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Participant already exists",
    "secondary_message": "The requested Chat participant is already mapped to a conversation.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested Chat participant is already mapped to a conversation.\n\n### Possible causes\n\n- You are attempting to add a Programmable Chat participant to a conversation that already has another participant with the same identity.\n\n### Possible solutions\n\n- [Retrieve a list](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) of existing participants in this conversation and remove the one with the same identity using [REST API](/docs/conversations-classic/api/conversation-participant-resource#delete-a-conversationparticipant-resource).\n- Perhaps it's not an issue, and we can continue as-is. Instead of adding a new participant, reuse the existing one, potentially [update its attributes](/docs/conversations-classic/api/conversation-participant-resource#update-a-conversationparticipant-resource) if necessary.\n",
    "causes": "* You are attempting to add a Programmable Chat participant to a conversation that already has another participant with the same identity.",
    "solutions": "* [Retrieve a list](/docs/conversations-classic/api/conversation-participant-resource#read-multiple-conversationparticipant-resources) of existing participants in this conversation and remove the one with the same identity using [REST API](/docs/conversations-classic/api/conversation-participant-resource#delete-a-conversationparticipant-resource).\n* Perhaps it's not an issue, and we can continue as-is. Instead of adding a new participant, reuse the existing one, potentially [update its attributes](/docs/conversations-classic/api/conversation-participant-resource#update-a-conversationparticipant-resource) if necessary.",
    "description": "The requested Chat participant is already mapped to a conversation.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50434,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant projected address not provided",
    "secondary_message": "No Projected Address provided for this participant the group conversation.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThis is a Group MMS conversation, but the given participant has neither an Address nor a ProjectedAddress.\n\n### Possible causes\n\n- You may have inadvertently provided an Identity (chat user), rather than an Address (mobile phone).\n- You may have mistyped or inadvertently left out the ProjectedAddress parameter.\n\n### Possible solutions\n\n- [Provide a Projected Address](/docs/conversations-classic/group-texting#scenario-1-set-up-a-group-message-with-one-chat-participant-and-two-sms-participants) when adding this Participant to the Group Conversation. This is the correct path when adding Chat participants to a Group MMS conversation.\n",
    "causes": "* You may have inadvertently provided an Identity (chat user), rather than an Address (mobile phone).\n* You may have mistyped or inadvertently left out the ProjectedAddress parameter.",
    "solutions": "* [Provide a Projected Address](/docs/conversations-classic/group-texting#scenario-1-set-up-a-group-message-with-one-chat-participant-and-two-sms-participants) when adding this Participant to the Group Conversation. This is the correct path when adding Chat participants to a Group MMS conversation.",
    "description": "This is a Group MMS conversation, but the given participant has neither an Address nor a ProjectedAddress.",
    "date_created": "2021-08-16T11:55:21Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50435,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Group MMS activation failed.",
    "secondary_message": "Group MMS activation with the new list of participants has failed.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe conversation's Group MMS could not be activated.\n\n### Possible causes\n\n- The conversation does not have at least three participants with messaging binding.\n- The conversation has got a participant with identity but without projected address.\n- The conversation's participants do not make a valid address list for group messaging.\n\n### Possible solutions\n\n- Check that all the participants have messaging bindings.\n- Check that there is at least one participant with user address only.\n- Check that there is at least one participant with a proxy address or a projected address.\n",
    "causes": "* The conversation does not have at least three participants with messaging binding.\n* The conversation has got a participant with identity but without projected address.\n* The conversation's participants do not make a valid address list for group messaging.",
    "solutions": "* Check that all the participants have messaging bindings.\n* Check that there is at least one participant with user address only.\n* Check that there is at least one participant with a proxy address or a projected address.",
    "description": "The conversation's Group MMS could not be activated.",
    "date_created": "2021-08-16T11:56:33Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50436,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant limit exceeded for group conversation",
    "secondary_message": "The maximum of participants allowed in a group conversation has been exceeded.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThere is a limit to how many participants can be active in the same conversation at once. Adding this participant would exceed that limit.\n\n### Possible causes\n\n- You may have failed to remove old participants in a long-running conversation.\n- You may have reached an edge-case in your application that creates unusually large conversations, in excess of the limit.\n\n### Possible solutions\n\n- Drop another participant from the conversation before adding new one.\n",
    "causes": "* You may have failed to remove old participants in a long-running conversation.\n* You may have reached an edge-case in your application that creates unusually large conversations, in excess of the limit.",
    "solutions": "* Drop another participant from the conversation before adding new one.",
    "description": "There is a limit to how many participants can be active in the same conversation at once. Adding this participant would exceed that limit.",
    "date_created": "2021-08-16T11:57:28Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50437,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Group Participant already exists",
    "secondary_message": "Participant already exists in the group conversation.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nA participant matching this one already exists in the conversation.\n\n### Possible causes\n\n- An participant with the same ProxyAddress+Address pair already exists in this conversation\n- A native GMMS Participant with the same Address exists in this conversation\n- A Chat Participant with the same Identity and Project Address exists in this conversation\n\nThis error may result from a race condition, where a participant was inadvertently added twice.\n\n### Possible solutions\n\n- Add the participant with a different Address or Identity\n- Ignore this error — your participant is already present.\n",
    "causes": "* An participant with the same ProxyAddress+Address pair already exists in this conversation\n* A native GMMS Participant with the same Address exists in this conversation\n* A Chat Participant with the same Identity and Project Address exists in this conversation This error may result from a race condition, where a participant was inadvertently added twice.",
    "solutions": "* Add the participant with a different Address or Identity\n* Ignore this error — your participant is already present.",
    "description": "A participant matching this one already exists in the conversation.",
    "date_created": "2021-08-16T11:58:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50438,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Group conversation with given participant list already exists",
    "secondary_message": "There is an existing (open) group conversation with the same participant list.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThere is an existing group conversation with the same participant list.\n\n### Possible causes\n\n- You previously created a conflicting conversation\n- Twilio created a conversation — which now conflicts — in the course of Autocreation.\n\n### Possible solutions\n\n- If the existing conversation is no longer in use, delete or [close the conversation](/docs/conversations-classic/states-timers#closed-conversations).\n- Alternatively, locate the other conversation and use that in place of this one.\n",
    "causes": "* You previously created a conflicting conversation\n* Twilio created a conversation — which now conflicts — in the course of Autocreation.",
    "solutions": "* If the existing conversation is no longer in use, delete or [close the conversation](/docs/conversations-classic/states-timers#closed-conversations).\n* Alternatively, locate the other conversation and use that in place of this one.",
    "description": "There is an existing group conversation with the same participant list.",
    "date_created": "2021-08-16T11:59:26Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50439,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account is not authorized to use the projected address",
    "secondary_message": "Address used as Projected Address does not belong to the account.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAddress used as Projected Address does not belong to the account.\n\n### Possible causes\n\n- The account does not own the Address (eg. phone number) used as a Projected Address.\n\n### Possible solutions\n\n- Use a different address owned by the account.\n",
    "causes": "* The account does not own the Address (eg. phone number) used as a Projected Address.",
    "solutions": "* Use a different address owned by the account.",
    "description": "Address used as Projected Address does not belong to the account.",
    "date_created": "2021-08-16T12:00:23Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50440,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to remove the proxy address of a participant.",
    "secondary_message": "The participant should have a proxy address in order to remove it.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe conversation participant being updated does not have a proxy address.\n\n### Possible causes\n\n- The participant does not have a proxy address you are trying to remove.\n- The participant you are updating is not an SMS participant.\n\n### Possible solutions\n\n- Check that the request does not update proxy address of this particular participant.\n",
    "causes": "* The participant does not have a proxy address you are trying to remove.\n* The participant you are updating is not an SMS participant.",
    "solutions": "* Check that the request does not update proxy address of this particular participant.",
    "description": "The conversation participant being updated does not have a proxy address.",
    "date_created": "2021-08-16T12:07:26Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50441,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to add a proxy address to a participant.",
    "secondary_message": "The participant should have an address in order to add a proxy address.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nYou cannot add a proxy address to the participant.\n\n### Possible causes\n\n- The participant to which you are trying to add a proxy address, does not have a user address.\n\n### Possible solutions\n\n- Check that the request does not update proxy address of this particular participant.\n",
    "causes": "* The participant to which you are trying to add a proxy address, does not have a user address.",
    "solutions": "* Check that the request does not update proxy address of this particular participant.",
    "description": "You cannot add a proxy address to the participant.",
    "date_created": "2021-08-16T12:01:27Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50442,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to remove the projected address of a participant.",
    "secondary_message": "The participant should have a projected address in order to remove it.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe conversation participant being updated does not have a projected address.\n\n### Possible causes\n\n- The participant does not have the projected address you are trying to remove.\n\n### Possible solutions\n\n- Check that the request does not update projected address of this particular participant.\n",
    "causes": "* The participant does not have the projected address you are trying to remove.",
    "solutions": "* Check that the request does not update projected address of this particular participant.",
    "description": "The conversation participant being updated does not have a projected address.",
    "date_created": "2021-08-16T12:02:11Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50443,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to add a projected address to a participant.",
    "secondary_message": "The participant should not have a messaging binding in order to add a projected address.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe conversation participant being updated can not have a projected address.\n\n### Possible causes\n\n- You are trying to add a projected address to a participant with messaging binding assigned.\n\n### Possible solutions\n\n- Check that the request does not update projected address of this particular participant.\n",
    "causes": "* You are trying to add a projected address to a participant with messaging binding assigned.",
    "solutions": "* Check that the request does not update projected address of this particular participant.",
    "description": "The conversation participant being updated can not have a projected address.",
    "date_created": "2021-08-16T12:03:09Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50444,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to add an identity to a participant.",
    "secondary_message": "The participant should not have an identity in order to add an identity.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe conversation participant being updated can not have an identity.\n\n### Possible causes\n\n- You are trying to add an identity to a participant with identity already assigned.\n- You are trying to add an identity to a participant without projected address.\n\n### Possible solutions\n\n- Check that the request does not update identity of this particular participant.\n",
    "causes": "* You are trying to add an identity to a participant with identity already assigned.\n* You are trying to add an identity to a participant without projected address.",
    "solutions": "* Check that the request does not update identity of this particular participant.",
    "description": "The conversation participant being updated can not have an identity.",
    "date_created": "2021-08-16T12:04:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50449,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conflicting channel modification",
    "secondary_message": "The requested channel is already being added or removed by a concurrent API request.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested channel is already being added or removed from this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.\n\n### Possible causes\n\n- You might be adding a new channel to the service instance while the channel with the same unique name is being removed from another thread.\n- You might be submitting multiple concurrent requests to add a channel with the same unique name to the service instance.\n- You might be submitting multiple concurrent requests to delete the same channel by SID or unique name from the service instance.\n\n### Possible solutions\n\n- Implement an operation retrier and repeat the failed channel API requests after an interval of time, using an exponential backoff algorithm.\n- Review your application logic that caused the race condition when adding or removing users. Perhaps the conflicting operations are happening in a loop that could be avoided.\n- Serialize your API requests that add or remove channels. Wait until the original request completes and returns an API response, before sending any successive channel requests.\n",
    "causes": "* You might be adding a new channel to the service instance while the channel with the same unique name is being removed from another thread.\n* You might be submitting multiple concurrent requests to add a channel with the same unique name to the service instance.\n* You might be submitting multiple concurrent requests to delete the same channel by SID or unique name from the service instance.",
    "solutions": "* Implement an operation retrier and repeat the failed channel API requests after an interval of time, using an exponential backoff algorithm.\n* Review your application logic that caused the race condition when adding or removing users. Perhaps the conflicting operations are happening in a loop that could be avoided.\n* Serialize your API requests that add or remove channels. Wait until the original request completes and returns an API response, before sending any successive channel requests.",
    "description": "The requested channel is already being added or removed from this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.",
    "date_created": "2020-04-20T11:38:57Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50451,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Only one identifier allowed for lookup: use either Identity or Address",
    "secondary_message": "Request should contain either Identity or Address parameter, not both.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThis error occurs when your lookup request includes both `Identity` and `Address`. The participant conversation lookup supports exactly one of these parameters at a time.\n\n### Possible causes\n\n- Your request included both `Identity` and `Address` for the same lookup.\n- Your request mixed a Chat user identifier with a non-Chat participant address in one query. Chat users are identified by `identity`, while non-Chat participants are looked up by `address`.\n\n### Possible solutions\n\n- Send only `Identity` when you look up conversations for a Chat user.\n- Send only `Address` when you look up conversations for a non-Chat participant, such as an SMS or WhatsApp address.\n- If you use `Address`, URL-encode the value before you send the request. For phone numbers, encode `+` as `%2B`.\n\n#### Additional resources\n\n- [Participant Conversation Resource](/docs/conversations-classic/api/participant-conversation-resource)\n- [Twilio Conversations Overview](/docs/conversations-classic/overview)\n- [User Identity and Access Tokens for Conversations](/docs/conversations-classic/identity)\n",
    "causes": "* Your request included both `Identity` and `Address` for the same lookup.\n* Your request mixed a Chat user identifier with a non-Chat participant address in one query. Chat users are identified by `identity`, while non-Chat participants are looked up by `address`.",
    "solutions": "* Send only `Identity` when you look up conversations for a Chat user.\n* Send only `Address` when you look up conversations for a non-Chat participant, such as an SMS or WhatsApp address.\n* If you use `Address`, URL-encode the value before you send the request. For phone numbers, encode `+` as `%2B`.",
    "description": "This error occurs when your lookup request includes both `Identity` and `Address`. The participant conversation lookup supports exactly one of these parameters at a time.",
    "date_created": "2021-07-26T10:50:54Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50452,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Group MMS is not enabled for this Account",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTriggered when an Account attempts to use GMMS without the appropriate permissions\n\n### Possible causes\n\nMissing permissions for GMMS\n\n### Possible solutions\n\nVerify if GMMS allowed for this Account\n",
    "causes": "Missing permissions for GMMS",
    "solutions": "Verify if GMMS allowed for this Account",
    "description": "Triggered when an Account attempts to use GMMS without the appropriate permissions",
    "date_created": "2022-03-28T10:04:36Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50453,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Proxy Address of participant is not supported for this channel",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTriggered when account is trying to add or update the participant with a proxy address that is not supported in given channel, e.g. email, etc.\n\n### Possible causes\n\nProxy Address for participant is not supported in given channel\n\n### Possible solutions\n\nRemove proxy address field of the participant\n",
    "causes": "Proxy Address for participant is not supported in given channel",
    "solutions": "Remove proxy address field of the participant",
    "description": "Triggered when account is trying to add or update the participant with a proxy address that is not supported in given channel, e.g. email, etc.",
    "date_created": "2022-08-23T15:27:58Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50500,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Message not found",
    "secondary_message": "Specified Message does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Message does not exist.\n\n### Possible solutions\n\n- Confirm a valid Message is being passed in request.\n",
    "causes": "* Specified Message does not exist.",
    "solutions": "* Confirm a valid Message is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:52Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50501,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Message SID not provided",
    "secondary_message": "Request does not contain required Message SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Message SID parameter.\n\n### Possible solutions\n\n- Confirm a valid Message SID is being passed in request.\n",
    "causes": "* Request does not contain required Message SID parameter.",
    "solutions": "* Confirm a valid Message SID is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:53Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50502,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Message index not provided",
    "secondary_message": "Request does not contain required Message Index parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Message Index parameter.\n\n### Possible solutions\n\n- Confirm a valid Message Index is being passed in request.\n",
    "causes": "* Request does not contain required Message Index parameter.",
    "solutions": "* Confirm a valid Message Index is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:53Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50503,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Message body not provided",
    "secondary_message": "Request does not contain required Message Body parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Message Body parameter.\n\n### Possible solutions\n\n- Confirm a valid Message Body is being passed in request.\n",
    "causes": "* Request does not contain required Message Body parameter.",
    "solutions": "* Confirm a valid Message Body is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:53Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50504,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Programmable Chat: Message body parameter is too long",
    "secondary_message": "Message body parameter is too long",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create or update a Programmable Chat message with a `Body` that exceeds the allowed message size. Programmable Chat limits `Message Body` to 32 KiB.\n\n### Possible causes\n\n- The `Body` value in your message request is larger than the 32 KiB limit for a Chat message body.\n- Your application serializes structured data into `Body`, which makes the message content too large. Twilio allows structured data in `Body` when you serialize it as a string, so oversized serialized payloads can trigger this error.\n- A pre-event webhook for `onMessageSend` or `onMessageUpdate` modifies `body` before the message is published and pushes it past the allowed limit.\n\n### Possible solutions\n\n- Reduce the `Body` value so it stays within the 32 KiB message body limit.\n- Validate message length in your application before you create or update a message.\n- If you use pre-event webhooks, review your `onMessageSend` and `onMessageUpdate` logic and make sure the returned `body` does not exceed the message size limit.\n- Keep `Body` focused on message text. If you send structured data in `Body`, reduce the serialized payload so it fits within the limit.\n\n#### Additional resources\n\n- [Chat Limits](/docs/chat/chat-limits)\n- [Webhook Events](/docs/chat/webhook-events)\n- [Programmable Chat Message Resource](/docs/chat/rest/message-resource)\n",
    "causes": "* The `Body` value in your message request is larger than the 32 KiB limit for a Chat message body.\n* Your application serializes structured data into `Body`, which makes the message content too large. Twilio allows structured data in `Body` when you serialize it as a string, so oversized serialized payloads can trigger this error.\n* A pre-event webhook for `onMessageSend` or `onMessageUpdate` modifies `body` before the message is published and pushes it past the allowed limit.",
    "solutions": "* Reduce the `Body` value so it stays within the 32 KiB message body limit.\n* Validate message length in your application before you create or update a message.\n* If you use pre-event webhooks, review your `onMessageSend` and `onMessageUpdate` logic and make sure the returned `body` does not exceed the message size limit.\n* Keep `Body` focused on message text. If you send structured data in `Body`, reduce the serialized payload so it fits within the limit.",
    "description": "This error occurs when you create or update a Programmable Chat message with a `Body` that exceeds the allowed message size. Programmable Chat limits `Message Body` to 32 KiB.",
    "date_created": "2017-11-06T12:23:50Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 50505,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Last Updated By parameter is too long",
    "secondary_message": "Last Updated By parameter is too long",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Last Updated By parameter is too long.\n\n### Possible solutions\n\n- Confirm a valid length Last Updated By is being passed in request.\n",
    "causes": "* Last Updated By parameter is too long.",
    "solutions": "* Confirm a valid length Last Updated By is being passed in request.",
    "description": "",
    "date_created": "2017-11-06T12:25:24Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50506,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Media SID not provided",
    "secondary_message": "Request does not contain required Media SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Media SID parameter.\n\n### Possible solutions\n\n- Confirm a valid Media SID is being passed in request.\n",
    "causes": "* Request does not contain required Media SID parameter.",
    "solutions": "* Confirm a valid Media SID is being passed in request.",
    "description": "",
    "date_created": "2017-11-06T12:27:32Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50507,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Media not found",
    "secondary_message": "Media with specified SID does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Media with specified SID does not exist.\n\n### Possible solutions\n\n- Confirm a valid Media SID is being passed in request.\n",
    "causes": "* Media with specified SID does not exist.",
    "solutions": "* Confirm a valid Media SID is being passed in request.",
    "description": "",
    "date_created": "2017-11-06T12:37:07Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50508,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Media already sent with another message",
    "secondary_message": "Media with specified SID is already sent with another Chat message",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Media with specified SID is already sent with another Chat message.\n\n### Possible solutions\n\n- Confirm a valid Media SID is being passed in request.\n",
    "causes": "* Media with specified SID is already sent with another Chat message.",
    "solutions": "* Confirm a valid Media SID is being passed in request.",
    "description": "",
    "date_created": "2017-11-06T12:39:09Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50509,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Media message body cannot be updated",
    "secondary_message": "Media message body cannot be updated",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n\n## Description\nThis error occurs when you try to update the `Body` of a media message in Programmable Chat. Media messages store the attachment separately from the message record, do not support a per-message text body, and use a service-defined placeholder body for legacy clients.\n\n### Possible causes\n- You sent an update request with the `Body` parameter for a message whose `type` is `media`.\n- The message was created with an attached media object, such as a `MediaSid`, and your application later tried to edit it like a text-only message.\n- Your application uses the same update logic for both text messages and media messages without checking the message type first.\n\n### Possible solutions\n- Do not update `Body` on media messages. Update only supported non-body fields, such as `Attributes`, when you need to change message metadata.\n- Check the message `type` before updating it. Only send `Body` updates for text messages.\n- If you need to include text with an attachment, send a separate text message in the channel instead of trying to edit the media message body.\n- If the media message was created incorrectly, delete the message and create a new one with the correct attachment.\n- When sending media over the REST API, upload the file first and create the message with `MediaSid` instead of creating a media message and then attempting to rewrite its body.\n\n#### Additional resources\n- [Programmable Chat Message Resource](/docs/chat/rest/message-resource)\n- [Media Support](/docs/chat/media-support)\n",
    "causes": "* You sent an update request with the `Body` parameter for a message whose `type` is `media`.\n* The message was created with an attached media object, such as a `MediaSid`, and your application later tried to edit it like a text-only message.\n* Your application uses the same update logic for both text messages and media messages without checking the message type first.",
    "solutions": "* Do not update `Body` on media messages. Update only supported non-body fields, such as `Attributes`, when you need to change message metadata.\n* Check the message `type` before updating it. Only send `Body` updates for text messages.\n* If you need to include text with an attachment, send a separate text message in the channel instead of trying to edit the media message body.\n* If the media message was created incorrectly, delete the message and create a new one with the correct attachment.\n* When sending media over the REST API, upload the file first and create the message with `MediaSid` instead of creating a media message and then attempting to rewrite its body.",
    "description": "This error occurs when you try to update the `Body` of a media message in Programmable Chat. Media messages store the attachment separately from the message record, do not support a per-message text body, and use a service-defined placeholder body for legacy clients.",
    "date_created": "2017-11-06T12:43:01Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 50510,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid message media SID",
    "secondary_message": "An invalid multimedia attachment SID was supplied for this message.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid multimedia attachment SID was supplied for this message.\n\n### Possible causes\n\n- MediaSid parameter provided with the request does not match a valid media SID pattern (MExx).\n\n### Possible solutions\n\n- Add a valid MediaSid parameter to the API request and supply a media SID that is uploaded under your service instance.\n",
    "causes": "* MediaSid parameter provided with the request does not match a valid media SID pattern (MExx).",
    "solutions": "* Add a valid MediaSid parameter to the API request and supply a media SID that is uploaded under your service instance.",
    "description": "An invalid multimedia attachment SID was supplied for this message.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50511,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid message media content type",
    "secondary_message": "An invalid multimedia attachment content type was supplied.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAn invalid multimedia attachment content type was supplied.\n\n### Possible causes\n\n- The MIME content type of multimedia attachment you are trying to send is not acceptable for this conversation.\n\n### Possible solutions\n\n- Make sure that the content type of multimedia attachments conform to channel constraints. Check for accepted MIME types in [API documentation](/docs/conversations-classic/conversations-limits#media-limits).\n",
    "causes": "* The MIME content type of multimedia attachment you are trying to send is not acceptable for this conversation.",
    "solutions": "* Make sure that the content type of multimedia attachments conform to channel constraints. Check for accepted MIME types in [API documentation](/docs/conversations-classic/conversations-limits#media-limits).",
    "description": "An invalid multimedia attachment content type was supplied.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50512,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Message media size is too large",
    "secondary_message": "The requested multimedia attachment size exceeds the allowed limit.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nThe requested multimedia attachment size exceeds the allowed limit.\n\n### Possible causes\n\n- The size of multimedia attachment you are trying to send is not acceptable for this conversation.\n\n### Possible solutions\n\n- Make sure that the size of multimedia attachments co form to channel limitations. Check for media size constraints in [API documentation](/docs/conversations-classic/conversations-limits#media-limits).\n",
    "causes": "* The size of multimedia attachment you are trying to send is not acceptable for this conversation.",
    "solutions": "* Make sure that the size of multimedia attachments co form to channel limitations. Check for media size constraints in [API documentation](/docs/conversations-classic/conversations-limits#media-limits).",
    "description": "The requested multimedia attachment size exceeds the allowed limit.",
    "date_created": "2019-09-24T00:00:00Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50513,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": " Message author should be among Group MMS participants.",
    "secondary_message": "Author identity or address not found among Group MMS participants",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAuthor identity or address not found among Group MMS participants.\n\n### Possible causes\n\n- Provided author Address is not among Group MMS participants.\n- Provided author Identity is not among Group MMS participants.\n\n### Possible solutions\n\n- Check that the Author is participant of Group MMS conversation.\n",
    "causes": "* Provided author Address is not among Group MMS participants.\n* Provided author Identity is not among Group MMS participants.",
    "solutions": "* Check that the Author is participant of Group MMS conversation.",
    "description": "Author identity or address not found among Group MMS participants.",
    "date_created": "2021-08-16T12:05:03Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50514,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conflicting message modification",
    "secondary_message": "The requested message is already being modified by a concurrent API request.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe requested message is already being modified in this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.\n\n### Possible causes\n\n- You might be submitting multiple concurrent requests to modify a message or its attributes with the same SID in the service instance.\n\n### Possible solutions\n\n- Implement an operation retrier and repeat the failed API requests after an interval of time, using an exponential backoff algorithm.\n- Review your application logic that caused the race condition when modifying a message. Perhaps the conflicting operations are happening in a loop that could be avoided.\n- Serialize your API requests that modify conversation messages. Wait until the original request completes and returns an API response, before sending any successive conversation requests.\n",
    "causes": "* You might be submitting multiple concurrent requests to modify a message or its attributes with the same SID in the service instance.",
    "solutions": "* Implement an operation retrier and repeat the failed API requests after an interval of time, using an exponential backoff algorithm.\n* Review your application logic that caused the race condition when modifying a message. Perhaps the conflicting operations are happening in a loop that could be avoided.\n* Serialize your API requests that modify conversation messages. Wait until the original request completes and returns an API response, before sending any successive conversation requests.",
    "description": "The requested message is already being modified in this service instance concurrently with another API request. The last request will be rejected to avoid inconsistent state.",
    "date_created": "2024-01-10T22:42:18Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50516,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Programmable Chat: Message index is not a number",
    "secondary_message": "Programmable Chat: Message index is not a number",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nNot a number string was provided as message index.\n\n### Possible causes\n\n- Some text or message sid was provided as message index\n\n### Possible solutions\n\n- Proper message index should be provided.\n",
    "causes": "* Some text or message sid was provided as message index",
    "solutions": "* Proper message index should be provided.",
    "description": "Not a number string was provided as message index.",
    "date_created": "2020-11-23T14:44:22Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50526,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid content SID",
    "secondary_message": "Specified Content SID does not match pattern HX\\[0-9a-f]\\{32}",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn invalid value was specified for the message content sid\n\n### Possible causes\n\nContent SID does not match the pattern HX\\[0-9a-f]\\{32}\n\n### Possible solutions\n\nProper message Content SID value should be provided.\n",
    "causes": "Content SID does not match the pattern HX\\[0-9a-f]{32}",
    "solutions": "Proper message Content SID value should be provided.",
    "description": "An invalid value was specified for the message content sid",
    "date_created": "2022-11-23T13:34:12Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50527,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid content variables format",
    "secondary_message": "Specified content variables value is invalid JSON object",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn invalid value was specified for the message content variables\n\n### Possible causes\n\nContent variables value is invalid JSON object\n\n### Possible solutions\n\nMessage content variables value should be a valid JSON object.\n",
    "causes": "Content variables value is invalid JSON object",
    "solutions": "Message content variables value should be a valid JSON object.",
    "description": "An invalid value was specified for the message content variables",
    "date_created": "2022-11-23T13:35:06Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50528,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Content SID is missing",
    "secondary_message": "Message content variables are defined without a proper content sid",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nMessage content variables are defined without a proper content sid\n\n### Possible causes\n\nContent variables are present but there is no content sid defined\n\n### Possible solutions\n\nMessage content sid should be present along with content variables\n",
    "causes": "Content variables are present but there is no content sid defined",
    "solutions": "Message content sid should be present along with content variables",
    "description": "Message content variables are defined without a proper content sid",
    "date_created": "2022-11-23T13:35:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50529,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Content variables are too long",
    "secondary_message": "Message content variables are exceeding allowed total length of 27,801 characters",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAllowed total length for message content variables is sum of key, value and JSON-specific characters' lengths.\n\n### Possible causes\n\nEither too many variables are defined (max 100 in total), or too long keys (max 16 characters per variable), or too long values (max 256 characters per variable).\n\n### Possible solutions\n\nFollow the length limitations:\n\n- variables: 100 in total;\n- key: 16 characters per variable;\n- value: 256 characters per variable.\n",
    "causes": "Either too many variables are defined (max 100 in total), or too long keys (max 16 characters per variable), or too long values (max 256 characters per variable).",
    "solutions": "Follow the length limitations: - variables: 100 in total;\n- key: 16 characters per variable;\n- value: 256 characters per variable.",
    "description": "Allowed total length for message content variables is sum of key, value and JSON-specific characters' lengths.",
    "date_created": "2023-03-10T14:23:30Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50530,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Channel Metadata not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nChannel Metadata was not found for the Message\n\n### Possible causes\n\n- Channel Metadata was not found for this message\n- Channel Metadata is only relevant for select channel types\n\n### Possible solutions\n\n- Confirm the channel type provides Channel Metadata.\n",
    "causes": "* Channel Metadata was not found for this message\n* Channel Metadata is only relevant for select channel types",
    "solutions": "* Confirm the channel type provides Channel Metadata.",
    "description": "Channel Metadata was not found for the Message",
    "date_created": "2024-02-27T16:19:36Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50531,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Authorized to make this request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUser is not authorized to access the requested resource\n\n### Possible causes\n\nUser making the request does not have the appropriate permission: readChannelMetadata\n\n### Possible solutions\n\nAdd readChannelMetadata permissions to the requesting user's role\n",
    "causes": "User making the request does not have the appropriate permission: readChannelMetadata",
    "solutions": "Add readChannelMetadata permissions to the requesting user's role",
    "description": "User is not authorized to access the requested resource",
    "date_created": "2024-02-27T16:20:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50532,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to create Channel Metadata",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUnable to create Channel Metadata for the Message\n\n### Possible causes\n\n- Channel Metadata was in an invalid format\n- Channel Metadata required keys were missing\n- A persistence error occured\n\n### Possible solutions\n\n- Validate Channel Metadata was in the correct format\n- Retry Channel Metadata creation\n",
    "causes": "* Channel Metadata was in an invalid format\n* Channel Metadata required keys were missing\n* A persistence error occured",
    "solutions": "* Validate Channel Metadata was in the correct format\n* Retry Channel Metadata creation",
    "description": "Unable to create Channel Metadata for the Message",
    "date_created": "2024-02-27T16:21:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50533,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to parse ChannelMetadata Json",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Channel Metadata Content was not in the correct format.\n\n### Possible causes\n\n- Channel Metadata Json was expected.\n- Channel Metadata required keys were missing\n\n### Possible solutions\n\n- Fix Channel Metadata payload and retry\n",
    "causes": "* Channel Metadata Json was expected.\n* Channel Metadata required keys were missing",
    "solutions": "* Fix Channel Metadata payload and retry",
    "description": "The Channel Metadata Content was not in the correct format.",
    "date_created": "2024-02-27T16:24:05Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50534,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to Read ChannelMetadata",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUnable to read Channel Metadata for Message\n\n### Possible causes\n\n- Channel Metadata was in an invalid format\n- Channel Metadata required keys were missing\n- Error querying for Channel Metadata\n- Confirm the channel type provides Channel Metadata\n\n### Possible solutions\n\n- Retry Channel Metadata query\n",
    "causes": "* Channel Metadata was in an invalid format\n* Channel Metadata required keys were missing\n* Error querying for Channel Metadata\n* Confirm the channel type provides Channel Metadata",
    "solutions": "* Retry Channel Metadata query",
    "description": "Unable to read Channel Metadata for Message",
    "date_created": "2024-02-27T16:25:09Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50540,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Content variable key is too long",
    "secondary_message": "Key in key-value pair of message content variables is exceeding allowed maximum length of 16 characters",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nLength of key in message content variables is restricted to 16 characters.\n\n### Possible causes\n\nOne or many keys in key-value pairs of message content variables are hitting limit of allowed 16 characters.\n\n### Possible solutions\n\nReduce the length of key characters to maximum 16 in message content variables.\n",
    "causes": "One or many keys in key-value pairs of message content variables are hitting limit of allowed 16 characters.",
    "solutions": "Reduce the length of key characters to maximum 16 in message content variables.",
    "description": "Length of key in message content variables is restricted to 16 characters.",
    "date_created": "2023-03-10T14:35:10Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50541,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Content variable value is too long",
    "secondary_message": "Value in key-value pair of message content variables is exceeding allowed maximum length of 256 characters",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nLength of value in message content variables is restricted to 256 characters.\n\n### Possible causes\n\nOne or many values in key-value pairs of message content variables are hitting limit of allowed 256 characters.\n\n### Possible solutions\n\nReduce the length of value characters to maximum 256 in message content variables.\n",
    "causes": "One or many values in key-value pairs of message content variables are hitting limit of allowed 256 characters.",
    "solutions": "Reduce the length of value characters to maximum 256 in message content variables.",
    "description": "Length of value in message content variables is restricted to 256 characters.",
    "date_created": "2023-03-10T14:39:26Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50542,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Unsupported Content Template Type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you send a Content Template through Conversations and the template uses a content type that Conversations does not support. Conversations currently supports `twilio/text`, `twilio/media`, `twilio/location`, `twilio/quick-reply`, `twilio/call-to-action`, `twilio/list-picker`, and `twilio/card`.\n\n### Possible causes\n\n- The template uses a content type that appears in Content Template Builder but is not listed among the content types currently supported by Conversations. Examples include `twilio/carousel`, `twilio/catalog`, `twilio/pay`, `twilio/flows`, `whatsapp/card`, and `whatsapp/authentication`.\n- Your application selected or reused a template without checking its `types` object first. The Content API returns each template with a `types` field, and you can fetch a single template with `GET /v1/Content/{ContentSid}` or list templates with `GET /v1/Content`.\n- You created a template for another sending path and then tried to send it through Conversations. Content Templates can be sent across multiple Twilio products, but Conversations supports a narrower set of content types than the full set available in Content Template Builder.\n\n### Possible solutions\n\n- Use a Conversations-supported content type. Recreate the template or choose a different template that uses `twilio/text`, `twilio/media`, `twilio/location`, `twilio/quick-reply`, `twilio/call-to-action`, `twilio/list-picker`, or `twilio/card`.\n- Inspect the template before sending it. Verify the template type in Content Template Builder, or fetch the template through the Content API and review the `types` object returned for the `ContentSid`.\n- Add validation to your application so requests sent through Conversations use only the template types documented as supported by Conversations. Keep a fallback template in a supported type such as `twilio/text` or `twilio/card` when you need to send through Conversations. This recommendation is based on the supported Conversations type list and the Content API template schema.\n\n#### Additional resources\n\n- [Send Rich Content Messages with Conversations](/docs/conversations-classic/send-rich-content-messages-with-conversations)\n- [Content Types Overview](/docs/content/content-types-overview)\n- [Content API Public Endpoints](/docs/content/content-api-resources)\n",
    "causes": "* The template uses a content type that appears in Content Template Builder but is not listed among the content types currently supported by Conversations. Examples include `twilio/carousel`, `twilio/catalog`, `twilio/pay`, `twilio/flows`, `whatsapp/card`, and `whatsapp/authentication`.\n* Your application selected or reused a template without checking its `types` object first. The Content API returns each template with a `types` field, and you can fetch a single template with `GET /v1/Content/{ContentSid}` or list templates with `GET /v1/Content`.\n* You created a template for another sending path and then tried to send it through Conversations. Content Templates can be sent across multiple Twilio products, but Conversations supports a narrower set of content types than the full set available in Content Template Builder.",
    "solutions": "* Use a Conversations-supported content type. Recreate the template or choose a different template that uses `twilio/text`, `twilio/media`, `twilio/location`, `twilio/quick-reply`, `twilio/call-to-action`, `twilio/list-picker`, or `twilio/card`.\n* Inspect the template before sending it. Verify the template type in Content Template Builder, or fetch the template through the Content API and review the `types` object returned for the `ContentSid`.\n* Add validation to your application so requests sent through Conversations use only the template types documented as supported by Conversations. Keep a fallback template in a supported type such as `twilio/text` or `twilio/card` when you need to send through Conversations. This recommendation is based on the supported Conversations type list and the Content API template schema.",
    "description": "This error occurs when you send a Content Template through Conversations and the template uses a content type that Conversations does not support. Conversations currently supports `twilio/text`, `twilio/media`, `twilio/location`, `twilio/quick-reply`, `twilio/call-to-action`, `twilio/list-picker`, and `twilio/card`.",
    "date_created": "2024-10-04T11:26:05Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 50600,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invite SID not provided",
    "secondary_message": "Request does not contain required Invite SID parameter.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Request does not contain required Invite SID parameter.\n\n### Possible solutions\n\n- Confirm a valid Invite SID is being passed in request.\n",
    "causes": "* Request does not contain required Invite SID parameter.",
    "solutions": "* Confirm a valid Invite SID is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:54Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50601,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Programmable Chat: Invite not found",
    "secondary_message": "Specified Invite does not exist.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Specified Invite does not exist.\n\n### Possible solutions\n\n- Confirm a valid Invite is being passed in request.\n",
    "causes": "* Specified Invite does not exist.",
    "solutions": "* Confirm a valid Invite is being passed in request.",
    "description": "",
    "date_created": "2016-03-31T17:14:54Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Programmable Chat: Cannot decline invite when already channel member.",
    "secondary_message": "Specified user is already member of this channel so his invitation is not present.",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nSpecified user is already member of this channel so his invitation is not present.\n\n### Possible causes\n\nUser was added directly to the channel and his invite was removed so he can't decline it.\n\n### Possible solutions\n\nUser shouldn't decline invite if he was already added to channel.\n",
    "causes": "User was added directly to the channel and his invite was removed so he can't decline it.",
    "solutions": "User shouldn't decline invite if he was already added to channel.",
    "description": "Specified user is already member of this channel so his invitation is not present.",
    "date_created": "2019-11-21T11:27:40Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50610,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Address configuration deleted",
    "secondary_message": "Address configuration was deleted which affects auto-create functionality",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAddress configuration was deleted which affects auto-create functionality\n\n### Possible causes\n\nThe Twilio phone number associated with the address configuration was either released or ported out\n\n### Possible solutions\n",
    "causes": "The Twilio phone number associated with the address configuration was either released or ported out",
    "solutions": "",
    "description": "Address configuration was deleted which affects auto-create functionality",
    "date_created": "2022-02-22T14:49:23Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50611,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Address data cleaned up",
    "secondary_message": "Address data has been cleaned up which enables usage of the address in other accounts",
    "product": "Programmable Chat",
    "products_used": [
      "chat"
    ],
    "docs": "\n## Description\n\nAddress data has been cleaned up which enables usage of the address in other accounts\n\n### Possible causes\n\nThe Twilio phone number was either released or ported out\n\n### Possible solutions\n",
    "causes": "The Twilio phone number was either released or ported out",
    "solutions": "",
    "description": "Address data has been cleaned up which enables usage of the address in other accounts",
    "date_created": "2025-04-10T23:00:58Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50700,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Virtual Agent provider is invalid.",
    "secondary_message": "Provided Virtual Agent provider doesn't match the list of available providers for conversations.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nProvided Virtual Agent provider doesn't match the list of available providers for conversations.\n\n### Possible causes\n\nProvided Virtual Agent provider doesn't match the list of available providers for conversations or has different case\n\n### Possible solutions\n\n- Check list of available Virtual Agent providers in Conversations documentation. Please note that values are case sensitive.\n",
    "causes": "Provided Virtual Agent provider doesn't match the list of available providers for conversations or has different case",
    "solutions": "* Check list of available Virtual Agent providers in Conversations documentation. Please note that values are case sensitive.",
    "description": "Provided Virtual Agent provider doesn't match the list of available providers for conversations.",
    "date_created": "2023-10-11T17:57:35Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50701,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Only one Virtual Agent participant is allowed per conversation.",
    "secondary_message": "Only one Virtual Agent participant is allowed per conversation.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOnly one Virtual Agent participant is allowed per conversation.\n\n### Possible causes\n\nThere is already a Virtual Agent participant in the conversation.\n\n### Possible solutions\n\n- Remove existing Virtual Agent participant from the conversation before adding new one.\n",
    "causes": "There is already a Virtual Agent participant in the conversation.",
    "solutions": "* Remove existing Virtual Agent participant from the conversation before adding new one.",
    "description": "Only one Virtual Agent participant is allowed per conversation.",
    "date_created": "2023-10-11T17:58:23Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50702,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Verify Agent participant must not have identity or address fields",
    "secondary_message": "Verify Agent participant should not have identity, user address, proxy address, projected address.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you create a Verify Agent participant and include participant identifier or messaging address fields that are used for chat, SMS, WhatsApp, or Group MMS participants. For this participant type, send only `ChatbotConfiguration.*` fields.\n\n### Possible causes\n\n- Your request includes `identity`. Use `identity` only for participants who communicate through the Conversations SDK. Verify Agent participants accept only `ChatbotConfiguration.*` fields.\n- Your request includes `messagingBinding.address` or `messagingBinding.proxyAddress`. Use these fields only for non-chat participants such as SMS or WhatsApp participants.\n- Your request includes `messagingBinding.projectedAddress`. Use this field only for the Group MMS participant pattern that pairs `identity` with a projected address.\n\n### Possible solutions\n\n- Remove `identity`, `messagingBinding.address`, `messagingBinding.proxyAddress`, and `messagingBinding.projectedAddress` from the request when you create a Verify Agent participant.\n- Include only `ChatbotConfiguration.*` fields in the participant payload for a Verify Agent participant.\n- If you need a standard Conversation participant instead, use the correct fields for that participant type. Use `identity` for a chat participant. Use `messagingBinding.address` with `messagingBinding.proxyAddress` for an SMS or WhatsApp participant. Use `messagingBinding.projectedAddress` only for the Group MMS participant pattern.\n\n#### Additional resources\n\n- [Conversation Participant resource](/docs/conversations-classic/api/conversation-participant-resource)\n- [Working with Conversations](/docs/conversations-classic/working-with-conversations)\n- [Conversations webhooks](/docs/conversations-classic/conversations-webhooks)\n",
    "causes": "* Your request includes `identity`. Use `identity` only for participants who communicate through the Conversations SDK. Verify Agent participants accept only `ChatbotConfiguration.*` fields.\n* Your request includes `messagingBinding.address` or `messagingBinding.proxyAddress`. Use these fields only for non-chat participants such as SMS or WhatsApp participants.\n* Your request includes `messagingBinding.projectedAddress`. Use this field only for the Group MMS participant pattern that pairs `identity` with a projected address.",
    "solutions": "* Remove `identity`, `messagingBinding.address`, `messagingBinding.proxyAddress`, and `messagingBinding.projectedAddress` from the request when you create a Verify Agent participant.\n* Include only `ChatbotConfiguration.*` fields in the participant payload for a Verify Agent participant.\n* If you need a standard Conversation participant instead, use the correct fields for that participant type. Use `identity` for a chat participant. Use `messagingBinding.address` with `messagingBinding.proxyAddress` for an SMS or WhatsApp participant. Use `messagingBinding.projectedAddress` only for the Group MMS participant pattern.",
    "description": "This error occurs when you create a Verify Agent participant and include participant identifier or messaging address fields that are used for chat, SMS, WhatsApp, or Group MMS participants. For this participant type, send only `ChatbotConfiguration.*` fields.",
    "date_created": "2023-10-11T17:59:15Z",
    "last_updated": "2026-05-05T13:40:20-04:00"
  },
  {
    "code": 50703,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "DialogflowCX provider must contain module sid and addon sid.",
    "secondary_message": "DialogflowCX provider must contain module sid and addon sid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nDialogflowCX provider must contain module sid and addon sid.\n\n### Possible causes\n\nEither ChatbotConfiguration.ModuleSid or ChatbotConfiguration.ModuleSid are not specified for DialogflowCX Virtual Agent participant.\n\n### Possible solutions\n\n- If you try to create DialogflowCX provider, you must specify ChatbotConfiguration.ModuleSid and ChatbotConfiguration.ModuleSid.\n",
    "causes": "Either ChatbotConfiguration.ModuleSid or ChatbotConfiguration.ModuleSid are not specified for DialogflowCX Virtual Agent participant.",
    "solutions": "* If you try to create DialogflowCX provider, you must specify ChatbotConfiguration.ModuleSid and ChatbotConfiguration.ModuleSid.",
    "description": "DialogflowCX provider must contain module sid and addon sid.",
    "date_created": "2023-10-11T18:00:18Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50704,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Provided addon sid should have prefix XB.",
    "secondary_message": "Provided addon sid should have prefix XB.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nProvided addon sid should have prefix XB.\n\n### Possible causes\n\nYou are trying to specify different field value for ChatbotConfiguration.AddonSid.\n\n### Possible solutions\n\n- Double check and fix value for ChatbotConfiguration.AddonSid. It should start with XB prefix.\n",
    "causes": "You are trying to specify different field value for ChatbotConfiguration.AddonSid.",
    "solutions": "* Double check and fix value for ChatbotConfiguration.AddonSid. It should start with XB prefix.",
    "description": "Provided addon sid should have prefix XB.",
    "date_created": "2023-10-11T18:01:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50705,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Provided module sid should have prefix XE.",
    "secondary_message": "Provided module sid should have prefix XE.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nProvided module sid should have prefix XE.\n\n### Possible causes\n\nYou are trying to specify a different field value for ChatbotConfiguration.ModuleSid.\n\n### Possible solutions\n\n- Double check and fix value for ChatbotConfiguration.ModuleSid. It should start with XE prefix.\n",
    "causes": "You are trying to specify a different field value for ChatbotConfiguration.ModuleSid.",
    "solutions": "* Double check and fix value for ChatbotConfiguration.ModuleSid. It should start with XE prefix.",
    "description": "Provided module sid should have prefix XE.",
    "date_created": "2023-10-11T18:02:28Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50706,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Updating Virtual Agent participant information is not allowed.",
    "secondary_message": "Updating Virtual Agent participant information is not allowed.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUpdating Virtual Agent participant information is not allowed.\n\n### Possible causes\n\nYou are trying to edit Virtual Agent participant information.\n\n### Possible solutions\n\n- If you want to change any fields of Virtual Agent participant you should delete it and create new one.\n",
    "causes": "You are trying to edit Virtual Agent participant information.",
    "solutions": "* If you want to change any fields of Virtual Agent participant you should delete it and create new one.",
    "description": "Updating Virtual Agent participant information is not allowed.",
    "date_created": "2023-10-11T18:03:48Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50707,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Virtual Agent participant creation is not available for your account.",
    "secondary_message": "Virtual Agent participant creation is not available for your account.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nVirtual Agent participant creation is not available for your account.\n\n### Possible causes\n\nYou are trying to create virtual agent participant for account that is not allowed to use it.\n\n### Possible solutions\n\n- Please contact Twilio support to enable Virtual Agent participant creation for your account.\n",
    "causes": "You are trying to create virtual agent participant for account that is not allowed to use it.",
    "solutions": "* Please contact Twilio support to enable Virtual Agent participant creation for your account.",
    "description": "Virtual Agent participant creation is not available for your account.",
    "date_created": "2023-10-11T18:05:05Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50708,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "ChatbotConfiguration.FriendlyName is required parameter.",
    "secondary_message": "ChatbotConfiguration.FriendlyName is required parameter.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nChatbotConfiguration.FriendlyName is required parameter.\n\n### Possible causes\n\nYou are trying to create Virtual Agent participant without ChatbotConfiguration.FriendlyName parameter.\n\n### Possible solutions\n\n- Specify ChatbotConfiguration.FriendlyName parameter.\n",
    "causes": "You are trying to create Virtual Agent participant without ChatbotConfiguration.FriendlyName parameter.",
    "solutions": "* Specify ChatbotConfiguration.FriendlyName parameter.",
    "description": "ChatbotConfiguration.FriendlyName is required parameter.",
    "date_created": "2023-10-11T18:05:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50709,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "ChatbotConfiguration.FriendlyName is invalid.",
    "secondary_message": "ChatbotConfiguration.FriendlyName is invalid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nChatbotConfiguration.FriendlyName is invalid.\n\n### Possible causes\n\nYou are trying to create Virtual Agent participant with ChatbotConfiguration.FriendlyName which is longer than 256 characters.\n\n### Possible solutions\n\n- Update ChatbotConfiguration.FriendlyName parameter according to provided validation rules.\n",
    "causes": "You are trying to create Virtual Agent participant with ChatbotConfiguration.FriendlyName which is longer than 256 characters.",
    "solutions": "* Update ChatbotConfiguration.FriendlyName parameter according to provided validation rules.",
    "description": "ChatbotConfiguration.FriendlyName is invalid.",
    "date_created": "2023-10-11T18:06:37Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50710,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "ChatbotConfiguration.InitialContext is invalid.",
    "secondary_message": "ChatbotConfiguration.InitialContext is invalid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nChatbotConfiguration.InitialContext is invalid.\n\n### Possible causes\n\nYou are trying to create Virtual Agent participant with ChatbotConfiguration.InitialContext which is longer than 32768 characters.\n\n### Possible solutions\n\n- Update ChatbotConfiguration.InitialContext parameter according to provided validation rules.\n",
    "causes": "You are trying to create Virtual Agent participant with ChatbotConfiguration.InitialContext which is longer than 32768 characters.",
    "solutions": "* Update ChatbotConfiguration.InitialContext parameter according to provided validation rules.",
    "description": "ChatbotConfiguration.InitialContext is invalid.",
    "date_created": "2023-10-11T18:07:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50711,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "ChatbotConfiguration.FriendlyName is reserved.",
    "secondary_message": "ChatbotConfiguration.FriendlyName is reserved.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nChatbotConfiguration.FriendlyName is reserved.\n\n### Possible causes\n\nYou are trying to create Virtual Agent participant with ChatbotConfiguration.FriendlyName as \"system\".\n\n### Possible solutions\n\n- \"system\" is a reserved name for Virtual Agent participant. Please use another name.\n",
    "causes": "You are trying to create Virtual Agent participant with ChatbotConfiguration.FriendlyName as \"system\".",
    "solutions": "* \"system\" is a reserved name for Virtual Agent participant. Please use another name.",
    "description": "ChatbotConfiguration.FriendlyName is reserved.",
    "date_created": "2023-10-11T18:08:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50731,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Conversation Export failed",
    "secondary_message": "Conversation Export failed",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nConversations: Conversation Export failed\n\n### Possible causes\n\n- Conversation has no messages.\n- Conversation was deleted during the export.\n- Internal error happened while fetching messages for snapshot.\n\n### Possible solutions\n\n- Make sure that conversation is not empty.\n- Make sure that conversation exists.\n- Retry transcript generation.\n",
    "causes": "* Conversation has no messages.\n* Conversation was deleted during the export.\n* Internal error happened while fetching messages for snapshot.",
    "solutions": "* Make sure that conversation is not empty.\n* Make sure that conversation exists.\n* Retry transcript generation.",
    "description": "Conversations: Conversation Export failed",
    "date_created": "2025-04-16T16:09:28Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 50732,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Transcript creation failed",
    "secondary_message": "Transcript creation failed",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nConversations: Transcript creation failed\n\n### Possible causes\n\n- Intelligence service does not exist.\n- Internal error happened when request to generate a transcript was created.\n\n### Possible solutions\n\n- Make sure that intelligence service exists.\n- Retry transcript generation.\n",
    "causes": "* Intelligence service does not exist.\n* Internal error happened when request to generate a transcript was created.",
    "solutions": "* Make sure that intelligence service exists.\n* Retry transcript generation.",
    "description": "Conversations: Transcript creation failed",
    "date_created": "2025-04-16T16:10:47Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 51001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client Connection: Connections resource limit exceeded",
    "secondary_message": "error",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour application exceeded the allowed limit for Client connection resources. This error can occur when your application creates too many concurrent Client connections or opens connections too quickly for the current account limits.\n\n### Possible causes\n\n- Your application created more concurrent Client connections than your account allows.\n- Your application attempted to establish Client connections at a rate that exceeded the allowed limit.\n- A client reconnect loop or other application behavior caused an unexpected spike in connection attempts.\n- Legitimate traffic growth exceeded the capacity currently configured for your account.\n\n### Possible solutions\n\n- Review your application logic to make sure it does not repeatedly create or reconnect Client connections unnecessarily.\n- Reduce connection churn by reusing existing connections where possible and by handling reconnect behavior carefully.\n- Check whether the traffic pattern is expected and matches your application's intended usage.\n- If the traffic is expected and you need higher limits, contact Support to discuss increasing your account capacity.\n\n#### Additional resources\n\n- [Voice JavaScript SDK overview](/docs/voice/sdks/javascript)\n- [Voice SDKs](/docs/voice/sdks)\n",
    "causes": "* Your application created more concurrent Client connections than your account allows.\n* Your application attempted to establish Client connections at a rate that exceeded the allowed limit.\n* A client reconnect loop or other application behavior caused an unexpected spike in connection attempts.\n* Legitimate traffic growth exceeded the capacity currently configured for your account.",
    "solutions": "* Review your application logic to make sure it does not repeatedly create or reconnect Client connections unnecessarily.\n* Reduce connection churn by reusing existing connections where possible and by handling reconnect behavior carefully.\n* Check whether the traffic pattern is expected and matches your application's intended usage.\n* If the traffic is expected and you need higher limits, contact Support to discuss increasing your account capacity.",
    "description": "Your application exceeded the allowed limit for Client connection resources. This error can occur when your application creates too many concurrent Client connections or opens connections too quickly for the current account limits.",
    "date_created": "2016-03-31T17:14:54Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client Connection: Request rate limit exceeded",
    "secondary_message": "error",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio rejected the client connection request because your application exceeded the allowed request rate. This error usually appears when a client or group of clients sends connection or initialization requests too quickly.\n\n### Possible causes\n\n- Your application is repeatedly creating new client connections in a short period of time.\n- A reconnect loop is causing clients to retry immediately after a failed or interrupted connection.\n- Multiple browser tabs, devices, or sessions are connecting at the same time for the same user or account.\n- A deployment issue or client-side bug is generating unexpected traffic spikes.\n- Load testing or scripted traffic exceeded the default request rate for client connections.\n\n### Possible solutions\n\n- Review your client connection logic and reduce how often your application creates new connections.\n- Add retry backoff so clients do not reconnect immediately and repeatedly after a connection failure.\n- Reuse existing sessions where possible instead of creating a new client connection for every action or page load.\n- Check for duplicate initialization in your application, especially in browser refresh flows, mobile app lifecycle events, or background retries.\n- Confirm that the increased request volume is expected and not caused by a bug or runaway process.\n- If the traffic pattern is valid and you need a higher limit, contact Support through the Help Center.\n\n#### Additional resources\n\n- [Twilio Chat documentation](/docs/chat)\n- [Twilio Sync documentation](/docs/sync)\n",
    "causes": "* Your application is repeatedly creating new client connections in a short period of time.\n* A reconnect loop is causing clients to retry immediately after a failed or interrupted connection.\n* Multiple browser tabs, devices, or sessions are connecting at the same time for the same user or account.\n* A deployment issue or client-side bug is generating unexpected traffic spikes.\n* Load testing or scripted traffic exceeded the default request rate for client connections.",
    "solutions": "* Review your client connection logic and reduce how often your application creates new connections.\n* Add retry backoff so clients do not reconnect immediately and repeatedly after a connection failure.\n* Reuse existing sessions where possible instead of creating a new client connection for every action or page load.\n* Check for duplicate initialization in your application, especially in browser refresh flows, mobile app lifecycle events, or background retries.\n* Confirm that the increased request volume is expected and not caused by a bug or runaway process.\n* If the traffic pattern is valid and you need a higher limit, contact Support through the Help Center.",
    "description": "Twilio rejected the client connection request because your application exceeded the allowed request rate. This error usually appears when a client or group of clients sends connection or initialization requests too quickly.",
    "date_created": "2016-03-31T17:14:54Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client Connection: identity too long",
    "secondary_message": "error",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe `identity` value in your Access Token exceeds the maximum length allowed for a Twilio client connection. Twilio rejects the connection request when the token contains an `identity` that is too long.\n\n### Possible causes\n\n- Your application generates an Access Token with an `identity` string that exceeds the product limit.\n- Your application passes unbounded user input, such as an email address, UUID collection, or concatenated account data, into the `identity` field.\n- Your token generation logic appends environment, tenant, or session metadata to `identity`, causing it to exceed the allowed length.\n\n### Possible solutions\n\n- Shorten the `identity` value you include in the Access Token.\n- Use a stable, compact identifier for each user instead of a long descriptive string.\n- Update your token generation logic to validate the length of `identity` before creating the Access Token.\n- If you need to associate additional user metadata with the client, store that data in your application instead of embedding it in `identity`.\n- Review the Access Token documentation for your Twilio SDK product and confirm that your generated token matches the required client identity format.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Conversations documentation](/docs/conversations)\n- [Sync documentation](/docs/sync)\n",
    "causes": "* Your application generates an Access Token with an `identity` string that exceeds the product limit.\n* Your application passes unbounded user input, such as an email address, UUID collection, or concatenated account data, into the `identity` field.\n* Your token generation logic appends environment, tenant, or session metadata to `identity`, causing it to exceed the allowed length.",
    "solutions": "* Shorten the `identity` value you include in the Access Token.\n* Use a stable, compact identifier for each user instead of a long descriptive string.\n* Update your token generation logic to validate the length of `identity` before creating the Access Token.\n* If you need to associate additional user metadata with the client, store that data in your application instead of embedding it in `identity`.\n* Review the Access Token documentation for your Twilio SDK product and confirm that your generated token matches the required client identity format.",
    "description": "The `identity` value in your Access Token exceeds the maximum length allowed for a Twilio client connection. Twilio rejects the connection request when the token contains an `identity` that is too long.",
    "date_created": "2016-03-31T17:14:55Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client Connection: endpoint_id too long",
    "secondary_message": "error",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio rejected the client connection because the `endpoint_id` in the Access Token is longer than the supported maximum length. Reduce the length of the `endpoint_id` value and generate a new token before connecting the client.\n\n### Possible causes\n\n- Your application generates an Access Token with an `endpoint_id` value that exceeds the allowed length.\n- Your `endpoint_id` includes extra prefixes, identifiers, or concatenated values that make the final string too long.\n- Your application builds the `endpoint_id` dynamically and does not validate its length before creating the token.\n\n### Possible solutions\n\n- Shorten the `endpoint_id` value in the Access Token and try the connection again.\n- Update your token generation logic to validate the `endpoint_id` length before issuing the token.\n- Remove unnecessary dynamic data from the `endpoint_id`, such as long environment names, session values, or repeated prefixes.\n- Review your Voice SDK token generation flow to make sure the client identity and connection parameters stay within supported limits.\n\n#### Additional resources\n\n- [Voice SDKs overview](/docs/voice/sdks)\n- [Access Tokens](/docs/iam/access-tokens)\n- [Programmable Voice documentation](/docs/voice)\n",
    "causes": "* Your application generates an Access Token with an `endpoint_id` value that exceeds the allowed length.\n* Your `endpoint_id` includes extra prefixes, identifiers, or concatenated values that make the final string too long.\n* Your application builds the `endpoint_id` dynamically and does not validate its length before creating the token.",
    "solutions": "* Shorten the `endpoint_id` value in the Access Token and try the connection again.\n* Update your token generation logic to validate the `endpoint_id` length before issuing the token.\n* Remove unnecessary dynamic data from the `endpoint_id`, such as long environment names, session values, or repeated prefixes.\n* Review your Voice SDK token generation flow to make sure the client identity and connection parameters stay within supported limits.",
    "description": "Twilio rejected the client connection because the `endpoint_id` in the Access Token is longer than the supported maximum length. Reduce the length of the `endpoint_id` value and generate a new token before connecting the client.",
    "date_created": "2016-03-31T17:14:55Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51005,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client Connection: Command or keepalive acknowledgement not received",
    "secondary_message": "warning",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio dropped the client connection because the client did not acknowledge a command or a keepalive message within the expected time. This usually indicates an interrupted or unstable network connection between the client SDK and Twilio.\n\n### Possible causes\n\n- The device lost network connectivity or switched between networks while the connection was active.\n- High latency or packet loss prevented the client from responding to Twilio in time.\n- The application was suspended in the background and could not process keepalive messages.\n- A proxy, firewall, or other network control interrupted the persistent connection used by the SDK.\n- The client application was overloaded or blocked and could not send the required acknowledgement.\n\n### Possible solutions\n\n- Check whether the device has a stable internet connection and test again on a reliable network.\n- Make sure your application does not block the main thread or otherwise prevent the SDK from processing incoming messages.\n- If your app runs on mobile devices, review background execution behavior to confirm the SDK can maintain or restore connectivity as expected.\n- Verify that firewalls, proxies, or network security tools allow persistent client connections.\n- Let the Twilio SDK reconnect automatically when possible and handle reconnection events in your application so the user can recover gracefully.\n- If this error happens frequently, capture client-side network logs and SDK logs to identify connectivity interruptions or timeouts.\n\n#### Additional resources\n\n- [Twilio Chat documentation](/docs/chat)\n- [Twilio Sync documentation](/docs/sync)\n",
    "causes": "* The device lost network connectivity or switched between networks while the connection was active.\n* High latency or packet loss prevented the client from responding to Twilio in time.\n* The application was suspended in the background and could not process keepalive messages.\n* A proxy, firewall, or other network control interrupted the persistent connection used by the SDK.\n* The client application was overloaded or blocked and could not send the required acknowledgement.",
    "solutions": "* Check whether the device has a stable internet connection and test again on a reliable network.\n* Make sure your application does not block the main thread or otherwise prevent the SDK from processing incoming messages.\n* If your app runs on mobile devices, review background execution behavior to confirm the SDK can maintain or restore connectivity as expected.\n* Verify that firewalls, proxies, or network security tools allow persistent client connections.\n* Let the Twilio SDK reconnect automatically when possible and handle reconnection events in your application so the user can recover gracefully.\n* If this error happens frequently, capture client-side network logs and SDK logs to identify connectivity interruptions or timeouts.",
    "description": "Twilio dropped the client connection because the client did not acknowledge a command or a keepalive message within the expected time. This usually indicates an interrupted or unstable network connection between the client SDK and Twilio.",
    "date_created": "2016-03-31T17:14:55Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51006,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client Connection: Connection expired",
    "secondary_message": "warning",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe client connection expired because the Access Token used to authenticate the client is no longer valid. Twilio ends the connection when the token reaches the expiration time defined by the `exp` claim.\n\n### Possible causes\n\n- The Access Token expired before the client finished connecting or while the client was connected.\n- Your application issued a token with an expiration time that is too short for the client session.\n- The client did not refresh the Access Token before the current token expired.\n- The device clock or your token generation logic caused the `exp` value to be set earlier than intended.\n\n### Possible solutions\n\n- Generate a new Access Token and reconnect the client.\n- Refresh the Access Token before it expires, especially for long-lived client sessions.\n- Review your token generation logic and confirm the `exp` claim allows enough time for the expected session length.\n- If your app maintains persistent connections, implement token renewal in the client before expiration.\n- Verify that the system time on the client device and the server generating tokens is accurate.\n\n#### Additional resources\n\n- [Access Tokens overview](/docs/iam/access-tokens)\n- [Conversations SDKs and client initialization](/docs/conversations)\n- [Programmable Chat documentation](/docs/chat)\n",
    "causes": "* The Access Token expired before the client finished connecting or while the client was connected.\n* Your application issued a token with an expiration time that is too short for the client session.\n* The client did not refresh the Access Token before the current token expired.\n* The device clock or your token generation logic caused the `exp` value to be set earlier than intended.",
    "solutions": "* Generate a new Access Token and reconnect the client.\n* Refresh the Access Token before it expires, especially for long-lived client sessions.\n* Review your token generation logic and confirm the `exp` claim allows enough time for the expected session length.\n* If your app maintains persistent connections, implement token renewal in the client before expiration.\n* Verify that the system time on the client device and the server generating tokens is accurate.",
    "description": "The client connection expired because the Access Token used to authenticate the client is no longer valid. Twilio ends the connection when the token reaches the expiration time defined by the `exp` claim.",
    "date_created": "2016-03-31T17:14:56Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Client Connection: Token authentication is rejected",
    "secondary_message": "error",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your SDK client tries to connect with an Access Token that Twilio cannot authenticate. Access Tokens are short-lived JWTs that you generate on your server for Twilio client-side SDKs. They must be signed correctly and include the required `identity` and product-specific grants for the SDK you are using.\n\n### Possible causes\n\n- The Access Token has expired or is not yet valid because the `exp` or `nbf` claim is outside the allowed time window. Access Tokens are short-lived and can be configured for up to 24 hours.\n- The token was modified after it was generated, or it was signed with the wrong API Key Secret, which prevents Twilio from validating the JWT signature.\n- The `grants` claim is missing, malformed, or does not include the product-specific grant required for the SDK connection you are attempting.\n- The token is missing required fields inside the grant. For example, Conversations requires a `ChatGrant` with a Conversation Service SID, Sync requires a `SyncGrant` with `serviceSid`, and Voice requires a `VoiceGrant` with `outgoingApplicationSid`.\n- The token does not include the required `identity` grant used to associate the token with a specific user.\n- If you are connecting to Video, the token was created with an API Key outside the US1 region, or it does not include a `VideoGrant`.\n\n### Possible solutions\n\n- Generate a new Access Token on your server and send a fresh token to the client instead of reusing an expired or cached token. Use a Twilio server-side helper library to build the token and grants.\n- Decode the token before you send it to the client and verify that `identity`, `grants`, `exp`, and `nbf` are present and correct.\n- Make sure the grant matches the SDK you are initializing. Use `ChatGrant` for Conversations, `SyncGrant` for Sync, `VoiceGrant` for Voice, and `VideoGrant` for Video.\n- Confirm that required grant fields are set correctly. Provide the Conversation Service SID in `ChatGrant`, the Sync Service SID in `SyncGrant`, and a valid TwiML App SID in `VoiceGrant.outgoingApplicationSid`.\n- If you are connecting to Video, create the token with an API Key in the US1 region and include a `VideoGrant`.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [User Identity & Access Tokens for Programmable Video](/docs/video/tutorials/user-identity-access-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n",
    "causes": "* The Access Token has expired or is not yet valid because the `exp` or `nbf` claim is outside the allowed time window. Access Tokens are short-lived and can be configured for up to 24 hours.\n* The token was modified after it was generated, or it was signed with the wrong API Key Secret, which prevents Twilio from validating the JWT signature.\n* The `grants` claim is missing, malformed, or does not include the product-specific grant required for the SDK connection you are attempting.\n* The token is missing required fields inside the grant. For example, Conversations requires a `ChatGrant` with a Conversation Service SID, Sync requires a `SyncGrant` with `serviceSid`, and Voice requires a `VoiceGrant` with `outgoingApplicationSid`.\n* The token does not include the required `identity` grant used to associate the token with a specific user.\n* If you are connecting to Video, the token was created with an API Key outside the US1 region, or it does not include a `VideoGrant`.",
    "solutions": "* Generate a new Access Token on your server and send a fresh token to the client instead of reusing an expired or cached token. Use a Twilio server-side helper library to build the token and grants.\n* Decode the token before you send it to the client and verify that `identity`, `grants`, `exp`, and `nbf` are present and correct.\n* Make sure the grant matches the SDK you are initializing. Use `ChatGrant` for Conversations, `SyncGrant` for Sync, `VoiceGrant` for Voice, and `VideoGrant` for Video.\n* Confirm that required grant fields are set correctly. Provide the Conversation Service SID in `ChatGrant`, the Sync Service SID in `SyncGrant`, and a valid TwiML App SID in `VoiceGrant.outgoingApplicationSid`.\n* If you are connecting to Video, create the token with an API Key in the US1 region and include a `VideoGrant`.",
    "description": "This error occurs when your SDK client tries to connect with an Access Token that Twilio cannot authenticate. Access Tokens are short-lived JWTs that you generate on your server for Twilio client-side SDKs. They must be signed correctly and include the required `identity` and product-specific grants for the SDK you are using.",
    "date_created": "2016-04-28T12:08:18Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 51101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Service instance not found",
    "secondary_message": "Service instance specified in the request does not exist.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock could not find the Service instance identified in your request. This error usually means the Service SID is missing, malformed, or refers to a resource that does not exist in the target account or region.\n\n### Possible causes\n\n- The request includes an invalid or mistyped Service SID.\n- The Service instance was deleted and is no longer available.\n- The request is being sent with credentials for a different Twilio account than the one that owns the Service instance.\n- The client or server is configured to use the wrong environment, region, or Service identifier.\n- The request is targeting a Twilio SDK product that requires a valid underlying Service resource, such as Chat, Sync, or Notify.\n\n### Possible solutions\n\n- Verify that the Service SID in your request matches an existing Service instance in your Twilio Console or application configuration.\n- Check for typos, truncated values, or placeholder text in any parameter that identifies the Service.\n- Confirm that you are using the correct Account SID, API Key, or Auth Token for the account that owns the Service instance.\n- If the Service was deleted, create a new Service instance and update your application to use the new SID.\n- Review your environment-specific configuration to make sure development, staging, and production credentials point to the correct Twilio resources.\n- If you are using a Twilio client SDK, confirm that the access token and client configuration reference the intended Service and account.\n\n#### Additional resources\n\n- [Twilio IAM documentation](/docs/iam)\n- [Twilio Sync documentation](/docs/sync)\n- [Twilio Chat documentation](/docs/chat)\n",
    "causes": "* The request includes an invalid or mistyped Service SID.\n* The Service instance was deleted and is no longer available.\n* The request is being sent with credentials for a different Twilio account than the one that owns the Service instance.\n* The client or server is configured to use the wrong environment, region, or Service identifier.\n* The request is targeting a Twilio SDK product that requires a valid underlying Service resource, such as Chat, Sync, or Notify.",
    "solutions": "* Verify that the Service SID in your request matches an existing Service instance in your Twilio Console or application configuration.\n* Check for typos, truncated values, or placeholder text in any parameter that identifies the Service.\n* Confirm that you are using the correct Account SID, API Key, or Auth Token for the account that owns the Service instance.\n* If the Service was deleted, create a new Service instance and update your application to use the new SID.\n* Review your environment-specific configuration to make sure development, staging, and production credentials point to the correct Twilio resources.\n* If you are using a Twilio client SDK, confirm that the access token and client configuration reference the intended Service and account.",
    "description": "Twilsock could not find the Service instance identified in your request. This error usually means the Service SID is missing, malformed, or refers to a resource that does not exist in the target account or region.",
    "date_created": "2019-03-27T11:22:53Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51102,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Service instance SID not specified",
    "secondary_message": "Service instance SID is not specified and couln't be generated.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock could not complete the request because no Service Instance SID was provided and Twilio could not generate one automatically. This usually indicates that the SDK or API request is missing the identifier for the service instance your application is trying to use.\n\n### Possible causes\n\n- Your application did not include a Service Instance SID in the request or client configuration.\n- The Service Instance SID value is empty, null, or malformed.\n- Your application is using credentials or configuration for Programmable Chat, Sync, or Notify that do not match the intended service instance.\n- An environment variable or server-side configuration value that should supply the Service Instance SID is missing.\n\n### Possible solutions\n\n- Confirm that your application passes a valid Service Instance SID when initializing the client or making the request.\n- Verify that the SID matches the correct Twilio service instance for your account and environment.\n- Check your server-side configuration, environment variables, and deployment settings to make sure the Service Instance SID is present and not empty.\n- If your application creates or selects service instances dynamically, review that logic to ensure it always returns a valid SID before the request is sent.\n- Regenerate your access token or client configuration if it was built with outdated or incomplete service settings.\n\n#### Additional resources\n\n- [Twilio Chat documentation](/docs/chat)\n- [Twilio Sync documentation](/docs/sync)\n- [Twilio Notify documentation](/docs/notify)\n",
    "causes": "* Your application did not include a Service Instance SID in the request or client configuration.\n* The Service Instance SID value is empty, null, or malformed.\n* Your application is using credentials or configuration for Programmable Chat, Sync, or Notify that do not match the intended service instance.\n* An environment variable or server-side configuration value that should supply the Service Instance SID is missing.",
    "solutions": "* Confirm that your application passes a valid Service Instance SID when initializing the client or making the request.\n* Verify that the SID matches the correct Twilio service instance for your account and environment.\n* Check your server-side configuration, environment variables, and deployment settings to make sure the Service Instance SID is present and not empty.\n* If your application creates or selects service instances dynamically, review that logic to ensure it always returns a valid SID before the request is sent.\n* Regenerate your access token or client configuration if it was built with outdated or incomplete service settings.",
    "description": "Twilsock could not complete the request because no Service Instance SID was provided and Twilio could not generate one automatically. This usually indicates that the SDK or API request is missing the identifier for the service instance your application is trying to use.",
    "date_created": "2019-03-27T11:39:20Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51103,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Token doesn't contain required grants section",
    "secondary_message": "No grants section is specified in the token and grants section is required.",
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nYou see this error when the Access Token used to authenticate the client does not include a `grants` object in the JWT payload. Twilio Access Tokens must include at least one grant, and the grant must match the Twilio product your client is using.\n\n### Possible causes\n- The JWT payload does not include a `grants` object.\n- Your backend generated an Access Token without adding any product grant before calling `toJwt()`.\n- Your Conversations token was created without a `ChatGrant`. Conversations tokens require a `ChatGrant`, and that grant must include your Conversation Service SID.\n- Your Sync token was created without a `SyncGrant`. Sync tokens require a `SyncGrant` with a `serviceSid` for your Sync Service.\n\n### Possible solutions\n- Regenerate the token on your server and confirm the JWT payload includes a valid `grants` object before you return it to the client.\n- Use a Twilio helper library to create the Access Token instead of assembling the JWT by hand.\n- If you are using Conversations, add a `ChatGrant` to the token and include the correct Conversation Service SID and `identity`.\n- If you are using Sync, add a `SyncGrant` to the token and include the correct Sync Service SID and `identity`.\n- Decode the token and inspect its structure before initializing the client. If you need to verify the JWT format, use a JWT debugger such as jwt.io.\n\n#### Additional resources\n- [Access Tokens](/docs/iam/access-tokens)\n- [Create Access Tokens for Conversations (classic)](/docs/conversations-classic/create-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n",
    "causes": "* The JWT payload does not include a `grants` object.\n* Your backend generated an Access Token without adding any product grant before calling `toJwt()`.\n* Your Conversations token was created without a `ChatGrant`. Conversations tokens require a `ChatGrant`, and that grant must include your Conversation Service SID.\n* Your Sync token was created without a `SyncGrant`. Sync tokens require a `SyncGrant` with a `serviceSid` for your Sync Service.",
    "solutions": "* Regenerate the token on your server and confirm the JWT payload includes a valid `grants` object before you return it to the client.\n* Use a Twilio helper library to create the Access Token instead of assembling the JWT by hand.\n* If you are using Conversations, add a `ChatGrant` to the token and include the correct Conversation Service SID and `identity`.\n* If you are using Sync, add a `SyncGrant` to the token and include the correct Sync Service SID and `identity`.\n* Decode the token and inspect its structure before initializing the client. If you need to verify the JWT format, use a JWT debugger such as jwt.io.",
    "description": "You see this error when the Access Token used to authenticate the client does not include a `grants` object in the JWT payload. Twilio Access Tokens must include at least one grant, and the grant must match the Twilio product your client is using.",
    "date_created": "2019-03-27T11:50:31Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 51104,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Token doesn't contain service instance",
    "secondary_message": "The token doesn't have a service instance.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock could not authenticate the access token because the token does not include the required service instance information. This usually means the token was generated with missing or incorrect grant data for the Twilio SDK product you are trying to use.\n\n### Possible causes\n\n- Your application generated an access token without the product-specific grant required by the client SDK.\n- The grant in the token is missing the service instance identifier expected by Twilsock.\n- Your application is using a token created for a different Twilio SDK product or environment.\n- The token payload was modified or encoded incorrectly before it was sent to the client.\n\n### Possible solutions\n\n- Generate a new access token on your server and include the correct grant for the SDK product you are using.\n- Verify that the token includes the required service instance information for your Chat, Conversations, Sync, or Notify client configuration.\n- Make sure the client is using a token issued for the same Twilio Account and service configuration as your application.\n- Validate the token structure during development before returning it to the client.\n- If you recently changed your token generation logic, compare the current token payload with a previously working token to confirm the required grant fields are present.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Identity and Access Management](/docs/iam)\n- [Conversations overview](/docs/conversations)\n",
    "causes": "* Your application generated an access token without the product-specific grant required by the client SDK.\n* The grant in the token is missing the service instance identifier expected by Twilsock.\n* Your application is using a token created for a different Twilio SDK product or environment.\n* The token payload was modified or encoded incorrectly before it was sent to the client.",
    "solutions": "* Generate a new access token on your server and include the correct grant for the SDK product you are using.\n* Verify that the token includes the required service instance information for your Chat, Conversations, Sync, or Notify client configuration.\n* Make sure the client is using a token issued for the same Twilio Account and service configuration as your application.\n* Validate the token structure during development before returning it to the client.\n* If you recently changed your token generation logic, compare the current token payload with a previously working token to confirm the required grant fields are present.",
    "description": "Twilsock could not authenticate the access token because the token does not include the required service instance information. This usually means the token was generated with missing or incorrect grant data for the Twilio SDK product you are trying to use.",
    "date_created": "2019-03-27T11:54:21Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51105,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Token doesn't contain identity",
    "secondary_message": "The token doesn't have an identity specified.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock rejected the Access Token because it does not include an identity. Twilio client SDKs that connect through Twilsock require an identity in the token so Twilio can associate the connection with a specific user.\n\n### Possible causes\n\n- The Access Token was created without an identity value.\n- The identity was added in the wrong place when generating the token.\n- Your application generated a token with a missing or empty identity.\n- Your token generation logic is using a server-side helper library incorrectly.\n- The client is sending an outdated or malformed token that does not include the expected identity claim.\n\n### Possible solutions\n\n- Generate a new Access Token that includes a valid identity for the user who is connecting.\n- Review your server-side token generation code and confirm you set the identity before returning the token to the client.\n- If you use a Twilio helper library, follow the Access Token examples for your SDK and verify the identity is present in the final token payload.\n- Decode the token during testing and confirm the identity is included before your client uses it.\n- If your application refreshes tokens, make sure the refreshed token also includes the same required identity.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Conversations overview](/docs/conversations)\n- [Sync overview](/docs/sync)\n",
    "causes": "* The Access Token was created without an identity value.\n* The identity was added in the wrong place when generating the token.\n* Your application generated a token with a missing or empty identity.\n* Your token generation logic is using a server-side helper library incorrectly.\n* The client is sending an outdated or malformed token that does not include the expected identity claim.",
    "solutions": "* Generate a new Access Token that includes a valid identity for the user who is connecting.\n* Review your server-side token generation code and confirm you set the identity before returning the token to the client.\n* If you use a Twilio helper library, follow the Access Token examples for your SDK and verify the identity is present in the final token payload.\n* Decode the token during testing and confirm the identity is included before your client uses it.\n* If your application refreshes tokens, make sure the refreshed token also includes the same required identity.",
    "description": "Twilsock rejected the Access Token because it does not include an identity. Twilio client SDKs that connect through Twilsock require an identity in the token so Twilio can associate the connection with a specific user.",
    "date_created": "2019-03-27T11:57:48Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Active product doesn't match with service instance product",
    "secondary_message": "Passed service instance belongs to another product.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your client connects with an active Twilio product context that does not match the service instance you provided. The service instance SID belongs to a different product, so Twilio rejects the request.\n\n### Possible causes\n\n- Your application is using a service instance SID created for a different Twilio product.\n- Your access token, SDK configuration, or client initialization points to one product while the service instance belongs to another.\n- You copied a service instance SID from another environment or project and used it with the wrong client configuration.\n- Your application mixes multiple Twilio SDKs or product configurations and passes the wrong service instance during setup.\n\n### Possible solutions\n\n- Verify that the service instance SID you pass belongs to the same Twilio product your client is using.\n- Check your client initialization and confirm that your access token, endpoint configuration, and service instance all reference the same product.\n- Review the service instance in Console or in your application configuration and replace any SID that was copied from another product or environment.\n- If you recently changed products or migrated your implementation, regenerate the correct configuration values and redeploy your application.\n- Test with a newly created service instance for the intended product to confirm the mismatch is resolved.\n\n#### Additional resources\n\n- [Conversations documentation](/docs/conversations)\n- [Sync documentation](/docs/sync)\n- [Access Tokens](/docs/iam/access-tokens)\n",
    "causes": "* Your application is using a service instance SID created for a different Twilio product.\n* Your access token, SDK configuration, or client initialization points to one product while the service instance belongs to another.\n* You copied a service instance SID from another environment or project and used it with the wrong client configuration.\n* Your application mixes multiple Twilio SDKs or product configurations and passes the wrong service instance during setup.",
    "solutions": "* Verify that the service instance SID you pass belongs to the same Twilio product your client is using.\n* Check your client initialization and confirm that your access token, endpoint configuration, and service instance all reference the same product.\n* Review the service instance in Console or in your application configuration and replace any SID that was copied from another product or environment.\n* If you recently changed products or migrated your implementation, regenerate the correct configuration values and redeploy your application.\n* Test with a newly created service instance for the intended product to confirm the mismatch is resolved.",
    "description": "This error occurs when your client connects with an active Twilio product context that does not match the service instance you provided. The service instance SID belongs to a different product, so Twilio rejects the request.",
    "date_created": "2019-03-27T12:09:36Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51107,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Service can't be used",
    "secondary_message": "Service can't be used",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when a client SDK tries to connect with an Access Token that points to a Twilsock-backed service instance that is not usable for that connection. Conversations and Sync tokens must include the correct service-specific grant and the correct service SID for the account that owns the service.\n\n### Possible causes\n\n- The Access Token references the wrong service instance.\n- The service instance exists but is not available for use.\n- The token was signed with credentials from a different account or subaccount than the one that owns the service instance.\n- For Conversations, the token does not include a `ChatGrant` with the correct Conversation Service SID.\n- For Sync, the token does not include a `SyncGrant` with the correct Sync Service SID.\n\n### Possible solutions\n\n- Decode the Access Token and verify the `grants` section includes the correct service-specific grant for your SDK.\n- For Conversations, generate the token with a `ChatGrant` that uses the correct Conversation Service SID.\n- For Sync, generate the token with a `SyncGrant` that uses the correct Sync Service SID.\n- Regenerate the token with the correct Account SID, API Key SID, API Secret, and `identity`.\n- Make sure the service instance belongs to the same Twilio account as the credentials used to create the token.\n- If the service instance is disabled or otherwise unavailable, switch to a valid active service instance.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Create Access Tokens for Conversations](/docs/conversations/create-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n",
    "causes": "* The Access Token references the wrong service instance.\n* The service instance exists but is not available for use.\n* The token was signed with credentials from a different account or subaccount than the one that owns the service instance.\n* For Conversations, the token does not include a `ChatGrant` with the correct Conversation Service SID.\n* For Sync, the token does not include a `SyncGrant` with the correct Sync Service SID.",
    "solutions": "* Decode the Access Token and verify the `grants` section includes the correct service-specific grant for your SDK.\n* For Conversations, generate the token with a `ChatGrant` that uses the correct Conversation Service SID.\n* For Sync, generate the token with a `SyncGrant` that uses the correct Sync Service SID.\n* Regenerate the token with the correct Account SID, API Key SID, API Secret, and `identity`.\n* Make sure the service instance belongs to the same Twilio account as the credentials used to create the token.\n* If the service instance is disabled or otherwise unavailable, switch to a valid active service instance.",
    "description": "This error occurs when a client SDK tries to connect with an Access Token that points to a Twilsock-backed service instance that is not usable for that connection. Conversations and Sync tokens must include the correct service-specific grant and the correct service SID for the account that owns the service.",
    "date_created": "2019-03-27T12:10:58Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51108,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Service instance disabled",
    "secondary_message": "Service instance is disabled.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock could not connect because the Service instance you requested is disabled. This usually means the SID or configuration your client is using points to a Service instance that is no longer active for the Twilio product you are trying to reach.\n\n### Possible causes\n\n- The client is configured with a disabled Service instance SID.\n- The Service instance was disabled in Console or through an API update.\n- Your application is using an outdated configuration value from a previous environment, such as development or staging.\n- The access token or client configuration points to a different Service instance than the one you intended to use.\n\n### Possible solutions\n\n- Confirm that your application is using the correct Service instance SID for the environment you want to access.\n- Check the status of the Service instance in Twilio Console and make sure it is active.\n- If the Service instance was intentionally disabled, update your application to use an active Service instance instead.\n- Review your deployment configuration and token generation flow to make sure they reference the correct Twilio Service instance.\n- If you no longer need the disabled Service instance, create or select an active one and update all client-side and server-side configuration values that reference it.\n\n#### Additional resources\n\n- [Chat documentation](/docs/chat)\n- [Sync documentation](/docs/sync)\n- [Notify documentation](/docs/notify)\n",
    "causes": "* The client is configured with a disabled Service instance SID.\n* The Service instance was disabled in Console or through an API update.\n* Your application is using an outdated configuration value from a previous environment, such as development or staging.\n* The access token or client configuration points to a different Service instance than the one you intended to use.",
    "solutions": "* Confirm that your application is using the correct Service instance SID for the environment you want to access.\n* Check the status of the Service instance in Twilio Console and make sure it is active.\n* If the Service instance was intentionally disabled, update your application to use an active Service instance instead.\n* Review your deployment configuration and token generation flow to make sure they reference the correct Twilio Service instance.\n* If you no longer need the disabled Service instance, create or select an active one and update all client-side and server-side configuration values that reference it.",
    "description": "Twilsock could not connect because the Service instance you requested is disabled. This usually means the SID or configuration your client is using points to a Service instance that is no longer active for the Twilio product you are trying to reach.",
    "date_created": "2019-03-27T12:12:36Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51109,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Service instance is under legal hold",
    "secondary_message": "Specified service instance is under legal hold.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe requested operation could not be completed because the target service instance is under legal hold. When a service instance is under legal hold, you cannot perform actions that would modify or remove data associated with that instance.\n\n### Possible causes\n\n- You attempted to update or delete data in a service instance that has been placed under legal hold.\n- Your application is using a service instance SID that is no longer available for write operations because of a legal or compliance restriction.\n- The request targets a Twilio service used by Twilsock-backed products, such as Conversations, Sync, or Programmable Chat, and that service instance is currently restricted.\n\n### Possible solutions\n\n- Use a different service instance that is active and not under legal hold.\n- Review your application configuration and confirm that you are sending requests to the correct service instance SID.\n- Avoid update or delete operations on the affected service instance until the legal hold is lifted.\n- If you do not expect the service instance to be under legal hold, contact your account administrator to confirm the instance status and intended usage.\n\n#### Additional resources\n\n- [Twilio Conversations documentation](/docs/conversations)\n- [Twilio Sync documentation](/docs/sync)\n- [Programmable Chat documentation](/docs/chat)\n",
    "causes": "* You attempted to update or delete data in a service instance that has been placed under legal hold.\n* Your application is using a service instance SID that is no longer available for write operations because of a legal or compliance restriction.\n* The request targets a Twilio service used by Twilsock-backed products, such as Conversations, Sync, or Programmable Chat, and that service instance is currently restricted.",
    "solutions": "* Use a different service instance that is active and not under legal hold.\n* Review your application configuration and confirm that you are sending requests to the correct service instance SID.\n* Avoid update or delete operations on the affected service instance until the legal hold is lifted.\n* If you do not expect the service instance to be under legal hold, contact your account administrator to confirm the instance status and intended usage.",
    "description": "The requested operation could not be completed because the target service instance is under legal hold. When a service instance is under legal hold, you cannot perform actions that would modify or remove data associated with that instance.",
    "date_created": "2019-03-27T12:13:23Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51110,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Token contains multiple grants of same product",
    "secondary_message": "Duplication of grants for the same product.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when the Access Token you send to Twilsock includes duplicate grants for the same product. Access Tokens use a `grants` object to define permissions, and you can include multiple grants only when they are for different Twilio products.\n\n### Possible causes\n\n- The `grants` payload contains the same product grant more than once.\n- The token was created for a client SDK but includes duplicate authorization for that same Twilio product in a single Access Token.\n- The final `grants` object does not match the expected Access Token structure.\n\n### Possible solutions\n\n- Rebuild the Access Token so the `grants` object contains only one grant per product. If your client uses multiple Twilio products, keep one grant for each product and remove the duplicate grant.\n- If you are creating a token for Conversations, include one `ChatGrant`. If you are creating a token for Sync, include one `SyncGrant`.\n- Generate the token with a Twilio helper library to reduce formatting mistakes. Decode the token in `jwt.io` and confirm the `grants` payload contains only the product grants you intend to send.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n- [Troubleshooting Invalid Access Tokens](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens)\n",
    "causes": "* The `grants` payload contains the same product grant more than once.\n* The token was created for a client SDK but includes duplicate authorization for that same Twilio product in a single Access Token.\n* The final `grants` object does not match the expected Access Token structure.",
    "solutions": "* Rebuild the Access Token so the `grants` object contains only one grant per product. If your client uses multiple Twilio products, keep one grant for each product and remove the duplicate grant.\n* If you are creating a token for Conversations, include one `ChatGrant`. If you are creating a token for Sync, include one `SyncGrant`.\n* Generate the token with a Twilio helper library to reduce formatting mistakes. Decode the token in `jwt.io` and confirm the `grants` payload contains only the product grants you intend to send.",
    "description": "This error occurs when the Access Token you send to Twilsock includes duplicate grants for the same product. Access Tokens use a `grants` object to define permissions, and you can include multiple grants only when they are for different Twilio products.",
    "date_created": "2019-03-27T12:14:32Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 51111,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Service instance limit reached",
    "secondary_message": "Service instance limit has been reached for the specified account.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock rejected the connection because your account reached the maximum number of allowed service instances. This usually means your application is creating more concurrent client connections or service instances than your current account limits allow.\n\n### Possible causes\n\n- Your application is opening too many concurrent Twilsock connections for the same account.\n- Clients are reconnecting repeatedly because of a network issue, token refresh issue, or application logic that creates duplicate connections.\n- Your application is creating new SDK client instances instead of reusing existing ones.\n- Expected traffic increased beyond your current account limits.\n\n### Possible solutions\n\n- Review your application logic and make sure each client reuses an existing connection where possible instead of creating additional SDK client instances.\n- Check for reconnect loops, duplicate initialization, or token handling issues that cause clients to open repeated Twilsock connections.\n- Reduce unnecessary concurrent connections across your applications and environments.\n- If the connection volume is expected and valid for your use case, contact Support to discuss increasing your account limits.\n\n#### Additional resources\n\n- [Programmable Chat documentation](/docs/chat)\n- [Sync documentation](/docs/sync)\n- [Help Center](https://help.twilio.com/hc/en-us)\n",
    "causes": "* Your application is opening too many concurrent Twilsock connections for the same account.\n* Clients are reconnecting repeatedly because of a network issue, token refresh issue, or application logic that creates duplicate connections.\n* Your application is creating new SDK client instances instead of reusing existing ones.\n* Expected traffic increased beyond your current account limits.",
    "solutions": "* Review your application logic and make sure each client reuses an existing connection where possible instead of creating additional SDK client instances.\n* Check for reconnect loops, duplicate initialization, or token handling issues that cause clients to open repeated Twilsock connections.\n* Reduce unnecessary concurrent connections across your applications and environments.\n* If the connection volume is expected and valid for your use case, contact Support to discuss increasing your account limits.",
    "description": "Twilsock rejected the connection because your account reached the maximum number of allowed service instances. This usually means your application is creating more concurrent client connections or service instances than your current account limits allow.",
    "date_created": "2019-03-27T12:46:23Z",
    "last_updated": "2026-07-14T08:30:02-04:00"
  },
  {
    "code": 51112,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Product usage disabled",
    "secondary_message": "Product usage has been disabled for this instance.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when a client tries to use a Twilsock-connected product for a Service instance where that product is not enabled. Twilsock is used by Twilio SDKs to maintain real-time connections for products such as Chat, Conversations, and Sync. If the product is disabled for the target instance, the connection request is rejected.\n\n### Possible causes\n\n- The client is connecting to a Service instance that does not have the requested product enabled.\n- The application is using the wrong Service SID, environment, or account credentials.\n- The client SDK is initialized for one Twilio product, but the instance is configured for a different product.\n- The Service instance was reconfigured and product access is no longer available for that instance.\n- The Access Token is valid, but it grants access to a Service instance where the product is disabled.\n\n### Possible solutions\n\n- Confirm that your application is using the correct Service SID for the product you want to use.\n- Verify that the target Service instance has the required product enabled in Console or in your service configuration.\n- Check that your Access Token identity, grants, and account credentials match the same Service instance your client is trying to reach.\n- Review your client initialization code and confirm that you are connecting with the correct product-specific configuration.\n- If the configuration is correct and the product should be enabled for the instance, contact Twilio Support.\n\n#### Additional resources\n\n- [Twilio Conversations documentation](/docs/conversations)\n- [Twilio Sync documentation](/docs/sync)\n",
    "causes": "* The client is connecting to a Service instance that does not have the requested product enabled.\n* The application is using the wrong Service SID, environment, or account credentials.\n* The client SDK is initialized for one Twilio product, but the instance is configured for a different product.\n* The Service instance was reconfigured and product access is no longer available for that instance.\n* The Access Token is valid, but it grants access to a Service instance where the product is disabled.",
    "solutions": "* Confirm that your application is using the correct Service SID for the product you want to use.\n* Verify that the target Service instance has the required product enabled in Console or in your service configuration.\n* Check that your Access Token identity, grants, and account credentials match the same Service instance your client is trying to reach.\n* Review your client initialization code and confirm that you are connecting with the correct product-specific configuration.\n* If the configuration is correct and the product should be enabled for the instance, contact Twilio Support.",
    "description": "This error occurs when a client tries to use a Twilsock-connected product for a Service instance where that product is not enabled. Twilsock is used by Twilio SDKs to maintain real-time connections for products such as Chat, Conversations, and Sync. If the product is disabled for the target instance, the connection request is rejected.",
    "date_created": "2019-03-27T12:46:58Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51113,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Product usage is not enabled",
    "secondary_message": "Product usage is not enabled.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock rejected the connection because the product you are trying to use is not enabled for your Account or API credentials. Twilsock is used by Twilio client SDKs to maintain a persistent connection for products such as Conversations, Sync, and Programmable Chat.\n\n### Possible causes\n\n- The Account SID or API Key you used does not have access to the Twilio product requested by the SDK.\n- The product is not enabled for your account.\n- The access token includes a grant for a Twilio product that is not enabled or not configured for your account.\n- The application is connecting with credentials from the wrong account or subaccount.\n\n### Possible solutions\n\n- Verify that you are using the correct Account SID, API Key, and access token for the Twilio account that should access the product.\n- Check that the product in your access token grant matches the product you have configured in your application.\n- Confirm that the product is enabled for your account in Console before attempting to connect.\n- If you recently changed accounts, subaccounts, or credentials, generate a new access token and reconnect.\n- If you need access to Conversations, Sync, or another Twilio client SDK product and it is not enabled, follow the product setup documentation or contact Twilio Support through the Help Center.\n\n#### Additional resources\n\n- [Conversations documentation](/docs/conversations)\n- [Sync documentation](/docs/sync)\n",
    "causes": "* The Account SID or API Key you used does not have access to the Twilio product requested by the SDK.\n* The product is not enabled for your account.\n* The access token includes a grant for a Twilio product that is not enabled or not configured for your account.\n* The application is connecting with credentials from the wrong account or subaccount.",
    "solutions": "* Verify that you are using the correct Account SID, API Key, and access token for the Twilio account that should access the product.\n* Check that the product in your access token grant matches the product you have configured in your application.\n* Confirm that the product is enabled for your account in Console before attempting to connect.\n* If you recently changed accounts, subaccounts, or credentials, generate a new access token and reconnect.\n* If you need access to Conversations, Sync, or another Twilio client SDK product and it is not enabled, follow the product setup documentation or contact Twilio Support through the Help Center.",
    "description": "Twilsock rejected the connection because the product you are trying to use is not enabled for your Account or API credentials. Twilsock is used by Twilio client SDKs to maintain a persistent connection for products such as Conversations, Sync, and Programmable Chat.",
    "date_created": "2019-03-27T12:47:41Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51114,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Invalid access token header",
    "secondary_message": "The token has an invalid header.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio rejected the Access Token used to authenticate a client connection because the token header is invalid. This error usually means the token is malformed, signed incorrectly, or not encoded as a valid JSON Web Token.\n\n### Possible causes\n\n- The value sent as the Access Token is not a valid JWT\n- The token header is not valid Base64URL-encoded JSON\n- The token is missing a required header value such as `alg` or `typ`\n- The token was altered, truncated, or corrupted before it was sent to Twilio\n- Your application generated the token with the wrong library or with incompatible signing settings\n- The request is sending a different credential instead of a Twilio Access Token\n\n### Possible solutions\n\n- Generate a new Twilio Access Token using an official Twilio helper library\n- Verify that the token contains three dot-separated JWT segments for header, payload, and signature\n- Decode the token and confirm the header is valid JSON and includes expected values such as `alg` and `typ`\n- Confirm that your application signs the token with the correct API Key and API Key Secret for your Twilio account\n- Make sure the token is passed to the client exactly as generated, without added whitespace, truncation, or URL encoding issues\n- If you create tokens manually, compare your implementation against the Twilio Access Token format used for client-side SDK authentication\n- Test the token structure with a JWT inspection tool before sending it to Twilio\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Identity and Access Management](/docs/iam)\n",
    "causes": "* The value sent as the Access Token is not a valid JWT\n* The token header is not valid Base64URL-encoded JSON\n* The token is missing a required header value such as `alg` or `typ`\n* The token was altered, truncated, or corrupted before it was sent to Twilio\n* Your application generated the token with the wrong library or with incompatible signing settings\n* The request is sending a different credential instead of a Twilio Access Token",
    "solutions": "* Generate a new Twilio Access Token using an official Twilio helper library\n* Verify that the token contains three dot-separated JWT segments for header, payload, and signature\n* Decode the token and confirm the header is valid JSON and includes expected values such as `alg` and `typ`\n* Confirm that your application signs the token with the correct API Key and API Key Secret for your Twilio account\n* Make sure the token is passed to the client exactly as generated, without added whitespace, truncation, or URL encoding issues\n* If you create tokens manually, compare your implementation against the Twilio Access Token format used for client-side SDK authentication\n* Test the token structure with a JWT inspection tool before sending it to Twilio",
    "description": "Twilio rejected the Access Token used to authenticate a client connection because the token header is invalid. This error usually means the token is malformed, signed incorrectly, or not encoded as a valid JSON Web Token.",
    "date_created": "2019-03-27T12:48:37Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51115,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Invalid access token subject",
    "secondary_message": "Subject provided in the token is invalid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock could not accept the Access Token because the token `sub` claim is invalid. Use an Access Token with a valid subject that identifies the user for your client connection.\n\n### Possible causes\n\n- The Access Token is malformed and the `sub` claim cannot be parsed.\n- The token was generated with an empty, missing, or invalid identity value.\n- The token subject does not match the identity format expected by the Twilio SDK or service you are using.\n- Your application is passing the wrong token to the client when establishing a Twilsock connection.\n- The token was modified after it was generated, which made the subject invalid.\n\n### Possible solutions\n\n- Generate a new Access Token on your server and make sure it includes a valid identity for the user.\n- Verify that your token generation code sets the user identity correctly before signing the token.\n- Confirm that your client is using the current token returned by your server and not a stale or truncated token.\n- Decode the token in your application to verify that the `sub` claim and related identity values are present and valid.\n- If you rotate signing keys or credentials, make sure your application is not mixing tokens generated from different environments or projects.\n- Review the Access Token format and identity requirements for the Twilio SDK product you are using.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Identity and Access Management](/docs/iam)\n- [Conversations documentation](/docs/conversations)\n",
    "causes": "* The Access Token is malformed and the `sub` claim cannot be parsed.\n* The token was generated with an empty, missing, or invalid identity value.\n* The token subject does not match the identity format expected by the Twilio SDK or service you are using.\n* Your application is passing the wrong token to the client when establishing a Twilsock connection.\n* The token was modified after it was generated, which made the subject invalid.",
    "solutions": "* Generate a new Access Token on your server and make sure it includes a valid identity for the user.\n* Verify that your token generation code sets the user identity correctly before signing the token.\n* Confirm that your client is using the current token returned by your server and not a stale or truncated token.\n* Decode the token in your application to verify that the `sub` claim and related identity values are present and valid.\n* If you rotate signing keys or credentials, make sure your application is not mixing tokens generated from different environments or projects.\n* Review the Access Token format and identity requirements for the Twilio SDK product you are using.",
    "description": "Twilsock could not accept the Access Token because the token `sub` claim is invalid. Use an Access Token with a valid subject that identifies the user for your client connection.",
    "date_created": "2019-03-27T12:49:52Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51116,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Invalid access token grants",
    "secondary_message": "Provided token has invalid grants.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock could not accept the Access Token because the token grants are invalid. This error usually means the token does not include the product grant your client SDK requires, the grant payload is malformed, or the token was generated with values that do not match your Twilio configuration.\n\n### Possible causes\n\n- The Access Token is missing a required grant for the SDK or product you are using, such as Chat, Conversations, Sync, or Notify.\n- The grant object in the token payload is malformed or uses unsupported fields.\n- The token was generated with an incorrect API Key SID, API Key secret, Account SID, or service identifier.\n- The client is using a token created for a different Twilio product or environment than the one the application is connecting to.\n- The token payload is valid JWT syntax, but the `grants` claim does not contain the expected Twilio grant structure.\n\n### Possible solutions\n\n- Generate a new Access Token on your server and ensure it includes the correct Twilio grant for the client SDK you are using.\n- Verify that your token generation code uses the correct Account SID, API Key SID, API Key secret, and any product-specific service or endpoint identifiers.\n- Check the token payload and confirm the `grants` claim includes the expected grant type and required properties for your application.\n- If you recently changed products or services, make sure the client receives a freshly generated token that matches the current configuration.\n- Validate the token structure before returning it to the client. If you inspect the JWT during troubleshooting, do not expose production secrets or private signing material.\n- Review the setup guidance for the Twilio product your client connects to and update your token generation logic to match that product's requirements.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Identity and Access Management](/docs/iam)\n- [Conversations documentation](/docs/conversations)\n",
    "causes": "* The Access Token is missing a required grant for the SDK or product you are using, such as Chat, Conversations, Sync, or Notify.\n* The grant object in the token payload is malformed or uses unsupported fields.\n* The token was generated with an incorrect API Key SID, API Key secret, Account SID, or service identifier.\n* The client is using a token created for a different Twilio product or environment than the one the application is connecting to.\n* The token payload is valid JWT syntax, but the `grants` claim does not contain the expected Twilio grant structure.",
    "solutions": "* Generate a new Access Token on your server and ensure it includes the correct Twilio grant for the client SDK you are using.\n* Verify that your token generation code uses the correct Account SID, API Key SID, API Key secret, and any product-specific service or endpoint identifiers.\n* Check the token payload and confirm the `grants` claim includes the expected grant type and required properties for your application.\n* If you recently changed products or services, make sure the client receives a freshly generated token that matches the current configuration.\n* Validate the token structure before returning it to the client. If you inspect the JWT during troubleshooting, do not expose production secrets or private signing material.\n* Review the setup guidance for the Twilio product your client connects to and update your token generation logic to match that product's requirements.",
    "description": "Twilsock could not accept the Access Token because the token grants are invalid. This error usually means the token does not include the product grant your client SDK requires, the grant payload is malformed, or the token was generated with values that do not match your Twilio configuration.",
    "date_created": "2019-03-27T12:53:17Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51117,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Invalid access token signature",
    "secondary_message": "The token has an invalid signature.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock rejected the Access Token because the token signature is invalid. This usually means the token was not signed with the correct API Key Secret, the token was modified after it was created, or the token is malformed.\n\n### Possible causes\n\n- The Access Token was signed with the wrong API Key Secret.\n- The Access Token was generated with an API Key SID and Secret that do not belong to the same Twilio account or subaccount.\n- The token payload or header was changed after the token was signed.\n- The token is truncated, malformed, or otherwise not a valid JWT.\n- Your application is sending an old token value, a copied partial token, or a token from a different environment such as test, staging, or production.\n\n### Possible solutions\n\n- Generate a new Access Token and sign it with the correct API Key Secret for the account or subaccount that issues the token.\n- Verify that the API Key SID used to create the token matches the Secret used to sign it.\n- Make sure your application sends the complete token string without trimming, reformatting, or modifying any characters.\n- Confirm that the token was created for the same Twilio account context used by your client application.\n- If you manage tokens in multiple environments, check that your client is using the current token for the correct environment.\n- Decode the token to inspect its header and payload, then regenerate it from your server if the signature does not validate.\n- Review how you create Access Tokens for your Twilio SDK client and update your server-side token generation flow as needed.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Twilio IAM](/docs/iam)\n- [Error 20104: Access Token validation failure](/docs/api/errors/20104)\n",
    "causes": "* The Access Token was signed with the wrong API Key Secret.\n* The Access Token was generated with an API Key SID and Secret that do not belong to the same Twilio account or subaccount.\n* The token payload or header was changed after the token was signed.\n* The token is truncated, malformed, or otherwise not a valid JWT.\n* Your application is sending an old token value, a copied partial token, or a token from a different environment such as test, staging, or production.",
    "solutions": "* Generate a new Access Token and sign it with the correct API Key Secret for the account or subaccount that issues the token.\n* Verify that the API Key SID used to create the token matches the Secret used to sign it.\n* Make sure your application sends the complete token string without trimming, reformatting, or modifying any characters.\n* Confirm that the token was created for the same Twilio account context used by your client application.\n* If you manage tokens in multiple environments, check that your client is using the current token for the correct environment.\n* Decode the token to inspect its header and payload, then regenerate it from your server if the signature does not validate.\n* Review how you create Access Tokens for your Twilio SDK client and update your server-side token generation flow as needed.",
    "description": "Twilsock rejected the Access Token because the token signature is invalid. This usually means the token was not signed with the correct API Key Secret, the token was modified after it was created, or the token is malformed.",
    "date_created": "2019-03-27T12:55:10Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51118,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Invalid claim set",
    "secondary_message": "Claim set provided in token is invalid.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when Twilio cannot validate the claim set in the Access Token used to authenticate a Twilsock connection. Twilio Access Tokens are JWTs for client-side SDKs, and the payload must include valid claim values such as `jti`, `iss`, `sub`, `iat`, optional `nbf`, `exp`, and `grants`.\n\n### Possible causes\n\n- The token payload is malformed or missing required claims such as `iss`, `sub`, `exp`, or `grants`.\n- The token was generated with credentials that do not belong together, such as a mismatched `Account SID`, API Key SID, and API key secret, or it was created with test credentials instead of live credentials.\n- The token does not include the product grant required by your SDK, or the grant is missing required values for that product.\n- The client sent something other than the serialized JWT string, such as a JSON object or another wrapped token format.\n\n### Possible solutions\n\n- Generate the token with a Twilio helper library or SDK instead of constructing the JWT manually.\n- Decode the token in a JWT debugger and compare the payload to Twilio's expected Access Token structure before returning it to the client.\n- Verify that `iss` contains the API Key SID, `sub` contains the live `Account SID`, the timestamps are valid, and `grants` includes the permissions required by your SDK.\n- Confirm that the API Key SID and API key secret match and that all credentials come from the same live account or subaccount.\n- If you use Conversations, include a `ChatGrant` with a valid `service_sid` and an `identity` grant.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [API keys overview](/docs/iam/api-keys)\n- [Troubleshooting Invalid Access Tokens](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens)\n",
    "causes": "* The token payload is malformed or missing required claims such as `iss`, `sub`, `exp`, or `grants`.\n* The token was generated with credentials that do not belong together, such as a mismatched `Account SID`, API Key SID, and API key secret, or it was created with test credentials instead of live credentials.\n* The token does not include the product grant required by your SDK, or the grant is missing required values for that product.\n* The client sent something other than the serialized JWT string, such as a JSON object or another wrapped token format.",
    "solutions": "* Generate the token with a Twilio helper library or SDK instead of constructing the JWT manually.\n* Decode the token in a JWT debugger and compare the payload to Twilio's expected Access Token structure before returning it to the client.\n* Verify that `iss` contains the API Key SID, `sub` contains the live `Account SID`, the timestamps are valid, and `grants` includes the permissions required by your SDK.\n* Confirm that the API Key SID and API key secret match and that all credentials come from the same live account or subaccount.\n* If you use Conversations, include a `ChatGrant` with a valid `service_sid` and an `identity` grant.",
    "description": "This error occurs when Twilio cannot validate the claim set in the Access Token used to authenticate a Twilsock connection. Twilio Access Tokens are JWTs for client-side SDKs, and the payload must include valid claim values such as `jti`, `iss`, `sub`, `iat`, optional `nbf`, `exp`, and `grants`.",
    "date_created": "2019-03-27T13:08:56Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 51119,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Token expired",
    "secondary_message": "The token has been expired.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock rejected the Access Token because it has expired. Generate a new Access Token and reconnect the client with the updated token before making another request.\n\n### Possible causes\n\n- The `exp` claim in the Access Token is in the past.\n- The client continued using an Access Token after its configured lifetime ended.\n- The system clock on the client or the server that generated the token is incorrect, which can cause the token to appear expired earlier than expected.\n- Your application did not refresh the Access Token before opening or maintaining the Twilsock connection.\n\n### Possible solutions\n\n- Generate a new Access Token and use it to reconnect the client.\n- Verify that your token generation logic sets a valid expiration time in the `exp` claim.\n- Reduce the chance of unexpected expiration by refreshing tokens before they expire, especially for long-lived client sessions.\n- Confirm that the server issuing the token and the client device both use the correct current time.\n- If you need to inspect the token structure during troubleshooting, decode the JWT and confirm the expiration timestamp and grants. Do not share production secrets or private signing keys when debugging tokens.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Conversations documentation](/docs/conversations)\n- [Sync documentation](/docs/sync)\n",
    "causes": "* The `exp` claim in the Access Token is in the past.\n* The client continued using an Access Token after its configured lifetime ended.\n* The system clock on the client or the server that generated the token is incorrect, which can cause the token to appear expired earlier than expected.\n* Your application did not refresh the Access Token before opening or maintaining the Twilsock connection.",
    "solutions": "* Generate a new Access Token and use it to reconnect the client.\n* Verify that your token generation logic sets a valid expiration time in the `exp` claim.\n* Reduce the chance of unexpected expiration by refreshing tokens before they expire, especially for long-lived client sessions.\n* Confirm that the server issuing the token and the client device both use the correct current time.\n* If you need to inspect the token structure during troubleshooting, decode the JWT and confirm the expiration timestamp and grants. Do not share production secrets or private signing keys when debugging tokens.",
    "description": "Twilsock rejected the Access Token because it has expired. Generate a new Access Token and reconnect the client with the updated token before making another request.",
    "date_created": "2019-03-27T13:10:01Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51120,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Token is not valid yet",
    "secondary_message": "Token is not valid yet",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when a Twilsock connection tries to authenticate with an Access Token before the token's validity window begins. Twilio Access Tokens can include an optional `nbf` claim that defines the earliest time the token is accepted.\n\n### Possible causes\n\n- The token's `nbf` claim is set to a future Unix timestamp.\n- The system clock on the token-issuing host is ahead or behind the validating system, which makes the token appear too early for use.\n- Your client attempts to initialize the SDK immediately with a token that is not yet valid.\n\n### Possible solutions\n\n- Remove the `nbf` claim if you do not need a delayed start time.\n- If you use `nbf`, set it to the current epoch time so the token is valid as soon as your client receives it.\n- Verify the system time on the machine that generates the token and correct any clock drift before issuing new tokens.\n- Generate a fresh Access Token closer to the time of use.\n- Create and sign Access Tokens with a Twilio helper library to ensure the token structure and claims are generated correctly.\n- For long-lived client sessions, renew tokens before they expire by handling your SDK's token refresh events.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Create Access Tokens for Conversations](/docs/conversations/create-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n",
    "causes": "* The token's `nbf` claim is set to a future Unix timestamp.\n* The system clock on the token-issuing host is ahead or behind the validating system, which makes the token appear too early for use.\n* Your client attempts to initialize the SDK immediately with a token that is not yet valid.",
    "solutions": "* Remove the `nbf` claim if you do not need a delayed start time.\n* If you use `nbf`, set it to the current epoch time so the token is valid as soon as your client receives it.\n* Verify the system time on the machine that generates the token and correct any clock drift before issuing new tokens.\n* Generate a fresh Access Token closer to the time of use.\n* Create and sign Access Tokens with a Twilio helper library to ensure the token structure and claims are generated correctly.\n* For long-lived client sessions, renew tokens before they expire by handling your SDK's token refresh events.",
    "description": "This error occurs when a Twilsock connection tries to authenticate with an Access Token before the token's validity window begins. Twilio Access Tokens can include an optional `nbf` claim that defines the earliest time the token is accepted.",
    "date_created": "2019-03-27T13:11:57Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51121,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Token expiration time exceeds maximum",
    "secondary_message": "Token expiration time exceeds max allowed amount.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when Twilsock receives an Access Token whose `exp` value is beyond the allowed lifetime. Twilio Access Tokens are short-lived `JWT` credentials, and their maximum age is 24 hours.\n\n### Possible causes\n\n- Your application generated the token with a `ttl` value greater than 86400 seconds. Twilio interprets `ttl` in seconds and limits Access Tokens to 24 hours.\n- The token's `exp` claim is set more than 24 hours after issuance. Twilio uses `exp` as the expiration timestamp and limits token age to 24 hours.\n- Your token generation logic used the wrong time unit or an incorrect timestamp calculation, which caused the expiration to exceed the allowed range. Access Token lifetime values are expressed in seconds.\n\n### Possible solutions\n\n- Generate a new Access Token with a `ttl` of 86400 seconds or less. Use the shortest lifetime that fits your application.\n- If you set claims directly, verify that `exp` is no more than 24 hours after `iat` and that all time values are in seconds.\n- Use a Twilio helper library to create the token so the `JWT` structure and claims are generated correctly. Twilio recommends helper libraries when troubleshooting invalid Access Tokens.\n- For long-lived SDK sessions, refresh the token before it expires instead of extending a single token beyond the 24-hour limit. Conversations SDK clients can request a new token and call `updateToken` before expiration.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n- [Troubleshooting Invalid Access Tokens](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens)\n",
    "causes": "* Your application generated the token with a `ttl` value greater than 86400 seconds. Twilio interprets `ttl` in seconds and limits Access Tokens to 24 hours.\n* The token's `exp` claim is set more than 24 hours after issuance. Twilio uses `exp` as the expiration timestamp and limits token age to 24 hours.\n* Your token generation logic used the wrong time unit or an incorrect timestamp calculation, which caused the expiration to exceed the allowed range. Access Token lifetime values are expressed in seconds.",
    "solutions": "* Generate a new Access Token with a `ttl` of 86400 seconds or less. Use the shortest lifetime that fits your application.\n* If you set claims directly, verify that `exp` is no more than 24 hours after `iat` and that all time values are in seconds.\n* Use a Twilio helper library to create the token so the `JWT` structure and claims are generated correctly. Twilio recommends helper libraries when troubleshooting invalid Access Tokens.\n* For long-lived SDK sessions, refresh the token before it expires instead of extending a single token beyond the 24-hour limit. Conversations SDK clients can request a new token and call `updateToken` before expiration.",
    "description": "This error occurs when Twilsock receives an Access Token whose `exp` value is beyond the allowed lifetime. Twilio Access Tokens are short-lived `JWT` credentials, and their maximum age is 24 hours.",
    "date_created": "2019-03-27T13:21:21Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 51122,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Authentication failed",
    "secondary_message": "Authentication failed.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock could not authenticate the client connection. This error usually means the access token is missing, invalid, expired, or does not match the Twilio product or identity your client is trying to use.\n\n### Possible causes\n\n- The client is using an expired access token.\n- The access token was signed with the wrong API Key SID or API Key Secret.\n- The token does not include the correct grant for the Twilio product you are using, such as Chat, Sync, or Notify.\n- The token `identity` does not match the user or client identity expected by your application.\n- The token was copied incorrectly, truncated, or modified before being sent to the SDK.\n- The client is attempting to connect to Twilsock before your application has retrieved a valid token from your backend.\n\n### Possible solutions\n\n- Generate a new access token and make sure your client uses the latest token value.\n- Verify that your backend signs the token with a valid API Key SID and API Key Secret from the same Twilio account or subaccount your application uses.\n- Confirm that the token includes the correct grant for the SDK or product you are connecting to.\n- Check that the `identity` in the token is present, valid, and matches the identity your application expects.\n- Make sure your application refreshes tokens before they expire, especially for long-lived client sessions.\n- Inspect how the token is passed from your backend to the client and make sure it is not truncated, URL-encoded incorrectly, or stored with extra characters.\n- If you recently rotated credentials, update your token generation service to use the current API Key and Secret.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Identity and Access Management](/docs/iam)\n- [Programmable Chat documentation](/docs/chat)\n",
    "causes": "* The client is using an expired access token.\n* The access token was signed with the wrong API Key SID or API Key Secret.\n* The token does not include the correct grant for the Twilio product you are using, such as Chat, Sync, or Notify.\n* The token `identity` does not match the user or client identity expected by your application.\n* The token was copied incorrectly, truncated, or modified before being sent to the SDK.\n* The client is attempting to connect to Twilsock before your application has retrieved a valid token from your backend.",
    "solutions": "* Generate a new access token and make sure your client uses the latest token value.\n* Verify that your backend signs the token with a valid API Key SID and API Key Secret from the same Twilio account or subaccount your application uses.\n* Confirm that the token includes the correct grant for the SDK or product you are connecting to.\n* Check that the `identity` in the token is present, valid, and matches the identity your application expects.\n* Make sure your application refreshes tokens before they expire, especially for long-lived client sessions.\n* Inspect how the token is passed from your backend to the client and make sure it is not truncated, URL-encoded incorrectly, or stored with extra characters.\n* If you recently rotated credentials, update your token generation service to use the current API Key and Secret.",
    "description": "Twilsock could not authenticate the client connection. This error usually means the access token is missing, invalid, expired, or does not match the Twilio product or identity your client is trying to use.",
    "date_created": "2019-03-27T13:22:30Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51123,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Upstream not resolved",
    "secondary_message": "Specified upstream couldn't be resolved.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock could not resolve the upstream target specified in the request. This error usually indicates that the upstream identifier is missing, malformed, or references a destination that is not available for the current Twilio client connection.\n\n### Possible causes\n\n- The request includes an invalid upstream identifier.\n- The upstream value is missing or formatted incorrectly.\n- The client is attempting to connect to an upstream target that does not exist.\n- The upstream target is not available for the current service configuration or environment.\n- The SDK or application is passing the wrong parameter value when opening or routing the connection.\n\n### Possible solutions\n\n- Verify that your application sends a valid upstream value in the request.\n- Check your client configuration and confirm that all required connection parameters are present and correctly formatted.\n- Make sure the upstream target exists in the environment your application is using.\n- Review recent application changes that affect Twilio client initialization, connection setup, or routing logic.\n- Update to the latest supported Twilio SDK version if you are using an older client implementation.\n- If the error persists, enable SDK logging in your application and review the request details sent during connection setup.\n\n#### Additional resources\n\n- [Twilio Conversations documentation](/docs/conversations)\n",
    "causes": "* The request includes an invalid upstream identifier.\n* The upstream value is missing or formatted incorrectly.\n* The client is attempting to connect to an upstream target that does not exist.\n* The upstream target is not available for the current service configuration or environment.\n* The SDK or application is passing the wrong parameter value when opening or routing the connection.",
    "solutions": "* Verify that your application sends a valid upstream value in the request.\n* Check your client configuration and confirm that all required connection parameters are present and correctly formatted.\n* Make sure the upstream target exists in the environment your application is using.\n* Review recent application changes that affect Twilio client initialization, connection setup, or routing logic.\n* Update to the latest supported Twilio SDK version if you are using an older client implementation.\n* If the error persists, enable SDK logging in your application and review the request details sent during connection setup.",
    "description": "Twilsock could not resolve the upstream target specified in the request. This error usually indicates that the upstream identifier is missing, malformed, or references a destination that is not available for the current Twilio client connection.",
    "date_created": "2019-03-27T13:23:13Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51124,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Too many connections",
    "secondary_message": "Number of connections for this account is higher than expected!",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour application has opened more Twilsock connections for your account than the current limit allows. Twilsock is the persistent connection layer used by Twilio client-side SDKs such as Chat, Sync, and Notify. This error usually indicates that your application is creating too many simultaneous client connections or is not closing unused sessions correctly.\n\n### Possible causes\n\n- Your application is creating a new client instance each time a page loads, refreshes, or rerenders.\n- Users are signed in from many browser tabs, devices, or sessions at the same time.\n- Your application is not shutting down unused SDK clients when users log out or navigate away.\n- Connection retry logic is creating duplicate connections after network interruptions.\n- Load tests, bots, or misconfigured clients are generating more concurrent connections than your account is expected to use.\n\n### Possible solutions\n\n- Review how your application initializes Twilio SDK clients and make sure it does not create duplicate client instances unnecessarily.\n- Reuse an existing client connection when possible instead of creating a new one for each action or view.\n- Close or shut down SDK clients when they are no longer needed, especially during logout, session expiration, or application teardown.\n- Check your retry and reconnect logic to confirm that temporary network failures do not leave old connections active while opening new ones.\n- Validate expected usage across tabs, browsers, and devices to make sure the connection volume matches your application's design.\n- If your traffic is expected and legitimate, contact Support to discuss your account limits.\n\n#### Additional resources\n\n- [Chat documentation](/docs/chat)\n- [Sync documentation](/docs/sync)\n- [Help Center](\\(https://help.twilio.com/\\))\n",
    "causes": "* Your application is creating a new client instance each time a page loads, refreshes, or rerenders.\n* Users are signed in from many browser tabs, devices, or sessions at the same time.\n* Your application is not shutting down unused SDK clients when users log out or navigate away.\n* Connection retry logic is creating duplicate connections after network interruptions.\n* Load tests, bots, or misconfigured clients are generating more concurrent connections than your account is expected to use.",
    "solutions": "* Review how your application initializes Twilio SDK clients and make sure it does not create duplicate client instances unnecessarily.\n* Reuse an existing client connection when possible instead of creating a new one for each action or view.\n* Close or shut down SDK clients when they are no longer needed, especially during logout, session expiration, or application teardown.\n* Check your retry and reconnect logic to confirm that temporary network failures do not leave old connections active while opening new ones.\n* Validate expected usage across tabs, browsers, and devices to make sure the connection volume matches your application's design.\n* If your traffic is expected and legitimate, contact Support to discuss your account limits.",
    "description": "Your application has opened more Twilsock connections for your account than the current limit allows. Twilsock is the persistent connection layer used by Twilio client-side SDKs such as Chat, Sync, and Notify. This error usually indicates that your application is creating too many simultaneous client connections or is not closing unused sessions correctly.",
    "date_created": "2019-03-27T13:24:10Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51125,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Too many updates",
    "secondary_message": "Number of updates for this account is higher than expected!",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour application sent more updates through Twilsock than the account limit allows. Twilio returns this error when the update rate for your account is higher than expected and Twilio rejects additional updates until the rate drops or the limit is increased.\n\n### Possible causes\n\n- Your application is sending update requests in a tight loop.\n- Multiple clients or services are updating the same Sync resources at a high rate.\n- Retry logic is resubmitting updates too aggressively after failures or timeouts.\n- An unexpected application behavior or deployment change increased the number of real-time updates.\n\n### Possible solutions\n\n- Review your application logs and metrics to confirm whether the update volume is expected.\n- Reduce the rate of updates your application sends through Twilsock.\n- Batch, debounce, or consolidate frequent updates where possible.\n- Check your retry and reconnect logic to make sure it does not continuously resend the same update requests.\n- If the traffic is legitimate and you need a higher limit, contact Support through the Help Center.\n\n#### Additional resources\n\n- [Twilio Sync docs](/docs/sync)\n",
    "causes": "* Your application is sending update requests in a tight loop.\n* Multiple clients or services are updating the same Sync resources at a high rate.\n* Retry logic is resubmitting updates too aggressively after failures or timeouts.\n* An unexpected application behavior or deployment change increased the number of real-time updates.",
    "solutions": "* Review your application logs and metrics to confirm whether the update volume is expected.\n* Reduce the rate of updates your application sends through Twilsock.\n* Batch, debounce, or consolidate frequent updates where possible.\n* Check your retry and reconnect logic to make sure it does not continuously resend the same update requests.\n* If the traffic is legitimate and you need a higher limit, contact Support through the Help Center.",
    "description": "Your application sent more updates through Twilsock than the account limit allows. Twilio returns this error when the update rate for your account is higher than expected and Twilio rejects additional updates until the rate drops or the limit is increased.",
    "date_created": "2019-03-27T13:24:48Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51126,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: DNC limit has been reached",
    "secondary_message": "DNC limit has been reached",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error means a client connected through Twilsock hit a service limit. Twilio Conversations SDK clients use a WebSocket connection to receive real-time events, and Twilio enforces limits on concurrent connections, connection establishment rate, and upstream request rate. Review your client lifecycle and push registration flow to reduce unnecessary reconnects, duplicate registrations, and stale client state.\n\n### Possible causes\n\n- Your application creates new SDK client instances too often instead of letting the existing client reconnect automatically after network loss or when the app returns to the foreground.\n- Your application registers for push notifications repeatedly without checking whether the device token changed.\n- Your application does not unregister push notifications when a different chat identity signs in, which can leave old registrations associated with the previous user.\n- Your account or subaccount is approaching or exceeding Twilio Conversations limits for concurrent connections, connection establishment, or upstream requests.\n- The affected Conversations Service still has push notification bindings for endpoints or identities that are no longer active.\n\n### Possible solutions\n\n- Keep a single SDK client active for each signed-in user session. Let the SDK reconnect automatically during normal network interruptions and when the app moves between background and foreground.\n- Register for push notifications at application start, persist the current device token, and re-register only when the token changes.\n- Unregister push notifications before switching to a different chat identity. Release objects tied to the old client before you create a new client instance.\n- Review your connection pattern against the published Conversations limits for concurrent connections, connection establishment rate, and upstream request rate. Reduce bursty reconnects, duplicate client initialization, and unnecessary upstream traffic.\n- Inspect the Service Binding records for the affected Conversations Service and remove bindings that no longer belong to an active device or identity.\n\n#### Additional resources\n\n- [Conversations Limits](/docs/conversations/conversations-limits)\n- [Best Practices using the Conversations SDK](/docs/conversations/best-practices-sdk-clients)\n- [Service Binding Resource](/docs/conversations-classic/api/service-binding-resource)\n",
    "causes": "* Your application creates new SDK client instances too often instead of letting the existing client reconnect automatically after network loss or when the app returns to the foreground.\n* Your application registers for push notifications repeatedly without checking whether the device token changed.\n* Your application does not unregister push notifications when a different chat identity signs in, which can leave old registrations associated with the previous user.\n* Your account or subaccount is approaching or exceeding Twilio Conversations limits for concurrent connections, connection establishment, or upstream requests.\n* The affected Conversations Service still has push notification bindings for endpoints or identities that are no longer active.",
    "solutions": "* Keep a single SDK client active for each signed-in user session. Let the SDK reconnect automatically during normal network interruptions and when the app moves between background and foreground.\n* Register for push notifications at application start, persist the current device token, and re-register only when the token changes.\n* Unregister push notifications before switching to a different chat identity. Release objects tied to the old client before you create a new client instance.\n* Review your connection pattern against the published Conversations limits for concurrent connections, connection establishment rate, and upstream request rate. Reduce bursty reconnects, duplicate client initialization, and unnecessary upstream traffic.\n* Inspect the Service Binding records for the affected Conversations Service and remove bindings that no longer belong to an active device or identity.",
    "description": "This error means a client connected through Twilsock hit a service limit. Twilio Conversations SDK clients use a WebSocket connection to receive real-time events, and Twilio enforces limits on concurrent connections, connection establishment rate, and upstream request rate. Review your client lifecycle and push registration flow to reduce unnecessary reconnects, duplicate registrations, and stale client state.",
    "date_created": "2019-03-27T13:29:14Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51127,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: PNC limit has been",
    "secondary_message": "N/A",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when Twilsock rejects a request because your application has exceeded a limit related to push notification registrations or subscriptions. In Conversations, a Binding represents a push notification subscription for a User within a Service instance, and bindings are unique per Service instance, User identity, device, and notification channel.\n\n### Possible causes\n\n- Your application is registering push notification tokens more often than expected for the same user or device.\n- Your application is leaving behind stale push notification registrations after a user signs out, reinstalls the app, or switches devices.\n- Your client reconnect logic or retry logic is repeatedly creating push notification registrations.\n- Your current traffic pattern or number of active push notification bindings is higher than the limit allowed for your account or service.\n\n### Possible solutions\n\n- Register each APNs or FCM token only when needed.\n- Unregister old push tokens when a user signs out, when a token rotates, or when the app no longer uses that device.\n- Review your client retry and reconnect behavior to make sure it is not repeatedly creating registrations for the same device.\n- Review your Conversations implementation for duplicate users, duplicate device registrations, or unnecessary client sessions.\n- If the traffic is expected, contact Support to discuss whether your current limit can be adjusted.\n\n#### Additional resources\n\n- [Push Notification Configuration for Conversations](/docs/conversations/push-notification-configuration)\n- [Service Binding Resource](/docs/conversations-classic/api/service-binding-resource)\n- [Conversations Limits](/docs/conversations/conversations-limits)\n",
    "causes": "* Your application is registering push notification tokens more often than expected for the same user or device.\n* Your application is leaving behind stale push notification registrations after a user signs out, reinstalls the app, or switches devices.\n* Your client reconnect logic or retry logic is repeatedly creating push notification registrations.\n* Your current traffic pattern or number of active push notification bindings is higher than the limit allowed for your account or service.",
    "solutions": "* Register each APNs or FCM token only when needed.\n* Unregister old push tokens when a user signs out, when a token rotates, or when the app no longer uses that device.\n* Review your client retry and reconnect behavior to make sure it is not repeatedly creating registrations for the same device.\n* Review your Conversations implementation for duplicate users, duplicate device registrations, or unnecessary client sessions.\n* If the traffic is expected, contact Support to discuss whether your current limit can be adjusted.",
    "description": "This error occurs when Twilsock rejects a request because your application has exceeded a limit related to push notification registrations or subscriptions. In Conversations, a Binding represents a push notification subscription for a User within a Service instance, and bindings are unique per Service instance, User identity, device, and notification channel.",
    "date_created": "2019-03-27T13:29:43Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51128,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Too many messages per connection",
    "secondary_message": "Number of messages for one connection is higher than expected!",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock rejected traffic on a single connection because your application sent more messages than the connection limit allows. This usually means the client is sending requests too quickly, retrying too aggressively, or creating an unexpected amount of real-time traffic over one Twilsock session.\n\n### Possible causes\n\n- Your client is sending a burst of messages over one Twilsock connection that exceeds the allowed rate or volume.\n- Your application has a retry loop or reconnect loop that resends the same requests repeatedly.\n- Multiple features in your application are sharing one connection and generating more traffic than expected.\n- A client-side bug is causing duplicate operations, duplicate event publishing, or repeated subscription updates.\n- Your application workload has grown beyond the default limits configured for your account or use case.\n\n### Possible solutions\n\n- Review your client logic and confirm that it does not send duplicate requests, repeated updates, or unnecessary retries over the same connection.\n- Add throttling or backoff in the client so traffic is spread more evenly instead of being sent in large bursts.\n- Check reconnect and retry behavior to make sure the client does not immediately replay queued messages in a tight loop.\n- Reduce unnecessary real-time operations such as repeated subscriptions, updates, or polling behavior that can increase Twilsock traffic.\n- If the traffic is expected for your use case, contact Support to discuss whether your account limits need to be reviewed.\n\n#### Additional resources\n\n- [Conversations documentation](/docs/conversations)\n- [Sync documentation](/docs/sync)\n",
    "causes": "* Your client is sending a burst of messages over one Twilsock connection that exceeds the allowed rate or volume.\n* Your application has a retry loop or reconnect loop that resends the same requests repeatedly.\n* Multiple features in your application are sharing one connection and generating more traffic than expected.\n* A client-side bug is causing duplicate operations, duplicate event publishing, or repeated subscription updates.\n* Your application workload has grown beyond the default limits configured for your account or use case.",
    "solutions": "* Review your client logic and confirm that it does not send duplicate requests, repeated updates, or unnecessary retries over the same connection.\n* Add throttling or backoff in the client so traffic is spread more evenly instead of being sent in large bursts.\n* Check reconnect and retry behavior to make sure the client does not immediately replay queued messages in a tight loop.\n* Reduce unnecessary real-time operations such as repeated subscriptions, updates, or polling behavior that can increase Twilsock traffic.\n* If the traffic is expected for your use case, contact Support to discuss whether your account limits need to be reviewed.",
    "description": "Twilsock rejected traffic on a single connection because your application sent more messages than the connection limit allows. This usually means the client is sending requests too quickly, retrying too aggressively, or creating an unexpected amount of real-time traffic over one Twilsock session.",
    "date_created": "2019-03-27T13:30:16Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51129,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Too many messages per account",
    "secondary_message": "Number of messages for this account is higher than expected!",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilsock rejected requests because your account sent more messages than the allowed rate. This error usually indicates that your application is sending traffic faster than the account limit supports.\n\n### Possible causes\n\n- Your application is sending a burst of Twilsock messages that exceeds the account rate limit.\n- A retry loop, reconnect loop, or duplicate event handler is causing the same message to be sent repeatedly.\n- Multiple clients or services are using the same account and collectively exceeding the allowed message volume.\n- A recent deployment or configuration change increased message traffic unexpectedly.\n\n### Possible solutions\n\n- Review your application logs and confirm whether message volume increased unexpectedly.\n- Check for retry loops, duplicate subscriptions, or client reconnect behavior that can generate repeated messages.\n- Reduce message frequency by batching non-urgent updates or limiting how often clients send events.\n- Spread traffic more evenly over time instead of sending large bursts.\n- If the traffic is expected for your use case, contact Support to discuss your account limits.\n\n#### Additional resources\n\n- [Twilio Conversations documentation](/docs/conversations)\n- [Twilio Sync documentation](/docs/sync)\n",
    "causes": "* Your application is sending a burst of Twilsock messages that exceeds the account rate limit.\n* A retry loop, reconnect loop, or duplicate event handler is causing the same message to be sent repeatedly.\n* Multiple clients or services are using the same account and collectively exceeding the allowed message volume.\n* A recent deployment or configuration change increased message traffic unexpectedly.",
    "solutions": "* Review your application logs and confirm whether message volume increased unexpectedly.\n* Check for retry loops, duplicate subscriptions, or client reconnect behavior that can generate repeated messages.\n* Reduce message frequency by batching non-urgent updates or limiting how often clients send events.\n* Spread traffic more evenly over time instead of sending large bursts.\n* If the traffic is expected for your use case, contact Support to discuss your account limits.",
    "description": "Twilsock rejected requests because your account sent more messages than the allowed rate. This error usually indicates that your application is sending traffic faster than the account limit supports.",
    "date_created": "2019-03-27T13:30:51Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51130,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Token is invalid!",
    "secondary_message": "Token is invalid!",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your client tries to connect through Twilsock with an Access Token that is not a valid Twilio Access Token or cannot be parsed as one. Twilio Access Tokens are short-lived `JWT` credentials for client-side SDKs, and they must have a valid header, payload, signature, and product grant.\n\n### Possible causes\n\n- The value you passed is not a Twilio Access Token, such as a malformed `JWT` or a different credential type like an Auth Token or another token format.\n- The token was generated with the wrong credential combination, such as an Account SID, API Key, or API Secret that do not belong together, or it was created with Test Credentials instead of Live Credentials. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- The token was passed to the SDK as something other than a plain string, such as a JSON object. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- The token payload is missing a valid `grants` object or the grant does not match the SDK you are initializing. For example, Conversations tokens need the chat grant, and Sync tokens need a `SyncGrant` with a `serviceSid`.\n- If you are using Conversations, an invalid token can cause the client connection state to become `denied` until you provide a fresh valid token.\n\n### Possible solutions\n\n- Generate a new Access Token on your server with a Twilio helper library. Use your Live Account SID, a valid API Key SID, and the matching API Secret. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- Verify the token structure before sending it to the client. The header must include `typ`=`\"JWT\"`, `alg`=`\"HS256\"`, and `cty`=`\"twilio-fpa;v=1\"`. The payload should include `iss`, `sub`, `iat`, `exp`, and at least one valid product grant.\n- Pass the token to your SDK as the raw serialized `JWT` string, not as a wrapped JSON object or another credential type. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- If you are connecting to Conversations, create the token with the correct chat grant, Chat Service SID, and `identity`. Avoid reserved characters in the `identity` value.\n- If you are connecting to Sync, include a `SyncGrant` with the correct `serviceSid` for your Sync Service.\n- Keep tokens short-lived. If your client is rotating tokens, fetch a fresh token from your server and update the client before the old token expires.\n- Review the Twilio Debugger or Error Logs for the failing request so you can inspect the error code, description, and log properties tied to the connection attempt.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Create Access Tokens for Conversations](/docs/conversations/create-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n",
    "causes": "* The value you passed is not a Twilio Access Token, such as a malformed `JWT` or a different credential type like an Auth Token or another token format.\n* The token was generated with the wrong credential combination, such as an Account SID, API Key, or API Secret that do not belong together, or it was created with Test Credentials instead of Live Credentials. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* The token was passed to the SDK as something other than a plain string, such as a JSON object. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* The token payload is missing a valid `grants` object or the grant does not match the SDK you are initializing. For example, Conversations tokens need the chat grant, and Sync tokens need a `SyncGrant` with a `serviceSid`.\n* If you are using Conversations, an invalid token can cause the client connection state to become `denied` until you provide a fresh valid token.",
    "solutions": "* Generate a new Access Token on your server with a Twilio helper library. Use your Live Account SID, a valid API Key SID, and the matching API Secret. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* Verify the token structure before sending it to the client. The header must include `typ`=`\"JWT\"`, `alg`=`\"HS256\"`, and `cty`=`\"twilio-fpa;v=1\"`. The payload should include `iss`, `sub`, `iat`, `exp`, and at least one valid product grant.\n* Pass the token to your SDK as the raw serialized `JWT` string, not as a wrapped JSON object or another credential type. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* If you are connecting to Conversations, create the token with the correct chat grant, Chat Service SID, and `identity`. Avoid reserved characters in the `identity` value.\n* If you are connecting to Sync, include a `SyncGrant` with the correct `serviceSid` for your Sync Service.\n* Keep tokens short-lived. If your client is rotating tokens, fetch a fresh token from your server and update the client before the old token expires.\n* Review the Twilio Debugger or Error Logs for the failing request so you can inspect the error code, description, and log properties tied to the connection attempt.",
    "description": "This error occurs when your client tries to connect through Twilsock with an Access Token that is not a valid Twilio Access Token or cannot be parsed as one. Twilio Access Tokens are short-lived `JWT` credentials for client-side SDKs, and they must have a valid header, payload, signature, and product grant.",
    "date_created": "2019-03-27T13:31:20Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51131,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Authentication failed",
    "secondary_message": "N/A",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when Twilsock cannot authenticate the Access Token presented by a client SDK connection. Access Tokens are short-lived JWTs for Twilio client-side SDKs, and authentication failures are commonly caused by incorrect credentials, invalid token structure, or token timestamp issues.\n\n### Possible causes\n\n- The token was generated with an incorrect or mismatched `Account SID`, `API Key SID`, or `API Secret`. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- Test credentials were used to create the token. Access Tokens must use live credentials. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- The token was created for a different account or subaccount than the Conversations Chat Service or Sync Service the client is trying to use. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- The token did not include the correct product grant for the SDK you are using. Conversations requires a `ChatGrant` with your Conversation Service SID. Sync requires a `SyncGrant` with your Sync `serviceSid`.\n- The client sent the token in the wrong format, such as a JSON object instead of the raw JWT string. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- The token is outside its valid time window. Access Tokens have a maximum lifetime of 24 hours. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n\n### Possible solutions\n\n- Regenerate the token on your server with the correct live `Account SID`, `API Key SID`, and `API Secret` from the same Twilio account that owns the target service. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- Use a Twilio server-side helper library to create the token and grants instead of building the JWT manually. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- For Conversations, add a `ChatGrant` that includes the correct Conversation Service SID. For Sync, add a `SyncGrant` with the correct `serviceSid`.\n- Return the token to the client as a plain JWT string and initialize the SDK with that value. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- Reissue tokens before they expire. If your Conversations client enters the `Denied` connection state, fetch a new token and reconnect.\n- Review the Twilio Console Debugger or Workbench to inspect related errors and identify any more specific token validation failures.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Create Access Tokens for Conversations](/docs/conversations/create-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n",
    "causes": "* The token was generated with an incorrect or mismatched `Account SID`, `API Key SID`, or `API Secret`. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* Test credentials were used to create the token. Access Tokens must use live credentials. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* The token was created for a different account or subaccount than the Conversations Chat Service or Sync Service the client is trying to use. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* The token did not include the correct product grant for the SDK you are using. Conversations requires a `ChatGrant` with your Conversation Service SID. Sync requires a `SyncGrant` with your Sync `serviceSid`.\n* The client sent the token in the wrong format, such as a JSON object instead of the raw JWT string. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* The token is outside its valid time window. Access Tokens have a maximum lifetime of 24 hours. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))",
    "solutions": "* Regenerate the token on your server with the correct live `Account SID`, `API Key SID`, and `API Secret` from the same Twilio account that owns the target service. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* Use a Twilio server-side helper library to create the token and grants instead of building the JWT manually. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* For Conversations, add a `ChatGrant` that includes the correct Conversation Service SID. For Sync, add a `SyncGrant` with the correct `serviceSid`.\n* Return the token to the client as a plain JWT string and initialize the SDK with that value. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* Reissue tokens before they expire. If your Conversations client enters the `Denied` connection state, fetch a new token and reconnect.\n* Review the Twilio Console Debugger or Workbench to inspect related errors and identify any more specific token validation failures.",
    "description": "This error occurs when Twilsock cannot authenticate the Access Token presented by a client SDK connection. Access Tokens are short-lived JWTs for Twilio client-side SDKs, and authentication failures are commonly caused by incorrect credentials, invalid token structure, or token timestamp issues.",
    "date_created": "2019-03-27T13:31:56Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51201,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock : CPS, Init per Account",
    "secondary_message": "Too many connection requests for this account.",
    "product": "Connect",
    "products_used": [
      "conversations"
    ],
    "docs": "\n## Description\n\nThis error occurs when your account sends too many new or re-established Twilsock connection requests in a short period. For Conversations (classic) SDK connections, Twilio applies connection-establishment limits per subaccount and across the account overall.\n\n### Possible causes\n\n- Your application is creating or re-establishing SDK connections fast enough to exceed the allowed rate of connection establishment for the account or subaccount.\n- Your client code is repeatedly shutting down and recreating the SDK client during temporary network loss or when the app moves between background and foreground states. The SDK reconnects automatically in those cases.\n- Your access token is expiring before you renew it, which disconnects the client and can trigger a burst of new client initializations.\n- A large number of clients are reconnecting at the same time across one or more subaccounts, which pushes the shared account-wide connection rate over the limit.\n\n### Possible solutions\n\n- Reuse an existing SDK client for the signed-in user session when possible. Do not implement a shutdown and recreate cycle for normal network drops or app background and foreground transitions.\n- Renew the access token before it expires. Handle `tokenAboutToExpire` and call `updateToken` so the client can re-register without forcing a new client initialization.\n- If the token has already expired, request a fresh token and then create a new client once, instead of retrying repeated client creation attempts in a tight loop.\n- Listen for `connectionStateChanged` and your platform's SDK error callbacks so you can detect offline or denied states and avoid sending more connection attempts while the client is not ready.\n- Spread out bulk sign-ins, reconnects, or restart events so new SDK connections stay within the documented connection-establishment limits for your account and subaccounts.\n- Check the Console Debugger and Error Logs to confirm when the limit is hit and identify the part of your application that is generating the connection burst.\n\n#### Additional resources\n\n- [Conversations (classic) Limits](/docs/conversations-classic/conversations-limits)\n- [Best Practices using the Conversations (classic) SDK](/docs/conversations-classic/best-practices-sdk-clients)\n- [SDK Overview](/docs/conversations-classic/sdk-overview)\n",
    "causes": "* Your application is creating or re-establishing SDK connections fast enough to exceed the allowed rate of connection establishment for the account or subaccount.\n* Your client code is repeatedly shutting down and recreating the SDK client during temporary network loss or when the app moves between background and foreground states. The SDK reconnects automatically in those cases.\n* Your access token is expiring before you renew it, which disconnects the client and can trigger a burst of new client initializations.\n* A large number of clients are reconnecting at the same time across one or more subaccounts, which pushes the shared account-wide connection rate over the limit.",
    "solutions": "* Reuse an existing SDK client for the signed-in user session when possible. Do not implement a shutdown and recreate cycle for normal network drops or app background and foreground transitions.\n* Renew the access token before it expires. Handle `tokenAboutToExpire` and call `updateToken` so the client can re-register without forcing a new client initialization.\n* If the token has already expired, request a fresh token and then create a new client once, instead of retrying repeated client creation attempts in a tight loop.\n* Listen for `connectionStateChanged` and your platform's SDK error callbacks so you can detect offline or denied states and avoid sending more connection attempts while the client is not ready.\n* Spread out bulk sign-ins, reconnects, or restart events so new SDK connections stay within the documented connection-establishment limits for your account and subaccounts.\n* Check the Console Debugger and Error Logs to confirm when the limit is hit and identify the part of your application that is generating the connection burst.",
    "description": "This error occurs when your account sends too many new or re-established Twilsock connection requests in a short period. For Conversations (classic) SDK connections, Twilio applies connection-establishment limits per subaccount and across the account overall.",
    "date_created": "2019-05-03T11:45:30Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 51202,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock : CPS, Too many requests",
    "secondary_message": "Too many requests",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your application sends too many requests over Twilsock in a short period. Twilio enforces connection establishment and upstream request limits for SDK traffic to protect service quality. In Conversations and Sync, those limits include up to 110 new or re-established connections per second per subaccount, up to 500 upstream requests per second per connection, and up to 20,000 upstream requests per second per subaccount.\n\n### Possible causes\n\n- Your client is sending reads, writes, updates, or other upstream requests faster than the allowed rate.\n- Your application is repeatedly creating or re-establishing SDK connections, which can exceed connection establishment limits.\n- Multiple clients in the same subaccount are generating enough combined traffic to exceed the shared subaccount request budget.\n- Your application is polling or retrying too aggressively instead of relying on SDK events, callbacks, or synchronized state updates.\n\n### Possible solutions\n\n- Throttle, debounce, or batch client operations so you send fewer requests over each connection.\n- Keep SDK connections open and reuse them where possible instead of repeatedly creating new clients or reconnecting. This follows directly from Twilio's documented connection establishment limits.\n- Implement retries with exponential backoff after a throttled request. Requests rejected with a rate limit response are safe to retry. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/360044308153-Twilio-API-response-Error-429-Too-Many-Requests-))\n- Reduce unnecessary fetching. Prefer SDK events, callbacks, subscriptions, and Sync fanout over polling when you need state changes or status updates.\n- Review your expected traffic against the documented limits for your product. If your production load is expected and you still need more capacity after optimization, contact Support.\n\n#### Additional resources\n\n- [Conversations Limits](/docs/conversations/conversations-limits)\n- [Sync Limits](/docs/sync/limits)\n- [Twilio API response Error 429 \"Too Many Requests\"](https://help.twilio.com/hc/en-us/articles/360044308153-Twilio-API-response-Error-429-Too-Many-Requests-)\n",
    "causes": "* Your client is sending reads, writes, updates, or other upstream requests faster than the allowed rate.\n* Your application is repeatedly creating or re-establishing SDK connections, which can exceed connection establishment limits.\n* Multiple clients in the same subaccount are generating enough combined traffic to exceed the shared subaccount request budget.\n* Your application is polling or retrying too aggressively instead of relying on SDK events, callbacks, or synchronized state updates.",
    "solutions": "* Throttle, debounce, or batch client operations so you send fewer requests over each connection.\n* Keep SDK connections open and reuse them where possible instead of repeatedly creating new clients or reconnecting. This follows directly from Twilio's documented connection establishment limits.\n* Implement retries with exponential backoff after a throttled request. Requests rejected with a rate limit response are safe to retry. ([help.twilio.com](https://help.twilio.com/hc/en-us/articles/360044308153-Twilio-API-response-Error-429-Too-Many-Requests-))\n* Reduce unnecessary fetching. Prefer SDK events, callbacks, subscriptions, and Sync fanout over polling when you need state changes or status updates.\n* Review your expected traffic against the documented limits for your product. If your production load is expected and you still need more capacity after optimization, contact Support.",
    "description": "This error occurs when your application sends too many requests over Twilsock in a short period. Twilio enforces connection establishment and upstream request limits for SDK traffic to protect service quality. In Conversations and Sync, those limits include up to 110 new or re-established connections per second per subaccount, up to 500 upstream requests per second per connection, and up to 20,000 upstream requests per second per subaccount.",
    "date_created": "2019-05-03T11:46:20Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 51215,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilsock: Unauthorized",
    "secondary_message": "Auth failure",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error means Twilsock rejected the client connection because it could not authorize the Access Token you supplied. Use short-lived Access Tokens to authenticate client-side SDKs. If authorization fails, the token is usually missing, invalid, expired, or issued with the wrong credentials or grants.\n\n### Possible causes\n\n- Your application generated the token with the wrong Account SID, API Key SID, or API Secret, or mixed credentials from a different account or subaccount. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- The token is expired, not yet valid, or your client continued using it after its lifetime ended. Access Tokens are short-lived and can be configured for up to 24 hours.\n- The token does not include the correct grant or `identity` for the SDK you are initializing. Conversations and Sync both require you to issue the token on your server with the appropriate user identity and product grant.\n- Your client passed the Access Token in the wrong format, such as a JSON object instead of the token string itself. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- In Conversations, the token authorizes access to the underlying Chat Service. If you issued the token for the wrong service context or user, the connection can be denied.\n\n### Possible solutions\n\n- Generate a new Access Token on your server using your live Account SID, a valid API Key SID, and the matching API Secret. Do not use test credentials for Access Tokens. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- Make sure the token includes the correct product grant and `identity` for the client you are connecting. For Conversations, use the correct Chat Service SID. For Sync, add the Sync grant before returning the token to the client.\n- Pass the token to the SDK as the raw token string returned by your backend. If your backend responds with JSON, extract the token value before you initialize the client. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n- Refresh the token before it expires in long-running clients. Handle events such as `tokenAboutToExpire`, `tokenExpired`, or a `Denied` connection state, then request a fresh token and update the client.\n- If the problem continues, verify that the user should be allowed to connect and that your backend is issuing a token for the correct account, service, and user identity.\n\n#### Additional resources\n\n- [Access Tokens](/docs/iam/access-tokens)\n- [Create Access Tokens for Conversations](/docs/conversations/create-tokens)\n- [Issuing Sync Tokens](/docs/sync/identity-and-access-tokens)\n",
    "causes": "* Your application generated the token with the wrong Account SID, API Key SID, or API Secret, or mixed credentials from a different account or subaccount. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* The token is expired, not yet valid, or your client continued using it after its lifetime ended. Access Tokens are short-lived and can be configured for up to 24 hours.\n* The token does not include the correct grant or `identity` for the SDK you are initializing. Conversations and Sync both require you to issue the token on your server with the appropriate user identity and product grant.\n* Your client passed the Access Token in the wrong format, such as a JSON object instead of the token string itself. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* In Conversations, the token authorizes access to the underlying Chat Service. If you issued the token for the wrong service context or user, the connection can be denied.",
    "solutions": "* Generate a new Access Token on your server using your live Account SID, a valid API Key SID, and the matching API Secret. Do not use test credentials for Access Tokens. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* Make sure the token includes the correct product grant and `identity` for the client you are connecting. For Conversations, use the correct Chat Service SID. For Sync, add the Sync grant before returning the token to the client.\n* Pass the token to the SDK as the raw token string returned by your backend. If your backend responds with JSON, extract the token value before you initialize the client. ([help.twilio.com](https://help.twilio.com/articles/115015890207-Troubleshooting-Invalid-Access-Tokens))\n* Refresh the token before it expires in long-running clients. Handle events such as `tokenAboutToExpire`, `tokenExpired`, or a `Denied` connection state, then request a fresh token and update the client.\n* If the problem continues, verify that the user should be allowed to connect and that your backend is issuing a token for the correct account, service, and user identity.",
    "description": "This error means Twilsock rejected the client connection because it could not authorize the Access Token you supplied. Use short-lived Access Tokens to authenticate client-side SDKs. If authorization fails, the token is usually missing, invalid, expired, or issued with the wrong credentials or grants.",
    "date_created": "2019-05-03T11:47:56Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 52000,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal notification error",
    "secondary_message": "Internal error is inside of notification services",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- An internal error has occurred that prevented Twilio from processing of your request.\n\n### Possible solutions\n\n- Check our [status page](http://status.twilio.com) to see if we are having an outage.\n- If our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.\n",
    "causes": "* An internal error has occurred that prevented Twilio from processing of your request.",
    "solutions": "* Check our [status page](http://status.twilio.com) to see if we are having an outage.\n* If our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.",
    "description": "",
    "date_created": "2016-04-19T14:59:35Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid destination binding",
    "secondary_message": "Provided destination binding information is invalid",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Invalid destination binding\n\nThe message has been rejected by channel due to an invalid destination information. This specific message has not been sent.\n\n### Possible causes\n\n- Address or identity or notification protocol version in a Notify Binding (or ToBinding) were invalid\n\n### Possible solutions\n\n- Make sure that you do not modify the address before creating the Binding or sending ToBinding property of Notification Request.\n",
    "causes": "* Address or identity or notification protocol version in a Notify Binding (or ToBinding) were invalid",
    "solutions": "* Make sure that you do not modify the address before creating the Binding or sending ToBinding property of Notification Request.",
    "description": "",
    "date_created": "2017-12-27T12:35:48Z",
    "last_updated": "2020-08-04T10:00:15.443Z"
  },
  {
    "code": 52002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Credential Sid",
    "secondary_message": "Provided credential sid is invalid or empty",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nIn order to send push notifications to iOS and Android devices you need to configure a Credential that allows Twilio to send notifications to your app.\n\nYou can configure these at different places depending on which Twilio product you use:\n\n- Chat: Configure in access token\n- Notify: Configure default Credential in Notify Service or Binding specific one in Binding\n- Voice SDK: Configure in access token\n\n### Possible causes\n\n- Credential SID is not configured correctly\n\n### Possible solutions\n\n- If using Chat include Credential SID in access token. Check out this [guide](/docs/chat/ios/push-notifications-ios)\n- If using Notify, either configure default Credential SID in your [Service](https://www.twilio.com/console/notify/services) or provide the Credential SID in the [Create Binding](/docs/notify/api/binding-resource#create-a-binding) request\n- If using Voice SDK, include Credential SID in access token. Check out our [documentation](/docs/voice/sdks) for details\n",
    "causes": "* Credential SID is not configured correctly",
    "solutions": "* If using Chat include Credential SID in access token. Check out this [guide](/docs/chat/ios/push-notifications-ios)\n* If using Notify, either configure default Credential SID in your [Service](https://www.twilio.com/console/notify/services) or provide the Credential SID in the [Create Binding](/docs/notify/api/binding-resource#create-a-binding) request\n* If using Voice SDK, include Credential SID in access token. Check out our [documentation](/docs/voice/sdks) for details",
    "description": "In order to send push notifications to iOS and Android devices you need to configure a Credential that allows Twilio to send notifications to your app. You can configure these at different places depending on which Twilio product you use: - Chat: Configure in access token\n- Notify: Configure default Credential in Notify Service or Binding specific one in Binding\n- Voice SDK: Configure in access token",
    "date_created": "2016-04-19T15:00:27Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Credential Type",
    "secondary_message": "Credential type and binding type does not match",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Type of credential provided in access token does not match that of the registration. For example you included the SID of a APS type Credential in the access token for an Android application using GCM.\n\n### Possible solutions\n\n- Make sure you provide the right Credential SID in the access token.\n",
    "causes": "* Type of credential provided in access token does not match that of the registration. For example you included the SID of a APS type Credential in the access token for an Android application using GCM.",
    "solutions": "* Make sure you provide the right Credential SID in the access token.",
    "description": "",
    "date_created": "2016-04-19T15:01:14Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Credential SID not specified",
    "secondary_message": "Credential SID not specified in binding, token or service",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nCredential SIDs are used to determine which Credential resource to use to send a given push notification (APNS, FCM or GCM). For each delivery attempt the system tries to select a Credential SID depending on the API request and configuration. This error indicates that the system did not find any available Credential SID to use and hence failed to send the delivery attempt.\n\n### Possible causes\n\nConfiguration is slightly different depending on which Twilio API and product you are using.\n\n- Notify: Credential SID can be specified in the Notify Service or in the Binding. This error indicates neither of those were specified.\n- Verify Push: Credential SID can be specified in the Verify Service in the `push` configuration. This error indicates the service doesn't have this configuration.\n- Chat, Voice, Verify, Lookup: Credential SID can be specified in the Twilio Access Token used to register for push notifications. This error indicates that the token missed that information.\n\n### Possible solutions\n\n- Notify: Set the Credential SID either in the Notify Service or in the Create Binding request\n- Verify Push: Set the FCM/APN Credential SID in the Verify Service\n- Chat, Voice, Verify, Lookup: Set the Credential SID in the Access Token\n",
    "causes": "Configuration is slightly different depending on which Twilio API and product you are using. - Notify: Credential SID can be specified in the Notify Service or in the Binding. This error indicates neither of those were specified.\n- Verify Push: Credential SID can be specified in the Verify Service in the `push` configuration. This error indicates the service doesn't have this configuration.\n- Chat, Voice, Verify, Lookup: Credential SID can be specified in the Twilio Access Token used to register for push notifications. This error indicates that the token missed that information.",
    "solutions": "* Notify: Set the Credential SID either in the Notify Service or in the Create Binding request\n* Verify Push: Set the FCM/APN Credential SID in the Verify Service\n* Chat, Voice, Verify, Lookup: Set the Credential SID in the Access Token",
    "description": "Credential SIDs are used to determine which Credential resource to use to send a given push notification (APNS, FCM or GCM). For each delivery attempt the system tries to select a Credential SID depending on the API request and configuration. This error indicates that the system did not find any available Credential SID to use and hence failed to send the delivery attempt.",
    "date_created": "2017-10-30T10:27:05Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid credential content",
    "secondary_message": "The credential is malformed or was rejected by the push provider",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe credential is malformed or was rejected by the push provider.\n\n### Possible causes\n\n- Invalid credential\n- Expired credential\n- Legacy credential\n\n### Possible solutions\n\n- Validate the credential with your push provider.\n",
    "causes": "* Invalid credential\n* Expired credential\n* Legacy credential",
    "solutions": "* Validate the credential with your push provider.",
    "description": "The credential is malformed or was rejected by the push provider.",
    "date_created": "2026-07-08T21:29:03+03:00",
    "last_updated": "2026-07-08T21:29:03+03:00"
  },
  {
    "code": 52051,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal error when sending notification via client connection",
    "secondary_message": "An unexpected error has happened in notification flow via realtime client connection",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Our client connection gateway is potentially unavailable. We apologize.\n\n### Possible solutions\n\n- Check our [status page](http://status.twilio.com) to see if we are having an outage.\n- If our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.\n",
    "causes": "* Our client connection gateway is potentially unavailable. We apologize.",
    "solutions": "* Check our [status page](http://status.twilio.com) to see if we are having an outage.\n* If our status page has no information, [contact support](https://www.twilio.com/help/contact) with details about the requests that are failing, and we will investigate.",
    "description": "",
    "date_created": "2016-04-19T15:02:09Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52052,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Client connection not created or closed",
    "secondary_message": "Websocket gateway could not find connection to user for sending notification",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Client connection not found.\n\n### Possible solutions\n\n- No action needed. The client will automatically reconnect when possible.\n",
    "causes": "* Client connection not found.",
    "solutions": "* No action needed. The client will automatically reconnect when possible.",
    "description": "",
    "date_created": "2016-04-19T15:02:55Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52071,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal error when sending notification via mqtt client connection",
    "secondary_message": "An unexpected error has happened in notification flow via mqtt client connection",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Temporary outage of client connection mqtt gateway.\n\n### Possible solutions\n\n- Ask customer support for investigation.\n",
    "causes": "* Temporary outage of client connection mqtt gateway.",
    "solutions": "* Ask customer support for investigation.",
    "description": "",
    "date_created": "2016-04-19T15:03:56Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52072,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Client mqtt connection not created or closed",
    "secondary_message": "Mqtt gateway could not find connection to user for sending notification",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Most probably mqtt client had disconnected but registration didn't removed yet.\n\n### Possible solutions\n\n- Check this warning happens only once for certain registration id.\n",
    "causes": "* Most probably mqtt client had disconnected but registration didn't removed yet.",
    "solutions": "* Check this warning happens only once for certain registration id.",
    "description": "",
    "date_created": "2016-04-19T15:04:40Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid GCM Api Key or FCM Secret",
    "secondary_message": "GCM/FCM credential contains invalid or empty ApiKey/Secret",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The GCM API Key or FCM Secret provided is invalid.\n\n### Possible solutions\n\n- Provide a valid GCM API Key or FCM Secret\n",
    "causes": "* The GCM API Key or FCM Secret provided is invalid.",
    "solutions": "* Provide a valid GCM API Key or FCM Secret",
    "description": "",
    "date_created": "2016-04-19T15:05:29Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52102,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid GCM/FCM registration token",
    "secondary_message": "GCM/FCM service responded with InvalidRegistration error",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Invalid GCM/FCM registration token provided via the Android SDK or the REST API.\n\n### Possible solutions\n\n- Make sure you do not modify the registration token before providing it to Twilio via the SDK or the REST API.\n- If you are using a command line tool to provide the registration token, make sure that it is URL-encoded.\n",
    "causes": "* Invalid GCM/FCM registration token provided via the Android SDK or the REST API.",
    "solutions": "* Make sure you do not modify the registration token before providing it to Twilio via the SDK or the REST API.\n* If you are using a command line tool to provide the registration token, make sure that it is URL-encoded.",
    "description": "",
    "date_created": "2016-04-19T15:06:11Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52103,
    "log_level": "ERROR",
    "log_type": null,
    "message": "GCM/FCM client uninstalled or turned off notifications",
    "secondary_message": "GCM/FCM service marked used registration id as unusable anymore",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- GCM/FCM client application was uninstalled or the user turned off push notifications.\n\n### Possible solutions\n\n- No action needed. We have disabled the registration token and we will not send new notifications to it.\n",
    "causes": "* GCM/FCM client application was uninstalled or the user turned off push notifications.",
    "solutions": "* No action needed. We have disabled the registration token and we will not send new notifications to it.",
    "description": "",
    "date_created": "2016-04-19T15:25:08Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52104,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Mismatched GCM/FCM sender ID",
    "secondary_message": "GCM/FCM application used different sender id with provided application credentials (ApiKey/Secret)",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- GCM/FCM API Key provided is not allowed to send notifications to the registration token.\n\n### Possible solutions\n\nMake sure that you are using an API Key/Secret that is allowed to send notifications to your application.\n\n- Add the Project number of the Google Developers Console/Firebase Console project that the API Key/Secret belongs to to the allowed sender IDs of your application\n- Alternatively use an API Key/Secret from a project that is already allowed to send notifications to your application\n",
    "causes": "* GCM/FCM API Key provided is not allowed to send notifications to the registration token.",
    "solutions": "Make sure that you are using an API Key/Secret that is allowed to send notifications to your application. - Add the Project number of the Google Developers Console/Firebase Console project that the API Key/Secret belongs to to the allowed sender IDs of your application\n- Alternatively use an API Key/Secret from a project that is already allowed to send notifications to your application",
    "description": "",
    "date_created": "2016-04-19T15:26:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52105,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid GCM/FCM package name",
    "secondary_message": "Mismatch package name in request and from GCM/FCM registration id",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Application configuration problem.\n\n### Possible solutions\n\n- Make sure the message was addressed to a registration token whose package name matches the value passed in the request.\n",
    "causes": "* Application configuration problem.",
    "solutions": "* Make sure the message was addressed to a registration token whose package name matches the value passed in the request.",
    "description": "",
    "date_created": "2016-04-19T15:28:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Notification too large for GCM/FCM",
    "secondary_message": "Try to send notification through GCM/FCM binding channel with too big payload",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Payload generated for GCM/FCM exceeded the 4 KB limit.\n\n### Possible solutions\n\n- Reduce the size of the payload.\n",
    "causes": "* Payload generated for GCM/FCM exceeded the 4 KB limit.",
    "solutions": "* Reduce the size of the payload.",
    "description": "",
    "date_created": "2016-04-19T15:29:41Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52107,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid custom key for GCM/FCM",
    "secondary_message": "Using one of custom keys is rejected by GCM/FCM service",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- You have specified an invalid key in the custom key-value pair section of the payload.\n\n### Possible solutions\n\n- GCM/FCM rejects some keys including from, gcm and anything prefixed by google. Make sure you are not using any of these keys.\n",
    "causes": "* You have specified an invalid key in the custom key-value pair section of the payload.",
    "solutions": "* GCM/FCM rejects some keys including from, gcm and anything prefixed by google. Make sure you are not using any of these keys.",
    "description": "",
    "date_created": "2016-04-19T15:30:22Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52108,
    "log_level": "ERROR",
    "log_type": null,
    "message": "GCM/FCM device message rate exceeded",
    "secondary_message": "Too many requests were sent to GCM/FCM service",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The rate of messages to a particular device via GCM/FCM is too high.\n\n### Possible solutions\n\n- Reduce the number of messages sent to this device and do not immediately retry sending to this device.\n",
    "causes": "* The rate of messages to a particular device via GCM/FCM is too high.",
    "solutions": "* Reduce the number of messages sent to this device and do not immediately retry sending to this device.",
    "description": "",
    "date_created": "2016-04-19T15:31:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52109,
    "log_level": "ERROR",
    "log_type": null,
    "message": "GCM/FCM unauthorized error",
    "secondary_message": "GCM/FCM could not authorise request",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- ApiKey/Secret is revoked or invalid.\n\n### Possible solutions\n\nProvide a new API Key/Secret and make sure your application is configured to use it.\n\n- If using IP-Messaging, update your Credential with the new API Key/Secret.\n- If using User Notifications, you can either update your Credential or create a new Credential and update your Service's GcmCredentialSid/FcmCredentialSid.\n",
    "causes": "* ApiKey/Secret is revoked or invalid.",
    "solutions": "Provide a new API Key/Secret and make sure your application is configured to use it. - If using IP-Messaging, update your Credential with the new API Key/Secret.\n- If using User Notifications, you can either update your Credential or create a new Credential and update your Service's GcmCredentialSid/FcmCredentialSid.",
    "description": "",
    "date_created": "2016-04-19T15:31:42Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52110,
    "log_level": "ERROR",
    "log_type": null,
    "message": "GCM/FCM service unavailable",
    "secondary_message": "GCM/FCM service is temporary unavailable",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- GCM/FCM service is temporarily unavailable or Twilio cannot connect to it.\n\n### Possible solutions\n\n- Check our [status page](http://status.twilio.com) to see if we are having an outage.\n- If the problem persists, [contact support](https://www.twilio.com/help/contact) and we will investigate.\n",
    "causes": "* GCM/FCM service is temporarily unavailable or Twilio cannot connect to it.",
    "solutions": "* Check our [status page](http://status.twilio.com) to see if we are having an outage.\n* If the problem persists, [contact support](https://www.twilio.com/help/contact) and we will investigate.",
    "description": "",
    "date_created": "2016-04-19T15:32:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52111,
    "log_level": "ERROR",
    "log_type": null,
    "message": "GCM/FCM unknown error",
    "secondary_message": "Unexpected error has happened in GCM/FCM binding adaptor",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Unknown GCM/FCM error.\n\n### Possible solutions\n\n- If the problem persists, contact [customer support](https://www.twilio.com/help/contact) and provide the time of the error and details about the requests that are failing.\n",
    "causes": "* Unknown GCM/FCM error.",
    "solutions": "* If the problem persists, contact [customer support](https://www.twilio.com/help/contact) and provide the time of the error and details about the requests that are failing.",
    "description": "",
    "date_created": "2016-04-19T15:33:19Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52115,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Service account does not have permission to send FCM messages",
    "secondary_message": null,
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nThe service account associated with the provided FCM credentials does not have the required permissions to send push notifications\n\n### Possible causes\n\nThe role(s) granted to the provided service account do not include the cloudmessaging.messages.create permission\n\n### Possible solutions\n\nUpdate the roles of the service account associated with the given FCM credentials in Google Cloud console to include the cloudmessaging.messages.create permission or provide credentials for a service account that has this permission\n",
    "causes": "The role(s) granted to the provided service account do not include the cloudmessaging.messages.create permission",
    "solutions": "Update the roles of the service account associated with the given FCM credentials in Google Cloud console to include the cloudmessaging.messages.create permission or provide credentials for a service account that has this permission",
    "description": "The service account associated with the provided FCM credentials does not have the required permissions to send push notifications",
    "date_created": "2024-09-18T14:17:18Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52116,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Legacy FCM server key credential used to send notifications",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nGoogle will deprecate the legacy FCM API in June 2024: https://help.twilio.com/articles/20768292997147-Updating-Twilio-Push-for-FCM-HTTP-v1-API\n\n### Possible causes\n\nDetected the use of a legacy FCM server key credential. This credential will stop working after Google deprecates the legacy FCM API in June 2024. Your action is required in order for FCM push notifications to continue to work after the legacy FCM API is deprecated.\n\n### Possible solutions\n\nUse a new FCMv1 credential before June 2024 to keep sending push notifications. See instructions linked in the description above.\n",
    "causes": "Detected the use of a legacy FCM server key credential. This credential will stop working after Google deprecates the legacy FCM API in June 2024. Your action is required in order for FCM push notifications to continue to work after the legacy FCM API is deprecated.",
    "solutions": "Use a new FCMv1 credential before June 2024 to keep sending push notifications. See instructions linked in the description above.",
    "description": "Google will deprecate the legacy FCM API in June 2024: https://help.twilio.com/articles/20768292997147-Updating-Twilio-Push-for-FCM-HTTP-v1-API",
    "date_created": "2024-02-22T09:06:56Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52117,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deprecated GCM/FCM API is used to send notifications",
    "secondary_message": "Migrate to FCMv1 Credentials to send notifications.",
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nGoogle has deprecated the legacy FCM API in June 2024: https://help.twilio.com/articles/20768292997147-Updating-Twilio-Push-for-FCM-HTTP-v1-API\n\n### Possible causes\n\nDetected the use of a legacy FCM server key credential. This credential has stopped working after Google has deprecated the legacy FCM API in June 2024. Your action is required in order for FCM push notifications to continue to work as the legacy FCM API is deprecated.\n\n### Possible solutions\n\nUse a new FCMv1 credential to keep sending push notifications. See instructions linked in the description above.\n",
    "causes": "Detected the use of a legacy FCM server key credential. This credential has stopped working after Google has deprecated the legacy FCM API in June 2024. Your action is required in order for FCM push notifications to continue to work as the legacy FCM API is deprecated.",
    "solutions": "Use a new FCMv1 credential to keep sending push notifications. See instructions linked in the description above.",
    "description": "Google has deprecated the legacy FCM API in June 2024: https://help.twilio.com/articles/20768292997147-Updating-Twilio-Push-for-FCM-HTTP-v1-API",
    "date_created": "2024-09-04T14:40:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52118,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "FCM Bad Request",
    "secondary_message": null,
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- Invalid or missing registration token.\n- Incorrectly formatted JSON payload.\n- Invalid or missing required fields in the request.\n- Exceeding the payload size limit.\n- Invalid API key or authentication token.\n\n### Possible solutions\n\n- Verify that the registration token is correct and not expired.\n- Ensure the JSON payload is correctly formatted and adheres to FCM specifications.\n- Check that all required fields are included and correctly populated in the request.\n- Ensure the payload size does not exceed the maximum limit allowed by FCM.\n- Verify the API key or authentication token is valid and has the necessary permissions.\n",
    "causes": "* Invalid or missing registration token.\n* Incorrectly formatted JSON payload.\n* Invalid or missing required fields in the request.\n* Exceeding the payload size limit.\n* Invalid API key or authentication token.",
    "solutions": "* Verify that the registration token is correct and not expired.\n* Ensure the JSON payload is correctly formatted and adheres to FCM specifications.\n* Check that all required fields are included and correctly populated in the request.\n* Ensure the payload size does not exceed the maximum limit allowed by FCM.\n* Verify the API key or authentication token is valid and has the necessary permissions.",
    "description": "",
    "date_created": "2025-03-11T09:43:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52119,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "FCM could not deliver to iOS device: APNs token is unregistered",
    "secondary_message": null,
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nTwilio attempted to send a push notification to an iOS device through Firebase Cloud Messaging (FCM). FCM then forwarded the notification to Apple Push Notification service (APNs). APNs rejected the request because the device token is no longer registered, so the notification wasn't delivered.\n\nTwilio deleted the Binding that contained this device token and won't attempt to send additional notifications to it.\n\nThis error is specific to iOS devices reached through an FCM Credential.\n\n### Possible causes\n\n- The user uninstalled your app from the iOS device.\n- The user disabled push notifications for your app, or the device token was invalidated by iOS (for example, after a restore onto a different device).\n- The APNs device token was registered against a different environment (sandbox versus production) than the one your FCM project is configured to use, so APNs no longer recognizes it.\n- Your application stored a device token that has since been replaced, and it registered the stale token with Twilio.\n\n### Possible solutions\n\n- Register a new Binding whenever your app receives an updated device token from iOS, so notifications continue to reach the user after they reinstall or re-enable notifications.\n- Confirm that your app requests the device token on every launch and creates or updates the Binding with the value iOS returns, rather than caching a token indefinitely.\n- Verify that the APNs environment your app builds against matches the APNs configuration uploaded to your Firebase project.\n\n### Related errors\n\n- [The provided APNs device token has been unregistered](/docs/api/errors/52141) — the same failure when Twilio delivers to APNs directly, using an APNs Credential.\n- [GCM/FCM client uninstalled or turned off notifications](/docs/api/errors/52103) — the same failure for an Android device token.\n\n#### Additional resources\n\n- [Notify Bindings resource](/docs/notify/api/binding-resource)\n- [Notify Credentials resource](/docs/notify/api/credential-resource)\n",
    "causes": "* The user uninstalled your app from the iOS device.\n* The user disabled push notifications for your app, or the device token was invalidated by iOS (for example, after a restore onto a different device).\n* The APNs device token was registered against a different environment (sandbox versus production) than the one your FCM project is configured to use, so APNs no longer recognizes it.\n* Your application stored a device token that has since been replaced, and it registered the stale token with Twilio.",
    "solutions": "* Register a new Binding whenever your app receives an updated device token from iOS, so notifications continue to reach the user after they reinstall or re-enable notifications.\n* Confirm that your app requests the device token on every launch and creates or updates the Binding with the value iOS returns, rather than caching a token indefinitely.\n* Verify that the APNs environment your app builds against matches the APNs configuration uploaded to your Firebase project.",
    "description": "Twilio attempted to send a push notification to an iOS device through Firebase Cloud Messaging (FCM). FCM then forwarded the notification to Apple Push Notification service (APNs). APNs rejected the request because the device token is no longer registered, so the notification wasn't delivered. Twilio deleted the Binding that contained this device token and won't attempt to send additional notifications to it. This error is specific to iOS devices reached through an FCM Credential.",
    "date_created": "2026-09-15T14:25:44+03:00",
    "last_updated": "2026-09-15T16:22:47+03:00"
  },
  {
    "code": 52131,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid APNs credentials",
    "secondary_message": "APN certificate or Private Key are invalid",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Credential (certificate and private key) is invalid.\n- Certificate expired.\n\n### Possible solutions\n\n- Make sure you have valid certificate and private key provided in your Credential.\n",
    "causes": "* Credential (certificate and private key) is invalid.\n* Certificate expired.",
    "solutions": "* Make sure you have valid certificate and private key provided in your Credential.",
    "description": "",
    "date_created": "2016-04-19T15:34:09Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52133,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid APNs device token size",
    "secondary_message": "APN token size is invalid",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Invalid APNs token was provided.\n\n### Possible solutions\n\n- Make sure you do not modify the APNs device token before providing it to Twilio.\n",
    "causes": "* Invalid APNs token was provided.",
    "solutions": "* Make sure you do not modify the APNs device token before providing it to Twilio.",
    "description": "",
    "date_created": "2016-04-19T15:34:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52134,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid APNs device token",
    "secondary_message": "APNs rejected notification with InvalidToken reason",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- APNs device token format is invalid.\n- Trying to use a development certificate for a production application or vice-versa.\n\n### Possible solutions\n\n- Make sure you do not modify the device token before providing it to Twilio. If using a command line tool make sure to url-encode the token.\n- Make sure that you are using a development certificate for a development application and a production certificate for a production application.\n\n  - If you are using a traditional certificate, you can tell its environment by looking at the common name field\n\n    - For a development certificate, it will start with: Apple Development IOS Push Services\n    - For a production certificate, it will start with: Apple Push Services\n  - If you are using a universal certificate, you can use it for both development and production applications. However you have to make sure that you have properly indicated the type of application by setting the sandbox parameter when you create the credential. You can check the sandbox flag of your credential via the [REST API](/docs/chat/rest/credential-resource#action-get).\n",
    "causes": "* APNs device token format is invalid.\n* Trying to use a development certificate for a production application or vice-versa.",
    "solutions": "* Make sure you do not modify the device token before providing it to Twilio. If using a command line tool make sure to url-encode the token.\n* Make sure that you are using a development certificate for a development application and a production certificate for a production application.\n\n  * If you are using a traditional certificate, you can tell its environment by looking at the common name field\n\n    * For a development certificate, it will start with: Apple Development IOS Push Services\n    * For a production certificate, it will start with: Apple Push Services\n  * If you are using a universal certificate, you can use it for both development and production applications. However you have to make sure that you have properly indicated the type of application by setting the sandbox parameter when you create the credential. You can check the sandbox flag of your credential via the [REST API](/docs/chat/rest/credential-resource#action-get).",
    "description": "",
    "date_created": "2016-04-19T15:35:27Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52135,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Missing subject in APNs certificate",
    "secondary_message": "APNs certificate is invalid",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The subject of APNs certificate is missing.\n\n### Possible solutions\n\n- The subject of the APNs certificate is the bundle ID of your application. Make sure you have a bundle ID defined when generating the certificate signing request.\n",
    "causes": "* The subject of APNs certificate is missing.",
    "solutions": "* The subject of the APNs certificate is the bundle ID of your application. Make sure you have a bundle ID defined when generating the certificate signing request.",
    "description": "",
    "date_created": "2016-04-19T15:36:04Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52136,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Missing payload for APNs delivery",
    "secondary_message": "Payload must be provided to send notification over APNs",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- APNs delivery had no payload.\n\n### Possible solutions\n\n- Make sure to provide a payload using at least one of Body, Sound, Action, Data or Aps parameters.\n",
    "causes": "* APNs delivery had no payload.",
    "solutions": "* Make sure to provide a payload using at least one of Body, Sound, Action, Data or Aps parameters.",
    "description": "",
    "date_created": "2016-04-19T15:36:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52137,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid size of subject in APNs certificate",
    "secondary_message": "APNs certificate is invalid",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The subject of APNs certificate is of invalid size.\n\n### Possible solutions\n\n- The subject of the APNs certificate is the bundle ID of your application. Make sure you have a valid bundle ID defined when generating the certificate signing request.\n",
    "causes": "* The subject of APNs certificate is of invalid size.",
    "solutions": "* The subject of the APNs certificate is the bundle ID of your application. Make sure you have a valid bundle ID defined when generating the certificate signing request.",
    "description": "",
    "date_created": "2016-04-19T15:37:14Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52138,
    "log_level": "ERROR",
    "log_type": null,
    "message": "APNs payload too large",
    "secondary_message": "Provided payload is too large for APNs",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Generated APNs payload exceeded limit.\n\n### Possible solutions\n\n- The maximum payload size allowed for iOS 8+ devices is 2KB for earlier devices it is 256 B. Revise your payload so that it does not exceed this limit.\n",
    "causes": "* Generated APNs payload exceeded limit.",
    "solutions": "* The maximum payload size allowed for iOS 8+ devices is 2KB for earlier devices it is 256 B. Revise your payload so that it does not exceed this limit.",
    "description": "",
    "date_created": "2016-04-19T15:38:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52139,
    "log_level": "ERROR",
    "log_type": null,
    "message": "APN service shutdown",
    "secondary_message": "APNs is shutdown",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- APNs delivery rejected because APNs service is shutting down (e.g. for maintenance).\n\n### Possible solutions\n\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* APNs delivery rejected because APNs service is shutting down (e.g. for maintenance).",
    "solutions": "* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2016-04-19T15:38:39Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52140,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unknown APNs error",
    "secondary_message": "Unexpected error has happened in Apn binding adaptor",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Unknown APNs error.\n\n### Possible solutions\n\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* Unknown APNs error.",
    "solutions": "* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2016-04-19T15:39:17Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52141,
    "log_level": "ERROR",
    "log_type": null,
    "message": "The provided APNs device token has been unregistered",
    "secondary_message": "The device token specified is inactive for the specified topic.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- APNs notification delivery rejected because the app has either been uninstalled or notifications have been disabled.\n\n### Possible solutions\n\n- If the offending Binding still exists, remove it manually or avoid sending Notifications to it.\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* APNs notification delivery rejected because the app has either been uninstalled or notifications have been disabled.",
    "solutions": "* If the offending Binding still exists, remove it manually or avoid sending Notifications to it.\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-01-04T11:14:58Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52142,
    "log_level": "ERROR",
    "log_type": null,
    "message": "The provided APNs device token is not correct",
    "secondary_message": "APNs Device Token is missing or malformed",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The APNs device token is either malformed or missing.\n\n### Possible solutions\n\n- Please verify that you're capturing the device token correctly.\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* The APNs device token is either malformed or missing.",
    "solutions": "* Please verify that you're capturing the device token correctly.\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-01-04T11:17:03Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52143,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The push notification was rejected by APNs",
    "secondary_message": null,
    "product": "Programmable Voice, Verify",
    "products_used": [
      "voice",
      "verify"
    ],
    "docs": "\n## Description\n\nThis error means APNs rejected the push request because the certificate topic did not match the app bundle identifier or push type for the registered device token. Twilio sends APNs notifications only to the certificate's main topic, so the certificate subject and the device token's app bundle ID must match.\n\n### Possible causes\n\n- The APNs certificate was created for a different bundle identifier than the iOS app that generated the device token.\n- The registered device token belongs to a different app build or bundle identifier than the certificate subject.\n- A regular APNs certificate was used for a VoIP push, or a VoIP certificate was used for a regular application push.\n- The push was sent to a topic that APNs does not allow for the uploaded certificate.\n\n### Possible solutions\n\n- Create or upload an APNs credential whose bundle identifier matches the bundle identifier in your iOS app.\n- Register the device again after you confirm the app is using the correct bundle identifier and APNs credential.\n- For Voice iOS apps, use an Apple VoIP Service certificate and a PushKit device token from the matching `.voip` bundle.\n- For Verify Push iOS apps, use standard application remote push notifications for the app bundle identifier. VoIP and other specialized notification types are not supported.\n\n#### Additional resources\n\n- [Obtain APNs credentials](/docs/comms/apn-credentials)\n- [Verify Push iOS Client Library Quickstart](/docs/verify/quickstarts/push-ios)\n- [Voice iOS SDK FAQ](/docs/voice/sdks/ios/faq)\n",
    "causes": "* The APNs certificate was created for a different bundle identifier than the iOS app that generated the device token.\n* The registered device token belongs to a different app build or bundle identifier than the certificate subject.\n* A regular APNs certificate was used for a VoIP push, or a VoIP certificate was used for a regular application push.\n* The push was sent to a topic that APNs does not allow for the uploaded certificate.",
    "solutions": "* Create or upload an APNs credential whose bundle identifier matches the bundle identifier in your iOS app.\n* Register the device again after you confirm the app is using the correct bundle identifier and APNs credential.\n* For Voice iOS apps, use an Apple VoIP Service certificate and a PushKit device token from the matching `.voip` bundle.\n* For Verify Push iOS apps, use standard application remote push notifications for the app bundle identifier. VoIP and other specialized notification types are not supported.",
    "description": "This error means APNs rejected the push request because the certificate topic did not match the app bundle identifier or push type for the registered device token. Twilio sends APNs notifications only to the certificate's main topic, so the certificate subject and the device token's app bundle ID must match.",
    "date_created": "2018-01-04T11:20:33Z",
    "last_updated": "2026-04-16T22:35:24+01:00"
  },
  {
    "code": 52144,
    "log_level": "ERROR",
    "log_type": null,
    "message": "APNs experienced an internal error",
    "secondary_message": "APNs was unable to handle your request",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- APNs had an unexpected error\n- APNS is unavailable\n- Request to APNs timed out\n\n### Possible solutions\n\n- Retry the request at a later time\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* APNs had an unexpected error\n* APNS is unavailable\n* Request to APNs timed out",
    "solutions": "* Retry the request at a later time\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-01-04T11:23:15Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52145,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to authenticate with APNs",
    "secondary_message": "Could not authenticate with APNs using the provided credentials",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Unable to complete the TLS handshake with APNs.\n\n### Possible solutions\n\n- Verify that your certificate and private key are correct and can be used together.\n- Verify that your certificate has not been revoked.\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* Unable to complete the TLS handshake with APNs.",
    "solutions": "* Verify that your certificate and private key are correct and can be used together.\n* Verify that your certificate has not been revoked.\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-01-04T11:29:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52147,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Too many APNs provider token updates",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- A new APNs provider token is being generated too often\n- The APNs provider token is not cached by Twilio\n\n### Possible solutions\n\n- Verify that your Webhook Credential is configured correctly\n- Verify that your token endpoint is configured correctly\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* A new APNs provider token is being generated too often\n* The APNs provider token is not cached by Twilio",
    "solutions": "* Verify that your Webhook Credential is configured correctly\n* Verify that your token endpoint is configured correctly\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-04-04T09:59:45Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52148,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Expired APNs provider token used",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The APNs provider token has been in the cache for too long\n- The APNs provider token is generated incorrectly\n\n### Possible solutions\n\n- Verify that your Webhook Credential is configured correctly\n- Verify that your token endpoint is configured correctly\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* The APNs provider token has been in the cache for too long\n* The APNs provider token is generated incorrectly",
    "solutions": "* Verify that your Webhook Credential is configured correctly\n* Verify that your token endpoint is configured correctly\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-04-04T10:01:11Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52149,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid APNs provider token used",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The APNs provider token is malformed or otherwise incorrect\n\n### Possible solutions\n\n- Verify that your Webhook Credential is configured correctly\n- Verify that your token endpoint is configured correctly\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* The APNs provider token is malformed or otherwise incorrect",
    "solutions": "* Verify that your Webhook Credential is configured correctly\n* Verify that your token endpoint is configured correctly\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-04-04T10:02:19Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52161,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Empty Credentials",
    "secondary_message": "Credentials are misconfigured or not exist yet",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Credentials are invalid or do not exist for provided credential sid.\n\n### Possible solutions\n\n- Make sure you have credential is valid.\n",
    "causes": "* Credentials are invalid or do not exist for provided credential sid.",
    "solutions": "* Make sure you have credential is valid.",
    "description": "",
    "date_created": "2016-04-19T15:39:55Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52162,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Credentials do not belong to used account",
    "secondary_message": "Account sid from credentials is not equal account sid which is used for sending notification",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The credential you have tried to use does not belong to the account.\n\n### Possible solutions\n\n- Use a credential that belongs to the account.\n",
    "causes": "* The credential you have tried to use does not belong to the account.",
    "solutions": "* Use a credential that belongs to the account.",
    "description": "",
    "date_created": "2016-04-19T15:40:33Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52163,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Incorrect URL used to retrieve Webhook Credentials",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- An incorrect URL was specified in your Webhook Credentials URL field\n- The URL was correct, but returned a 404 response\n\n### Possible solutions\n\n- Verify your Webhook Credential URL and response\n",
    "causes": "* An incorrect URL was specified in your Webhook Credentials URL field\n* The URL was correct, but returned a 404 response",
    "solutions": "* Verify your Webhook Credential URL and response",
    "description": "",
    "date_created": "2018-03-28T11:49:19Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52164,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No Credentials found for the supplied Binding Type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The Webhook Credential was configured for the wrong Binding Type\n- Your token endpoint responded with the respective error code by mistake\n- An internal Twilio error occurred\n\n### Possible solutions\n\n- Verify that your Webhook Credential is set up for the correct Binding Type\n- Verify that your token endpoint is set up correctly\n",
    "causes": "* The Webhook Credential was configured for the wrong Binding Type\n* Your token endpoint responded with the respective error code by mistake\n* An internal Twilio error occurred",
    "solutions": "* Verify that your Webhook Credential is set up for the correct Binding Type\n* Verify that your token endpoint is set up correctly",
    "description": "",
    "date_created": "2018-03-28T11:52:27Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52165,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No Credentials found for the supplied Identifier",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Your Webhook Credential has a misconfigured Identifier value\n- Your token endpoint responded with the respective error code by mistake\n- An internal Twilio error occurred\n\n### Possible solutions\n\n- Verify that your Webhook Credential is configured correctly\n- Verify that your token endpoint is set up correctly\n",
    "causes": "* Your Webhook Credential has a misconfigured Identifier value\n* Your token endpoint responded with the respective error code by mistake\n* An internal Twilio error occurred",
    "solutions": "* Verify that your Webhook Credential is configured correctly\n* Verify that your token endpoint is set up correctly",
    "description": "",
    "date_created": "2018-03-28T11:54:53Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52166,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Webhook Credentials endpoint responded with Internal Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Your Webhook Credentials endpoint is misconfigured\n\n### Possible solutions\n\n- Verify that your token endpoint is configured correctly\n",
    "causes": "* Your Webhook Credentials endpoint is misconfigured",
    "solutions": "* Verify that your token endpoint is configured correctly",
    "description": "",
    "date_created": "2018-03-28T11:57:55Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52167,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Webhook Credentials response",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Your Webhook Credentials response did not adhere to the required schema\n\n### Possible solutions\n\n- Verify that your Webhook Credentials response is correct\n",
    "causes": "* Your Webhook Credentials response did not adhere to the required schema",
    "solutions": "* Verify that your Webhook Credentials response is correct",
    "description": "",
    "date_created": "2018-03-28T12:01:11Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52168,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Webhook Credentials request timed out",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The request attempt to the URL specified in your Webhook Credential timed out\n\n### Possible solutions\n\n- Poor network conditions between Twilio and your endpoint\n- Large delay during request processing by your endpoint\n",
    "causes": "* The request attempt to the URL specified in your Webhook Credential timed out",
    "solutions": "* Poor network conditions between Twilio and your endpoint\n* Large delay during request processing by your endpoint",
    "description": "",
    "date_created": "2018-03-28T12:02:40Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52170,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Too many Webhook Credential requests",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- You are sending Notifications too quickly\n- Your Webhook Credentials are not being cached correctly\n\n### Possible solutions\n\n- Rate limit your requests accordingly\n- Verify the contents of your token endpoint response\n",
    "causes": "* You are sending Notifications too quickly\n* Your Webhook Credentials are not being cached correctly",
    "solutions": "* Rate limit your requests accordingly\n* Verify the contents of your token endpoint response",
    "description": "",
    "date_created": "2018-03-28T12:04:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52171,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Webhook Credentials request signature was not verified",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Your token endpoint was not able to verify the request signature\n\n### Possible solutions\n\n- Verify that your Webhook Credentials are configured with the correct values\n- Verify that your signature verification logic is working as expected\n",
    "causes": "* Your token endpoint was not able to verify the request signature",
    "solutions": "* Verify that your Webhook Credentials are configured with the correct values\n* Verify that your signature verification logic is working as expected",
    "description": "",
    "date_created": "2018-03-28T12:07:22Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52172,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Unexpected Binding Type used for Webhook Credentials request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Your token endpoint responded with an error indicating that the Binding Type used was not correct\n\n### Possible solutions\n\n- Verify that your Webhook Credential is configured correctly\n- Verify that your token endpoint is configured correctly\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* Your token endpoint responded with an error indicating that the Binding Type used was not correct",
    "solutions": "* Verify that your Webhook Credential is configured correctly\n* Verify that your token endpoint is configured correctly\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-04-04T09:55:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52173,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Unexpected Identifier used for Webhook Credentials request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Your token endpoint responded with an error indicating that the Identifier used was not correct\n\n### Possible solutions\n\n- Verify that your Webhook Credential is configured correctly\n- Verify that your token endpoint is configured correctly\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* Your token endpoint responded with an error indicating that the Identifier used was not correct",
    "solutions": "* Verify that your Webhook Credential is configured correctly\n* Verify that your token endpoint is configured correctly\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-04-04T09:56:23Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52174,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Unexpected error response received for Webhook Credentials request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Your token endpoint responded with an unexpected error\n\n### Possible solutions\n\n- Verify that your Webhook Credential is configured correctly\n- Verify that your token endpoint is configured correctly\n- If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).\n",
    "causes": "* Your token endpoint responded with an unexpected error",
    "solutions": "* Verify that your Webhook Credential is configured correctly\n* Verify that your token endpoint is configured correctly\n* If the problem persists, please contact [customer support](https://www.twilio.com/help/contact).",
    "description": "",
    "date_created": "2018-04-04T09:57:36Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52181,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Too many SMS notification requests",
    "secondary_message": "Global SMS notification per second limit exceeded",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Somebody is using SMS broadcast\n- General high load\n\n### Possible solutions\n\n- At the moment there is a global SMS rate limit. This should be increased or eliminated entirely in the near future, but that requires some development. Please notify RTD Notifications team if this error starts occurring.\n",
    "causes": "* Somebody is using SMS broadcast\n* General high load",
    "solutions": "* At the moment there is a global SMS rate limit. This should be increased or eliminated entirely in the near future, but that requires some development. Please notify RTD Notifications team if this error starts occurring.",
    "description": "",
    "date_created": "2016-06-07T15:56:12Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52182,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Messaging Service not specified",
    "secondary_message": "MessagingServiceSid in Notify Service is not specified",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nIn order to send SMS messages with Notify you need to configure a [Messaging Service](/docs/messaging/services) and connect it with your Notify Service. Messaging Services make it easy to build SMS application by automatically selecting an optimal From phone number from pool you can define.\n\n### Possible causes\n\n- MessagingServiceSid in Notify Service is not specified\n\n### Possible solutions\n\n- Configure a Messaging Service in the [console](/console/notify/services) or via the [REST API](/docs/notify/api/service-resource#update-a-service). You can create a new Messaging Service in the [console](https://www.twilio.com/console/sms/services) or via the [REST API](/docs/messaging/api/service-resource).\n",
    "causes": "* MessagingServiceSid in Notify Service is not specified",
    "solutions": "* Configure a Messaging Service in the [console](/console/notify/services) or via the [REST API](/docs/notify/api/service-resource#update-a-service). You can create a new Messaging Service in the [console](https://www.twilio.com/console/sms/services) or via the [REST API](/docs/messaging/api/service-resource).",
    "description": "In order to send SMS messages with Notify you need to configure a [Messaging Service](/docs/messaging/services) and connect it with your Notify Service. Messaging Services make it easy to build SMS application by automatically selecting an optimal From phone number from pool you can define.",
    "date_created": "2017-07-14T09:29:35Z",
    "last_updated": "2020-08-04T10:00:18.029Z"
  },
  {
    "code": 52201,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Too many Facebook messenger notification requests",
    "secondary_message": "Too many Facebook messenger notifications are sent from the same Facebook page ID",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Customer is trying to broadcast Facebook messenger notifications\n\n### Possible solutions\n\n- Please notify RTD Notifications team if this error starts occurring.\n",
    "causes": "* Customer is trying to broadcast Facebook messenger notifications",
    "solutions": "* Please notify RTD Notifications team if this error starts occurring.",
    "description": "",
    "date_created": "2016-06-07T15:57:03Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52202,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Facebook page is not connected to Twilio",
    "secondary_message": "Facebook page configured in Service is not connected to Twilio",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Facebook page configured in Notify Service instance is not connected to Twilio\n- The connection may have been removed after the Notify Service had been configured\n\n### Possible solutions\n\n- [Configure a new Facebook page](https://www.twilio.com/console/notify/services) for your Notify Service\n- [Connect the Facebook page](https://www.twilio.com/console/channels) to your Twilio account\n",
    "causes": "* Facebook page configured in Notify Service instance is not connected to Twilio\n* The connection may have been removed after the Notify Service had been configured",
    "solutions": "* [Configure a new Facebook page](https://www.twilio.com/console/notify/services) for your Notify Service\n* [Connect the Facebook page](https://www.twilio.com/console/channels) to your Twilio account",
    "description": "",
    "date_created": "2017-07-06T13:09:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52203,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Missing body for Facebook Messenger delivery attempt",
    "secondary_message": "Either Body or FacebookMessenger parameter of Notification should be used to specify the message body",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nMessenger messages need to have some content. You can specify this either via the [generic Body parameter](/docs/notify/api/notification-resource#generic-payload-parameters) of the Notification request or the [FacebookMessenger channel specific parameter](/docs/notify/api/notification-resource#channel-specific-parameters).\n\n### Possible causes\n\n- Notification has neither Body not FacebookMessenger parameter set\n\n### Possible solutions\n\n- Specify either Body or FacebookMessenger parameter when sending a Notification\n",
    "causes": "* Notification has neither Body not FacebookMessenger parameter set",
    "solutions": "* Specify either Body or FacebookMessenger parameter when sending a Notification",
    "description": "Messenger messages need to have some content. You can specify this either via the [generic Body parameter](/docs/notify/api/notification-resource#generic-payload-parameters) of the Notification request or the [FacebookMessenger channel specific parameter](/docs/notify/api/notification-resource#channel-specific-parameters).",
    "date_created": "2017-07-17T07:40:44Z",
    "last_updated": "2020-08-04T10:00:18.014Z"
  },
  {
    "code": 52211,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Too many Alexa notifications",
    "secondary_message": "You are sending Alexa notifications too fast",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Too many Alexa notifications\n\nYour message has been rejected by the Alexa channel due too many messages.\n\n### Possible causes\n\n- You are making Send Notification requests too fast.\n- You have made some bulk notification requests that created too many Alexa messages too fast.\n\n### Possible solutions\n\n- Slow down the rate of Send Notification requests.\n- Target less recipients per bulk notification request and send the bulk requests more slowly.\n",
    "causes": "* You are making Send Notification requests too fast.\n* You have made some bulk notification requests that created too many Alexa messages too fast.",
    "solutions": "* Slow down the rate of Send Notification requests.\n* Target less recipients per bulk notification request and send the bulk requests more slowly.",
    "description": "",
    "date_created": "2017-06-22T15:10:46Z",
    "last_updated": "2020-08-04T10:00:18.259Z"
  },
  {
    "code": 52212,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Missing Alexa skill ID",
    "secondary_message": "You have not specified the Alexa Skill ID in the Notify Service",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Missing Alexa skill ID\n\nYour Alexa message was rejected because the Alexa Skill ID was missing. This specific message was not sent.\n\n### Possible causes\n\n- You have not specified the Alexa Skill ID in your Notify Service.\n\n### Possible solutions\n\n- Connect your Alexa Skill via the [Channels console](https://www.twilio.com/console/channels) then connect your skill to your [Notify Service](https://www.twilio.com/console/notify/services).\n",
    "causes": "* You have not specified the Alexa Skill ID in your Notify Service.",
    "solutions": "* Connect your Alexa Skill via the [Channels console](https://www.twilio.com/console/channels) then connect your skill to your [Notify Service](https://www.twilio.com/console/notify/services).",
    "description": "",
    "date_created": "2017-06-22T15:15:53Z",
    "last_updated": "2020-08-04T10:00:18.238Z"
  },
  {
    "code": 52213,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Alexa user ID",
    "secondary_message": "The message has been rejected by Alexa channel due to an invalid User ID",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Invalid Alexa user ID\n\nThe message has been rejected by Alexa channel due to an invalid User ID. This specific message has not been sent.\n\n### Possible causes\n\n- The user ID (Address) in a Notify Binding was invalid\n\n### Possible solutions\n\n- Make sure that you do not modify the user ID before creating the Binding.\n",
    "causes": "* The user ID (Address) in a Notify Binding was invalid",
    "solutions": "* Make sure that you do not modify the user ID before creating the Binding.",
    "description": "",
    "date_created": "2017-06-22T15:23:19Z",
    "last_updated": "2020-08-04T10:00:18.219Z"
  },
  {
    "code": 52214,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Alexa skill is not connected to Twilio",
    "secondary_message": "The Alexa skill configured for the Notify Service is not connected to Twilio",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Alexa skill ID configured for Notify Service is not connected to Twilio\n- After the Notify Service had been configured, the Alexa skill was disconnected from Twilio\n\n### Possible solutions\n\n- [Configure a new Alexa skill](https://www.twilio.com/console/notify/services) for your Notify Service\n- [Connect the Alexa skill](https://www.twilio.com/console/channels) to your Twilio Account\n",
    "causes": "* Alexa skill ID configured for Notify Service is not connected to Twilio\n* After the Notify Service had been configured, the Alexa skill was disconnected from Twilio",
    "solutions": "* [Configure a new Alexa skill](https://www.twilio.com/console/notify/services) for your Notify Service\n* [Connect the Alexa skill](https://www.twilio.com/console/channels) to your Twilio Account",
    "description": "",
    "date_created": "2017-07-06T13:14:05Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52215,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Missing Title parameter for Alexa",
    "secondary_message": "Message has been rejected by Alexa channel due to missing Title parameter",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Missing Title parameter for Alexa\n\nMessage has been rejected by Alexa channel due to missing Title parameter. Title is a required parameter for Alexa channel. This specific message has not been sent.\n\n### Possible causes\n\n- Have not provided the Title parameter neither in the generic payload nor in the Alexa specific parameter.\n\n### Possible solutions\n\n- Make sure that you provide the Title parameter for the Alexa channel either in the [generic payload](/docs/notify/api/notification-resource#generic-payload-parameters) or the [Alexa specific parameter](/docs/notify/api/notification-resource#sending-channel-specific-notifications).\n",
    "causes": "* Have not provided the Title parameter neither in the generic payload nor in the Alexa specific parameter.",
    "solutions": "* Make sure that you provide the Title parameter for the Alexa channel either in the [generic payload](/docs/notify/api/notification-resource#generic-payload-parameters) or the [Alexa specific parameter](/docs/notify/api/notification-resource#sending-channel-specific-notifications).",
    "description": "",
    "date_created": "2017-06-22T15:30:09Z",
    "last_updated": "2020-08-04T10:00:18.202Z"
  },
  {
    "code": 52301,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Resulted destination list for requested parameters is empty",
    "secondary_message": "Search of target destinations by provided parameters returned empty list",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- No bindings were selected by the provided combination of parameters.\n\n### Possible solutions\n\n- This may have been your intention, in that case no action is needed.\n- In case you expected to notify some of your bindings then review your parameters and bindings/registrations.\n",
    "causes": "* No bindings were selected by the provided combination of parameters.",
    "solutions": "* This may have been your intention, in that case no action is needed.\n* In case you expected to notify some of your bindings then review your parameters and bindings/registrations.",
    "description": "",
    "date_created": "2016-04-19T15:41:17Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52302,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Too many recipients",
    "secondary_message": "Request has exceed the maximum recipients limit. No deliveries were attempted.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\nAn attempt was made to send a broadcast notification that targeted too many recipients.\n\n### Possible solutions\n\n- Send several notifications that target fewer recipients (e.g. by partitioning your audience using more Segments and Tags).\n- If there is no good way to partition your audience, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).\n",
    "causes": "An attempt was made to send a broadcast notification that targeted too many recipients.",
    "solutions": "* Send several notifications that target fewer recipients (e.g. by partitioning your audience using more Segments and Tags).\n* If there is no good way to partition your audience, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).",
    "description": "",
    "date_created": "2017-05-24T08:28:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52303,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Concurrent User update",
    "secondary_message": "Concurrent User update may have caused User data inconsistency",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nUpdating the same User resource in multiple concurrent requests may cause data inconsistency. This may result in that searches using multiple Segments will not find your User resource even if it should belong to all the specified Segments.\n\n### Possible causes\n\n- Updating the same User resource (e.g. adding or removing it to/from Segments) in multiple requests concurrently.\n\n### Possible solutions\n\n- Change implementation so that if you need to add a User to multiple Segments at once you wait for each request to complete before trying the next one.\n- For past errors, just read the affected User resource by using the [Read User API](/docs/notify/api/user-resource#retrieve-a-user) this will fix the data inconsistency.\n",
    "causes": "* Updating the same User resource (e.g. adding or removing it to/from Segments) in multiple requests concurrently.",
    "solutions": "* Change implementation so that if you need to add a User to multiple Segments at once you wait for each request to complete before trying the next one.\n* For past errors, just read the affected User resource by using the [Read User API](/docs/notify/api/user-resource#retrieve-a-user) this will fix the data inconsistency.",
    "description": "Updating the same User resource in multiple concurrent requests may cause data inconsistency. This may result in that searches using multiple Segments will not find your User resource even if it should belong to all the specified Segments.",
    "date_created": "2017-05-24T08:37:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52304,
    "log_level": "WARNING",
    "log_type": null,
    "message": "User already exists",
    "secondary_message": "User with this identity already exists",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- User with this identity has already been created, possibly during create binding operation.\n\n### Possible solutions\n\n- As user already exists, no extra actions are required. However one might want to make sure that the existing user has all the necessary attributes, e.g. segments.\n",
    "causes": "* User with this identity has already been created, possibly during create binding operation.",
    "solutions": "* As user already exists, no extra actions are required. However one might want to make sure that the existing user has all the necessary attributes, e.g. segments.",
    "description": "",
    "date_created": "2017-05-24T08:42:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52305,
    "log_level": "WARNING",
    "log_type": null,
    "message": "User already belongs to the segment",
    "secondary_message": "User is already a member of this segment",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- User has already been added to this segment.\n\n### Possible solutions\n\n- As user is already a member of the required segment, no actions are needed.\n",
    "causes": "* User has already been added to this segment.",
    "solutions": "* As user is already a member of the required segment, no actions are needed.",
    "description": "",
    "date_created": "2017-05-24T08:45:48Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52306,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Cannot delete User resource with Bindings",
    "secondary_message": "User cannot be deleted if it has at least one Binding",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- User has at least one Binding.\n\n### Possible solutions\n\n- Make sure you delete all Bindings of a User before you try to delete the User.\n",
    "causes": "* User has at least one Binding.",
    "solutions": "* Make sure you delete all Bindings of a User before you try to delete the User.",
    "description": "",
    "date_created": "2017-05-24T08:49:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52307,
    "log_level": "WARNING",
    "log_type": null,
    "message": "No users with provided segments",
    "secondary_message": "No users were found belonging to the specified segment(s)",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nNo users were found belonging to the specified segment(s)\n\n### Possible causes\n\n- A notification was sent to one or more user segments, but no users belong to these segments\n\n### Possible solutions\n\n- Check if correct segments were specified\n- Check if users are assigned to correct segments\n",
    "causes": "* A notification was sent to one or more user segments, but no users belong to these segments",
    "solutions": "* Check if correct segments were specified\n* Check if users are assigned to correct segments",
    "description": "No users were found belonging to the specified segment(s)",
    "date_created": "2017-07-06T13:36:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52309,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Channel provider replied with an error",
    "secondary_message": "Channel provider (Amazon Alexa, Facebook, etc) replied with an error",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Some errors in channel configuration: destination address, credentials, permissions, etc.\n\n### Possible solutions\n\n- Check channel configuration or re-install the channel and destination binding. Check response message from the provider in a debugger alert.\n",
    "causes": "* Some errors in channel configuration: destination address, credentials, permissions, etc.",
    "solutions": "* Check channel configuration or re-install the channel and destination binding. Check response message from the provider in a debugger alert.",
    "description": "",
    "date_created": "2017-12-21T12:07:11Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52310,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Notification TTL has expired",
    "secondary_message": null,
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a notification is still being processed or waiting for delivery after its `ttl` value has expired. In Notify, `ttl` defines how long a notification remains valid, from `0` to `2419200` seconds. A value of `0` allows only an immediate delivery attempt and does not store the notification for later delivery.\n\n### Possible causes\n\n- The request used a `ttl` value that was too short for the number of recipients or bindings being processed.\n- The notification targeted identities or tags that required more processing time, and the service hit normal Notify throughput limits during that window. Notify services have a default limit of 100 notifications per second per service instance, with higher throughput available by request.\n- A push recipient device was offline until the `ttl` elapsed, so Notify could no longer attempt delivery.\n\n### Possible solutions\n\n- Increase the `ttl` value so the notification stays valid long enough for processing and delivery. Use a value that matches your expected delivery window and keep it within `0` to `2419200` seconds.\n- Avoid using a `ttl` of `0` unless you want a single immediate attempt with no stored delivery for offline devices.\n- Reduce the number of recipients in a single request or spread large sends across multiple requests so your traffic stays within your service's throughput expectations.\n- Review your Notify service logs in Console to confirm whether the request was accepted and to review delivery attempts for the affected notification. ([help.twilio.com](https://help.twilio.com/articles/115016131208-Troubleshooting-Issues-with-Twilio-Notify))\n- If you are planning new notification workflows, move SMS notifications to Programmable Messaging and use platform-specific push services such as APNs or FCM. Notify was deprecated in October 2022 and reaches end of life for existing customers on January 31, 2027.\n\n#### Additional resources\n\n- [Notification Resource](/docs/notify/api/notification-resource)\n- [Notify Limits](/docs/notify/notify-limits)\n- [How to transition off Notify?](https://help.twilio.com/articles/9198083260571)\n",
    "causes": "* The request used a `ttl` value that was too short for the number of recipients or bindings being processed.\n* The notification targeted identities or tags that required more processing time, and the service hit normal Notify throughput limits during that window. Notify services have a default limit of 100 notifications per second per service instance, with higher throughput available by request.\n* A push recipient device was offline until the `ttl` elapsed, so Notify could no longer attempt delivery.",
    "solutions": "* Increase the `ttl` value so the notification stays valid long enough for processing and delivery. Use a value that matches your expected delivery window and keep it within `0` to `2419200` seconds.\n* Avoid using a `ttl` of `0` unless you want a single immediate attempt with no stored delivery for offline devices.\n* Reduce the number of recipients in a single request or spread large sends across multiple requests so your traffic stays within your service's throughput expectations.\n* Review your Notify service logs in Console to confirm whether the request was accepted and to review delivery attempts for the affected notification. ([help.twilio.com](https://help.twilio.com/articles/115016131208-Troubleshooting-Issues-with-Twilio-Notify))\n* If you are planning new notification workflows, move SMS notifications to Programmable Messaging and use platform-specific push services such as APNs or FCM. Notify was deprecated in October 2022 and reaches end of life for existing customers on January 31, 2027.",
    "description": "This error occurs when a notification is still being processed or waiting for delivery after its `ttl` value has expired. In Notify, `ttl` defines how long a notification remains valid, from `0` to `2419200` seconds. A value of `0` allows only an immediate delivery attempt and does not store the notification for later delivery.",
    "date_created": "2019-07-29T12:33:56Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 52311,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Delivery callback invocation failed",
    "secondary_message": "Notify is unable to invoke the given callback",
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nNotify is unable to invoke the given callback\n\n### Possible causes\n\nInvalid callback URL or Internal Server Error\n\n### Possible solutions\n\nCheck the callback URL\n",
    "causes": "Invalid callback URL or Internal Server Error",
    "solutions": "Check the callback URL",
    "description": "Notify is unable to invoke the given callback",
    "date_created": "2019-11-21T14:30:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52400,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Exceeded maximum iterations in template rendering",
    "secondary_message": "The maximum number of defined iterations in templated fields of the notification payload has been reached.",
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nYour template contains an iterative operation that has reached the maximum allowed limit of 1000 iterations in its definition.\n\n### Possible causes\n\nSome syntax-specific iteration operators in the template, such as for-loops, cycles, table-rows, and others, may have reached the maximum limit.\n\n### Possible solutions\n\n1. Consider reducing the number of iterations required in your template.\n2. Review the template structure to optimize the use of iteration operations.\n3. Break down complex iterations into smaller, more manageable chunks if possible.\n",
    "causes": "Some syntax-specific iteration operators in the template, such as for-loops, cycles, table-rows, and others, may have reached the maximum limit.",
    "solutions": "1. Consider reducing the number of iterations required in your template.\n2. Review the template structure to optimize the use of iteration operations.\n3. Break down complex iterations into smaller, more manageable chunks if possible.",
    "description": "Your template contains an iterative operation that has reached the maximum allowed limit of 1000 iterations in its definition.",
    "date_created": "2024-03-19T15:53:39Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52401,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Too many notification log events ",
    "secondary_message": "Too many notification log events, some may be discarded.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- Notification requests resulted in too many delivery attempts. As a result, some of the notification events were rate limited and might not be visible in the notification log in console. The message delivery itself is not affected.\n\n### Possible solutions\n\n- When sending large broadcasts, slow down the rate of Send Notification requests, e.g. to 1 / s\n",
    "causes": "* Notification requests resulted in too many delivery attempts. As a result, some of the notification events were rate limited and might not be visible in the notification log in console. The message delivery itself is not affected.",
    "solutions": "* When sending large broadcasts, slow down the rate of Send Notification requests, e.g. to 1 / s",
    "description": "",
    "date_created": "2017-10-14T07:36:47Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52402,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "General rendering problem with variables in a parsed template",
    "secondary_message": null,
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nThe error pertains to a general rendering issue with variables in an successfully parsed template.\n\n### Possible causes\n\nVarious limitations such as reaching the maximum allowed template size of 6400 bytes or encountering a rendering timeout of 3000 milliseconds might contribute to this error.\n\n### Possible solutions\n\nTo pinpoint the underlying cause, customers should inspect the debugger logs in the console for further details.\n",
    "causes": "Various limitations such as reaching the maximum allowed template size of 6400 bytes or encountering a rendering timeout of 3000 milliseconds might contribute to this error.",
    "solutions": "To pinpoint the underlying cause, customers should inspect the debugger logs in the console for further details.",
    "description": "The error pertains to a general rendering issue with variables in an successfully parsed template.",
    "date_created": "2024-03-19T15:54:43Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52403,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Provided text template in the notification request cannot be parsed",
    "secondary_message": null,
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nAn error may arise if the provided text template in the notification request cannot be parsed, potentially due to syntax errors in the input.\n\n### Possible causes\n\nThe error might be attributed to syntax errors within the provided text template.\n\n### Possible solutions\n\nTo identify the precise issue, customers are advised to examine the debugger logs in the console for detailed error messages.\n",
    "causes": "The error might be attributed to syntax errors within the provided text template.",
    "solutions": "To identify the precise issue, customers are advised to examine the debugger logs in the console for detailed error messages.",
    "description": "An error may arise if the provided text template in the notification request cannot be parsed, potentially due to syntax errors in the input.",
    "date_created": "2024-03-19T15:57:13Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 52404,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Undefined variable within the notification payload template",
    "secondary_message": null,
    "product": "Notify",
    "products_used": [
      "notify"
    ],
    "docs": "\n## Description\n\nThe error indicates that there are one or more undefined variables in the provided template of the notification payload.\n\n### Possible causes\n\n1. Missing variables might have been overlooked during template creation.\n2. Variables could have been mistyped or not properly declared.\n\n### Possible solutions\n\n1. Check the debugger logs in the console to identify the exact missing variables.\n2. Ensure that all necessary variables are included in either or both of the per-recipient object and the default variables of the notification request.\n3. Double-check the spelling and syntax of variables in the template.\n",
    "causes": "1. Missing variables might have been overlooked during template creation.\n2. Variables could have been mistyped or not properly declared.",
    "solutions": "1. Check the debugger logs in the console to identify the exact missing variables.\n2. Ensure that all necessary variables are included in either or both of the per-recipient object and the default variables of the notification request.\n3. Double-check the spelling and syntax of variables in the template.",
    "description": "The error indicates that there are one or more undefined variables in the provided template of the notification payload.",
    "date_created": "2024-03-19T15:58:40Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53000,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Signaling connection error",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a signaling connection error occurs that is not covered by a more specific error code.\n\n### Possible causes\n\n- The client could not establish a connection to Twilio's signaling server or the signaling path was lost.\n- Reconnection attempts were exhausted after a network disruption, resulting in a final disconnect with this error.\n- Corporate firewall or proxy is blocking secure WebSocket traffic required for signaling on TCP 443 to Twilio Video signaling hosts.\n- High latency to the chosen signaling region can slow or prevent establishing the signaling connection.\n\n### Possible solutions\n\n- Retry connecting to the Room.\n- Ensure the user has a stable internet connection or try a different network.\n- Try connecting to another region or explicitly set the signaling region with the SDK region option, or rely on Global Low Latency.\n- Verify that firewalls allow outbound WSS to the appropriate regional signaling hostnames on port 443.\n- Ensure Access Tokens have sufficient TTL and are refreshed as needed so reconnections can authenticate successfully.\n- Handle reconnection states in your app and, if a 53000 disconnect occurs, prompt the user to rejoin the Room.\n\n#### Additional resources\n\n- [Building a JS Video App: Recommendations and Best Practices](/docs/video/build-js-video-application-recommendations-and-best-practices)\n- [Video Regions and Global Low Latency](/docs/video/tutorials/video-regions-and-global-low-latency)\n- [Video IP Addresses](/docs/video/ip-addresses)\n",
    "causes": "* The client could not establish a connection to Twilio's signaling server or the signaling path was lost.\n* Reconnection attempts were exhausted after a network disruption, resulting in a final disconnect with this error.\n* Corporate firewall or proxy is blocking secure WebSocket traffic required for signaling on TCP 443 to Twilio Video signaling hosts.\n* High latency to the chosen signaling region can slow or prevent establishing the signaling connection.",
    "solutions": "* Retry connecting to the Room.\n* Ensure the user has a stable internet connection or try a different network.\n* Try connecting to another region or explicitly set the signaling region with the SDK region option, or rely on Global Low Latency.\n* Verify that firewalls allow outbound WSS to the appropriate regional signaling hostnames on port 443.\n* Ensure Access Tokens have sufficient TTL and are refreshed as needed so reconnections can authenticate successfully.\n* Handle reconnection states in your app and, if a 53000 disconnect occurs, prompt the user to rejoin the Room.",
    "description": "Raised whenever a signaling connection error occurs that is not covered by a more specific error code.",
    "date_created": "2017-04-21T22:58:09Z",
    "last_updated": "2026-04-01T14:16:33+01:00"
  },
  {
    "code": 53001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Signaling connection disconnected",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever the signaling connection is unexpectedly disconnected.\n\n### Possible causes\n\n- The device running your application lost its internet connection.\n\n### Possible solutions\n\n- Ensure the device running your application has access to a stable internet connection.\n",
    "causes": "* The device running your application lost its internet connection.",
    "solutions": "* Ensure the device running your application has access to a stable internet connection.",
    "description": "Raised whenever the signaling connection is unexpectedly disconnected.",
    "date_created": "2017-04-24T15:37:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Signaling connection timed out",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Video signaling connection times out. Twilio raises it when connection liveliness checks fail or when the signaling session expires. A Room can also surface 53002 after a network disruption if signaling reconnection takes too long and the client disconnects.\n\n### Possible causes\n\n- Outbound WSS traffic on port 443 to Twilio Video signaling domains is blocked by a firewall or network policy.\n- A proxy or firewall closes idle WebSocket connections too quickly. Twilio recommends a WSS idle timeout of at least 300 seconds for Twilio Video signaling traffic.\n- A forward proxy, TLS inspection, or deep packet inspection interferes with WSS signaling traffic instead of allowing pass-through.\n- A VPN or unstable network path interrupts signaling long enough that reconnection cannot complete before the Room disconnects.\n\n### Possible solutions\n\n- Allow outbound WSS on port 443 to Twilio Video signaling domains and make sure the affected network allows the required Twilio Video traffic.\n- Increase the WebSocket idle timeout on your proxy or firewall to at least 300 seconds for Twilio Video signaling connections.\n- Configure proxies to support WSS pass-through without inspection for signaling traffic. If you use TLS inspection or application-aware filtering, exclude Twilio Video signaling traffic from that inspection path.\n- If users connect through a VPN, configure split tunneling so Twilio Video traffic can use the local network path when possible.\n- Run the Preflight API or the Video Diagnostics Application from the affected network to verify signaling and TURN connectivity before users join a Room.\n- Handle `reconnecting`, `reconnected`, and `disconnected` events in your application so you can show connection status, retry appropriately, and capture 53002 when reconnection takes too long.\n\n#### Additional resources\n\n- [Firewall and Network Configuration](/docs/video/ip-addresses)\n- [Preflight API](/docs/video/troubleshooting/preflight-api)\n- [Reconnection States and Events](/docs/video/reconnection-states-and-events)\n",
    "causes": "* Outbound WSS traffic on port 443 to Twilio Video signaling domains is blocked by a firewall or network policy.\n* A proxy or firewall closes idle WebSocket connections too quickly. Twilio recommends a WSS idle timeout of at least 300 seconds for Twilio Video signaling traffic.\n* A forward proxy, TLS inspection, or deep packet inspection interferes with WSS signaling traffic instead of allowing pass-through.\n* A VPN or unstable network path interrupts signaling long enough that reconnection cannot complete before the Room disconnects.",
    "solutions": "* Allow outbound WSS on port 443 to Twilio Video signaling domains and make sure the affected network allows the required Twilio Video traffic.\n* Increase the WebSocket idle timeout on your proxy or firewall to at least 300 seconds for Twilio Video signaling connections.\n* Configure proxies to support WSS pass-through without inspection for signaling traffic. If you use TLS inspection or application-aware filtering, exclude Twilio Video signaling traffic from that inspection path.\n* If users connect through a VPN, configure split tunneling so Twilio Video traffic can use the local network path when possible.\n* Run the Preflight API or the Video Diagnostics Application from the affected network to verify signaling and TURN connectivity before users join a Room.\n* Handle `reconnecting`, `reconnected`, and `disconnected` events in your application so you can show connection status, retry appropriately, and capture 53002 when reconnection takes too long.",
    "description": "This error occurs when the Video signaling connection times out. Twilio raises it when connection liveliness checks fail or when the signaling session expires. A Room can also surface 53002 after a network disruption if signaling reconnection takes too long and the client disconnects.",
    "date_created": "2017-04-24T15:38:29Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 53003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client received an invalid signaling message",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever the Client receives a message from the Server that the Client cannot handle.\n",
    "causes": null,
    "solutions": null,
    "description": "Raised whenever the Client receives a message from the Server that the Client cannot handle.",
    "date_created": "2017-04-24T15:38:53Z",
    "last_updated": "2020-08-04T10:00:19.704Z"
  },
  {
    "code": 53004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client sent an invalid signaling message",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever the Client sends a message to the Server that the Server cannot handle.\n",
    "causes": null,
    "solutions": null,
    "description": "Raised whenever the Client sends a message to the Server that the Server cannot handle.",
    "date_created": "2017-04-24T15:39:17Z",
    "last_updated": "2020-08-04T10:00:19.682Z"
  },
  {
    "code": 53006,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Video server is busy",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when the server is too busy to accept new clients.\n\n### Possible causes\n\nThe Video server is temporarily overloaded and cannot handle new requests.\n\n### Possible solutions\n\n- Try connecting later.\n- If the problem persists, try connecting to another region.\n",
    "causes": "The Video server is temporarily overloaded and cannot handle new requests.",
    "solutions": "* Try connecting later.\n* If the problem persists, try connecting to another region.",
    "description": "Raised when the server is too busy to accept new clients.",
    "date_created": "2022-05-26T18:04:35Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53100,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Room name is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Room name is invalid, and the scenario is not covered by a more specific error code.\n\n### Possible causes\n\n- The Room name does not adhere to the Room name requirements.\n\n### Possible solutions\n\n- Choose a Room name adheres to the Room name requirements.\n",
    "causes": "* The Room name does not adhere to the Room name requirements.",
    "solutions": "* Choose a Room name adheres to the Room name requirements.",
    "description": "Raised whenever a Room name is invalid, and the scenario is not covered by a more specific error code.",
    "date_created": "2017-04-24T15:39:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Room name is too long",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Room name is too long.\n\n### Possible causes\n\n- The Room name is too long.\n\n### Possible solutions\n\n- Choose a shorter Room name.\n",
    "causes": "* The Room name is too long.",
    "solutions": "* Choose a shorter Room name.",
    "description": "Raised whenever a Room name is too long.",
    "date_created": "2017-04-24T15:40:26Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53102,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Room name contains invalid characters",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Room name contains invalid characters.\n\n### Possible causes\n\n- The Room name contains an invalid UTF-8 byte sequence.\n\n### Possible solutions\n\n- Choose a Room name that is a valid UTF-8 string.\n",
    "causes": "* The Room name contains an invalid UTF-8 byte sequence.",
    "solutions": "* Choose a Room name that is a valid UTF-8 string.",
    "description": "Raised whenever a Room name contains invalid characters.",
    "date_created": "2017-04-24T15:56:17Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": " Unable to create Room",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when the Server is unable to create a Room.\n\n### Possible causes\n\n- A user attempted to connect to a Room which does not yet exist, and Ad-hoc Rooms are not enabled.\n- You may have chosen to enable Room features that are unsupported or not available to your account.\n- A server-side error has occurred.\n\n### Possible solutions\n\n- Make sure Ad-hoc Rooms are enabled in the Video settings for your account in Twilio Console, or create the Room explicitly using the REST API before attempting to connect to it.\n- Choose a Room configuration supported by your account.\n- If the problem persists, try connecting to another region.\n",
    "causes": "* A user attempted to connect to a Room which does not yet exist, and Ad-hoc Rooms are not enabled.\n* You may have chosen to enable Room features that are unsupported or not available to your account.\n* A server-side error has occurred.",
    "solutions": "* Make sure Ad-hoc Rooms are enabled in the Video settings for your account in Twilio Console, or create the Room explicitly using the REST API before attempting to connect to it.\n* Choose a Room configuration supported by your account.\n* If the problem persists, try connecting to another region.",
    "description": "Raised when the Server is unable to create a Room.",
    "date_created": "2017-04-24T15:42:05Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53104,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to connect to Room",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Client is unable to connect to a Room, and the scenario is not covered by a more specific error code.\n\n### Possible causes\n\n- A server-side error has occurred.\n\n### Possible solutions\n\n- If the problem persists, try connecting to another region.\n",
    "causes": "* A server-side error has occurred.",
    "solutions": "* If the problem persists, try connecting to another region.",
    "description": "Raised whenever a Client is unable to connect to a Room, and the scenario is not covered by a more specific error code.",
    "date_created": "2017-04-24T15:57:53Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53105,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Room contains too many Participants",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Client is unable to connect to a Room because the Room contains too many Participants.\n\n### Possible causes\n\n- A Client attempted to connect to a Room that already contained the maximum number of Participants.\n\n### Possible solutions\n\n- Have one or more Participants disconnect from the Room in order to make room for the Client to connect.\n",
    "causes": "* A Client attempted to connect to a Room that already contained the maximum number of Participants.",
    "solutions": "* Have one or more Participants disconnect from the Room in order to make room for the Client to connect.",
    "description": "Raised whenever a Client is unable to connect to a Room because the Room contains too many Participants.",
    "date_created": "2017-04-24T15:43:03Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Room not found",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever attempting operation on a non-existent Room.\n\n### Possible causes\n\n- Attempted to perform operation on non-existent Room.\n\n### Possible solutions\n\n- Make sure Room exists before re-attempting operation.\n",
    "causes": "* Attempted to perform operation on non-existent Room.",
    "solutions": "* Make sure Room exists before re-attempting operation.",
    "description": "Raised whenever attempting operation on a non-existent Room.",
    "date_created": "2017-04-24T15:43:26Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53107,
    "log_level": "ERROR",
    "log_type": null,
    "message": "MaxParticipants is out of range",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised in the REST API when MaxParticipants is set out of range.\n\n### Possible causes\n\n- REST API call to Create or Update Room instance with MaxParticipants out of range.\n\n### Possible solutions\n\n- Set the MaximumParticipants value from 1 up to the maximum allowed for the Room Type.\n",
    "causes": "* REST API call to Create or Update Room instance with MaxParticipants out of range.",
    "solutions": "* Set the MaximumParticipants value from 1 up to the maximum allowed for the Room Type.",
    "description": "Raised in the REST API when MaxParticipants is set out of range.",
    "date_created": "2017-04-24T15:43:56Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53108,
    "log_level": "ERROR",
    "log_type": null,
    "message": "RoomType is not valid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised in the REST API when the user attempts to create a Room with an invalid RoomType\n\n### Possible causes\n\n- REST API call to Create Room instance with an invalid RoomType.\n\n### Possible solutions\n\n- Set the RoomType value to a valid type or leave this field blank for the default.\n",
    "causes": "* REST API call to Create Room instance with an invalid RoomType.",
    "solutions": "* Set the RoomType value to a valid type or leave this field blank for the default.",
    "description": "Raised in the REST API when the user attempts to create a Room with an invalid RoomType",
    "date_created": "2017-04-24T15:44:21Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53109,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Timeout is out of range",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised in the REST API when Timeout is set out of range.\n\n### Possible causes\n\n- REST API call to Create or Update Room instance with Timeout out of range.\n\n### Possible solutions\n\n- Set the Timeout value (in seconds) from 1 second up to a maximum of 1 hour.\n",
    "causes": "* REST API call to Create or Update Room instance with Timeout out of range.",
    "solutions": "* Set the Timeout value (in seconds) from 1 second up to a maximum of 1 hour.",
    "description": "Raised in the REST API when Timeout is set out of range.",
    "date_created": "2017-04-24T15:45:09Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53110,
    "log_level": "ERROR",
    "log_type": null,
    "message": "StatusCallbackMethod is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised in the REST API when StatusCallbackMethod is set to an invalid value.\n\n### Possible causes\n\n- REST API call to Create or Update Room instance with StatusCallbackMethod set to an invalid value.\n\n### Possible solutions\n\n- Set StatusCallbackMethod to either `GET` or `POST` or leave blank for the default.\n",
    "causes": "* REST API call to Create or Update Room instance with StatusCallbackMethod set to an invalid value.",
    "solutions": "* Set StatusCallbackMethod to either `GET` or `POST` or leave blank for the default.",
    "description": "Raised in the REST API when StatusCallbackMethod is set to an invalid value.",
    "date_created": "2017-04-24T15:45:33Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53111,
    "log_level": "ERROR",
    "log_type": null,
    "message": "StatusCallback is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised in the REST API when StatusCallback is not a valid URL or the url is too long.\n\n### Possible causes\n\n- REST API call to Create or Update Room instance with StatusCallback set to an invalid URL.\n\n### Possible solutions\n\n- Set StatusCallback to a valid URL less than 1024 characters or leave blank to disable callbacks.\n",
    "causes": "* REST API call to Create or Update Room instance with StatusCallback set to an invalid URL.",
    "solutions": "* Set StatusCallback to a valid URL less than 1024 characters or leave blank to disable callbacks.",
    "description": "Raised in the REST API when StatusCallback is not a valid URL or the url is too long.",
    "date_created": "2017-04-24T15:46:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53112,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Status is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised in the REST API when Status is not valid or the Room is not in-progress.\n\n### Possible causes\n\n- REST API call to Update Room instance with Status that is invalid or cannot be applied to the current Room state.\n\n### Possible solutions\n\n- Set Status to completed and only apply to a Room that is in-progress.\n",
    "causes": "* REST API call to Update Room instance with Status that is invalid or cannot be applied to the current Room state.",
    "solutions": "* Set Status to completed and only apply to a Room that is in-progress.",
    "description": "Raised in the REST API when Status is not valid or the Room is not in-progress.",
    "date_created": "2017-04-24T15:59:42Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53113,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Room creation failed",
    "secondary_message": "A Room with the same name already exists.",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThis error is raised when the Server is unable to create a Room because the name you have used is already associated with an existing Room.\n\nThe [Video API Room resource page](/docs/video/api/rooms-resource#filter-by-unique-name) will show you how to get a list of existing Rooms' names, allowing you to choose a new one that has not yet been used.\n\n### Possible causes\n\nYou have already creasted a Room with the name you just used.\n\n### Possible solutions\n\nCreate a new Room with a unique name.\n",
    "causes": "You have already creasted a Room with the name you just used.",
    "solutions": "Create a new Room with a unique name.",
    "description": "This error is raised when the Server is unable to create a Room because the name you have used is already associated with an existing Room. The [Video API Room resource page](/docs/video/api/rooms-resource#filter-by-unique-name) will show you how to get a list of existing Rooms' names, allowing you to choose a new one that has not yet been used.",
    "date_created": "2017-09-11T22:30:36Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53118,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Room Completed Error",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Room is completed via the REST API.\n\n### Possible causes\n\n- The operation you requested cannot be performed on a completed Room.\n\n### Possible solutions\n\n- Some operations can only be performed on in-progress Rooms. Check the status of your Room before attempting the operation.\n",
    "causes": "* The operation you requested cannot be performed on a completed Room.",
    "solutions": "* Some operations can only be performed on in-progress Rooms. Check the status of your Room before attempting the operation.",
    "description": "Raised whenever a Room is completed via the REST API.",
    "date_created": "2020-06-16T03:59:35Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53119,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The concurrent Rooms quota was exceeded",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\n#### 53119: The concurrent Rooms quota was exceeded\n\n### Possible causes\n\n- Connecting the first Participant in an Ad-hoc Room would exceed the account's concurrent Rooms quota.\n- Creating a Room via the REST API would exceed the account's concurrent Rooms quota.\n\n### Possible solutions\n\n- Complete existing Rooms.\n- Contact support/sales to increase the concurrent Rooms quota for your account.\n",
    "causes": "* Connecting the first Participant in an Ad-hoc Room would exceed the account's concurrent Rooms quota.\n* Creating a Room via the REST API would exceed the account's concurrent Rooms quota.",
    "solutions": "* Complete existing Rooms.\n* Contact support/sales to increase the concurrent Rooms quota for your account.",
    "description": "",
    "date_created": "2020-05-13T23:08:52Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53120,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": " Invalid Recording Rule(s)",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised by the server when a Recording Rule is invalid.\n\n### Possible causes\n\n- An empty set of rules \\[] is not allowed.\n- A rule containing all must have a value of true and must not contain any other expression.\n- A rule must contain a type field.\n- If kind is used, it must be audio or video.\n- A maximum of 20 recording rules are allowed per room.\n\n### Possible solutions\n\n- Ensure the set of rules has at least one rule.\n- If you include all in a rule, the only other allowed field is type.\n- Ensure every rule has a type field.\n- Ensure kind is one of the valid enum values.\n- Limit the number of recording rules to 20 or fewer.\n",
    "causes": "* An empty set of rules \\[] is not allowed.\n* A rule containing all must have a value of true and must not contain any other expression.\n* A rule must contain a type field.\n* If kind is used, it must be audio or video.\n* A maximum of 20 recording rules are allowed per room.",
    "solutions": "* Ensure the set of rules has at least one rule.\n* If you include all in a rule, the only other allowed field is type.\n* Ensure every rule has a type field.\n* Ensure kind is one of the valid enum values.\n* Limit the number of recording rules to 20 or fewer.",
    "description": "Raised by the server when a Recording Rule is invalid.",
    "date_created": "2020-06-19T00:08:24Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53121,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Approaching room or participant concurrency quota",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\n#### 53121: Reached 70% of room or participant concurrency quota\n\n### Possible causes\n\n- Connecting the first Participant in an Ad-hoc Room might exceed the account's concurrent Rooms quota.\n- Creating a Room via the REST API might exceed the account's concurrent Rooms quota.\n\n### Possible solutions\n\n- Complete existing Rooms.\n- Contact support/sales to increase the concurrent Rooms quota for your account.\n",
    "causes": "* Connecting the first Participant in an Ad-hoc Room might exceed the account's concurrent Rooms quota.\n* Creating a Room via the REST API might exceed the account's concurrent Rooms quota.",
    "solutions": "* Complete existing Rooms.\n* Contact support/sales to increase the concurrent Rooms quota for your account.",
    "description": "",
    "date_created": "2020-07-01T20:53:23Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53122,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "The recording operation requested is not supported for the Room type",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe recording operation requested is not supported for the Room type\n\n### Possible causes\n\nREST API call requesting to record a Track in a peer-to-peer Room.\n\n### Possible solutions\n\nMake sure that the recording operation requested is supported for the Room type.\n",
    "causes": "REST API call requesting to record a Track in a peer-to-peer Room.",
    "solutions": "Make sure that the recording operation requested is supported for the Room type.",
    "description": "The recording operation requested is not supported for the Room type",
    "date_created": "2020-07-21T23:31:57Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53123,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "MaxParticipantDuration is out of range",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nMaxParticipantDuration is set to a value outside of the acceptable range of 600 seconds (10 minutes) and 86400 seconds (24 hours)\n\n### Possible causes\n\nMaxParticipantDuration is set to a value outside of the acceptable range\n\n### Possible solutions\n\nSet MaxParticipantDuration to a value inside the acceptable range of 600 seconds (10 minutes) and 86400 seconds (24 hours)\n",
    "causes": "MaxParticipantDuration is set to a value outside of the acceptable range",
    "solutions": "Set MaxParticipantDuration to a value inside the acceptable range of 600 seconds (10 minutes) and 86400 seconds (24 hours)",
    "description": "MaxParticipantDuration is set to a value outside of the acceptable range of 600 seconds (10 minutes) and 86400 seconds (24 hours)",
    "date_created": "2022-06-23T02:26:25Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53124,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The AudioOnly flag is not supported for the Room type",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a participant tries to set the AudioOnly flag for a Room type other than Group Rooms.\n\n### Possible causes\n\nThe AudioOnly flag is set for a room that is not a Group Room.\n\n### Possible solutions\n\nMake sure that the flag is supported by the Room type.\n",
    "causes": "The AudioOnly flag is set for a room that is not a Group Room.",
    "solutions": "Make sure that the flag is supported by the Room type.",
    "description": "Raised whenever a participant tries to set the AudioOnly flag for a Room type other than Group Rooms.",
    "date_created": "2021-10-13T16:33:44Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53125,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The track kind is not supported by the Room",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a participant tries to publish a track or connects with a track that is not supported by the Group Room.\n\n### Possible causes\n\nA participant tried to publish a video track in an Audio Only Group Room. A participant tried to connect with a video track in an Audio Only Group Room.\n\n### Possible solutions\n\nMake sure that only audio and/or data tracks are published in an Audio Only Group Room.\n",
    "causes": "A participant tried to publish a video track in an Audio Only Group Room. A participant tried to connect with a video track in an Audio Only Group Room.",
    "solutions": "Make sure that only audio and/or data tracks are published in an Audio Only Group Room.",
    "description": "Raised whenever a participant tries to publish a track or connects with a track that is not supported by the Group Room.",
    "date_created": "2021-10-13T16:36:10Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53126,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Legacy room type no longer supported",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nGo Rooms, P2P Rooms and Small Group Rooms are deprecated and only available to accounts that were active prior to October 21, 2024.\n\n### Possible causes\n\nRoom type other than Group Rooms has been specified for this account, which started using video after October 21, 2024\n\n### Possible solutions\n\nRoom type for accounts which started using video after October 21, 2024 must be Group Room\n",
    "causes": "Room type other than Group Rooms has been specified for this account, which started using video after October 21, 2024",
    "solutions": "Room type for accounts which started using video after October 21, 2024 must be Group Room",
    "description": "Go Rooms, P2P Rooms and Small Group Rooms are deprecated and only available to accounts that were active prior to October 21, 2024.",
    "date_created": "2025-01-07T09:44:39Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53127,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "audioOnly no longer supported",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe Audio only flag is deprecated and only available to accounts that were active prior to October 21, 2024.\n\n### Possible causes\n\nAudio only flag is set for this account, which started using video after October 21, 2024\n\n### Possible solutions\n\nDo not specify Audio only flag if account started using video after October 21, 2024\n",
    "causes": "Audio only flag is set for this account, which started using video after October 21, 2024",
    "solutions": "Do not specify Audio only flag if account started using video after October 21, 2024",
    "description": "The Audio only flag is deprecated and only available to accounts that were active prior to October 21, 2024.",
    "date_created": "2025-01-07T09:51:21Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53200,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant identity is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Participant identity is invalid, and the scenario is not covered by a more specific error code.\n\n### Possible causes\n\nThe Participant identity does not adhere to the Participant identity requirements.\n\nPossible causes:\n\n- The identity is null or an empty string.\n- Another Participant with the same identity already exists in the Room.\n- The identity has more than 128 characters (NOTE: Double-byte characters are counted as 2 characters).\n\n### Possible solutions\n\n- Choose a Participant identity adheres to the Participant identity requirements.\n",
    "causes": "The Participant identity does not adhere to the Participant identity requirements. : - The identity is null or an empty string.\n- Another Participant with the same identity already exists in the Room.\n- The identity has more than 128 characters (NOTE: Double-byte characters are counted as 2 characters).",
    "solutions": "* Choose a Participant identity adheres to the Participant identity requirements.",
    "description": "Raised whenever a Participant identity is invalid, and the scenario is not covered by a more specific error code.",
    "date_created": "2017-04-24T15:47:04Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant identity is too long",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Participant identity is too long.\n\n### Possible causes\n\n- The Participant identity is too long.\n\n### Possible solutions\n\n- Choose a shorter Participant identity.\n",
    "causes": "* The Participant identity is too long.",
    "solutions": "* Choose a shorter Participant identity.",
    "description": "Raised whenever a Participant identity is too long.",
    "date_created": "2017-04-24T15:47:27Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53202,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant identity contains invalid characters",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Participant identity contains invalid characters.\n\n### Possible causes\n\n- The Participant identity contains an invalid UTF-8 byte sequence.\n\n### Possible solutions\n\n- Choose a Participant identity that is a valid UTF-8 string.\n",
    "causes": "* The Participant identity contains an invalid UTF-8 byte sequence.",
    "solutions": "* Choose a Participant identity that is a valid UTF-8 string.",
    "description": "Raised whenever a Participant identity contains invalid characters.",
    "date_created": "2017-04-24T15:47:52Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53203,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Room has reached the maximum number of published tracks",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Participant tries to publish another track after the Room has already reached its published track limit. Twilio Video enforces track limits at both the Participant level and the Room level.\n\n### Possible causes\n\n- A client published more tracks for a Participant than the Participant limit allows.\n- A client published more total tracks in the Room than the Room limit allows.\n\n### Possible solutions\n\n- Remove one or more published tracks before you publish another track.\n- Review the tracks each Participant is currently publishing before you attempt to add more media. The PublishedTrack resource returns the tracks a Participant is currently publishing to the Room.\n- Check the connected Participants in the Room and publish new tracks only when the Room is below its current track limits. The Participants resource lets you list connected Participants for an in-progress Room.\n\n#### Additional resources\n\n- [Programmable Video quotas and limits](/docs/video/programmable-video-limits)\n- [PublishedTrack resource](/docs/video/api/publishedtrack)\n- [Participants resource](/docs/video/api/participants)\n",
    "causes": "* A client published more tracks for a Participant than the Participant limit allows.\n* A client published more total tracks in the Room than the Room limit allows.",
    "solutions": "* Remove one or more published tracks before you publish another track.\n* Review the tracks each Participant is currently publishing before you attempt to add more media. The PublishedTrack resource returns the tracks a Participant is currently publishing to the Room.\n* Check the connected Participants in the Room and publish new tracks only when the Room is below its current track limits. The Participants resource lets you list connected Participants for an in-progress Room.",
    "description": "This error occurs when a Participant tries to publish another track after the Room has already reached its published track limit. Twilio Video enforces track limits at both the Participant level and the Room level.",
    "date_created": "2017-04-24T15:48:42Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 53204,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant not found",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever attempting operation on a non-existent Participant.\n\n### Possible causes\n\n- Attempting operation on an non-existent Participant.\n\n### Possible solutions\n\n- Make sure participant exists before re-attempting operation.\n",
    "causes": "* Attempting operation on an non-existent Participant.",
    "solutions": "* Make sure participant exists before re-attempting operation.",
    "description": "Raised whenever attempting operation on a non-existent Participant.",
    "date_created": "2017-04-24T15:49:31Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53205,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant disconnected because of duplicate identity",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised by the server to the existing Participant when a new Participant joins a Room with the same identity as the existing Participant.\n\n### Possible causes\n\n- Using the same identity for more than one Room Participant.\n\n### Possible solutions\n\n- Make sure that each Participant joins a Room with a unique identity.\n",
    "causes": "* Using the same identity for more than one Room Participant.",
    "solutions": "* Make sure that each Participant joins a Room with a unique identity.",
    "description": "Raised by the server to the existing Participant when a new Participant joins a Room with the same identity as the existing Participant.",
    "date_created": "2017-05-09T23:59:56Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53206,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Participant concurrency quota was exceeded",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThis error occurs when adding another Participant to a Room would exceed your account's concurrent Participants quota. Twilio Video enforces account-based quotas for Rooms and Participants to support reliable and consistent service operation.\n\n### Possible causes\n\n- Your account already has enough connected Participants across active Rooms that the next Participant connection would exceed the concurrent Participants quota.\n- One or more Rooms are still in progress and still have connected Participants using your available concurrency.\n- Your application's current traffic has grown beyond the concurrent Participants quota configured for your account.\n\n### Possible solutions\n\n- Complete Rooms that no longer need to stay active so their connected Participants are disconnected.\n- Disconnect Participants who no longer need to remain in a Room before admitting new Participants.\n- Review how many Participants your application keeps connected at the same time across all active Rooms and reduce concurrent usage where possible.\n- If your expected traffic requires more capacity, contact sales to request a higher concurrent Participants quota for your account.\n\n#### Additional resources\n\n- [Programmable Video Quotas and Limits](/docs/video/programmable-video-limits)\n- [Guide to Scaling Applications](/docs/video/guide-to-scaling-applications)\n- [Twilio Video technical overview](/docs/video/overview)\n",
    "causes": "* Your account already has enough connected Participants across active Rooms that the next Participant connection would exceed the concurrent Participants quota.\n* One or more Rooms are still in progress and still have connected Participants using your available concurrency.\n* Your application's current traffic has grown beyond the concurrent Participants quota configured for your account.",
    "solutions": "* Complete Rooms that no longer need to stay active so their connected Participants are disconnected.\n* Disconnect Participants who no longer need to remain in a Room before admitting new Participants.\n* Review how many Participants your application keeps connected at the same time across all active Rooms and reduce concurrent usage where possible.\n* If your expected traffic requires more capacity, contact sales to request a higher concurrent Participants quota for your account.",
    "description": "This error occurs when adding another Participant to a Room would exceed your account's concurrent Participants quota. Twilio Video enforces account-based quotas for Rooms and Participants to support reliable and consistent service operation.",
    "date_created": "2020-05-13T23:04:58Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 53207,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "MaxPublishedTracks is out of range",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\n### 53207: MaxPublishedTracks is out of range\n\nRaised in the REST API when MaxPublishedTracks is set out of range.\n\n### Possible causes\n\n- REST API call to Create Room instance with MaxPublishedTracks out of range.\n\n### Possible solutions\n\n- Set the MaxPublishedTracks value from 0 (unlimited) up to the maximum allowed for the Room Type.\n",
    "causes": "* REST API call to Create Room instance with MaxPublishedTracks out of range.",
    "solutions": "* Set the MaxPublishedTracks value from 0 (unlimited) up to the maximum allowed for the Room Type.",
    "description": "",
    "date_created": "2020-11-11T01:19:53Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53208,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant's bandwidth profile configuration is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nParticipant's bandwidth profile configuration is invalid\n\n### Possible causes\n\nAt least one of the bandwidth profile configuration parameters is invalid. This could mean out of range, missing entirely, etc.\n\n### Possible solutions\n\n- Check the bandwidth profile documentation and confirm that your configuration is valid.\n",
    "causes": "At least one of the bandwidth profile configuration parameters is invalid. This could mean out of range, missing entirely, etc.",
    "solutions": "* Check the bandwidth profile documentation and confirm that your configuration is valid.",
    "description": "Participant's bandwidth profile configuration is invalid",
    "date_created": "2020-10-26T15:45:53Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53209,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant status is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised in the REST API when Status is not valid.\n\n### Possible causes\n\nREST API call to Update Participant instance with Status that is invalid.\n\n### Possible solutions\n\nSet Status to disconnected.\n",
    "causes": "REST API call to Update Participant instance with Status that is invalid.",
    "solutions": "Set Status to disconnected.",
    "description": "Raised in the REST API when Status is not valid.",
    "date_created": "2021-05-28T17:43:56Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53215,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Subscribe Rule(s)",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised by the server when a Subscribe Rule is invalid.\n\n### Possible causes\n\n- An empty set of rules `[]` is not allowed\n- A rule containing `all` must have a value of `true` and must not contain any other expression.\n- A rule must contain a `type` field.\n- If `kind` is used, it must be one of `audio`, `video` or `data`.\n- A maximum of 20 rules are allowed per subscriber.\n\n### Possible solutions\n\n- Ensure the set of rules has at least one rule.\n- If you include `all` in a rule, the only other allowed field is `type`.\n- Ensure every rule has a `type` field.\n- Ensure `kind` is one of the valid enum values.\n- Limit the number of rules to 20 or fewer.\n",
    "causes": "* An empty set of rules `[]` is not allowed\n* A rule containing `all` must have a value of `true` and must not contain any other expression.\n* A rule must contain a `type` field.\n* If `kind` is used, it must be one of `audio`, `video` or `data`.\n* A maximum of 20 rules are allowed per subscriber.",
    "solutions": "* Ensure the set of rules has at least one rule.\n* If you include `all` in a rule, the only other allowed field is `type`.\n* Ensure every rule has a `type` field.\n* Ensure `kind` is one of the valid enum values.\n* Limit the number of rules to 20 or fewer.",
    "description": "Raised by the server when a Subscribe Rule is invalid.",
    "date_created": "2019-05-07T22:18:42Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53216,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant session length exceeded",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised by the server when a Participant's session length exceeds the MaxParticipantDuration value.\n\n### Possible causes\n\n- The Participant's session length exceeds the MaxParticipantDuration value.\n- MaxParticipantDuration can be set to a value (in seconds) between 10 minutes (600 seconds) and 24 hours (86400 seconds).\n\n### Possible solutions\n\n- Increase the MaxParticipantDuration configuration for Rooms (up to 24 hours) via REST API upon room creation or via the Video Settings page in Twilio Console to change the default value.\n",
    "causes": "* The Participant's session length exceeds the MaxParticipantDuration value.\n* MaxParticipantDuration can be set to a value (in seconds) between 10 minutes (600 seconds) and 24 hours (86400 seconds).",
    "solutions": "* Increase the MaxParticipantDuration configuration for Rooms (up to 24 hours) via REST API upon room creation or via the Video Settings page in Twilio Console to change the default value.",
    "description": "Raised by the server when a Participant's session length exceeds the MaxParticipantDuration value.",
    "date_created": "2021-10-20T19:50:43Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53217,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "maxAudioTracks or maxVideoTracks configuration is out of range",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe configuration value provided for maxVideoTracks or maxAudioTracks in the bandwidthProfile options is out of range\n\n### Possible causes\n\nThe provided configuration for maxAudioTracks or maxVideoTracks is out of range\n\n### Possible solutions\n\nUse a valid value for maxVideoTracks and maxAudioTracks\n",
    "causes": "The provided configuration for maxAudioTracks or maxVideoTracks is out of range",
    "solutions": "Use a valid value for maxVideoTracks and maxAudioTracks",
    "description": "The configuration value provided for maxVideoTracks or maxAudioTracks in the bandwidthProfile options is out of range",
    "date_created": "2022-08-03T07:25:07Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53300,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Track is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Track is invalid, and the scenario is not covered by a more specific error code.\n",
    "causes": null,
    "solutions": null,
    "description": "Raised whenever a Track is invalid, and the scenario is not covered by a more specific error code.",
    "date_created": "2017-10-12T19:58:28Z",
    "last_updated": "2020-08-04T10:00:16.954Z"
  },
  {
    "code": 53301,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Track name is invalid",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Track name is invalid, and the scenario is not covered by a more specific error code.\n\n### Possible causes\n\n- The Track name does not adhere to the Track name requirements.\n\n### Possible solutions\n\n- Choose a Track name adheres to the Track name requirements.\n",
    "causes": "* The Track name does not adhere to the Track name requirements.",
    "solutions": "* Choose a Track name adheres to the Track name requirements.",
    "description": "Raised whenever a Track name is invalid, and the scenario is not covered by a more specific error code.",
    "date_created": "2017-10-12T19:59:08Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53302,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Track name is too long",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Track name is too long.\n\n### Possible causes\n\n- The Track name is too long.\n\n### Possible solutions\n\n- Choose a shorter Track name.\n",
    "causes": "* The Track name is too long.",
    "solutions": "* Choose a shorter Track name.",
    "description": "Raised whenever a Track name is too long.",
    "date_created": "2017-10-12T19:59:42Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53303,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Track name contains invalid characters",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Track name contains invalid characters.\n\n### Possible causes\n\n- The Track name contains an invalid UTF-8 byte sequence.\n\n### Possible solutions\n\n- Choose a Track name that is a valid UTF-8 string.\n",
    "causes": "* The Track name contains an invalid UTF-8 byte sequence.",
    "solutions": "* Choose a Track name that is a valid UTF-8 string.",
    "description": "Raised whenever a Track name contains invalid characters.",
    "date_created": "2017-10-12T20:00:45Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53304,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Track name is duplicated",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Participant is currently publishing a Track with the same name.\n\n### Possible causes\n\n- A Track with the same name already exists.\n\n### Possible solutions\n\n- Choose a Track name that is unique per Participant.\n",
    "causes": "* A Track with the same name already exists.",
    "solutions": "* Choose a Track name that is unique per Participant.",
    "description": "Raised whenever a Participant is currently publishing a Track with the same name.",
    "date_created": "2017-10-12T20:01:19Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53400,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client is unable to create or apply a local media description",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever a Client is unable to create or apply a local media description.\n\n### Possible causes\n\n- The Client may not be using a supported WebRTC implementation.\n- The Client may not have the necessary resources to create or apply a new media description.\n\n### Possible solutions\n\n- If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.\n",
    "causes": "* The Client may not be using a supported WebRTC implementation.\n* The Client may not have the necessary resources to create or apply a new media description.",
    "solutions": "* If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.",
    "description": "Raised whenever a Client is unable to create or apply a local media description.",
    "date_created": "2017-04-24T21:58:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53401,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Server is unable to create or apply a local media description",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nRaised whenever the Server is unable to create or apply a local media description.\n",
    "causes": null,
    "solutions": null,
    "description": "Raised whenever the Server is unable to create or apply a local media description.",
    "date_created": "2019-05-22T22:52:32Z",
    "last_updated": "2020-08-04T10:00:08.096Z"
  },
  {
    "code": 53402,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Client is unable to apply a remote media description",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever the Client receives a remote media description but is unable to apply it.\n\n### Possible causes\n\n- The Client may not be using a supported WebRTC implementation.\n- The Client may be connecting peer-to-peer with another Participant that is not using a supported WebRTC implementation.\n- The Client may not have the necessary resources to apply a new media description.\n\n### Possible solutions\n\n- If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.\n",
    "causes": "* The Client may not be using a supported WebRTC implementation.\n* The Client may be connecting peer-to-peer with another Participant that is not using a supported WebRTC implementation.\n* The Client may not have the necessary resources to apply a new media description.",
    "solutions": "* If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.",
    "description": "Raised whenever the Client receives a remote media description but is unable to apply it.",
    "date_created": "2017-04-24T22:00:26Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53403,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Server is unable to apply a remote media description",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Twilio Video Media Server receives a remote media description from a participant and cannot apply it. Start by checking client compatibility, because Twilio recommends using the latest Video SDK, supported browser environments, and codec settings that align with the codecs supported by the Video SFU.\n\n### Possible causes\n\n- Your application is using an older Twilio Video SDK release. Twilio recommends updating to the latest JavaScript SDK release.\n- If you use the JavaScript SDK, the participant is joining from an unsupported browser or unsupported `WebView` environment. Twilio supports recent versions of Chrome, Edge, Safari, Firefox, and Samsung Internet. iOS `WebView` support requires iOS 14.3 or later and JavaScript SDK 2.21.0 or later. Android `WebView` is not supported.\n- Your application is forcing codec preferences that do not match Twilio Video codec support. In Group Rooms, the Video SFU supports `VP8` and `H.264` for video and `Opus` and `PCMU` for audio.\n- Participants in the same Group Room negotiated codecs that are not interoperable for a later-joining client. For example, if participants are already sending `VP8`, a legacy Safari browser that can only receive `H.264` may not be able to receive video.\n\n### Possible solutions\n\n- Update all clients to the latest Twilio Video SDK release before testing again.\n- If you use the JavaScript SDK, verify that the participant is using a supported browser and check `isSupported` before connecting to the Room.\n- Review any codec preferences you set in `ConnectOptions`. For two-participant Rooms, do not force a preferred video codec unless you need to. For Rooms with three or more participants, prefer `VP8` and enable `Adaptive Simulcast`. Keep `Opus` as your audio codec unless you have a specific reason to change it.\n- If you prefer `H.264` on mobile clients, confirm that the device supports `H.264` encode and decode before you force that codec.\n- Run Twilio Video diagnostics before participants join a Room. The Video Diagnostics Application, RTC Diagnostics SDK, and Preflight API help you test device setup, connectivity with the Twilio Cloud, and media connectivity issues.\n\n#### Additional resources\n\n- [Managing codecs](/docs/video/managing-codecs)\n- [JavaScript Platform Overview](/docs/video/javascript)\n- [Insights, Troubleshooting, and Diagnostics](/docs/video/troubleshooting)\n",
    "causes": "* Your application is using an older Twilio Video SDK release. Twilio recommends updating to the latest JavaScript SDK release.\n* If you use the JavaScript SDK, the participant is joining from an unsupported browser or unsupported `WebView` environment. Twilio supports recent versions of Chrome, Edge, Safari, Firefox, and Samsung Internet. iOS `WebView` support requires iOS 14.3 or later and JavaScript SDK 2.21.0 or later. Android `WebView` is not supported.\n* Your application is forcing codec preferences that do not match Twilio Video codec support. In Group Rooms, the Video SFU supports `VP8` and `H.264` for video and `Opus` and `PCMU` for audio.\n* Participants in the same Group Room negotiated codecs that are not interoperable for a later-joining client. For example, if participants are already sending `VP8`, a legacy Safari browser that can only receive `H.264` may not be able to receive video.",
    "solutions": "* Update all clients to the latest Twilio Video SDK release before testing again.\n* If you use the JavaScript SDK, verify that the participant is using a supported browser and check `isSupported` before connecting to the Room.\n* Review any codec preferences you set in `ConnectOptions`. For two-participant Rooms, do not force a preferred video codec unless you need to. For Rooms with three or more participants, prefer `VP8` and enable `Adaptive Simulcast`. Keep `Opus` as your audio codec unless you have a specific reason to change it.\n* If you prefer `H.264` on mobile clients, confirm that the device supports `H.264` encode and decode before you force that codec.\n* Run Twilio Video diagnostics before participants join a Room. The Video Diagnostics Application, RTC Diagnostics SDK, and Preflight API help you test device setup, connectivity with the Twilio Cloud, and media connectivity issues.",
    "description": "This error occurs when the Twilio Video Media Server receives a remote media description from a participant and cannot apply it. Start by checking client compatibility, because Twilio recommends using the latest Video SDK, supported browser environments, and codec settings that align with the codecs supported by the Video SFU.",
    "date_created": "2019-05-22T22:53:08Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 53404,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No supported codec",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nRaised whenever the intersection of codecs supported by the Client and the Server (or, in peer-to-peer, the Client and another Participant) is empty.\n",
    "causes": null,
    "solutions": null,
    "description": "Raised whenever the intersection of codecs supported by the Client and the Server (or, in peer-to-peer, the Client and another Participant) is empty.",
    "date_created": "2019-05-22T22:53:50Z",
    "last_updated": "2020-08-04T10:00:08.058Z"
  },
  {
    "code": 53405,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media connection failed or Media activity ceased",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised by the Client or Server when the media connection fails, or raised by the Client when it detects that media has stopped flowing.\n\n### Possible causes\n\n- The Client was unable to establish a media connection.\n- An active media connection failed liveliness checks.\n- The flow of media on the connection has ceased.\n- In a Peer to Peer Room on iOS 14 and later, the Participant declined local network permission which is required when apps opt in to local network candidates.\n- Restrictive firewalls or NAT blocked Twilio media traffic or TURN fallbacks preventing or disrupting media, for example UDP 10000–60000 for RTP or TURN on ports 3478 and 443.\n\n### Possible solutions\n\n- If the problem persists in a Group Room, try connecting to or creating the Room in a different media region to lower latency and packet loss.\n- Check the Client's network connectivity and allow required Twilio Video media paths including UDP 10000–60000 and TURN fallbacks on 3478 and 443.\n- Ensure STUN and TURN connectivity is available. If you use custom ICE servers, verify the server URLs and credentials are valid.\n- For iOS 14 and later in Peer to Peer Rooms, only request Local Network access if your app needs it and otherwise avoid opting in to local network candidates to prevent permission-related failures.\n- Use the Video Preflight API to test signaling and media connectivity before joining a Room to catch issues early.\n- Implement reconnection handling so the app can recover automatically when the SDK emits a reconnecting event due to a media disruption associated with this error.\n\n#### Additional resources\n\n- [Reconnection States and Events](/docs/video/reconnection-states-and-events)\n- [Networking Considerations for Video Applications](/docs/video/networking-considerations)\n- [Video Regions and Global Low Latency](/docs/video/tutorials/video-regions-and-global-low-latency)\n",
    "causes": "* The Client was unable to establish a media connection.\n* An active media connection failed liveliness checks.\n* The flow of media on the connection has ceased.\n* In a Peer to Peer Room on iOS 14 and later, the Participant declined local network permission which is required when apps opt in to local network candidates.\n* Restrictive firewalls or NAT blocked Twilio media traffic or TURN fallbacks preventing or disrupting media, for example UDP 10000–60000 for RTP or TURN on ports 3478 and 443.",
    "solutions": "* If the problem persists in a Group Room, try connecting to or creating the Room in a different media region to lower latency and packet loss.\n* Check the Client's network connectivity and allow required Twilio Video media paths including UDP 10000–60000 and TURN fallbacks on 3478 and 443.\n* Ensure STUN and TURN connectivity is available. If you use custom ICE servers, verify the server URLs and credentials are valid.\n* For iOS 14 and later in Peer to Peer Rooms, only request Local Network access if your app needs it and otherwise avoid opting in to local network candidates to prevent permission-related failures.\n* Use the Video Preflight API to test signaling and media connectivity before joining a Room to catch issues early.\n* Implement reconnection handling so the app can recover automatically when the SDK emits a reconnecting event due to a media disruption associated with this error.",
    "description": "Raised by the Client or Server when the media connection fails, or raised by the Client when it detects that media has stopped flowing.",
    "date_created": "2019-02-01T15:37:51Z",
    "last_updated": "2026-04-01T14:16:33+01:00"
  },
  {
    "code": 53406,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "The data channel used by the Data Track had a problem",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThere was a problem while negotiating with the remote media connection and it was not able to complete the channel creation. This can mean that the subscriber does not support data channels or they can not create it at this moment. This can also happen if the data channel suffers connectivity problems once it was connected.\n\n### Possible causes\n\n- The subscriber does not support data channels.\n- The subscriber can not open a data channel at this moment.\n- The subscriber rejected the data channel.\n- ICE connection between the server and the client became disconnected.\n\n### Possible solutions\n\n- Verify ICE connection.\n- Verify that the subscriber supports data channels.\n- Verify if the subscriber has reached the maximum number of data channels.\n",
    "causes": "* The subscriber does not support data channels.\n* The subscriber can not open a data channel at this moment.\n* The subscriber rejected the data channel.\n* ICE connection between the server and the client became disconnected.",
    "solutions": "* Verify ICE connection.\n* Verify that the subscriber supports data channels.\n* Verify if the subscriber has reached the maximum number of data channels.",
    "description": "There was a problem while negotiating with the remote media connection and it was not able to complete the channel creation. This can mean that the subscriber does not support data channels or they can not create it at this moment. This can also happen if the data channel suffers connectivity problems once it was connected.",
    "date_created": "2021-03-09T08:09:35Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53407,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Media connection failed due to DTLS handshake failure",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThere was a problem while negotiating with the remote DTLS peer. Therefore the Participant will not be able to publish or subscribe to Tracks.\n\n### Possible causes\n\n- One or both of the DTLS peers have an invalid certificate.\n- One or both of the DTLS peers have an outdated version of DTLS.\n- One or both of the DTLS peers lost internet connectivity while performing a DTLS handshake.\n\n### Possible solutions\n\n- Ensure that your certificate is valid.\n- Ensure that you have a stable internet connection.\n- Ensure that the browser or the Mobile SDK supports newer versions of DTLS.\n",
    "causes": "* One or both of the DTLS peers have an invalid certificate.\n* One or both of the DTLS peers have an outdated version of DTLS.\n* One or both of the DTLS peers lost internet connectivity while performing a DTLS handshake.",
    "solutions": "* Ensure that your certificate is valid.\n* Ensure that you have a stable internet connection.\n* Ensure that the browser or the Mobile SDK supports newer versions of DTLS.",
    "description": "There was a problem while negotiating with the remote DTLS peer. Therefore the Participant will not be able to publish or subscribe to Tracks.",
    "date_created": "2021-03-09T08:12:52Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53408,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "ICE connection restart was attempted, but it is not allowed",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nICE restarts are only allowed on SDP offers, not answers\n\n### Possible causes\n\n- The client has attempted an ICE restart in a SDP answer.\n\n### Possible solutions\n\n- Ensure that the ICE restart happens only in SDP offers.\n",
    "causes": "* The client has attempted an ICE restart in a SDP answer.",
    "solutions": "* Ensure that the ICE restart happens only in SDP offers.",
    "description": "ICE restarts are only allowed on SDP offers, not answers",
    "date_created": "2021-03-09T08:15:14Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53500,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to acquire configuration",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever the Client is unable to acquire configuration information from the Server.\n\n### Possible causes\n\n- The device running your application lost its Internet connection.\n- A server-side error has occurred.\n\n### Possible solutions\n\n- Ensure the device running your application has access to a stable internet connection. If the problem persists, try connecting to another region.\n",
    "causes": "* The device running your application lost its Internet connection.\n* A server-side error has occurred.",
    "solutions": "* Ensure the device running your application has access to a stable internet connection. If the problem persists, try connecting to another region.",
    "description": "Raised whenever the Client is unable to acquire configuration information from the Server.",
    "date_created": "2017-06-05T17:34:15Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53501,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to acquire TURN credentials",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised whenever the Server is unable to return TURN credentials to the Client\n\n### Possible causes\n\n- A server-side error has occurred.\n\n### Possible solutions\n\n- If the problem persists, try connecting to another region.\n",
    "causes": "* A server-side error has occurred.",
    "solutions": "* If the problem persists, try connecting to another region.",
    "description": "Raised whenever the Server is unable to return TURN credentials to the Client",
    "date_created": "2017-06-05T17:36:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53600,
    "log_level": "ERROR",
    "log_type": null,
    "message": "S3 URL for recording upload is invalid",
    "secondary_message": "The recording will not be processed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe recording will not be processed.\n\nRaised when the S3 URL specified in the recording's metadata is not valid.\n\n### Possible causes\n\n- If you have specified your own bucket, this is most likely due to the fact that the URL does not conform to an S3 URL.\n\n### Possible solutions\n\n- Set a valid S3 URL for uploading media or leave blank (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket, this is most likely due to the fact that the URL does not conform to an S3 URL.",
    "solutions": "* Set a valid S3 URL for uploading media or leave blank (media will be uploaded to the default bucket).",
    "description": "The recording will not be processed. Raised when the S3 URL specified in the recording's metadata is not valid.",
    "date_created": "2018-02-19T10:33:23Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53601,
    "log_level": "ERROR",
    "log_type": null,
    "message": "AWS credentials for recording upload are invalid",
    "secondary_message": "The recording will not be processed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe recording will not be processed.\n\nRaised when the AWS credentials provided in the recording's metadata for uploading the media to S3 are not valid.\n\n### Possible causes\n\n- Providing invalid AWS credentials for S3 access.\n\n### Possible solutions\n\n- Set AWS credentials to a correct value.\n",
    "causes": "* Providing invalid AWS credentials for S3 access.",
    "solutions": "* Set AWS credentials to a correct value.",
    "description": "The recording will not be processed. Raised when the AWS credentials provided in the recording's metadata for uploading the media to S3 are not valid.",
    "date_created": "2018-02-19T10:36:18Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53602,
    "log_level": "ERROR",
    "log_type": null,
    "message": "AWS encryption key for recording upload is invalid",
    "secondary_message": "The recording will not be processed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe recording will not be processed.\n\nRaised when the AWS encryption key provided in the recording's metadata for uploading the media to S3 is not valid.\n\n### Possible causes\n\n- Providing an invalid AWS encryption key for uploading to S3.\n\n### Possible solutions\n\n- Set AWS encryption key to a correct value.\n",
    "causes": "* Providing an invalid AWS encryption key for uploading to S3.",
    "solutions": "* Set AWS encryption key to a correct value.",
    "description": "The recording will not be processed. Raised when the AWS encryption key provided in the recording's metadata for uploading the media to S3 is not valid.",
    "date_created": "2018-02-19T10:36:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53603,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal failure while processing a recording",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when an internal error prevents us from processing the recording.\n\n### Possible causes\n\n- We screwed up. Sorry!\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and what you were trying to do when it occurred!\n",
    "causes": "* We screwed up. Sorry!",
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and what you were trying to do when it occurred!",
    "description": "Raised when an internal error prevents us from processing the recording.",
    "date_created": "2018-02-19T10:37:53Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53604,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Failed to upload the recording to S3",
    "secondary_message": "A new attempt will be made after a delay",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when an error prevented us from uploading the media to S3.\n\n### Possible causes\n\n- Despite our best efforts to upload your media to S3, we couldn't do it this time. We'll attempt again shortly.\n\n### Possible solutions\n\n- Please verify that any S3 configuration you've provided us is correct, such as AWS access credentials or AWS encryption key.\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and what you were trying to do when it occurred!\n",
    "causes": "* Despite our best efforts to upload your media to S3, we couldn't do it this time. We'll attempt again shortly.",
    "solutions": "* Please verify that any S3 configuration you've provided us is correct, such as AWS access credentials or AWS encryption key.\n* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and what you were trying to do when it occurred!",
    "description": "Raised when an error prevented us from uploading the media to S3.",
    "date_created": "2018-02-19T10:38:50Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53605,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Internal failure when retrieving your account's recording settings",
    "secondary_message": "A new attempt will be made after a delay",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when an error prevented us from retrieving your account's recording settings.\n\nThe recording will not be uploaded until we manage to read your recording settings.\n\n### Possible causes\n\n- An internal error stopped us from uploading the recording. We'll attempt again shortly.\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and what you were trying to do when it occurred!\n",
    "causes": "* An internal error stopped us from uploading the recording. We'll attempt again shortly.",
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and what you were trying to do when it occurred!",
    "description": "Raised when an error prevented us from retrieving your account's recording settings. The recording will not be uploaded until we manage to read your recording settings.",
    "date_created": "2018-02-19T10:40:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53606,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Internal failure when creating the recording resource",
    "secondary_message": "A new attempt will be made after a delay",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when an error prevented us from creating an internal resource tracking the media recording.\n\nThe recording will not be accessible directly from Twilio until we remediate the situation but the media file has probably been stored safely to S3.\n\n### Possible causes\n\n- An internal error prevented us from creating a resource. We'll attempt again shortly.\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and what you were trying to do when it occurred!\n",
    "causes": "* An internal error prevented us from creating a resource. We'll attempt again shortly.",
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and what you were trying to do when it occurred!",
    "description": "Raised when an error prevented us from creating an internal resource tracking the media recording. The recording will not be accessible directly from Twilio until we remediate the situation but the media file has probably been stored safely to S3.",
    "date_created": "2018-06-29T13:06:14Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53607,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Internal failure when updating the recording resource",
    "secondary_message": "A new attempt will be made after a delay",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when an error prevented us from updating an internal resource tracking the media recording.\n\nThe recording's media will not be accessible directly from Twilio until we remediate the situation but the media file has probably been stored safely to S3.\n\n### Possible causes\n\n- An internal error prevented us from updating a resource. We'll attempt again shortly.\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and what you were trying to do when it occurred!\n",
    "causes": "* An internal error prevented us from updating a resource. We'll attempt again shortly.",
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and what you were trying to do when it occurred!",
    "description": "Raised when an error prevented us from updating an internal resource tracking the media recording. The recording's media will not be accessible directly from Twilio until we remediate the situation but the media file has probably been stored safely to S3.",
    "date_created": "2018-06-29T13:07:16Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53610,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid URL for external S3 bucket in recording settings",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe S3 bucket URL configured in your account's recording settings is not valid.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified your own bucket, this is most likely due to the fact that the URL does not conform to an S3 URL.\n\n### Possible solutions\n\n- In the recording settings section of your account's console, set a valid S3 URL for uploading media or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket, this is most likely due to the fact that the URL does not conform to an S3 URL.",
    "solutions": "* In the recording settings section of your account's console, set a valid S3 URL for uploading media or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The S3 bucket URL configured in your account's recording settings is not valid. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-05-24T12:45:45Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53611,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid AWS credentials to access external S3 bucket in recording settings",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe AWS credentials configured in your account's recording settings are not valid.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified your own bucket and access credentials, this is most likely due to the fact that the AWS Access Key ID and Secret Access Key are not correct.\n\n### Possible solutions\n\n- In the recording settings section of your account's console, set some valid credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket and access credentials, this is most likely due to the fact that the AWS Access Key ID and Secret Access Key are not correct.",
    "solutions": "* In the recording settings section of your account's console, set some valid credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The AWS credentials configured in your account's recording settings are not valid. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-05-24T13:15:25Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53612,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid public key for media tracks encryption in recording settings",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe public key configured in your account's recording settings is not valid.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified a public key to cryptographically protect raw media tracks, this is most likely due to the fact that the key value is not correct.\n\n### Possible solutions\n\n- In the recording settings section of your account's console, set a valid public key or disable the encryption (media will be uploaded in raw).\n",
    "causes": "* If you have specified a public key to cryptographically protect raw media tracks, this is most likely due to the fact that the key value is not correct.",
    "solutions": "* In the recording settings section of your account's console, set a valid public key or disable the encryption (media will be uploaded in raw).",
    "description": "The public key configured in your account's recording settings is not valid. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-05-24T13:22:15Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53613,
    "log_level": "WARNING",
    "log_type": null,
    "message": "AWS credentials to access external S3 bucket could not be loaded",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe AWS credentials configured in your account's recording settings could not be loaded.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\nThis is most likely due to the fact that the AWS Credentials resource has been removed from Twilio.\n\n### Possible solutions\n\n- In the recording settings section of your account's console, create and assign a new credentials entry for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "This is most likely due to the fact that the AWS Credentials resource has been removed from Twilio.",
    "solutions": "* In the recording settings section of your account's console, create and assign a new credentials entry for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The AWS credentials configured in your account's recording settings could not be loaded. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-05-24T13:33:22Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53614,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Public key credentials for media tracks encryption could not be loaded",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe public key credentials configured in your account's recording settings could not be loaded.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified a public key to cryptographically protect raw media tracks, this is most likely due to the fact that the credentials resource has been removed from Twilio.\n\n### Possible solutions\n\n- In the recording settings section of your account's console, create and assign a new valid public key or disable the encryption (media will be uploaded in raw).\n",
    "causes": "* If you have specified a public key to cryptographically protect raw media tracks, this is most likely due to the fact that the credentials resource has been removed from Twilio.",
    "solutions": "* In the recording settings section of your account's console, create and assign a new valid public key or disable the encryption (media will be uploaded in raw).",
    "description": "The public key credentials configured in your account's recording settings could not be loaded. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-05-24T13:36:47Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53615,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Access denied to external S3 bucket configured in recording settings",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nWe failed to upload media to the external S3 bucket configured in your account's recording settings.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\nThis is a configuration error that can have different root causes\n\n- The IAM user referenced in the credentials provided does not have enough permissions to upload to the bucket.\n- The bucket configured in your settings has SSE-S3 enabled. The only default encryption mechanism supported is SSE-KMS. Please review the guides for more informtion\n\n### Possible solutions\n\n- In the recording settings section of your account's console, review the credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n- If SSE-S3 is enabled, please consider switching to SSE-KMS.\n",
    "causes": "This is a configuration error that can have different root causes - The IAM user referenced in the credentials provided does not have enough permissions to upload to the bucket.\n- The bucket configured in your settings has SSE-S3 enabled. The only default encryption mechanism supported is SSE-KMS. Please review the guides for more informtion",
    "solutions": "* In the recording settings section of your account's console, review the credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n* If SSE-S3 is enabled, please consider switching to SSE-KMS.",
    "description": "We failed to upload media to the external S3 bucket configured in your account's recording settings. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-05-24T14:07:13Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53616,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Deleted a recording with custom configuration as time for retries was depleted",
    "secondary_message": "The recording has been removed and will not be available",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nTwilio gave up on uploading your recording with custom configuration, as time for retries was depleted. The recording has been removed and will not be available.\n\n### Possible causes\n\n- There was an error with your account's recording settings, either due to the access credentials for your own bucket or to the encryption key.\n\n### Possible solutions\n\n- In the recording settings section of your account's console, review the credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n- In the recording settings section of your account's console, set a valid public key or disable the encryption (media will be uploaded in raw).\n",
    "causes": "* There was an error with your account's recording settings, either due to the access credentials for your own bucket or to the encryption key.",
    "solutions": "* In the recording settings section of your account's console, review the credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n* In the recording settings section of your account's console, set a valid public key or disable the encryption (media will be uploaded in raw).",
    "description": "Twilio gave up on uploading your recording with custom configuration, as time for retries was depleted. The recording has been removed and will not be available.",
    "date_created": "2018-09-28T16:02:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53617,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Internal failure when bulk deleting compositions from your account",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nDespite our best efforts, we have failed to delete some or all of the selected compositions. The operation has been cancelled.\n\n### Possible causes\n\nThere was an internal failure when processing your request. This action will not be retried.\n\n### Possible solutions\n\n- Please retry the delete operation with the same parameters.\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and which filter was used to select the compositions.\n",
    "causes": "There was an internal failure when processing your request. This action will not be retried.",
    "solutions": "* Please retry the delete operation with the same parameters.\n* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and which filter was used to select the compositions.",
    "description": "Despite our best efforts, we have failed to delete some or all of the selected compositions. The operation has been cancelled.",
    "date_created": "2019-07-05T11:13:01Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53620,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid URL for external S3 bucket in composition settings",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe S3 bucket URL configured in your account's composition settings is not valid.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified your own bucket, this is most likely due to the fact that the URL does not conform to an S3 URL.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, set a valid S3 URL for uploading media or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket, this is most likely due to the fact that the URL does not conform to an S3 URL.",
    "solutions": "* In the composition settings section of your account's console, set a valid S3 URL for uploading media or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The S3 bucket URL configured in your account's composition settings is not valid. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-06-11T14:35:17Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53621,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid AWS credentials to access external S3 bucket in composition settings",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe AWS credentials configured in your account's composition settings are not valid.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified your own bucket and access credentials, this is most likely due to the fact that the AWS Access Key ID and Secret Access Key are not correct.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, set some valid credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket and access credentials, this is most likely due to the fact that the AWS Access Key ID and Secret Access Key are not correct.",
    "solutions": "* In the composition settings section of your account's console, set some valid credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The AWS credentials configured in your account's composition settings are not valid. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-06-11T14:36:28Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53622,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Invalid public key for media tracks encryption in composition settings",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe public key configured in your account's composition settings is not valid.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified a public key to cryptographically protect media tracks, this is most likely due to the fact that the key value is not correct.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, set a valid public key or disable the encryption (media will be uploaded in raw).\n",
    "causes": "* If you have specified a public key to cryptographically protect media tracks, this is most likely due to the fact that the key value is not correct.",
    "solutions": "* In the composition settings section of your account's console, set a valid public key or disable the encryption (media will be uploaded in raw).",
    "description": "The public key configured in your account's composition settings is not valid. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-06-11T14:37:32Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53623,
    "log_level": "WARNING",
    "log_type": null,
    "message": "AWS credentials to access external S3 bucket could not be loaded",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe AWS credentials configured in your account's composition settings could not be loaded.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified your own bucket and access credentials, this is most likely due to the fact that the credentials resource has been removed from Twilio.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, create and assign a new credentials entry for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket and access credentials, this is most likely due to the fact that the credentials resource has been removed from Twilio.",
    "solutions": "* In the composition settings section of your account's console, create and assign a new credentials entry for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The AWS credentials configured in your account's composition settings could not be loaded. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-06-11T14:38:26Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53624,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Public key credentials for media tracks encryption could not be loaded",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe public key credentials configured in your account's composition settings could not be loaded.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified a public key to cryptographically protect media tracks, this is most likely due to the fact that the credentials resource has been removed from Twilio.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, create and assign a new valid public key or disable the encryption (media will be uploaded in raw).\n",
    "causes": "* If you have specified a public key to cryptographically protect media tracks, this is most likely due to the fact that the credentials resource has been removed from Twilio.",
    "solutions": "* In the composition settings section of your account's console, create and assign a new valid public key or disable the encryption (media will be uploaded in raw).",
    "description": "The public key credentials configured in your account's composition settings could not be loaded. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-06-11T14:39:24Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53625,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Access denied to external S3 bucket configured in composition settings",
    "secondary_message": "The media will not be uploaded until the configuration has been fixed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nFailed to upload media to the external S3 bucket configured in your account's composition settings.\n\nThe media will not be uploaded until the configuration has been fixed.\n\n### Possible causes\n\n- If you have specified your own bucket and access credentials, this is most likely due to the fact that the configuration is out of date.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, review the credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket and access credentials, this is most likely due to the fact that the configuration is out of date.",
    "solutions": "* In the composition settings section of your account's console, review the credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).",
    "description": "Failed to upload media to the external S3 bucket configured in your account's composition settings. The media will not be uploaded until the configuration has been fixed.",
    "date_created": "2018-06-11T14:40:15Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53626,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal failure while processing media composition",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when an internal error prevents us from processing the media composition.\n\n### Possible causes\n\n- We screwed up. Sorry!\n\n### Possible solutions\n\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and what you were trying to do when it occurred!\n",
    "causes": "* We screwed up. Sorry!",
    "solutions": "* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and what you were trying to do when it occurred!",
    "description": "Raised when an internal error prevents us from processing the media composition.",
    "date_created": "2018-06-25T10:20:16Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53627,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal failure when updating the composition resource",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised when an error prevented us from updating the resource tracking the media composition.\n\nThe media will not be accessible directly from Twilio until we remediate the situation but the composition media file has probably been stored safely to S3.\n\n### Possible causes\n\n- An internal error prevented us from updating a resource. Sorry!\n\n### Possible solutions\n\n- Please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and what you were trying to do when it occurred!\n",
    "causes": "* An internal error prevented us from updating a resource. Sorry!",
    "solutions": "* Please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and what you were trying to do when it occurred!",
    "description": "Raised when an error prevented us from updating the resource tracking the media composition. The media will not be accessible directly from Twilio until we remediate the situation but the composition media file has probably been stored safely to S3.",
    "date_created": "2018-06-25T10:21:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53628,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Room recordings deleted",
    "secondary_message": "The recordings for the room have been deleted from the system",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe recordings for the room specified in your composition job have been deleted. Although the metadata for the recordings is present, the media has been removed from the Twilio Cloud and can't be recovered.\n\n### Possible causes\n\n- You have deleted your Room Recordings, either from the console or the API.\n\n### Possible solutions\n\n- There's no solution for this. Once the recorded media files are deleted from the system, they are gone forever.\n",
    "causes": "* You have deleted your Room Recordings, either from the console or the API.",
    "solutions": "* There's no solution for this. Once the recorded media files are deleted from the system, they are gone forever.",
    "description": "The recordings for the room specified in your composition job have been deleted. Although the metadata for the recordings is present, the media has been removed from the Twilio Cloud and can't be recovered.",
    "date_created": "2018-07-02T13:45:27Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53630,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Empty track list for composition",
    "secondary_message": "The composition job did not start",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe combination of sources and exclusions passed to the composition resulted in an empty track list. The composition job did not start.\n\n### Possible causes\n\n- You specified an incorrect list of sources and exclusions, audio and video, which have resulted in an empty track list.\n\n### Possible solutions\n\n- Recreate the composition using an updated list of sources and exclusions.\n",
    "causes": "* You specified an incorrect list of sources and exclusions, audio and video, which have resulted in an empty track list.",
    "solutions": "* Recreate the composition using an updated list of sources and exclusions.",
    "description": "The combination of sources and exclusions passed to the composition resulted in an empty track list. The composition job did not start.",
    "date_created": "2018-09-28T16:09:33Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53631,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Failed to enqueue a room composition from a configured composition hook",
    "secondary_message": "The group room will not be composed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThere was a failure creating or enqueuing a composition for a completed Group Room, using the configuration from a composition hook.\n\n### Possible causes\n\n- We failed to create the composition or the configuration was not suitable for a specific Group Room.\n\n### Possible solutions\n\n- Verify the composition hook configured in your account's console.\n- The composition can also be launched manually using the [REST API](/docs/video/api/compositions-resource).\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n",
    "causes": "* We failed to create the composition or the configuration was not suitable for a specific Group Room.",
    "solutions": "* Verify the composition hook configured in your account's console.\n* The composition can also be launched manually using the [REST API](/docs/video/api/compositions-resource).\n* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!",
    "description": "There was a failure creating or enqueuing a composition for a completed Group Room, using the configuration from a composition hook.",
    "date_created": "2018-09-28T16:22:30Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53632,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Failed to enqueue a room composition",
    "secondary_message": "The job will not be executed",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThere was a failure enqueuing a composition for processing.\n\n### Possible causes\n\n- There was an internal error when enqueuing the composition.\n\n### Possible solutions\n\n- The composition can be launched again using the [REST API](/docs/video/api/compositions-resource).\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n",
    "causes": "* There was an internal error when enqueuing the composition.",
    "solutions": "* The composition can be launched again using the [REST API](/docs/video/api/compositions-resource).\n* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!",
    "description": "There was a failure enqueuing a composition for processing.",
    "date_created": "2018-09-28T16:25:58Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53633,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Composition is too large",
    "secondary_message": "The composition job did not start.",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe composition job did not start because the combined size of the media sources passed to the composition is too large to process.\n\n### Possible causes\n\nDue to fixed hardware constraints, Twilio is not able to compose all the media tracks specified in the composition create request. Check the maximum size on [Known limitations](/docs/video/api/compositions-resource#known-issues)\n\n### Possible solutions\n\nPlease reduce the scope of the composition by excluding some of the sources to verity that they are below our maximum size. If not possible, please [contact us](/help/contact) and provide a description of the media files you are attempting to compose.\n",
    "causes": "Due to fixed hardware constraints, Twilio is not able to compose all the media tracks specified in the composition create request. Check the maximum size on [Known limitations](/docs/video/api/compositions-resource#known-issues)",
    "solutions": "Please reduce the scope of the composition by excluding some of the sources to verity that they are below our maximum size. If not possible, please [contact us](/help/contact) and provide a description of the media files you are attempting to compose.",
    "description": "The composition job did not start because the combined size of the media sources passed to the composition is too large to process.",
    "date_created": "2019-08-13T12:08:41Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53660,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Status Callback response timed out",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nRaised by a Twilio Service when the StatusCallback request takes too long or does not respond to callbacks sent\n\n### Possible causes\n\n- The server receiving status callbacks sent by Twilio takes too long too respond.\n\n### Possible solutions\n\n- Make sure service receiving callbacks does not block incoming requests.\n",
    "causes": "* The server receiving status callbacks sent by Twilio takes too long too respond.",
    "solutions": "* Make sure service receiving callbacks does not block incoming requests.",
    "description": "Raised by a Twilio Service when the StatusCallback request takes too long or does not respond to callbacks sent",
    "date_created": "2017-12-28T11:43:25Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53661,
    "log_level": "WARNING",
    "log_type": null,
    "message": "StatusCallbackMethod is invalid",
    "secondary_message": "The recording will be processed, but status notifications will not be sent",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe recording will be processed, but status notifications will not be sent.\n\nRaised when StatusCallbackMethod is set to an invalid value.\n\n### Possible causes\n\n- Recording created with StatusCallbackMethod set to an invalid value.\n\n### Possible solutions\n\n- Set StatusCallbackMethod to either `GET` or `POST` or leave blank for the default (`POST`).\n",
    "causes": "* Recording created with StatusCallbackMethod set to an invalid value.",
    "solutions": "* Set StatusCallbackMethod to either `GET` or `POST` or leave blank for the default (`POST`).",
    "description": "The recording will be processed, but status notifications will not be sent. Raised when StatusCallbackMethod is set to an invalid value.",
    "date_created": "2018-02-19T10:41:57Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53662,
    "log_level": "WARNING",
    "log_type": null,
    "message": "StatusCallback is invalid",
    "secondary_message": "The recording will be processed, but status notifications will not be sent",
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe recording will be processed, but status notifications will not be sent.\n\nRaised when StatusCallback is not a valid URL.\n\n### Possible causes\n\n- Recording created with StatusCallback set to an invalid URL.\n\n### Possible solutions\n\n- Set StatusCallback to a valid URL or leave blank (status notifications will not be sent).\n",
    "causes": "* Recording created with StatusCallback set to an invalid URL.",
    "solutions": "* Set StatusCallback to a valid URL or leave blank (status notifications will not be sent).",
    "description": "The recording will be processed, but status notifications will not be sent. Raised when StatusCallback is not a valid URL.",
    "date_created": "2018-02-19T10:43:12Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53663,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Internal failure when bulk deleting recordings from your account",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nDespite our best efforts, we have failed to delete some or all of the selected recordings. The operation has been cancelled.\n\n### Possible causes\n\nThere was an internal failure when processing your request. This action will not be retried.\n\n### Possible solutions\n\n- Please retry the delete operation with the same parameters.\n- If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n- Note the time of the error and which filter was used to select the recordings.\n",
    "causes": "There was an internal failure when processing your request. This action will not be retried.",
    "solutions": "* Please retry the delete operation with the same parameters.\n* If the error persists, please [contact us](/help/contact) to figure out what has happened and how to fix it!\n* Note the time of the error and which filter was used to select the recordings.",
    "description": "Despite our best efforts, we have failed to delete some or all of the selected recordings. The operation has been cancelled.",
    "date_created": "2019-07-29T08:29:08Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53664,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid URL for external S3 bucket in composition settings",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe S3 bucket URL configured in your account's composition settings is not valid.\n\nMedia composition has been marked as FAILED and will not be retried.\n\n### Possible causes\n\n- If you have specified your own bucket, this is most likely due to the fact that the URL does not conform to an S3 URL.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, set a valid S3 URL for uploading media or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket, this is most likely due to the fact that the URL does not conform to an S3 URL.",
    "solutions": "* In the composition settings section of your account's console, set a valid S3 URL for uploading media or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The S3 bucket URL configured in your account's composition settings is not valid. Media composition has been marked as FAILED and will not be retried.",
    "date_created": "2021-04-13T07:25:48Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53665,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid AWS credentials to access external S3 bucket in composition settings",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe AWS credentials configured in your account's composition settings are not valid.\n\nMedia composition has been marked as FAILED and will not be retried.\n\n### Possible causes\n\n- If you have specified your own bucket and access credentials, this is most likely due to the fact that the AWS Access Key ID and Secret Access Key are not correct.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, set some valid credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket and access credentials, this is most likely due to the fact that the AWS Access Key ID and Secret Access Key are not correct.",
    "solutions": "* In the composition settings section of your account's console, set some valid credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The AWS credentials configured in your account's composition settings are not valid. Media composition has been marked as FAILED and will not be retried.",
    "date_created": "2021-04-13T07:32:36Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53666,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid public key for media tracks encryption in composition settings",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe public key configured in your account's composition settings is not valid.\n\nMedia composition has been marked as FAILED and will not be retried.\n\n### Possible causes\n\n- If you have specified a public key to cryptographically protect media tracks, this is most likely due to the fact that the key value is not correct.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, set a valid public key or disable the encryption (media will be uploaded in raw).\n",
    "causes": "* If you have specified a public key to cryptographically protect media tracks, this is most likely due to the fact that the key value is not correct.",
    "solutions": "* In the composition settings section of your account's console, set a valid public key or disable the encryption (media will be uploaded in raw).",
    "description": "The public key configured in your account's composition settings is not valid. Media composition has been marked as FAILED and will not be retried.",
    "date_created": "2021-04-13T07:33:35Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53667,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "AWS credentials to access external S3 bucket could not be loaded",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe AWS credentials configured in your account's composition settings could not be loaded.\n\nMedia composition has been marked as FAILED and will not be retried.\n\n### Possible causes\n\n- If you have specified your own bucket and access credentials, this is most likely due to the fact that the credentials resource has been removed from Twilio.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, create and assign a new credentials entry for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket and access credentials, this is most likely due to the fact that the credentials resource has been removed from Twilio.",
    "solutions": "* In the composition settings section of your account's console, create and assign a new credentials entry for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).",
    "description": "The AWS credentials configured in your account's composition settings could not be loaded. Media composition has been marked as FAILED and will not be retried.",
    "date_created": "2021-04-13T07:34:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53668,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Public key credentials for media tracks encryption could not be loaded",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe public key credentials configured in your account's composition settings could not be loaded.\n\nMedia composition has been marked as FAILED and will not be retried.\n\n### Possible causes\n\n- If you have specified a public key to cryptographically protect media tracks, this is most likely due to the fact that the credentials resource has been removed from Twilio.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, create and assign a new valid public key or disable the encryption (media will be uploaded in raw).\n",
    "causes": "* If you have specified a public key to cryptographically protect media tracks, this is most likely due to the fact that the credentials resource has been removed from Twilio.",
    "solutions": "* In the composition settings section of your account's console, create and assign a new valid public key or disable the encryption (media will be uploaded in raw).",
    "description": "The public key credentials configured in your account's composition settings could not be loaded. Media composition has been marked as FAILED and will not be retried.",
    "date_created": "2021-04-13T07:36:09Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53669,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Access denied to external S3 bucket configured in composition settings",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nFailed to upload media to the external S3 bucket configured in your account's composition settings.\n\nMedia composition has been marked as FAILED and will not be retried.\n\n### Possible causes\n\n- If you have specified your own bucket and access credentials, this is most likely due to the fact that the configuration is out of date.\n\n### Possible solutions\n\n- In the composition settings section of your account's console, review the credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).\n",
    "causes": "* If you have specified your own bucket and access credentials, this is most likely due to the fact that the configuration is out of date.",
    "solutions": "* In the composition settings section of your account's console, review the credentials for accessing your S3 bucket or disable the external storage (media will be uploaded to the default bucket).",
    "description": "Failed to upload media to the external S3 bucket configured in your account's composition settings. Media composition has been marked as FAILED and will not be retried.",
    "date_created": "2021-04-13T07:37:07Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 53670,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Video Room Real-time Transcriptions: Configuration Error",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nA 53670 error is an indication there is something wrong with the Room Real-time Transcription configuration.\n\n### Possible causes\n\n- Configuration is missing required properties\n- Configuration contains invalid properties or invalid combination of properties\n\n### Possible solutions\n\n- Check the TranscriptionError message included in the Debugger message in Console for further information and update your Room Transcription configuration\n",
    "causes": "* Configuration is missing required properties\n* Configuration contains invalid properties or invalid combination of properties",
    "solutions": "* Check the TranscriptionError message included in the Debugger message in Console for further information and update your Room Transcription configuration",
    "description": "A 53670 error is an indication there is something wrong with the Room Real-time Transcription configuration.",
    "date_created": "2025-05-08T14:50:03Z",
    "last_updated": "2026-10-09T15:55:46-04:00"
  },
  {
    "code": 53671,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Video Room Real-time Transcriptions: Provider Error",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nA 53671 Error is an indication that the transcription provider configuration was rejected by the underlying Speech-to-Text provider.\n\n### Possible causes\n\n- Provider configuration contains invalid or unsupported properties\n\n### Possible solutions\n\n- Check any provider specific configuration.\n- Check the TranscriptionError message included in the Debugger message in Console for further information and update your Room Transcription configuration\n",
    "causes": "* Provider configuration contains invalid or unsupported properties",
    "solutions": "* Check any provider specific configuration.\n* Check the TranscriptionError message included in the Debugger message in Console for further information and update your Room Transcription configuration",
    "description": "A 53671 Error is an indication that the transcription provider configuration was rejected by the underlying Speech-to-Text provider.",
    "date_created": "2025-05-08T14:51:32Z",
    "last_updated": "2026-10-09T15:55:46-04:00"
  },
  {
    "code": 53672,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Video Room Transcriptions: Unsupported attribute(s) in TranscriptionsConfiguration",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `TranscriptionsConfiguration` object in a Room creation request includes one or more attributes that Twilio does not support for Video real-time transcriptions. If you enable `TranscribeParticipantsOnConnect` and do not provide `TranscriptionsConfiguration`, Twilio uses the default transcription settings.\n\n### Possible causes\n\n- The `TranscriptionsConfiguration` object includes a key that is not supported for Video real-time transcriptions.\n- A supported configuration property was misspelled or used with the wrong capitalization.\n- The request used attributes outside the supported configuration set, such as properties other than `transcriptionEngine`, `speechModel`, `languageCode`, `partialResults`, `profanityFilter`, `hints`, or `enableAutomaticPunctuation`.\n\n### Possible solutions\n\n- Review the Debugger event for the specific attribute that caused the request to fail.\n- Remove any unsupported keys from `TranscriptionsConfiguration`.\n- Update property names to match the supported configuration fields exactly.\n- If you do not need custom transcription settings, omit `TranscriptionsConfiguration` and create the Room with `TranscribeParticipantsOnConnect=true` so Twilio applies the default configuration.\n\n#### Additional resources\n\n- [Real-time Transcriptions for Video](/docs/video/api/transcriptions)\n- [REST API: Rooms](/docs/video/api/rooms-resource)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The `TranscriptionsConfiguration` object includes a key that is not supported for Video real-time transcriptions.\n* A supported configuration property was misspelled or used with the wrong capitalization.\n* The request used attributes outside the supported configuration set, such as properties other than `transcriptionEngine`, `speechModel`, `languageCode`, `partialResults`, `profanityFilter`, `hints`, or `enableAutomaticPunctuation`.",
    "solutions": "* Review the Debugger event for the specific attribute that caused the request to fail.\n* Remove any unsupported keys from `TranscriptionsConfiguration`.\n* Update property names to match the supported configuration fields exactly.\n* If you do not need custom transcription settings, omit `TranscriptionsConfiguration` and create the Room with `TranscribeParticipantsOnConnect=true` so Twilio applies the default configuration.",
    "description": "This error occurs when the `TranscriptionsConfiguration` object in a Room creation request includes one or more attributes that Twilio does not support for Video real-time transcriptions. If you enable `TranscribeParticipantsOnConnect` and do not provide `TranscriptionsConfiguration`, Twilio uses the default transcription settings.",
    "date_created": "2025-05-08T14:52:33Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 53673,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Video Room Real-time Transcriptions: Internal Error",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nA 53673 Error is an indication that there is an internal server error and some internal services failed\n\n### Possible causes\n\n- Some errors occurred during communication with Twilio internal services.\n\n### Possible solutions\n\n- If you repeatedly encounter this error, contact [Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).\n",
    "causes": "* Some errors occurred during communication with Twilio internal services.",
    "solutions": "* If you repeatedly encounter this error, contact [Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).",
    "description": "A 53673 Error is an indication that there is an internal server error and some internal services failed",
    "date_created": "2025-05-08T14:53:26Z",
    "last_updated": "2026-10-09T15:55:46-04:00"
  },
  {
    "code": 53674,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Video Room Real-time Transcriptions: Intelligence Service Error",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nA 32655 Error indicates a connection to the configured Intelligence Service could not be established due to an internal error. You will continue to receive real-time transcription events, however no Language Operators will be executed, and the transcript will not be persisted.\n\n### Possible causes\n\n- Some internal error occurred while trying to establish connection with the configured Intelligence service\n\n### Possible solutions\n\n- If you repeatedly encounter this error, contact [Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).\n",
    "causes": "* Some internal error occurred while trying to establish connection with the configured Intelligence service",
    "solutions": "* If you repeatedly encounter this error, contact [Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).",
    "description": "A 32655 Error indicates a connection to the configured Intelligence Service could not be established due to an internal error. You will continue to receive real-time transcription events, however no Language Operators will be executed, and the transcript will not be persisted.",
    "date_created": "2025-12-18T08:23:30.006Z",
    "last_updated": "2026-10-09T15:55:46-04:00"
  },
  {
    "code": 53675,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Video Room Real-time Transcriptions: Approaching transcription concurrency quota",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nTranscription usage is high. When capacity is fully utilized, new requests will be denied until resources become available.\n\n### Possible causes\n\n- High Video real-time transcription usage on your account\n\n### Possible solutions\n\n- Complete existing Video Rooms with active real-time transcription sessions\n- Contact support/sales to increase the transcription concurrency quota for your account\n",
    "causes": "* High Video real-time transcription usage on your account",
    "solutions": "* Complete existing Video Rooms with active real-time transcription sessions\n* Contact support/sales to increase the transcription concurrency quota for your account",
    "description": "Transcription usage is high. When capacity is fully utilized, new requests will be denied until resources become available.",
    "date_created": "2025-12-23T08:32:59.149Z",
    "last_updated": "2026-10-09T15:55:46-04:00"
  },
  {
    "code": 53676,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Video Room Real-time Transcriptions: Transcription concurrency quota exceeded",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nThe concurrency quota for the number of active real-time transcriptions sessions in Video Rooms on this account has been exceeded. No further real-time transcriptions sessions will be started for your Video Rooms until active usage decreases.\n\n### Possible causes\n\n- High Video real-time transcription usage on your account\n\n### Possible solutions\n\n- Complete existing Video Rooms with active real-time transcription sessions\n- Contact support/sales to increase the transcription concurrency quota for your account\n",
    "causes": "* High Video real-time transcription usage on your account",
    "solutions": "* Complete existing Video Rooms with active real-time transcription sessions\n* Contact support/sales to increase the transcription concurrency quota for your account",
    "description": "The concurrency quota for the number of active real-time transcriptions sessions in Video Rooms on this account has been exceeded. No further real-time transcriptions sessions will be started for your Video Rooms until active usage decreases.",
    "date_created": "2026-01-28T10:54:05.831Z",
    "last_updated": "2026-10-09T15:55:46-04:00"
  },
  {
    "code": 53677,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Video Room Real-time Transcriptions: Transcription provider failover",
    "secondary_message": null,
    "product": "Programmable Video",
    "products_used": [
      "video"
    ],
    "docs": "\n## Description\n\nTwilio is serving transcription from an alternate provider after the provider you originally requested became unavailable.\n\n### Possible causes\n\n- The provider you originally requested became unavailable due to an internal error or outage.\n\n### Possible solutions\n\n- If you repeatedly encounter this error, contact [Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).\n",
    "causes": "* The provider you originally requested became unavailable due to an internal error or outage.",
    "solutions": "* If you repeatedly encounter this error, contact [Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support).",
    "description": "Twilio is serving transcription from an alternate provider after the provider you originally requested became unavailable.",
    "date_created": "2026-10-12T16:19:05+03:00",
    "last_updated": "2026-10-12T16:19:05+03:00"
  },
  {
    "code": 54003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid If-Match header",
    "secondary_message": "The specified If-Match header is invalid.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe specified If-Match header cannot be used for concurrency control.\n\n### Possible causes\n\n- The value specified in the If-Match header is not a valid Sync object revision.\n\n### Possible solutions\n\nThe value you provide should be a revision assigned by the Sync service when interacting with an object.\n\n- In SDKs, this is the `revision` field, part of the object descriptor.\n- When using REST (e.g. via the Twilio Helper libraries) this is the `ETag` header provided in responses.\n",
    "causes": "* The value specified in the If-Match header is not a valid Sync object revision.",
    "solutions": "The value you provide should be a revision assigned by the Sync service when interacting with an object. - In SDKs, this is the `revision` field, part of the object descriptor.\n- When using REST (e.g. via the Twilio Helper libraries) this is the `ETag` header provided in responses.",
    "description": "The specified If-Match header cannot be used for concurrency control.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54006,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Request entity too large",
    "secondary_message": "The size of the specified 'Data' parameter exceeds the size limit.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe size of the specified 'Data' parameter exceeds the size limit.\n\n### Possible causes\n\n- The size of a serialized JSON payload stored in a Sync Document, List Item, or Map Item cannot exceed 16KB; attempting to submit a larger object will yield this error.\n\n### Possible solutions\n\n- Reduce the size of the submitted JSON object by removing or compressing data.\n- Split your data across multiple Map Items, List Items, or Documents.\n",
    "causes": "* The size of a serialized JSON payload stored in a Sync Document, List Item, or Map Item cannot exceed 16KB; attempting to submit a larger object will yield this error.",
    "solutions": "* Reduce the size of the submitted JSON object by removing or compressing data.\n* Split your data across multiple Map Items, List Items, or Documents.",
    "description": "The size of the specified 'Data' parameter exceeds the size limit.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54007,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Access forbidden for identity",
    "secondary_message": "The identity specified in the Access Token does not have permissions to perform this operation.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe identity specified in the Access Token does not have permissions to perform this operation.\n\n### Possible causes\n\n- Sync's ACL control has been unintentionally enabled on your Sync service instance.\n- An SDK endpoint trying to read or write a Sync object does not have the correct permission configured.\n- The identity you specified in your SDK's token does not match the permissions that you intended for them.\n\n### Possible solutions\n\n- Disable the ACL feature on this Sync service. This will allow access from any SDK with a valid token. Do this by either unchecking the AclEnabled feature in the [Twilio Console](https://www.twilio.com/console/sync/services), or setting the `acl_enabled` flag to `false` via the [Sync REST API](/docs/sync/api/service).\n- Confirm a valid permission is configured via the [Sync Permissions REST API](/docs/sync/api/sync-permissions), and that the configured identity matches the identity you provide in your FPA Access Tokens.\n",
    "causes": "* Sync's ACL control has been unintentionally enabled on your Sync service instance.\n* An SDK endpoint trying to read or write a Sync object does not have the correct permission configured.\n* The identity you specified in your SDK's token does not match the permissions that you intended for them.",
    "solutions": "* Disable the ACL feature on this Sync service. This will allow access from any SDK with a valid token. Do this by either unchecking the AclEnabled feature in the [Twilio Console](https://www.twilio.com/console/sync/services), or setting the `acl_enabled` flag to `false` via the [Sync REST API](/docs/sync/api/service).\n* Confirm a valid permission is configured via the [Sync Permissions REST API](/docs/sync/api/sync-permissions), and that the configured identity matches the identity you provide in your FPA Access Tokens.",
    "description": "The identity specified in the Access Token does not have permissions to perform this operation.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54008,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid JSON",
    "secondary_message": "The specified 'Data' parameter is not valid JSON.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe specified 'Data' parameter is not valid JSON.\n\n### Possible causes\n\n- The data you submitted is not JSON, or\n- A missing or poorly-encoded character makes your JSON fail to parse.\n- You crafted the HTTP request yourself, and did not percent-encode the submitted JSON data in the form parameters.\n\n### Possible solutions\n\n- Use a tool like [JSONLint](https://jsonlint.com/) to check the data you're sending for syntax errors.\n- If you're crafting HTTP requests yourself, make sure all form data is percent-encoded.\n",
    "causes": "* The data you submitted is not JSON, or\n* A missing or poorly-encoded character makes your JSON fail to parse.\n* You crafted the HTTP request yourself, and did not percent-encode the submitted JSON data in the form parameters.",
    "solutions": "* Use a tool like [JSONLint](https://jsonlint.com/) to check the data you're sending for syntax errors.\n* If you're crafting HTTP requests yourself, make sure all form data is percent-encoded.",
    "description": "The specified 'Data' parameter is not valid JSON.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54009,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Rate limit exceeded",
    "secondary_message": "The rate of access to this resource exceeds the prescribed limits.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe rate of access to this resource exceeds the prescribed limits.\n\n### Possible causes\n\n- Your application is opening, reading or querying a single Sync object or its sub-items too often.\n- Your application is updating a single Sync object or its sub-items too often.\n- Your application is creating new Sync objects or their sub-items too often.\n\n### Possible solutions\n\n- Analyze your application to ensure that the *sustained* rate of reads and writes against a single Sync object, and the sustained rate of of new object creations, is below 20 per second during normal application activity. Note that this limit only applies to explicit reads or writes; delivered state updates are not limited.\n- Analyze your application to ensure that bursts of activity are uncommon; Sync provides a ten-second burst window during which you can exceed the sustained request-rate limits.\n- Make sure your application (client or backend) uses a good exponential back-off algorithm like [the one advocated by Amazon](https://www.awsarchitectureblog.com/2015/03/backoff.html) to retry on HTTP 429 (rate limiting) responses.\n",
    "causes": "* Your application is opening, reading or querying a single Sync object or its sub-items too often.\n* Your application is updating a single Sync object or its sub-items too often.\n* Your application is creating new Sync objects or their sub-items too often.",
    "solutions": "* Analyze your application to ensure that the *sustained* rate of reads and writes against a single Sync object, and the sustained rate of of new object creations, is below 20 per second during normal application activity. Note that this limit only applies to explicit reads or writes; delivered state updates are not limited.\n* Analyze your application to ensure that bursts of activity are uncommon; Sync provides a ten-second burst window during which you can exceed the sustained request-rate limits.\n* Make sure your application (client or backend) uses a good exponential back-off algorithm like [the one advocated by Amazon](https://www.awsarchitectureblog.com/2015/03/backoff.html) to retry on HTTP 429 (rate limiting) responses.",
    "description": "The rate of access to this resource exceeds the prescribed limits.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54010,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No parameters specified",
    "secondary_message": "Expected at least 1 optional parameter, but none were provided.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nExpected at least 1 optional parameter, but none were provided.\n\n### Possible causes\n\n- The request expected at least 1 optional parameter, but none was provided.\n\n### Possible solutions\n\n- Add a parameter or confirm that the existing parameters are not misspelled.\n",
    "causes": "* The request expected at least 1 optional parameter, but none was provided.",
    "solutions": "* Add a parameter or confirm that the existing parameters are not misspelled.",
    "description": "Expected at least 1 optional parameter, but none were provided.",
    "date_created": "2018-11-21T09:25:29Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54011,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid TTL",
    "secondary_message": "The TTL value in seconds must either be empty or an integer between 0 and 31 536 000 (1 year).",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe TTL value in seconds must either be empty or an integer between 0 and 31 536 000 (1 year).\n\n### Possible causes\n\n- The value supplied for the TTL parameter does not fall into the valid range.\n\n### Possible solutions\n\n- Confirm a valid TTL parameter is being passed in your request.\n",
    "causes": "* The value supplied for the TTL parameter does not fall into the valid range.",
    "solutions": "* Confirm a valid TTL parameter is being passed in your request.",
    "description": "The TTL value in seconds must either be empty or an integer between 0 and 31 536 000 (1 year).",
    "date_created": "2019-01-07T13:50:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54050,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Service Instance not found",
    "secondary_message": "The specified Service Instance does not exist.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe specified Service Instance does not exist.\n\n### Possible causes\n\n- The supplied Sync Service Instance SID is erroneous.\n- The requested Sync Service Instance has been deleted.\n\n### Possible solutions\n\n- Use the [Twilio Console](https://twilio.com/console) or the [REST API](/docs/sync/api/service) to confirm your Sync service exists.\n- Make sure the Sync Service Instance SID passed in your request matches the SID of that service exactly.\n",
    "causes": "* The supplied Sync Service Instance SID is erroneous.\n* The requested Sync Service Instance has been deleted.",
    "solutions": "* Use the [Twilio Console](https://twilio.com/console) or the [REST API](/docs/sync/api/service) to confirm your Sync service exists.\n* Make sure the Sync Service Instance SID passed in your request matches the SID of that service exactly.",
    "description": "The specified Service Instance does not exist.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54051,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid webhook URL",
    "secondary_message": "The specified 'WebhookUrl' parameter is not a valid URL or exceeds the allowed length.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when you set the `WebhookUrl` for a Sync Service to a value that is not a valid URI or is longer than 512 characters. Sync uses this URL when Sync objects are manipulated, and you can also enable webhook delivery for REST API-triggered events with `webhooks_from_rest_enabled`.\n\n### Possible causes\n\n- The `WebhookUrl` value is not a correctly formatted absolute URL. The Sync Service resource expects a `string<uri>` value for this parameter.\n- You sent the request as `application/x-www-form-urlencoded` and did not percent-encode the `WebhookUrl` value correctly.\n- The `WebhookUrl` value is longer than 512 characters.\n- You supplied a relative or incomplete URL instead of a fully qualified webhook endpoint. Twilio examples use absolute webhook URLs such as `https://example.com/sync`.\n\n### Possible solutions\n\n- Set `WebhookUrl` to a fully qualified `http://` or `https://` URL that Twilio can call for Sync webhook events.\n- If you build the HTTP request yourself, percent-encode the `WebhookUrl` value in the `application/x-www-form-urlencoded` request body before you send it.\n- Keep the `WebhookUrl` value at 512 characters or fewer.\n- Create or update the Sync Service with a valid `WebhookUrl` first, then enable `webhooks_from_rest_enabled` if you want Sync to send webhooks for REST API-initiated changes.\n\n#### Additional resources\n\n- [Service Resource](/docs/sync/api/service)\n- [Sync Webhooks](/docs/sync/webhooks)\n- [Getting Started with Twilio Webhooks](/docs/usage/webhooks/getting-started-twilio-webhooks)\n",
    "causes": "* The `WebhookUrl` value is not a correctly formatted absolute URL. The Sync Service resource expects a `string<uri>` value for this parameter.\n* You sent the request as `application/x-www-form-urlencoded` and did not percent-encode the `WebhookUrl` value correctly.\n* The `WebhookUrl` value is longer than 512 characters.\n* You supplied a relative or incomplete URL instead of a fully qualified webhook endpoint. Twilio examples use absolute webhook URLs such as `https://example.com/sync`.",
    "solutions": "* Set `WebhookUrl` to a fully qualified `http://` or `https://` URL that Twilio can call for Sync webhook events.\n* If you build the HTTP request yourself, percent-encode the `WebhookUrl` value in the `application/x-www-form-urlencoded` request body before you send it.\n* Keep the `WebhookUrl` value at 512 characters or fewer.\n* Create or update the Sync Service with a valid `WebhookUrl` first, then enable `webhooks_from_rest_enabled` if you want Sync to send webhooks for REST API-initiated changes.",
    "description": "Twilio returns this error when you set the `WebhookUrl` for a Sync Service to a value that is not a valid URI or is longer than 512 characters. Sync uses this URL when Sync objects are manipulated, and you can also enable webhook delivery for REST API-triggered events with `webhooks_from_rest_enabled`.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54053,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid friendly name",
    "secondary_message": "The specified 'FriendlyName' parameter is not valid.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe specified 'FriendlyName' parameter is not valid.\n\n### Possible causes\n\n- The value supplied by the FriendlyName parameter is an empty string.\n- The value supplied by the FriendlyName parameter exceeds 255 characters.\n\n### Possible solutions\n\nConfirm the FriendlyName string parameter is either unspecified (`null`) or a nonempty string of up to 1-255 Unicode characters.\n",
    "causes": "* The value supplied by the FriendlyName parameter is an empty string.\n* The value supplied by the FriendlyName parameter exceeds 255 characters.",
    "solutions": "Confirm the FriendlyName string parameter is either unspecified (`null`) or a nonempty string of up to 1-255 Unicode characters.",
    "description": "The specified 'FriendlyName' parameter is not valid.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54056,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Account cannot access requested Service Instance",
    "secondary_message": "Account cannot access requested Service Instance.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nAccount cannot access requested Service Instance.\n\n### Possible causes\n\n- The requested Sync Service does not belong to this account.\n- You have multiple accounts, and this Sync Service does not belong to the account whose credentials you used.\n\n### Possible solutions\n\nConfirm that you're using the correct credentials for this instance's account. This could mean:\n\n- Make sure the Access Token specifies the correct Account SID\n- Make sure that the Account SID + AuthToken pair you're using (for REST access) matches the correct account\n- Make sure the API Key + API secret you're using (for REST access) belongs to the correct account.\n",
    "causes": "* The requested Sync Service does not belong to this account.\n* You have multiple accounts, and this Sync Service does not belong to the account whose credentials you used.",
    "solutions": "Confirm that you're using the correct credentials for this instance's account. This could mean: - Make sure the Access Token specifies the correct Account SID\n- Make sure that the Account SID + AuthToken pair you're using (for REST access) matches the correct account\n- Make sure the API Key + API secret you're using (for REST access) belongs to the correct account.",
    "description": "Account cannot access requested Service Instance.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54100,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Document not found",
    "secondary_message": "The specified Document does not exist.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your request targets a Sync Document that does not exist in the specified Sync Service. You can address a Document by its `sid` or `unique_name`, and a Document can stop being available after you delete it or after its `ttl` expires.\n\n### Possible causes\n\n- The request uses an incorrect Document `sid` or `unique_name`.\n- The request may be using the wrong `ServiceSid` for the Document you are trying to access.\n- The Document was deleted and is no longer available through the REST API.\n- The Document expired after a `ttl` value was set.\n\n### Possible solutions\n\n- Verify that the request includes the correct `ServiceSid` and the correct Document identifier for that service. A fetch request must target the Sync Service that owns the Document and use either the Document `sid` or its exact `unique_name`.\n- If you use a Document SID, confirm that you are passing a valid Sync Document SID that begins with `ET`.\n- If you use `unique_name`, confirm that the value matches the Document name exactly.\n- If the Document was deleted or expired, create the Document again before retrying the request.\n- If you need the Document to remain available, do not set `ttl`, or send a new `ttl` value when you update the Document. By default, Sync data is permanent unless you delete it or configure expiration.\n\n#### Additional resources\n\n- [Document Resource](/docs/sync/api/document-resource)\n- [Sync Objects Time-To-Live (TTL)](/docs/sync/objects-ttl)\n- [State Synchronization with Sync Objects](/docs/sync/objects-overview)\n",
    "causes": "* The request uses an incorrect Document `sid` or `unique_name`.\n* The request may be using the wrong `ServiceSid` for the Document you are trying to access.\n* The Document was deleted and is no longer available through the REST API.\n* The Document expired after a `ttl` value was set.",
    "solutions": "* Verify that the request includes the correct `ServiceSid` and the correct Document identifier for that service. A fetch request must target the Sync Service that owns the Document and use either the Document `sid` or its exact `unique_name`.\n* If you use a Document SID, confirm that you are passing a valid Sync Document SID that begins with `ET`.\n* If you use `unique_name`, confirm that the value matches the Document name exactly.\n* If the Document was deleted or expired, create the Document again before retrying the request.\n* If you need the Document to remain available, do not set `ttl`, or send a new `ttl` value when you update the Document. By default, Sync data is permanent unless you delete it or configure expiration.",
    "description": "Twilio returns this error when your request targets a Sync Document that does not exist in the specified Sync Service. You can address a Document by its `sid` or `unique_name`, and a Document can stop being available after you delete it or after its `ttl` expires.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Document data",
    "secondary_message": "The 'Data' parameter cannot be null.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nTwilio returned this error because the `Data` parameter in your Sync Document request is missing or `null`. For operations that create or update a Sync Document, send `Data` as a serialized UTF-8 JSON object.\n\n### Possible causes\n\n- Your request does not include the `Data` parameter.\n- Your request sets `Data` to `null`.\n- Your application sends a value that is not a valid serialized JSON object.\n- Your application clears or overwrites the request body before Twilio receives it.\n\n### Possible solutions\n\n- Include the `Data` parameter in your request when you create or update a Sync Document.\n- Make sure `Data` contains a valid serialized UTF-8 JSON object.\n- Check your client or server code to confirm the request body is populated before you send the request.\n- If you build requests with an SDK or helper library, log the outgoing payload and verify that `Data` is present and not `null`.\n- Validate your JSON before sending the request to avoid malformed or empty document data.\n\n#### Additional resources\n\n- [Twilio Sync Documents overview](/docs/sync/api/document-resource)\n- [Twilio Sync API overview](/docs/sync/api)\n- [Sync quickstart](/docs/sync/quickstart)\n",
    "causes": "* Your request does not include the `Data` parameter.\n* Your request sets `Data` to `null`.\n* Your application sends a value that is not a valid serialized JSON object.\n* Your application clears or overwrites the request body before Twilio receives it.",
    "solutions": "* Include the `Data` parameter in your request when you create or update a Sync Document.\n* Make sure `Data` contains a valid serialized UTF-8 JSON object.\n* Check your client or server code to confirm the request body is populated before you send the request.\n* If you build requests with an SDK or helper library, log the outgoing payload and verify that `Data` is present and not `null`.\n* Validate your JSON before sending the request to avoid malformed or empty document data.",
    "description": "Twilio returned this error because the `Data` parameter in your Sync Document request is missing or `null`. For operations that create or update a Sync Document, send `Data` as a serialized UTF-8 JSON object.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 54103,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Document revision mismatch",
    "secondary_message": "The actual revision of the Document does not match the expected revision.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe actual revision of the Document does not match the expected revision.\n\n### Possible causes\n\n- Your update to this Sync Document has conflicted with a request submitted elsewhere.\n- The value specified in the If-Match header is erroneous.\n\n### Possible solutions\n\nIf your update conflicts with a concurrent update elsewhere, the correct solution is to read the latest revision (on the client SDK: wait for an update) and then re-attempt your update until you succeed. Consider that, since the data has changed, you may not want to submit the exact same update a second time. On the JavaScript SDK, we suggest using the [mutate](/docs/sync/mutation-and-conflict-resolution#javascript-sdk-conflict-walkthrough) convenience function.\n\nThe value you provide in the If-Match header should be a revision assigned by the Sync service when interacting with an object.\n\n- In SDKs, this is the `revision` field, part of the object descriptor.\n- When using REST (e.g. via the Twilio Helper libraries) this is the `ETag` header provided in responses.\n",
    "causes": "* Your update to this Sync Document has conflicted with a request submitted elsewhere.\n* The value specified in the If-Match header is erroneous.",
    "solutions": "If your update conflicts with a concurrent update elsewhere, the correct solution is to read the latest revision (on the client SDK: wait for an update) and then re-attempt your update until you succeed. Consider that, since the data has changed, you may not want to submit the exact same update a second time. On the JavaScript SDK, we suggest using the [mutate](/docs/sync/mutation-and-conflict-resolution#javascript-sdk-conflict-walkthrough) convenience function. The value you provide in the If-Match header should be a revision assigned by the Sync service when interacting with an object. - In SDKs, this is the `revision` field, part of the object descriptor.\n- When using REST (e.g. via the Twilio Helper libraries) this is the `ETag` header provided in responses.",
    "description": "The actual revision of the Document does not match the expected revision.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54150,
    "log_level": "ERROR",
    "log_type": null,
    "message": "List not found",
    "secondary_message": "The specified List does not exist.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThis error appears when Twilio cannot find the Sync List you requested in the specified Sync Service. You can address a Sync List by its `sid` or `unique_name`, and a List can stop existing if it was deleted or expired because of TTL.\n\n### Possible causes\n\n- The `sid` or `unique_name` in your request does not match an existing Sync List.\n- The `ServiceSid` in your request points to a different Sync Service than the one that owns the List. Fetch, update, and delete operations all scope the List under a specific `ServiceSid`.\n- The Sync List was deleted. Deleting a List permanently removes it and all of its items.\n- The Sync List expired because you set `ttl` or `collectionTtl` on the List. Expired Sync objects disappear from the SDKs and the REST API.\n\n### Possible solutions\n\n- Verify the identifier you send for the List. Use the exact `sid` or `unique_name` assigned to that List.\n- Verify the `ServiceSid` in the request. Use the same Sync Service that contains the List you want to fetch, update, or delete.\n- Read the Lists in the target Sync Service before retrying so you can confirm that the List still exists and copy the correct identifier.\n- If you use TTL, review the List's `ttl` or `collectionTtl` value. Increase it, remove it, or create the List again if it has already expired or was deleted.\n\n#### Additional resources\n\n- [List Resource](/docs/sync/api/list-resource)\n- [Sync Objects Time-To-Live (TTL)](/docs/sync/objects-ttl)\n- [Sync overview](/docs/sync)\n",
    "causes": "* The `sid` or `unique_name` in your request does not match an existing Sync List.\n* The `ServiceSid` in your request points to a different Sync Service than the one that owns the List. Fetch, update, and delete operations all scope the List under a specific `ServiceSid`.\n* The Sync List was deleted. Deleting a List permanently removes it and all of its items.\n* The Sync List expired because you set `ttl` or `collectionTtl` on the List. Expired Sync objects disappear from the SDKs and the REST API.",
    "solutions": "* Verify the identifier you send for the List. Use the exact `sid` or `unique_name` assigned to that List.\n* Verify the `ServiceSid` in the request. Use the same Sync Service that contains the List you want to fetch, update, or delete.\n* Read the Lists in the target Sync Service before retrying so you can confirm that the List still exists and copy the correct identifier.\n* If you use TTL, review the List's `ttl` or `collectionTtl` value. Increase it, remove it, or create the List again if it has already expired or was deleted.",
    "description": "This error appears when Twilio cannot find the Sync List you requested in the specified Sync Service. You can address a Sync List by its `sid` or `unique_name`, and a List can stop existing if it was deleted or expired because of TTL.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54151,
    "log_level": "ERROR",
    "log_type": null,
    "message": "List Item not found",
    "secondary_message": "The specified List Item does not exist.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThis error occurs when your request targets a Sync List item at an `Index` that does not exist in the specified list. Sync List items are addressed by index, and an item can stop existing if it was deleted or if its `itemTtl` expired.\n\n### Possible causes\n\n- The `Index` value in your request does not match an existing item in the target Sync List.\n- The List item was deleted after it was created.\n- The List item expired because a `ttl` or `itemTtl` value was set on the item.\n\n### Possible solutions\n\n- Verify that you are using the correct Sync List SID or `unique_name` and the correct `Index` for the item you want to access. Sync List item requests use `Index` to identify the item.\n- Read the List items before you fetch, update, or delete an item so you can confirm that the item still exists and use a current index value.\n- If the item was deleted or expired, create a new List item or remove the stale reference from your application.\n- Review any `ttl` or `itemTtl` values if your application expects the item to remain available longer.\n\n#### Additional resources\n\n- [Sync ListItem resource](/docs/sync/api/listitem-resource)\n- [List Resource](/docs/sync/api/list-resource)\n- [Sync Objects Time-To-Live (TTL)](/docs/sync/objects-ttl)\n",
    "causes": "* The `Index` value in your request does not match an existing item in the target Sync List.\n* The List item was deleted after it was created.\n* The List item expired because a `ttl` or `itemTtl` value was set on the item.",
    "solutions": "* Verify that you are using the correct Sync List SID or `unique_name` and the correct `Index` for the item you want to access. Sync List item requests use `Index` to identify the item.\n* Read the List items before you fetch, update, or delete an item so you can confirm that the item still exists and use a current index value.\n* If the item was deleted or expired, create a new List item or remove the stale reference from your application.\n* Review any `ttl` or `itemTtl` values if your application expects the item to remain available longer.",
    "description": "This error occurs when your request targets a Sync List item at an `Index` that does not exist in the specified list. Sync List items are addressed by index, and an item can stop existing if it was deleted or if its `itemTtl` expired.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54155,
    "log_level": "ERROR",
    "log_type": null,
    "message": "List Item revision mismatch",
    "secondary_message": "The actual revision of the List Item does not match the expected revision.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe actual revision of the List Item does not match the expected revision.\n\n### Possible causes\n\n- Your update to this Sync List Item has conflicted with a request submitted elsewhere.\n- The value specified in the If-Match header is erroneous.\n\n### Possible solutions\n\nIf your update conflicts with a concurrent update elsewhere, the correct solution is to read the latest data (on the client SDK: wait for an update) and then re-attempt your update until you succeed. Consider that, since the data has changed, you may not want to submit the exact same update a second time. On the JavaScript SDK, we suggest using the [mutate](/docs/sync/mutation-and-conflict-resolution#javascript-sdk-conflict-walkthrough) convenience function.\n\nThe value you provide in the If-Match header should be a revision assigned by the Sync service when interacting with the object.\n\n- In SDKs, this is the `revision` field, part of the object descriptor.\n- When using REST (e.g. via the Twilio Helper libraries) this is the `ETag` header provided in responses.\n",
    "causes": "* Your update to this Sync List Item has conflicted with a request submitted elsewhere.\n* The value specified in the If-Match header is erroneous.",
    "solutions": "If your update conflicts with a concurrent update elsewhere, the correct solution is to read the latest data (on the client SDK: wait for an update) and then re-attempt your update until you succeed. Consider that, since the data has changed, you may not want to submit the exact same update a second time. On the JavaScript SDK, we suggest using the [mutate](/docs/sync/mutation-and-conflict-resolution#javascript-sdk-conflict-walkthrough) convenience function. The value you provide in the If-Match header should be a revision assigned by the Sync service when interacting with the object. - In SDKs, this is the `revision` field, part of the object descriptor.\n- When using REST (e.g. via the Twilio Helper libraries) this is the `ETag` header provided in responses.",
    "description": "The actual revision of the List Item does not match the expected revision.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54156,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid List Item data",
    "secondary_message": "The 'Data' parameter cannot be null.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send `Data` as `null` in a Sync List item request. For create requests, include the `data` body parameter and pass a JSON string that represents a schema-less object. A ListItem can store up to 16 KiB of data.\n\n### Possible causes\n\n- You tried to create a List item without including the `Data` parameter in the request body.\n- You passed `Data` as `null` instead of a JSON string.\n\n### Possible solutions\n\n- Include the `Data` parameter in the request body when you create the List item. The create endpoint accepts `application/x-www-form-urlencoded` input and requires `data`.\n- Send `Data` as a serialized UTF-8 JSON object, such as `{}`, instead of `null`.\n- If you update an existing List item, only send `data` when you want to change the stored object, and make sure the value is still a JSON string.\n- Keep the List item payload at or below 16 KiB.\n\n#### Additional resources\n\n- [ListItem resource](/docs/sync/api/listitem-resource)\n- [Sync: Shared state in the cloud](/docs/sync)\n- [Sync Objects Time-To-Live (TTL)](/docs/sync/objects-ttl)\n",
    "causes": "* You tried to create a List item without including the `Data` parameter in the request body.\n* You passed `Data` as `null` instead of a JSON string.",
    "solutions": "* Include the `Data` parameter in the request body when you create the List item. The create endpoint accepts `application/x-www-form-urlencoded` input and requires `data`.\n* Send `Data` as a serialized UTF-8 JSON object, such as `{}`, instead of `null`.\n* If you update an existing List item, only send `data` when you want to change the stored object, and make sure the value is still a JSON string.\n* Keep the List item payload at or below 16 KiB.",
    "description": "This error occurs when you send `Data` as `null` in a Sync List item request. For create requests, include the `data` body parameter and pass a JSON string that represents a schema-less object. A ListItem can store up to 16 KiB of data.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54200,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Map not found",
    "secondary_message": "The specified Map does not exist.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your request targets a Sync Map that does not exist in the specified Sync Service. You can address a Sync Map by its `sid` or its `unique_name`, and the lookup happens within the Service in the request path.\n\n### Possible causes\n\n- The `sid` or `unique_name` in your request does not match an existing Sync Map.\n- The request uses the wrong `ServiceSid`, so Twilio looks for the map in a different Sync Service.\n- The Sync Map was deleted manually.\n- The Sync Map expired and was deleted after its `ttl` or `collection_ttl` elapsed.\n\n### Possible solutions\n\n- Verify that you are sending the correct `ServiceSid` for the Sync Service that contains the map.\n- Confirm that the map identifier is correct. Use the exact Sync Map `sid` or `unique_name` that was assigned to the resource.\n- List the Maps in the target Service to confirm that the resource exists before you fetch, update, or delete it.\n- If the map expired or was deleted, create a new Sync Map and update your application to use the current identifier. If you need the map to remain available, review your `ttl` or `collection_ttl` settings.\n\n#### Additional resources\n\n- [Map Resource](/docs/sync/api/map-resource)\n- [Service Resource](/docs/sync/api/service)\n- [The Sync REST API](/docs/sync/api)\n",
    "causes": "* The `sid` or `unique_name` in your request does not match an existing Sync Map.\n* The request uses the wrong `ServiceSid`, so Twilio looks for the map in a different Sync Service.\n* The Sync Map was deleted manually.\n* The Sync Map expired and was deleted after its `ttl` or `collection_ttl` elapsed.",
    "solutions": "* Verify that you are sending the correct `ServiceSid` for the Sync Service that contains the map.\n* Confirm that the map identifier is correct. Use the exact Sync Map `sid` or `unique_name` that was assigned to the resource.\n* List the Maps in the target Service to confirm that the resource exists before you fetch, update, or delete it.\n* If the map expired or was deleted, create a new Sync Map and update your application to use the current identifier. If you need the map to remain available, review your `ttl` or `collection_ttl` settings.",
    "description": "Twilio returns this error when your request targets a Sync Map that does not exist in the specified Sync Service. You can address a Sync Map by its `sid` or its `unique_name`, and the lookup happens within the Service in the request path.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54201,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Map Item not found",
    "secondary_message": "The specified Map Item does not exist.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThis error occurs when your request references a Sync Map item by `key`, but that item does not exist in the specified Sync Map.\n\n### Possible causes\n\n- The `key` in your request does not match an existing item in the target Sync Map.\n- The item was deleted from the Sync Map.\n- The item expired and was removed after its TTL elapsed.\n\n### Possible solutions\n\n- Verify that you are sending the correct `ServiceSid`, `MapSid` or `unique_name`, and item `key` for the Sync Map item you want to access.\n- Read the items in the target Sync Map to confirm that the item still exists before you fetch, update, or delete it.\n- Re-create the item if it was deleted or expired.\n- If you use `ttl` or `itemTtl`, update the item with a new value before it expires when the item needs to remain available longer.\n\n#### Additional resources\n\n- [Sync MapItem Resource](/docs/sync/api/map-item-resource)\n- [Map Resource](/docs/sync/api/map-resource)\n- [Sync Objects Time-To-Live (TTL)](/docs/sync/objects-ttl)\n",
    "causes": "* The `key` in your request does not match an existing item in the target Sync Map.\n* The item was deleted from the Sync Map.\n* The item expired and was removed after its TTL elapsed.",
    "solutions": "* Verify that you are sending the correct `ServiceSid`, `MapSid` or `unique_name`, and item `key` for the Sync Map item you want to access.\n* Read the items in the target Sync Map to confirm that the item still exists before you fetch, update, or delete it.\n* Re-create the item if it was deleted or expired.\n* If you use `ttl` or `itemTtl`, update the item with a new value before it expires when the item needs to remain available longer.",
    "description": "This error occurs when your request references a Sync Map item by `key`, but that item does not exist in the specified Sync Map.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54205,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Map Item revision mismatch",
    "secondary_message": "The actual revision of the Map Item does not match the expected revision.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe actual revision of the Map Item does not match the expected revision.\n\n### Possible causes\n\n- Your update to this Sync Map Item has conflicted with a request submitted elsewhere.\n- The value specified in the If-Match header is erroneous.\n\n### Possible solutions\n\nIf your update conflicts with a concurrent update elsewhere, the correct solution is to read the latest data (on the client SDK: wait for an update) and then re-attempt your update until you succeed. Consider that, since the data has changed, you may not want to submit the exact same update a second time. On the JavaScript SDK, we suggest using the [mutate](/docs/sync/mutation-and-conflict-resolution#javascript-sdk-conflict-walkthrough) convenience function.\n\nThe value you provide in the If-Match header should be a revision assigned by the Sync service when interacting with the object.\n\n- In SDKs, this is the `revision` field, part of the object descriptor.\n- When using REST (e.g. via the Twilio Helper libraries) this is the `ETag` header provided in responses.\n",
    "causes": "* Your update to this Sync Map Item has conflicted with a request submitted elsewhere.\n* The value specified in the If-Match header is erroneous.",
    "solutions": "If your update conflicts with a concurrent update elsewhere, the correct solution is to read the latest data (on the client SDK: wait for an update) and then re-attempt your update until you succeed. Consider that, since the data has changed, you may not want to submit the exact same update a second time. On the JavaScript SDK, we suggest using the [mutate](/docs/sync/mutation-and-conflict-resolution#javascript-sdk-conflict-walkthrough) convenience function. The value you provide in the If-Match header should be a revision assigned by the Sync service when interacting with the object. - In SDKs, this is the `revision` field, part of the object descriptor.\n- When using REST (e.g. via the Twilio Helper libraries) this is the `ETag` header provided in responses.",
    "description": "The actual revision of the Map Item does not match the expected revision.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54206,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Map Item data",
    "secondary_message": "The 'Data' parameter cannot be null.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your request sends the `Data` parameter as `null` for a Sync Map Item operation that requires data. When you create a Map Item, include `data` in the request body as a JSON string or object that represents the item you want to store.\n\n### Possible causes\n\n- Your request to create a Map Item does not include the `Data` parameter.\n- Your application passes `Data` as `null`.\n- The value in `Data` is not a valid serialized UTF-8 JSON object.\n\n### Possible solutions\n\n- Include the `data` request body parameter when you create a Sync Map Item.\n- Send a valid JSON object in `Data`. If you need a minimal value, send `{}`.\n- If you use a Twilio helper library, pass `data` as an initialized object instead of `null`.\n- Make sure the Map Item `data` value stays within the 16 KiB limit.\n\n#### Additional resources\n\n- [Sync MapItem Resource](/docs/sync/api/map-item-resource)\n- [Map Resource](/docs/sync/api/map-resource)\n- [Sync Quickstarts](/docs/sync/quickstart)\n",
    "causes": "* Your request to create a Map Item does not include the `Data` parameter.\n* Your application passes `Data` as `null`.\n* The value in `Data` is not a valid serialized UTF-8 JSON object.",
    "solutions": "* Include the `data` request body parameter when you create a Sync Map Item.\n* Send a valid JSON object in `Data`. If you need a minimal value, send `{}`.\n* If you use a Twilio helper library, pass `data` as an initialized object instead of `null`.\n* Make sure the Map Item `data` value stays within the 16 KiB limit.",
    "description": "Twilio returns this error when your request sends the `Data` parameter as `null` for a Sync Map Item operation that requires data. When you create a Map Item, include `data` in the request body as a JSON string or object that represents the item you want to store.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54208,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Map Item already exists",
    "secondary_message": "A Map Item with given key already exists in the Map.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nA Map Item with given key already exists in the Map.\n\n### Possible causes\n\n- Another Item with the matching Key already exists in this Sync Map, causing a conflict.\n- The provided Key parameter is not set correctly.\n- Your original Map Item creation request has been sent more than once due to a retrier error.\n\n### Possible solutions\n\n- Confirm a valid Key parameter is being passed in request, matching your expectation.\n- Delete a previous Map Item with the matching Key if you no longer need it.\n- Pick a different Key. If your items should be unique, consider using a UUID.\n",
    "causes": "* Another Item with the matching Key already exists in this Sync Map, causing a conflict.\n* The provided Key parameter is not set correctly.\n* Your original Map Item creation request has been sent more than once due to a retrier error.",
    "solutions": "* Confirm a valid Key parameter is being passed in request, matching your expectation.\n* Delete a previous Map Item with the matching Key if you no longer need it.\n* Pick a different Key. If your items should be unique, consider using a UUID.",
    "description": "A Map Item with given key already exists in the Map.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54209,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Map Item key",
    "secondary_message": "The Map Item key must be a string with length 1-256.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe Map Item key must be a string with length 1-256.\n\n### Possible causes\n\n- The value supplied by the Map Key parameter contains an empty string.\n- The string supplied by the Map Key parameter exceeds 256 characters.\n\n### Possible solutions\n\n- Confirm a valid Map Key parameter is being passed in your request.\n",
    "causes": "* The value supplied by the Map Key parameter contains an empty string.\n* The string supplied by the Map Key parameter exceeds 256 characters.",
    "solutions": "* Confirm a valid Map Key parameter is being passed in your request.",
    "description": "The Map Item key must be a string with length 1-256.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54250,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Message Stream not found",
    "secondary_message": "The specified Message Stream does not exist.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe specified Message Stream does not exist.\n\n### Possible causes\n\n- The supplied Message Stream SID is erroneous.\n- The requested Message Stream has been deleted.\n\n### Possible solutions\n\nConfirm a valid Message Stream SID is being passed in your request.\n",
    "causes": "* The supplied Message Stream SID is erroneous.\n* The requested Message Stream has been deleted.",
    "solutions": "Confirm a valid Message Stream SID is being passed in your request.",
    "description": "The specified Message Stream does not exist.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54251,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Message Stream Message data",
    "secondary_message": "The 'Data' parameter cannot be null.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create a Sync Stream Message without the required `Data` value. A Stream Message body must contain an arbitrary JSON object. If you call the REST API directly, send `Data` as a JSON string in an `application/x-www-form-urlencoded` request.\n\n### Possible causes\n\n- The request to create the Stream Message did not include the required `Data` parameter.\n- The `Data` parameter was sent with a `null` value.\n- The request body did not provide the message payload in a valid JSON format for the API request you used.\n\n### Possible solutions\n\n- Add the `Data` parameter to the request body when you publish the Stream Message.\n- Send a non-null JSON payload for the message body.\n- If you call the REST API directly, serialize the message body as a JSON string before sending the request.\n- If you use a Twilio helper library, pass a non-null object to `data` when you create the Stream Message.\n- Make sure the serialized message body does not exceed the 4 KiB limit.\n\n#### Additional resources\n\n- [Stream Message Resource](/docs/sync/api/stream-message-resource)\n- [Stream Resource](/docs/sync/api/stream-resource)\n- [State Synchronization with Sync Objects](/docs/sync/objects-overview)\n",
    "causes": "* The request to create the Stream Message did not include the required `Data` parameter.\n* The `Data` parameter was sent with a `null` value.\n* The request body did not provide the message payload in a valid JSON format for the API request you used.",
    "solutions": "* Add the `Data` parameter to the request body when you publish the Stream Message.\n* Send a non-null JSON payload for the message body.\n* If you call the REST API directly, serialize the message body as a JSON string before sending the request.\n* If you use a Twilio helper library, pass a non-null object to `data` when you create the Stream Message.\n* Make sure the serialized message body does not exceed the 4 KiB limit.",
    "description": "This error occurs when you create a Sync Stream Message without the required `Data` value. A Stream Message body must contain an arbitrary JSON object. If you call the REST API directly, send `Data` as a JSON string in an `application/x-www-form-urlencoded` request.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 54300,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unique name not found",
    "secondary_message": "No object with the specified unique name exists.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nNo object with the specified unique name exists.\n\n### Possible causes\n\n- The provided UniqueName parameter is incorrect.\n- The requested Sync object with given unique name has been deleted.\n\n### Possible solutions\n\nConfirm that a valid UniqueName parameter is being passed in your request.\n",
    "causes": "* The provided UniqueName parameter is incorrect.\n* The requested Sync object with given unique name has been deleted.",
    "solutions": "Confirm that a valid UniqueName parameter is being passed in your request.",
    "description": "No object with the specified unique name exists.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54301,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unique name already exists",
    "secondary_message": "An object with the specified unique name already exists.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nAn object with the specified unique name already exists.\n\n### Possible causes\n\n- Another object with the matching Unique Name already exists in this Sync Service Instance, causing a conflict.\n- The provided UniqueName parameter is not set correctly.\n- Your original Sync object creation request has been sent more than once due to a retrier error.\n\n### Possible solutions\n\n- Confirm a valid UniqueName parameter is being passed in request, matching your expectation.\n- Delete a previous object with the matching Unique Name if you no longer need it.\n- Pick a different Unique Name, or create an anonymous object addressed by a SID instead.\n",
    "causes": "* Another object with the matching Unique Name already exists in this Sync Service Instance, causing a conflict.\n* The provided UniqueName parameter is not set correctly.\n* Your original Sync object creation request has been sent more than once due to a retrier error.",
    "solutions": "* Confirm a valid UniqueName parameter is being passed in request, matching your expectation.\n* Delete a previous object with the matching Unique Name if you no longer need it.\n* Pick a different Unique Name, or create an anonymous object addressed by a SID instead.",
    "description": "An object with the specified unique name already exists.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54302,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid unique name",
    "secondary_message": "The unique name must be a string with length 1-256 and not match the SID pattern \\[A-Z]\\{2}\\[a-f0-9]\\{32}.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe unique name must be a string with length 1-256 and not match the SID pattern \\[A-Z]\\{2}\\[a-f0-9]\\{32}.\n\n### Possible causes\n\n- The value supplied by the UniqueName parameter is an empty string.\n- The value supplied by the UniqueName parameter exceeds 256 characters.\n\n### Possible solutions\n\nConfirm that your UniqueName is a string of 1-256 characters not matching the SID pattern.\n",
    "causes": "* The value supplied by the UniqueName parameter is an empty string.\n* The value supplied by the UniqueName parameter exceeds 256 characters.",
    "solutions": "Confirm that your UniqueName is a string of 1-256 characters not matching the SID pattern.",
    "description": "The unique name must be a string with length 1-256 and not match the SID pattern \\[A-Z]{2}\\[a-f0-9]{32}.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54351,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid identity",
    "secondary_message": "Identity must be a string with length 1-256.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nIdentity must be a string with length 1-256.\n\n### Possible causes\n\n- The value supplied by the Identity parameter is an empty string.\n- The value supplied by the Identity parameter exceeds 256 characters.\n\n### Possible solutions\n\nConfirm than an Identity string parameter of 1-256 characters is being passed in request.\n",
    "causes": "* The value supplied by the Identity parameter is an empty string.\n* The value supplied by the Identity parameter exceeds 256 characters.",
    "solutions": "Confirm than an Identity string parameter of 1-256 characters is being passed in request.",
    "description": "Identity must be a string with length 1-256.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54354,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Permission not found",
    "secondary_message": "The specified Permission does not exist.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe specified Permission does not exist.\n\n### Possible causes\n\n- Requested permission does not exist because the provided Identity parameter is incorrect.\n- Permission for the specified Identity has been deleted.\n\n### Possible solutions\n\nConfirm that the Identity parameter being passed in your request answers to the correct identity in your app, and that it has permissions to access the given object.\n",
    "causes": "* Requested permission does not exist because the provided Identity parameter is incorrect.\n* Permission for the specified Identity has been deleted.",
    "solutions": "Confirm that the Identity parameter being passed in your request answers to the correct identity in your app, and that it has permissions to access the given object.",
    "description": "The specified Permission does not exist.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54419,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Number of subscriptions per connection is over the limit",
    "secondary_message": "An SDK attempted to open and listen for updates for more than 2000 objects",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nAn SDK attempted to open and listen for updates for more than 2000 objects.\n\n### Possible causes\n\n- A programming error has generated many queries in place of one.\n- Your app has created too many LiveQueries over time (often a problem in single-page apps).\n\n### Possible solutions\n\n- Make sure you're only issuing queries for information that you need.\n- When your UI no longer needs a query, use the `close()` method on the LiveQuery object to unsubscribe and release the corresponding Sync resources. See the [SDK Documentation](/docs/sync/javascript/changelog) for details.\n",
    "causes": "* A programming error has generated many queries in place of one.\n* Your app has created too many LiveQueries over time (often a problem in single-page apps).",
    "solutions": "* Make sure you're only issuing queries for information that you need.\n* When your UI no longer needs a query, use the `close()` method on the LiveQuery object to unsubscribe and release the corresponding Sync resources. See the [SDK Documentation](/docs/sync/javascript/changelog) for details.",
    "description": "An SDK attempted to open and listen for updates for more than 2000 objects.",
    "date_created": "2019-03-28T08:32:32Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54450,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid 'Direction' query parameter",
    "secondary_message": "The 'Direction' query parameter must be one of \\{'forward', 'backward'}.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe 'Direction' query parameter must be one of \\{'forward', 'backward'}.\n\n### Possible causes\n\n- The value supplied by the Direction query string parameter does not match *forward* or *backward* designators.\n\n### Possible solutions\n\nConfirm that a valid Direction query parameter is being passed in request.\n",
    "causes": "* The value supplied by the Direction query string parameter does not match *forward* or *backward* designators.",
    "solutions": "Confirm that a valid Direction query parameter is being passed in request.",
    "description": "The 'Direction' query parameter must be one of {'forward', 'backward'}.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54451,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid 'Order' query parameter",
    "secondary_message": "The 'Order' query parameter must be one of \\{'asc', 'desc'}.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe 'Order' query parameter must be one of \\{'asc', 'desc'}.\n\n### Possible causes\n\n- The value supplied by the Order query string parameter does not match *asc* or *desc* designators.\n\n### Possible solutions\n\nConfirm a valid Order query parameter is being passed in request.\n",
    "causes": "* The value supplied by the Order query string parameter does not match *asc* or *desc* designators.",
    "solutions": "Confirm a valid Order query parameter is being passed in request.",
    "description": "The 'Order' query parameter must be one of {'asc', 'desc'}.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54452,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid 'Bounds' query parameter",
    "secondary_message": "The 'Bounds' query parameter must be one of \\{'inclusive', 'exclusive'}.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe 'Bounds' query parameter must be one of \\{'inclusive', 'exclusive'}.\n\n### Possible causes\n\n- The value supplied by the Bounds query string parameter does not match *inclusive* or *exclusive* designators.\n\n### Possible solutions\n\nConfirm a valid Bounds query parameter is being passed in request.\n",
    "causes": "* The value supplied by the Bounds query string parameter does not match *inclusive* or *exclusive* designators.",
    "solutions": "Confirm a valid Bounds query parameter is being passed in request.",
    "description": "The 'Bounds' query parameter must be one of {'inclusive', 'exclusive'}.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54453,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid 'PageToken' query parameter",
    "secondary_message": "Your query specifies an invalid paging token.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe specified 'PageToken' query parameter is invalid.\n\n### Possible causes\n\n- The value supplied by the PageToken query string parameter is invalid or malformed.\n\n### Possible solutions\n\nEnsure that a valid PageToken parameter is supplied, as originally included in the previous/next page links under the *meta* block of pagination response.\n",
    "causes": "* The value supplied by the PageToken query string parameter is invalid or malformed.",
    "solutions": "Ensure that a valid PageToken parameter is supplied, as originally included in the previous/next page links under the *meta* block of pagination response.",
    "description": "The specified 'PageToken' query parameter is invalid.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54454,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sync: Invalid 'PageSize' query parameter",
    "secondary_message": "The requested page size must be in the range \\[1-1000].",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `PageSize` query parameter in a Sync list request is invalid. `PageSize` must be an integer from `1` to `1000`.\n\n### Possible causes\n\n- The request sends a `PageSize` value smaller than `1`\n- The request sends a `PageSize` value larger than `1000`\n- The request sends a non-numeric `PageSize` value\n- The request sends `PageSize` in an invalid format, such as a decimal or empty value\n\n### Possible solutions\n\n- Update your request so `PageSize` is an integer between `1` and `1000`\n- Check the code that builds your query string and confirm it passes `PageSize` as a valid numeric value\n- Validate user input before sending the request to prevent out-of-range or malformed values\n- If you do not need a custom page size, remove the `PageSize` parameter and use the default pagination behavior\n\n#### Additional resources\n\n- [Twilio Sync documentation](/docs/sync)\n- [Sync API reference](/docs/sync/api)\n",
    "causes": "* The request sends a `PageSize` value smaller than `1`\n* The request sends a `PageSize` value larger than `1000`\n* The request sends a non-numeric `PageSize` value\n* The request sends `PageSize` in an invalid format, such as a decimal or empty value",
    "solutions": "* Update your request so `PageSize` is an integer between `1` and `1000`\n* Check the code that builds your query string and confirm it passes `PageSize` as a valid numeric value\n* Validate user input before sending the request to prevent out-of-range or malformed values\n* If you do not need a custom page size, remove the `PageSize` parameter and use the default pagination behavior",
    "description": "This error occurs when the `PageSize` query parameter in a Sync list request is invalid. `PageSize` must be an integer from `1` to `1000`.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 54458,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid List Item index",
    "secondary_message": "The List Item index must be a non-negative integer.",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe List Item index must be a non-negative integer.\n\n### Possible causes\n\n- The value supplied by the List Index parameter contains a non-integer or a negative integer.\n\n### Possible solutions\n\nConfirm that a valid List Index parameter is being passed in your request.\n",
    "causes": "* The value supplied by the List Index parameter contains a non-integer or a negative integer.",
    "solutions": "Confirm that a valid List Index parameter is being passed in your request.",
    "description": "The List Item index must be a non-negative integer.",
    "date_created": "2017-09-04T00:00:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54502,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid index name",
    "secondary_message": "The specified index does not exist",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe specified index doesn't exist, therefore cannot be queried.\n\n### Possible causes\n\n- You may have made a typo.\n- You may have made a programming error that yields the empty string in place of a valid index name.\n\n### Possible solutions\n\n- Please review https://www.twilio.com/docs/sync/live-query for the currently supported list of indices, and make sure your code consumes one of those. There is no facility to create your own index today.\n",
    "causes": "* You may have made a typo.\n* You may have made a programming error that yields the empty string in place of a valid index name.",
    "solutions": "* Please review https://www.twilio.com/docs/sync/live-query for the currently supported list of indices, and make sure your code consumes one of those. There is no facility to create your own index today.",
    "description": "The specified index doesn't exist, therefore cannot be queried.",
    "date_created": "2019-04-09T06:40:33Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54507,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid query",
    "secondary_message": "Valid query expression is expected",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nValid query expression is expected.\n\n### Possible causes\n\n- You made a typo.\n- You've made a programming error that produces a corrupt expression (where usually the expression is valid).\n\n### Possible solutions\n\n- Check that you're adhering to the right format. Query expressions must be specified in infix notation in the form `field operator \"value\"`.\n- Check that you're using supported operators. Please review https://www.twilio.com/docs/sync/live-query for a list of supported operators and query examples examples.\n",
    "causes": "* You made a typo.\n* You've made a programming error that produces a corrupt expression (where usually the expression is valid).",
    "solutions": "* Check that you're adhering to the right format. Query expressions must be specified in infix notation in the form `field operator \"value\"`.\n* Check that you're using supported operators. Please review https://www.twilio.com/docs/sync/live-query for a list of supported operators and query examples examples.",
    "description": "Valid query expression is expected.",
    "date_created": "2019-04-09T06:47:13Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54509,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Query expression contains too many operators",
    "secondary_message": "The query expression must contain less than 30 operators",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nThe query expression must contain less than 30 operators.\n\n### Possible causes\n\n- The query expression contains 30 or more operators, probably a user-facing edge case or a programming error.\n\n### Possible solutions\n\n- Rewrite the query or the code generating it to use fewer operators or issue separate queries. You can use any combination of the following operators: `and`, `or`, `in`, `eq`, `not_in`, `not_eq `, `contains`, however overall number of operators in any query expression must be less than 30.\n",
    "causes": "* The query expression contains 30 or more operators, probably a user-facing edge case or a programming error.",
    "solutions": "* Rewrite the query or the code generating it to use fewer operators or issue separate queries. You can use any combination of the following operators: `and`, `or`, `in`, `eq`, `not_in`, `not_eq `, `contains`, however overall number of operators in any query expression must be less than 30.",
    "description": "The query expression must contain less than 30 operators.",
    "date_created": "2019-03-28T08:31:03Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 54510,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Query expression contains an array with too many items",
    "secondary_message": "Any array within query expression must contain less than 30 items",
    "product": "Sync",
    "products_used": [
      "sync"
    ],
    "docs": "\n## Description\n\nAny array within query expression must contain less than 30 items.\n\n### Possible causes\n\n- The query expression contains an array with 30 or more elements.\n\n### Possible solutions\n\n- Rewrite your queries (or the code generating them) such that arrays never contain more than 30 items.\n",
    "causes": "* The query expression contains an array with 30 or more elements.",
    "solutions": "* Rewrite your queries (or the code generating them) such that arrays never contain more than 30 items.",
    "description": "Any array within query expression must contain less than 30 items.",
    "date_created": "2019-03-28T08:29:58Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 55555,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Instruction passed to TaskRouter",
    "secondary_message": null,
    "product": "TaskRouter",
    "products_used": [
      "taskrouter"
    ],
    "docs": "\n## Description\n\nAn invalid instruction was passed to TaskRouter when responding to a pending Reservation.\n\n### Possible causes\n\n- An invalid instruction was passed to TaskRouter.\n\n### Possible solutions\n\n- Ensure only valid instructions are being used. A list of valid instructions can be found at https://www.twilio.com/docs/taskrouter/api/reservations#action-update\n",
    "causes": "* An invalid instruction was passed to TaskRouter.",
    "solutions": "* Ensure only valid instructions are being used. A list of valid instructions can be found at https://www.twilio.com/docs/taskrouter/api/reservations#action-update",
    "description": "An invalid instruction was passed to TaskRouter when responding to a pending Reservation.",
    "date_created": "2020-09-14T21:57:37Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 57001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Secret id' is empty",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the `Secret id` value is empty in the request or destination configuration. In Segment's Amazon Kinesis Firehose destination, `Secret ID` is a required, read-only setting that functions as the `sts:ExternalId` for the IAM role trust relationship.\n\n### Possible causes\n\n- The `Secret id` parameter was omitted or sent as an empty value.\n- The destination's `Secret ID` setting was not configured before the IAM role trust relationship was created.\n- The IAM role was configured with a different external ID than the `Secret ID` value from the destination.\n\n### Possible solutions\n\n- Set a non-empty `Secret ID` value in the destination settings. For Amazon Kinesis Firehose destinations, open the Settings tab and use that value as the IAM role `sts:ExternalId`.\n- If multiple Kinesis sources share the same IAM role, add each allowed secret to the `sts:ExternalId` array.\n- If the `Secret ID` value needs to change, contact support to update it.\n\n#### Additional resources\n\n- [Amazon Kinesis Firehose Destination](/docs/segment/connections/destinations/catalog/amazon-kinesis-firehose)\n",
    "causes": "* The `Secret id` parameter was omitted or sent as an empty value.\n* The destination's `Secret ID` setting was not configured before the IAM role trust relationship was created.\n* The IAM role was configured with a different external ID than the `Secret ID` value from the destination.",
    "solutions": "* Set a non-empty `Secret ID` value in the destination settings. For Amazon Kinesis Firehose destinations, open the Settings tab and use that value as the IAM role `sts:ExternalId`.\n* If multiple Kinesis sources share the same IAM role, add each allowed secret to the `sts:ExternalId` array.\n* If the `Secret ID` value needs to change, contact support to update it.",
    "description": "This error means the `Secret id` value is empty in the request or destination configuration. In Segment's Amazon Kinesis Firehose destination, `Secret ID` is a required, read-only setting that functions as the `sts:ExternalId` for the IAM role trust relationship.",
    "date_created": "2021-05-07T08:41:35Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Secret id' is too long",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when the `Secret id` value in a Branded Comms request exceeds the allowed length.\n\n### Possible causes\n\n- The `Secret id` value in the request is longer than Twilio accepts.\n\n### Possible solutions\n\n- Pass a valid `Secret id` value that fits the expected length, then retry the request.\n- Review the request payload or integration that supplies `Secret id`, then remove any extra characters before you send it again.\n\n#### Additional resources\n\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Trust Hub](/docs/trust-hub)\n",
    "causes": "* The `Secret id` value in the request is longer than Twilio accepts.",
    "solutions": "* Pass a valid `Secret id` value that fits the expected length, then retry the request.\n* Review the request payload or integration that supplies `Secret id`, then remove any extra characters before you send it again.",
    "description": "This error appears when the `Secret id` value in a Branded Comms request exceeds the allowed length.",
    "date_created": "2021-05-07T08:43:37Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Secret id' is invalid for this Partner",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `Secret id` in the request does not match the Partner configuration that Twilio expects. Verify that you are sending the current secret for the correct Partner before you retry the request.\n\n### Possible causes\n\n- The `Secret id` value was copied incorrectly.\n- The request is using a secret that belongs to a different Partner, account, or environment.\n- The Partner configuration changed after the secret was issued or stored.\n- Extra spaces or formatting characters were added to the `Secret id` value.\n\n### Possible solutions\n\n- Confirm the exact `Secret id` for the Partner and resend the request with that value.\n- Remove any leading or trailing spaces before submitting the request.\n- Make sure the request targets the correct Partner configuration and environment.\n- Regenerate or update the Partner secret if the current value is no longer valid.\n\n#### Additional resources\n\n- [Troubleshooting](/docs/comms/troubleshooting)\n",
    "causes": "* The `Secret id` value was copied incorrectly.\n* The request is using a secret that belongs to a different Partner, account, or environment.\n* The Partner configuration changed after the secret was issued or stored.\n* Extra spaces or formatting characters were added to the `Secret id` value.",
    "solutions": "* Confirm the exact `Secret id` for the Partner and resend the request with that value.\n* Remove any leading or trailing spaces before submitting the request.\n* Make sure the request targets the correct Partner configuration and environment.\n* Regenerate or update the Partner secret if the current value is no longer valid.",
    "description": "This error occurs when the `Secret id` in the request does not match the Partner configuration that Twilio expects. Verify that you are sending the current secret for the correct Partner before you retry the request.",
    "date_created": "2021-05-07T08:46:13Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Category' is empty",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the request included `Category` without a value. Twilio returns this error for Messaging requests when `Category` is empty or not specified.\n\n### Possible causes\n\n- `Category` was omitted from the request.\n- `Category` was sent as an empty string or blank value.\n\n### Possible solutions\n\n- Pass a valid, non-empty `Category` value in the request.\n- Validate required fields before sending the request so blank values are rejected earlier. Twilio validates provided parameters and surfaces the exact error, causes, and suggested solutions in error logs.\n\n#### Additional resources\n\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Programmable Messaging](/docs/messaging)\n",
    "causes": "* `Category` was omitted from the request.\n* `Category` was sent as an empty string or blank value.",
    "solutions": "* Pass a valid, non-empty `Category` value in the request.\n* Validate required fields before sending the request so blank values are rejected earlier. Twilio validates provided parameters and surfaces the exact error, causes, and suggested solutions in error logs.",
    "description": "This error means the request included `Category` without a value. Twilio returns this error for Messaging requests when `Category` is empty or not specified.",
    "date_created": "2021-05-07T08:48:06Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Category' is too long",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `Category` value in your request is longer than Twilio accepts. For SendGrid email sends, each category must be 255 characters or fewer.\n\n### Possible causes\n\n- The `Category` value contains more than 255 characters.\n\n### Possible solutions\n\n- Shorten `Category` to 255 characters or fewer before you send the request.\n- Validate the value in your application and reject or trim any overlong category names before submission.\n- Use categories for broad message grouping, and keep each category label concise.\n\n#### Additional resources\n\n- [Working with Categories](/docs/sendgrid/for-developers/sending-email/categories)\n- [Mail Send Errors](/docs/sendgrid/api-reference/mail-send/errors)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The `Category` value contains more than 255 characters.",
    "solutions": "* Shorten `Category` to 255 characters or fewer before you send the request.\n* Validate the value in your application and reject or trim any overlong category names before submission.\n* Use categories for broad message grouping, and keep each category label concise.",
    "description": "This error occurs when the `Category` value in your request is longer than Twilio accepts. For SendGrid email sends, each category must be 255 characters or fewer.",
    "date_created": "2021-05-07T08:49:49Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 57006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'EventType' is empty",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n`EventType` is required in this request. When it is missing or empty, Twilio returns This error with the message `'EventType' is empty`.\n\n### Possible causes\n\n- The request did not include a value for `EventType`.\n- The request included `EventType`, but the value was empty.\n\n### Possible solutions\n\n- Pass a valid `EventType` value in the request.\n- Validate the payload before sending it so `EventType` is present and populated.\n\n#### Additional resources\n\n- [Programmable Messaging](/docs/messaging)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The request did not include a value for `EventType`.\n* The request included `EventType`, but the value was empty.",
    "solutions": "* Pass a valid `EventType` value in the request.\n* Validate the payload before sending it so `EventType` is present and populated.",
    "description": "`EventType` is required in this request. When it is missing or empty, Twilio returns This error with the message `'EventType' is empty`.",
    "date_created": "2021-05-07T08:51:57Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 57007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'EventType' is absent",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns 57007 when a request reaches Twilio without the `EventType` parameter. Use Programmable Messaging Logs and Debugging Tools to inspect the failing request and confirm what your application sent.\n\n### Possible causes\n\n- Your application did not include `EventType` in the request.\n- The request was built incorrectly, so `EventType` never reached Twilio.\n\n### Possible solutions\n\n- Add the `EventType` parameter to the request and send it again.\n- Check Programmable Messaging Logs, then use Debugging Tools to inspect the request details and confirm the parameter is present.\n\n#### Additional resources\n\n- [Programmable Messaging API](/docs/messaging/api)\n- [Debugging Common Issues with SMS](/docs/messaging/guides/debugging-common-issues)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* Your application did not include `EventType` in the request.\n* The request was built incorrectly, so `EventType` never reached Twilio.",
    "solutions": "* Add the `EventType` parameter to the request and send it again.\n* Check Programmable Messaging Logs, then use Debugging Tools to inspect the request details and confirm the parameter is present.",
    "description": "Twilio returns 57007 when a request reaches Twilio without the `EventType` parameter. Use Programmable Messaging Logs and Debugging Tools to inspect the failing request and confirm what your application sent.",
    "date_created": "2021-05-07T08:53:47Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 57008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'EventType' format must be String",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the request includes `EventType`, but the value is not a string. This code appears in the Messaging error dictionary.\n\n### Possible causes\n\n- `EventType` was sent in a format other than a string.\n- The request payload was built or serialized incorrectly, so `EventType` did not reach Twilio as a string.\n\n### Possible solutions\n\n- Pass `EventType` as a string value in the request.\n- Review the code that builds the request payload and make sure `EventType` stays a string before you send it.\n- Check the error logs to inspect the exact request that Twilio received.\n\n#### Additional resources\n\n- [Programmable Messaging](/docs/messaging)\n- [Message resource](/docs/messaging/api/message-resource)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* `EventType` was sent in a format other than a string.\n* The request payload was built or serialized incorrectly, so `EventType` did not reach Twilio as a string.",
    "solutions": "* Pass `EventType` as a string value in the request.\n* Review the code that builds the request payload and make sure `EventType` stays a string before you send it.\n* Check the error logs to inspect the exact request that Twilio received.",
    "description": "Twilio returns this error when the request includes `EventType`, but the value is not a string. This code appears in the Messaging error dictionary.",
    "date_created": "2021-05-07T08:55:47Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 57009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'EventType' is too long",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `EventType` value in a Messaging webhook or status callback exceeds the accepted length. `EventType` is one of the fields Twilio includes in outbound message status callback requests for supported messaging channels.\n\n### Possible causes\n\n- The `EventType` value in the request is longer than Twilio accepts.\n- Your webhook or callback payload includes extra text or formatting instead of the supported event identifier. This is an inference from the error and the documented callback shape.\n\n### Possible solutions\n\n- Send the documented `EventType` value exactly as required for the webhook or callback you are using.\n- Remove any appended labels, whitespace, or other formatting before you send the request to Twilio. This is an inference based on the length error.\n- If you are tracking outbound message delivery, use the Messaging webhook and status callback flow and make sure your endpoint handles the parameters Twilio sends.\n\n#### Additional resources\n\n- [Messaging Webhooks](/docs/usage/webhooks/messaging-webhooks)\n- [Outbound Message Status in Status Callbacks](/docs/messaging/guides/outbound-message-status-in-status-callbacks)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n",
    "causes": "* The `EventType` value in the request is longer than Twilio accepts.\n* Your webhook or callback payload includes extra text or formatting instead of the supported event identifier. This is an inference from the error and the documented callback shape.",
    "solutions": "* Send the documented `EventType` value exactly as required for the webhook or callback you are using.\n* Remove any appended labels, whitespace, or other formatting before you send the request to Twilio. This is an inference based on the length error.\n* If you are tracking outbound message delivery, use the Messaging webhook and status callback flow and make sure your endpoint handles the parameters Twilio sends.",
    "description": "Twilio returns this error when the `EventType` value in a Messaging webhook or status callback exceeds the accepted length. `EventType` is one of the fields Twilio includes in outbound message status callback requests for supported messaging channels.",
    "date_created": "2021-05-07T08:57:15Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 57010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'PartnerName' is absent",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when `PartnerName` is not specified in the request.\n\n### Possible causes\n\n- `PartnerName` was omitted from the request.\n\n### Possible solutions\n\n- Confirm a valid `PartnerName` is included in the request.\n- Check the error logs while debugging the request so you can verify the parameters Twilio received.\n\n#### Additional resources\n\n- [Messaging](/docs/messaging)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* `PartnerName` was omitted from the request.",
    "solutions": "* Confirm a valid `PartnerName` is included in the request.\n* Check the error logs while debugging the request so you can verify the parameters Twilio received.",
    "description": "This error appears when `PartnerName` is not specified in the request.",
    "date_created": "2021-05-07T08:58:55Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 57011,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported Partner name",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `PartnerName` value in your Messaging request is not supported.\n\n### Possible causes\n\n- The `PartnerName` value you sent is not supported.\n\n### Possible solutions\n\n- Confirm that you're passing a valid `PartnerName` value in the request.\n\n#### Additional resources\n\n- [Messaging documentation](/docs/messaging)\n- [Troubleshooting](/docs/comms/troubleshooting)\n",
    "causes": "* The `PartnerName` value you sent is not supported.",
    "solutions": "* Confirm that you're passing a valid `PartnerName` value in the request.",
    "description": "This error occurs when the `PartnerName` value in your Messaging request is not supported.",
    "date_created": "2021-05-07T09:01:50Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57012,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Signature invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the webhook signature on an incoming Messaging request did not match the signature Twilio calculated for that request. Twilio signs inbound webhooks with `X-Twilio-Signature`. For `application/json` requests, Twilio also includes a `bodySHA256` query parameter and expects you to validate the raw request body.\n\n### Possible causes\n\n- You validated the request against a URL that is not exactly the same as the webhook URL Twilio used, including query parameters or URL-encoded characters.\n- You did not pass all received form parameters to the validator, or your framework trimmed whitespace from `POST` body fields.\n- You treated a JSON webhook body like form data instead of passing the raw body to `validateRequestWithBody`.\n- You used the wrong `AuthToken`, including a secondary token that has not been promoted to Primary AuthToken.\n\n### Possible solutions\n\n- Validate the request with the exact webhook URL Twilio requested, and keep any query parameters URL-encoded.\n- For `application/x-www-form-urlencoded` requests, pass every received parameter to the SDK validation helper.\n- For `application/json` requests, pass the raw body string to `validateRequestWithBody` and let the SDK verify the `bodySHA256` value.\n- Use your Primary `AuthToken`, and prefer Twilio's signature validation helpers instead of a custom implementation.\n\n#### Additional resources\n\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n- [Security](/docs/usage/security)\n- [Secure your Flask App by Validating Incoming Twilio Requests](/docs/usage/tutorials/how-to-secure-your-flask-app-by-validating-incoming-twilio-requests)\n",
    "causes": "* You validated the request against a URL that is not exactly the same as the webhook URL Twilio used, including query parameters or URL-encoded characters.\n* You did not pass all received form parameters to the validator, or your framework trimmed whitespace from `POST` body fields.\n* You treated a JSON webhook body like form data instead of passing the raw body to `validateRequestWithBody`.\n* You used the wrong `AuthToken`, including a secondary token that has not been promoted to Primary AuthToken.",
    "solutions": "* Validate the request with the exact webhook URL Twilio requested, and keep any query parameters URL-encoded.\n* For `application/x-www-form-urlencoded` requests, pass every received parameter to the SDK validation helper.\n* For `application/json` requests, pass the raw body string to `validateRequestWithBody` and let the SDK verify the `bodySHA256` value.\n* Use your Primary `AuthToken`, and prefer Twilio's signature validation helpers instead of a custom implementation.",
    "description": "This error means the webhook signature on an incoming Messaging request did not match the signature Twilio calculated for that request. Twilio signs inbound webhooks with `X-Twilio-Signature`. For `application/json` requests, Twilio also includes a `bodySHA256` query parameter and expects you to validate the raw request body.",
    "date_created": "2021-05-07T09:03:25Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57013,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Topic' is absent",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the request is missing the `Topic` field. The error is listed under Messaging in the Error and Warning Dictionary.\n\n### Possible causes\n\n- `Topic` is not included in the request payload.\n\n### Possible solutions\n\n- Add `Topic` to the request and make sure it contains a valid value before you send it.\n\n#### Additional resources\n\n- [Messaging docs](/docs/messaging)\n",
    "causes": "* `Topic` is not included in the request payload.",
    "solutions": "* Add `Topic` to the request and make sure it contains a valid value before you send it.",
    "description": "This error occurs when the request is missing the `Topic` field. The error is listed under Messaging in the Error and Warning Dictionary.",
    "date_created": "2021-06-11T19:01:53Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57014,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Event' data in payload is absent",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when the request payload is missing `Event` data. Twilio lists This error under Messaging in the Error and Warning Dictionary, and Twilio returns a 400 response when a request is missing a required parameter.\n\n### Possible causes\n\n- The request payload does not include `Event` data.\n\n### Possible solutions\n\n- Include `Event` data in the request payload, then resend the request.\n- Review the error logs to inspect the exact error, likely causes, suggested solutions, and the request and response associated with the failure.\n\n#### Additional resources\n\n- [Twilio API responses](/docs/usage/twilios-response)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The request payload does not include `Event` data.",
    "solutions": "* Include `Event` data in the request payload, then resend the request.\n* Review the error logs to inspect the exact error, likely causes, suggested solutions, and the request and response associated with the failure.",
    "description": "This error occurs when the request payload is missing `Event` data. Twilio lists This error under Messaging in the Error and Warning Dictionary, and Twilio returns a 400 response when a request is missing a required parameter.",
    "date_created": "2021-06-11T19:03:17Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57016,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Topic' is empty",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns 57016 when the request includes a `Topic` field, but that field is empty. This error appears in the Messaging section of the Error and Warning Dictionary.\n\n### Possible causes\n\n- Your request sends `Topic` without a value.\n- Your application builds the request payload with an empty `Topic` value before it reaches Twilio.\n\n### Possible solutions\n\n- Send a non-empty `Topic` value in the request.\n- Check the request in Twilio Error Logs or Programmable Messaging logs to confirm the value that reached Twilio, then fix the code path that leaves `Topic` blank.\n\n#### Additional resources\n\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* Your request sends `Topic` without a value.\n* Your application builds the request payload with an empty `Topic` value before it reaches Twilio.",
    "solutions": "* Send a non-empty `Topic` value in the request.\n* Check the request in Twilio Error Logs or Programmable Messaging logs to confirm the value that reached Twilio, then fix the code path that leaves `Topic` blank.",
    "description": "Twilio returns 57016 when the request includes a `Topic` field, but that field is empty. This error appears in the Messaging section of the Error and Warning Dictionary.",
    "date_created": "2021-06-11T19:04:47Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57017,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Topic' is too long",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means Twilio received a Branded Comms request without a `Topic` value. In the Error and Warning Dictionary, code 57017 is listed as `Topic` is empty and is grouped with the other Branded Comms validation errors.\n\n### Possible causes\n\n- The request omits the `Topic` field.\n- The `Topic` field is present but empty.\n\n### Possible solutions\n\n- Include a non-empty `Topic` value in the request.\n- Check the request payload before you submit it and make sure `Topic` is populated.\n\n#### Additional resources\n\n- [Messaging Webhooks](/docs/usage/webhooks/messaging-webhooks)\n- [Webhooks: an Introduction](/docs/usage/webhooks)\n",
    "causes": "* The request omits the `Topic` field.\n* The `Topic` field is present but empty.",
    "solutions": "* Include a non-empty `Topic` value in the request.\n* Check the request payload before you submit it and make sure `Topic` is populated.",
    "description": "This error means Twilio received a Branded Comms request without a `Topic` value. In the Error and Warning Dictionary, code 57017 is listed as `Topic` is empty and is grouped with the other Branded Comms validation errors.",
    "date_created": "2021-06-11T19:06:10Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57018,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Event' value type must be Map",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYour request sent the `Event` field with the wrong type. Twilio expects `Event` to be a map, so this error appears when the request includes a non-object value. Messaging event payloads in Event Streams are published as JSON objects with nested `data` objects.\n\n### Possible causes\n\n- You sent `Event` as a string, array, number, or other non-map value.\n- The request body does not match the JSON object structure used by Messaging event payloads.\n\n### Possible solutions\n\n- Send `Event` as a JSON object/map with key-value pairs, not as a scalar or array.\n- Compare your payload with the published Event Streams examples and correct any field types before you retry the request.\n- Use the debugging guide to inspect the request body and confirm the `Event` field is being serialized correctly.\n\n#### Additional resources\n\n- [Set Up A2P 10DLC Event Streams](/docs/messaging/compliance/a2p-10dlc/event-streams-setup)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* You sent `Event` as a string, array, number, or other non-map value.\n* The request body does not match the JSON object structure used by Messaging event payloads.",
    "solutions": "* Send `Event` as a JSON object/map with key-value pairs, not as a scalar or array.\n* Compare your payload with the published Event Streams examples and correct any field types before you retry the request.\n* Use the debugging guide to inspect the request body and confirm the `Event` field is being serialized correctly.",
    "description": "Your request sent the `Event` field with the wrong type. Twilio expects `Event` to be a map, so this error appears when the request includes a non-object value. Messaging event payloads in Event Streams are published as JSON objects with nested `data` objects.",
    "date_created": "2021-06-11T19:08:42Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 57019,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Authorization' header is missing or is invalid",
    "secondary_message": "'Authorization' header is missing or is invalid",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a Messaging request does not include a usable `Authorization` header. Authenticate Twilio API requests with HTTP Basic authentication using an API key and API key secret, or for local testing, your Account SID and Auth Token. If the endpoint uses OAuth, send `Authorization: Bearer {AccessToken}`.\n\n### Possible causes\n\n- The request was sent without an `Authorization` header.\n- The `Authorization` header value is malformed or uses the wrong authentication scheme for the endpoint. Twilio API requests use HTTP Basic authentication for API key or Account SID credentials, while OAuth requests use a `Bearer` access token.\n- The credentials in the header are incomplete, such as an API key without its secret or an Account SID without its Auth Token.\n\n### Possible solutions\n\n- Add a valid `Authorization` header to the request before retrying.\n- For production requests, authenticate with an API key as the username and the API key secret as the password. Twilio recommends API keys for production authentication.\n- For local testing, authenticate with your Account SID as the username and your Auth Token as the password.\n- If you are calling an OAuth-protected endpoint, generate a valid access token and send it as `Authorization: Bearer {AccessToken}`.\n- If you build raw HTTP requests manually, use a Twilio server-side SDK when possible so the SDK can handle credentials consistently.\n\n#### Additional resources\n\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [API keys overview](/docs/iam/api-keys)\n- [OAuth Token API](/docs/iam/oauth-apps/oauth-access-token)\n",
    "causes": "* The request was sent without an `Authorization` header.\n* The `Authorization` header value is malformed or uses the wrong authentication scheme for the endpoint. Twilio API requests use HTTP Basic authentication for API key or Account SID credentials, while OAuth requests use a `Bearer` access token.\n* The credentials in the header are incomplete, such as an API key without its secret or an Account SID without its Auth Token.",
    "solutions": "* Add a valid `Authorization` header to the request before retrying.\n* For production requests, authenticate with an API key as the username and the API key secret as the password. Twilio recommends API keys for production authentication.\n* For local testing, authenticate with your Account SID as the username and your Auth Token as the password.\n* If you are calling an OAuth-protected endpoint, generate a valid access token and send it as `Authorization: Bearer {AccessToken}`.\n* If you build raw HTTP requests manually, use a Twilio server-side SDK when possible so the SDK can handle credentials consistently.",
    "description": "Twilio returns this error when a Messaging request does not include a usable `Authorization` header. Authenticate Twilio API requests with HTTP Basic authentication using an API key and API key secret, or for local testing, your Account SID and Auth Token. If the endpoint uses OAuth, send `Authorization: Bearer {AccessToken}`.",
    "date_created": "2021-06-28T14:17:49Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 57020,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Authorization failed",
    "secondary_message": "Authorization failed",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when Twilio cannot validate the request's `Authorization` header on a Messaging request. Twilio API requests use HTTP Basic authentication, and Twilio recommends API keys and API key secrets for production applications.\n\n### Possible causes\n\n- The request does not include an `Authorization` header.\n- The `Authorization` header does not contain valid Twilio API credentials.\n\n### Possible solutions\n\n- Add a valid `Authorization` header to the request and authenticate with HTTP Basic authentication.\n- Use an API key and API key secret for production requests.\n- For local testing, use your Account SID and Auth Token.\n\n#### Additional resources\n\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n- [Basic Authentication](/docs/glossary/what-is-basic-authentication)\n",
    "causes": "* The request does not include an `Authorization` header.\n* The `Authorization` header does not contain valid Twilio API credentials.",
    "solutions": "* Add a valid `Authorization` header to the request and authenticate with HTTP Basic authentication.\n* Use an API key and API key secret for production requests.\n* For local testing, use your Account SID and Auth Token.",
    "description": "This error appears when Twilio cannot validate the request's `Authorization` header on a Messaging request. Twilio API requests use HTTP Basic authentication, and Twilio recommends API keys and API key secrets for production applications.",
    "date_created": "2021-06-28T14:18:58Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 57021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Token invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the request includes an invalid token. Send a valid token before retrying the request.\n\n### Possible causes\n\n- The token in the request is invalid.\n\n### Possible solutions\n\n- Replace the token with a valid value and send the request again.\n\n#### Additional resources\n\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n",
    "causes": "* The token in the request is invalid.",
    "solutions": "* Replace the token with a valid value and send the request again.",
    "description": "Twilio returns this error when the request includes an invalid token. Send a valid token before retrying the request.",
    "date_created": "2024-06-11T09:53:17Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 57022,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Required header is missing or invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio Messaging returns This error when a request is missing a required header or includes a header with an invalid value. This error is listed as a Messaging error in the Error and Warning Dictionary.\n\n### Possible causes\n\n- One or more mandatory headers are missing from the request.\n- A required header is present, but the value is invalid.\n\n### Possible solutions\n\n- Add every mandatory header required by the request.\n- Check the error logs to review the exact error, potential causes, suggested solutions, and the full HTTP request and response associated with the request.\n\n#### Additional resources\n\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* One or more mandatory headers are missing from the request.\n* A required header is present, but the value is invalid.",
    "solutions": "* Add every mandatory header required by the request.\n* Check the error logs to review the exact error, potential causes, suggested solutions, and the full HTTP request and response associated with the request.",
    "description": "Twilio Messaging returns This error when a request is missing a required header or includes a header with an invalid value. This error is listed as a Messaging error in the Error and Warning Dictionary.",
    "date_created": "2024-06-11T10:28:29Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 59000,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Validation Error",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe request body failed validation. This is returned by all write endpoints (`POST`/`PATCH`) in the Webhooks Configuration API when a required field is missing, a field has an invalid type or enum value, or a field violates a length or format constraint.\n\n### Possible causes\n\n- A required field is missing (for example, `auth.source` when creating a `Setting`, or `type` when creating a `SharedKey`).\n- A field's value isn't one of the allowed enum values (for example, an `auth.source` other than `INLINE` or `REFERENCE`).\n- A string field exceeds its maximum length (for example, `friendlyName` or `description` over 255 characters).\n- The `settings` percentages on a `Rule` don't sum to 100.\n- A `Rule`'s match pattern uses special characters, which are not supported.\n\n### Possible solutions\n\n- Read the `detail` field of the error response — it names the specific field and constraint that failed.\n- Check the request body against the Webhooks Configuration API reference for required fields, types, and allowed values before submitting.\n- For `Rule` traffic-splitting requests, verify all `settings[].percentage` values sum to exactly 100.\n- If you need prefix filtering, use a prefix match instead of special characters.\n",
    "causes": "* A required field is missing (for example, `auth.source` when creating a `Setting`, or `type` when creating a `SharedKey`).\n* A field's value isn't one of the allowed enum values (for example, an `auth.source` other than `INLINE` or `REFERENCE`).\n* A string field exceeds its maximum length (for example, `friendlyName` or `description` over 255 characters).\n* The `settings` percentages on a `Rule` don't sum to 100.\n* A `Rule`'s match pattern uses special characters, which are not supported.",
    "solutions": "* Read the `detail` field of the error response — it names the specific field and constraint that failed.\n* Check the request body against the Webhooks Configuration API reference for required fields, types, and allowed values before submitting.\n* For `Rule` traffic-splitting requests, verify all `settings[].percentage` values sum to exactly 100.\n* If you need prefix filtering, use a prefix match instead of special characters.",
    "description": "The request body failed validation. This is returned by all write endpoints (`POST`/`PATCH`) in the Webhooks Configuration API when a required field is missing, a field has an invalid type or enum value, or a field violates a length or format constraint.",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-08-18T13:08:51+02:00"
  },
  {
    "code": 59003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Resource Not Found",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe requested resource ID does not exist, or does not belong to the account making the request. This error is returned by `GET`, `PATCH`, and `DELETE` requests across all resource types (`SharedKeys`, `AuthProfiles`, `Settings`, `Rules`).\n\n### Possible causes\n\n- The resource ID in the URL path was mistyped or truncated.\n- The resource was already deleted.\n- The resource belongs to a different Twilio account than the one making the request.\n\n### Possible solutions\n\n- Double-check the resource ID in the path against the ID returned when the resource was created.\n- List the resource type (for example `GET /v1/Webhooks/Rules`) to confirm the resource still exists and get its current ID.\n- Confirm you're using the correct account's credentials.\n",
    "causes": "* The resource ID in the URL path was mistyped or truncated.\n* The resource was already deleted.\n* The resource belongs to a different Twilio account than the one making the request.",
    "solutions": "* Double-check the resource ID in the path against the ID returned when the resource was created.\n* List the resource type (for example `GET /v1/Webhooks/Rules`) to confirm the resource still exists and get its current ID.\n* Confirm you're using the correct account's credentials.",
    "description": "The requested resource ID does not exist, or does not belong to the account making the request. This error is returned by `GET`, `PATCH`, and `DELETE` requests across all resource types (`SharedKeys`, `AuthProfiles`, `Settings`, `Rules`).",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-09-08T11:27:13+02:00"
  },
  {
    "code": 59004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Too Many Requests",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe account has exceeded the rate limit for the Webhooks Configuration API. This error can be returned by any endpoint.\n\n### Possible causes\n\n- Too many requests were sent to the API in a short period of time, either from a single process or from multiple processes running concurrently.\n\n### Possible solutions\n\n- Read the `Retry-After` response header and wait the indicated number of seconds before retrying.\n- Add backoff-and-retry logic to your integration for 429 responses instead of retrying immediately.\n- Batch or throttle configuration changes (for example, avoid creating many `Rules` or `Settings` in a tight loop) rather than issuing them all at once.\n",
    "causes": "* Too many requests were sent to the API in a short period of time, either from a single process or from multiple processes running concurrently.",
    "solutions": "* Read the `Retry-After` response header and wait the indicated number of seconds before retrying.\n* Add backoff-and-retry logic to your integration for 429 responses instead of retrying immediately.\n* Batch or throttle configuration changes (for example, avoid creating many `Rules` or `Settings` in a tight loop) rather than issuing them all at once.",
    "description": "The account has exceeded the rate limit for the Webhooks Configuration API. This error can be returned by any endpoint.",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-08-18T13:08:51+02:00"
  },
  {
    "code": 59005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Server Error",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nAn unexpected error occurred on Twilio's servers while processing the request.\n\n### Possible causes\n\n- A transient issue on Twilio's servers while processing your request.\n\n### Possible solutions\n\n- Retry the request after a short delay — most occurrences are transient.\n- If the error persists across retries, contact [Twilio Support](https://www.twilio.com/help/contact) with the request details and timestamp.\n",
    "causes": "* A transient issue on Twilio's servers while processing your request.",
    "solutions": "* Retry the request after a short delay — most occurrences are transient.\n* If the error persists across retries, contact [Twilio Support](https://www.twilio.com/help/contact) with the request details and timestamp.",
    "description": "An unexpected error occurred on Twilio's servers while processing the request.",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-08-18T13:08:51+02:00"
  },
  {
    "code": 59100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Resource Is Still In Use",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe resource cannot be deleted because it is still referenced by another resource. This error is returned when deleting a `SharedKey`, `AuthProfile`, or `Setting` that is still in use.\n\n### Possible causes\n\n- Deleting a `SharedKey` while one or more `Settings` still reference it for signature validation.\n- Deleting an `AuthProfile` while one or more `Settings` still reference it for authentication.\n- Deleting a `Setting` while one or more `Rules` still route traffic to it.\n\n### Possible solutions\n\n1. List the resources that depend on the one you're trying to delete:\n   - For a `SharedKey`: `GET /v1/Webhooks/Settings?sharedKeyId={id}`\n   - For an `AuthProfile`: `GET /v1/Webhooks/Settings?authProfileId={id}`\n   - For a `Setting`: `GET /v1/Webhooks/Rules?settingId={id}`\n2. Update or delete each dependent resource so it no longer references the one you want to remove.\n3. Retry the delete request.\n",
    "causes": "* Deleting a `SharedKey` while one or more `Settings` still reference it for signature validation.\n* Deleting an `AuthProfile` while one or more `Settings` still reference it for authentication.\n* Deleting a `Setting` while one or more `Rules` still route traffic to it.",
    "solutions": "1. List the resources that depend on the one you're trying to delete:\n   * For a `SharedKey`: `GET /v1/Webhooks/Settings?sharedKeyId={id}`\n   * For an `AuthProfile`: `GET /v1/Webhooks/Settings?authProfileId={id}`\n   * For a `Setting`: `GET /v1/Webhooks/Rules?settingId={id}`\n2. Update or delete each dependent resource so it no longer references the one you want to remove.\n3. Retry the delete request.",
    "description": "The resource cannot be deleted because it is still referenced by another resource. This error is returned when deleting a `SharedKey`, `AuthProfile`, or `Setting` that is still in use.",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-09-08T11:27:13+02:00"
  },
  {
    "code": 59101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "System Resource Cannot Be Modified",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe `Setting` resource you tried to update or delete was created by Twilio (`type: SYSTEM`) rather than by your account, and system-created `Settings` cannot be modified or deleted.\n\n### Possible causes\n\n- A `PATCH` or `DELETE` request was sent for a `Setting` whose `type` field is `SYSTEM`.\n\n### Possible solutions\n\n- Fetch the `Setting` (`GET /v1/Webhooks/Settings/{settingId}`) and check its `type` field before attempting to modify or delete it.\n- To change configuration, create a new `Setting` resource with your desired configuration, update the relevant `Rule` to point to the new `Setting`, and leave the system `Setting` in place.\n",
    "causes": "* A `PATCH` or `DELETE` request was sent for a `Setting` whose `type` field is `SYSTEM`.",
    "solutions": "* Fetch the `Setting` (`GET /v1/Webhooks/Settings/{settingId}`) and check its `type` field before attempting to modify or delete it.\n* To change configuration, create a new `Setting` resource with your desired configuration, update the relevant `Rule` to point to the new `Setting`, and leave the system `Setting` in place.",
    "description": "The `Setting` resource you tried to update or delete was created by Twilio (`type: SYSTEM`) rather than by your account, and system-created `Settings` cannot be modified or deleted.",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-09-08T11:27:13+02:00"
  },
  {
    "code": 59102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transaction Conflict",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nYour request could not be completed because another request was changing the same resource at the same time. Nothing was saved, so it is safe to try the request again. This is returned as `409 Conflict`.\n\nWhen two requests touch related resources at the same time, this might result in this error. For example: when several `Settings` that share the same `SharedKey` or `AuthProfile` get updated at the same moment, this error might result.\n\n### Possible causes\n\n- Two or more requests changing the same resource, or related resources, arrived at the same time.\n- Many requests updating `Settings` that share the same `SharedKey` or `AuthProfile` at once.\n\n### Possible solutions\n\n1. Retry the request. Twilio saved no data, so another try should succeed.\n2. Wait a moment before retrying, and increase the wait a little each time if it happens again.\n3. If you send many requests that change the same resource, send them one after another instead of all at once.\n",
    "causes": "* Two or more requests changing the same resource, or related resources, arrived at the same time.\n* Many requests updating `Settings` that share the same `SharedKey` or `AuthProfile` at once.",
    "solutions": "1. Retry the request. Twilio saved no data, so another try should succeed.\n2. Wait a moment before retrying, and increase the wait a little each time if it happens again.\n3. If you send many requests that change the same resource, send them one after another instead of all at once.",
    "description": "Your request could not be completed because another request was changing the same resource at the same time. Nothing was saved, so it is safe to try the request again. This is returned as `409 Conflict`. When two requests touch related resources at the same time, this might result in this error. For example: when several `Settings` that share the same `SharedKey` or `AuthProfile` get updated at the same moment, this error might result.",
    "date_created": "2026-09-03T13:18:07+02:00",
    "last_updated": "2026-09-03T13:18:07+02:00"
  },
  {
    "code": 59103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Resource Already Exists",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nA `Rule` with the same match key (the combination of `matchType` and `value`, such as the same URL prefix) already exists for this account.\n\n### Possible causes\n\n- A `POST /v1/Webhooks/Rules` request was made with a `matchType`/`value` pair that duplicates an existing `Rule`.\n\n### Possible solutions\n\n- List existing `Rules` (`GET /v1/Webhooks/Rules`) to find the conflicting rule.\n- If you intend to change where that pattern routes, `PATCH` the existing `Rule`'s `settings` instead of creating a new one.\n- If you intend to replace it, delete the existing `Rule` first, then create the new one.\n",
    "causes": "* A `POST /v1/Webhooks/Rules` request was made with a `matchType`/`value` pair that duplicates an existing `Rule`.",
    "solutions": "* List existing `Rules` (`GET /v1/Webhooks/Rules`) to find the conflicting rule.\n* If you intend to change where that pattern routes, `PATCH` the existing `Rule`'s `settings` instead of creating a new one.\n* If you intend to replace it, delete the existing `Rule` first, then create the new one.",
    "description": "A `Rule` with the same match key (the combination of `matchType` and `value`, such as the same URL prefix) already exists for this account.",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-09-08T11:27:13+02:00"
  },
  {
    "code": 59200,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account Limit Reached",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe account has reached the maximum number of resources allowed for a given resource type in the Webhooks Configuration API. This error is returned when creating a new `SharedKey`, `AuthProfile`, `Setting`, or `Rule` resource.\n\n### Possible causes\n\n- The account already has 50 resources of the type being created (the current per-account limit for `SharedKeys`, `AuthProfile` resources, `Settings`, and `Rules`).\n- Unused or stale resources (for example, `Settings` from earlier testing) were never cleaned up and are counting against the limit.\n\n### Possible solutions\n\n- List the existing resources of that type (for example `GET /v1/Webhooks/Settings`) and delete any that are no longer needed.\n- For `SharedKeys` and `AuthProfile` resources, confirm no `Setting` still references the resource before deleting it — otherwise the delete will fail with a [Resource Is Still In Use](/docs/api/errors/59100) error.\n- If you have a legitimate need for more than 50 resources of a given type, contact [Twilio Support](https://www.twilio.com/help/contact) to request a limit increase.\n",
    "causes": "* The account already has 50 resources of the type being created (the current per-account limit for `SharedKeys`, `AuthProfile` resources, `Settings`, and `Rules`).\n* Unused or stale resources (for example, `Settings` from earlier testing) were never cleaned up and are counting against the limit.",
    "solutions": "* List the existing resources of that type (for example `GET /v1/Webhooks/Settings`) and delete any that are no longer needed.\n* For `SharedKeys` and `AuthProfile` resources, confirm no `Setting` still references the resource before deleting it — otherwise the delete will fail with a [Resource Is Still In Use](/docs/api/errors/59100) error.\n* If you have a legitimate need for more than 50 resources of a given type, contact [Twilio Support](https://www.twilio.com/help/contact) to request a limit increase.",
    "description": "The account has reached the maximum number of resources allowed for a given resource type in the Webhooks Configuration API. This error is returned when creating a new `SharedKey`, `AuthProfile`, `Setting`, or `Rule` resource.",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-09-08T11:27:13+02:00"
  },
  {
    "code": 59201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Referenced Resource Not Found",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nA resource ID supplied in the request body refers to a resource that does not exist, or that belongs to a different account. This error is returned when creating or updating a `Setting` (invalid `authProfileId` or `sharedKeyId`) or a `Rule` (invalid `settingId`).\n\n### Possible causes\n\n- The referenced `AuthProfile`, `SharedKey`, or `Setting` ID was mistyped.\n- The referenced resource was deleted after your application cached its ID.\n- The referenced resource belongs to a different Twilio account than the one making the request.\n\n### Possible solutions\n\n- Confirm the referenced ID exists and is spelled correctly by fetching it directly (for example `GET /v1/Webhooks/Settings/{settingId}`).\n- List the resource type to find a valid, current ID (for example `GET /v1/Webhooks/AuthProfiles`).\n- Make sure the ID belongs to the same account whose credentials are used to make the request.\n",
    "causes": "* The referenced `AuthProfile`, `SharedKey`, or `Setting` ID was mistyped.\n* The referenced resource was deleted after your application cached its ID.\n* The referenced resource belongs to a different Twilio account than the one making the request.",
    "solutions": "* Confirm the referenced ID exists and is spelled correctly by fetching it directly (for example `GET /v1/Webhooks/Settings/{settingId}`).\n* List the resource type to find a valid, current ID (for example `GET /v1/Webhooks/AuthProfiles`).\n* Make sure the ID belongs to the same account whose credentials are used to make the request.",
    "description": "A resource ID supplied in the request body refers to a resource that does not exist, or that belongs to a different account. This error is returned when creating or updating a `Setting` (invalid `authProfileId` or `sharedKeyId`) or a `Rule` (invalid `settingId`).",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-09-08T11:27:13+02:00"
  },
  {
    "code": 59202,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Security Guardrail Violation",
    "secondary_message": null,
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nThe requested `Rule` or `Setting` configuration was rejected because it would violate a security policy enforced by the Webhooks Configuration API. This error is returned when creating or updating a `Rule`.\n\n### Possible causes\n\n- The default (catch-all) `Rule` — the one with no `matchType`/`value` restricting it to a specific URL pattern — was configured to use Basic Authentication. Because a default rule matches every unmatched webhook URL, Basic Authentication credentials on it would be sent broadly, risking credential exposure.\n\n### Possible solutions\n\n- If Basic Authentication is required, scope it to a more specific `Rule` (an `EXACT_MATCH` or prefix match) rather than the default rule.\n- Use OAuth 2.0 or Digest authentication on the default `Rule` instead of Basic Authentication.\n",
    "causes": "* The default (catch-all) `Rule` — the one with no `matchType`/`value` restricting it to a specific URL pattern — was configured to use Basic Authentication. Because a default rule matches every unmatched webhook URL, Basic Authentication credentials on it would be sent broadly, risking credential exposure.",
    "solutions": "* If Basic Authentication is required, scope it to a more specific `Rule` (an `EXACT_MATCH` or prefix match) rather than the default rule.\n* Use OAuth 2.0 or Digest authentication on the default `Rule` instead of Basic Authentication.",
    "description": "The requested `Rule` or `Setting` configuration was rejected because it would violate a security policy enforced by the Webhooks Configuration API. This error is returned when creating or updating a `Rule`.",
    "date_created": "2026-07-16T11:37:01+02:00",
    "last_updated": "2026-08-18T13:08:51+02:00"
  },
  {
    "code": 60001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Downstream Authentication Failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nDownstream Authentication Failed\n\n### Possible causes\n\nThe request was received and passed Twilio API authentication, but failed due to a downstream authentication error for the Account SID provided.\n\n### Possible solutions\n\n- Check that the Account SID provided is correct.\n- [Contact Twilio Support](https://www.twilio.com/help/contact) to confirm that access to this endpoint is enabled for the given Account SID.\n",
    "causes": "The request was received and passed Twilio API authentication, but failed due to a downstream authentication error for the Account SID provided.",
    "solutions": "* Check that the Account SID provided is correct.\n* [Contact Twilio Support](https://www.twilio.com/help/contact) to confirm that access to this endpoint is enabled for the given Account SID.",
    "description": "Downstream Authentication Failed",
    "date_created": "2022-09-06T13:07:06.169569Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "End User Identification Timeout",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou see this error when a Verify Silent Network Auth verification times out before the device completes the end-user identification step. In most cases, the device did not invoke `sna.url` within its 10-minute time-to-live.\n\n### Possible causes\n\n- The mobile device did not invoke `sna.url` before the 10-minute time-to-live expired.\n- Your application did not complete the handoff from the Start New Verification response to the mobile device that must make the Silent Network Auth request. A mobile device with a SIM must directly invoke the URL for the flow to complete.\n- In a desktop or cross-device flow, the end user did not continue the authentication step on their mobile device before the verification attempt expired.\n\n### Possible solutions\n\n- Start a new verification for the same phone number to generate a new `sna.url` and restart the timeout window.\n- Invoke `sna.url` from the end user's mobile device over the mobile network as soon as you receive it. The URL is unique for each verification attempt and can only be processed once.\n- If you start the flow on desktop, send the user to a mobile device immediately and complete the Silent Network Auth step there. You can implement this handoff with a QR code flow or an SMS link flow.\n- If timeouts are common in your flow, consider using `channel=auto` so Verify can fall back to SMS when Silent Network Auth cannot be completed.\n\n#### Additional resources\n\n- [Verify Silent Network Auth Overview](/docs/verify/sna)\n- [Verifications API](/docs/verify/api/verification)\n- [Verify Automatic SMS Fallback Overview](/docs/verify/automatic-channel-selection)\n",
    "causes": "* The mobile device did not invoke `sna.url` before the 10-minute time-to-live expired.\n* Your application did not complete the handoff from the Start New Verification response to the mobile device that must make the Silent Network Auth request. A mobile device with a SIM must directly invoke the URL for the flow to complete.\n* In a desktop or cross-device flow, the end user did not continue the authentication step on their mobile device before the verification attempt expired.",
    "solutions": "* Start a new verification for the same phone number to generate a new `sna.url` and restart the timeout window.\n* Invoke `sna.url` from the end user's mobile device over the mobile network as soon as you receive it. The URL is unique for each verification attempt and can only be processed once.\n* If you start the flow on desktop, send the user to a mobile device immediately and complete the Silent Network Auth step there. You can implement this handoff with a QR code flow or an SMS link flow.\n* If timeouts are common in your flow, consider using `channel=auto` so Verify can fall back to SMS when Silent Network Auth cannot be completed.",
    "description": "You see this error when a Verify Silent Network Auth verification times out before the device completes the end-user identification step. In most cases, the device did not invoke `sna.url` within its 10-minute time-to-live.",
    "date_created": "2022-09-06T13:09:20.027384Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60003,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "End User Data is Not Available",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio processed the request successfully, but the requested End User record does not have data available to return. This error can occur when you request End User details that have not been created, have been removed, or are not accessible in the current context.\n\n### Possible causes\n\n- The End User SID in your request does not correspond to an available End User record.\n- The End User record was deleted or is no longer available.\n- The End User exists, but the requested data is not available for the current account or workflow.\n- The request targets an End User resource before the data has been fully created or associated.\n\n### Possible solutions\n\n- Verify that you are using the correct End User SID in your request.\n- Confirm that the End User record exists in your account and is available in the Trust Hub workflow you are using.\n- If your application creates End Users immediately before reading them, make sure the create operation completed successfully before you request the data.\n- Check whether the End User was removed or replaced as part of a compliance or onboarding flow.\n- Do not retry the same request until you confirm that the End User data is expected to exist and be accessible.\n\n#### Additional resources\n\n- [Trust Hub overview](/docs/trust-hub)\n- [EndUser resource](/docs/trust-hub/trusthub-rest-api/enduser-resource)\n",
    "causes": "* The End User SID in your request does not correspond to an available End User record.\n* The End User record was deleted or is no longer available.\n* The End User exists, but the requested data is not available for the current account or workflow.\n* The request targets an End User resource before the data has been fully created or associated.",
    "solutions": "* Verify that you are using the correct End User SID in your request.\n* Confirm that the End User record exists in your account and is available in the Trust Hub workflow you are using.\n* If your application creates End Users immediately before reading them, make sure the create operation completed successfully before you request the data.\n* Check whether the End User was removed or replaced as part of a compliance or onboarding flow.\n* Do not retry the same request until you confirm that the End User data is expected to exist and be accessible.",
    "description": "Twilio processed the request successfully, but the requested End User record does not have data available to return. This error can occur when you request End User details that have not been created, have been removed, or are not accessible in the current context.",
    "date_created": "2022-09-06T13:10:40.987363Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Configuration ",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\nThe request was received but failed due to an invalid configuration.\n\n### Possible solutions\n\n- Check that the Account SID provided is correct.\n- [Contact Twilio Support](https://www.twilio.com/help/contact) to confirm that access to this endpoint is enabled for the given Account SID.\n",
    "causes": "The request was received but failed due to an invalid configuration.",
    "solutions": "* Check that the Account SID provided is correct.\n* [Contact Twilio Support](https://www.twilio.com/help/contact) to confirm that access to this endpoint is enabled for the given Account SID.",
    "description": "",
    "date_created": "2022-09-06T13:12:33.151985Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Downstream Carrier Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\nThe request was received but failed during processing due to an error while communicating with the carrier.\n\n### Possible solutions\n\n- Retry request to rule out transient carrier connection issues.\n- If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.\n",
    "causes": "The request was received but failed during processing due to an error while communicating with the carrier.",
    "solutions": "* Retry request to rule out transient carrier connection issues.\n* If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.",
    "description": "",
    "date_created": "2022-09-06T13:13:51.90861Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60006,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid Phone Number",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a Verify request includes a phone number that is correctly formatted, but a downstream provider identifies it as invalid. This usually means the number is not a valid, active destination even though it was submitted in `E.164` format.\n\n### Possible causes\n\n- The end user entered the wrong phone number.\n- The `to` value is formatted correctly, but the number is deactivated, suspended, or in a grace period before reassignment.\n- The number is fake, fraudulent, or otherwise cannot be validated by the downstream provider.\n- If you use the `sna` channel, the downstream provider cannot confirm that the phone number is valid for the device or SIM involved in the verification.\n\n### Possible solutions\n\n- Ask the user to confirm the phone number before you send the verification. For initial verification flows, display the full phone number so the user can catch typos.\n- Store and submit phone numbers in `E.164` format when you create a verification.\n- Validate the phone number with Twilio Lookup before you start the verification. Basic Lookup performs phone number validation, and Line Type Intelligence can help you confirm that the destination is a mobile number when your flow requires one.\n- Support a backup Verify channel such as `email` for users who cannot complete a phone-number-based verification.\n- If you use Silent Network Auth, retry the verification with a channel that does not depend on the phone number.\n\n#### Additional resources\n\n- [Verifications API](/docs/verify/api/verification)\n- [Verification Channels](/docs/verify/authentication-channels)\n- [Lookup v2 Quickstart](/docs/lookup/quickstart)\n",
    "causes": "* The end user entered the wrong phone number.\n* The `to` value is formatted correctly, but the number is deactivated, suspended, or in a grace period before reassignment.\n* The number is fake, fraudulent, or otherwise cannot be validated by the downstream provider.\n* If you use the `sna` channel, the downstream provider cannot confirm that the phone number is valid for the device or SIM involved in the verification.",
    "solutions": "* Ask the user to confirm the phone number before you send the verification. For initial verification flows, display the full phone number so the user can catch typos.\n* Store and submit phone numbers in `E.164` format when you create a verification.\n* Validate the phone number with Twilio Lookup before you start the verification. Basic Lookup performs phone number validation, and Line Type Intelligence can help you confirm that the destination is a mobile number when your flow requires one.\n* Support a backup Verify channel such as `email` for users who cannot complete a phone-number-based verification.\n* If you use Silent Network Auth, retry the verification with a channel that does not depend on the phone number.",
    "description": "Twilio returns this error when a Verify request includes a phone number that is correctly formatted, but a downstream provider identifies it as invalid. This usually means the number is not a valid, active destination even though it was submitted in `E.164` format.",
    "date_created": "2022-09-06T13:16:11.053933Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Downstream Verification Failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nSecurity Token validation failed\n\n### Possible causes\n\n- Missing App Security Token.\n- App Security Token mismatch.\n\n### Possible solutions\n\n- Ensure you have correctly enabled additional token validation at verification creation.\n- Check App Security Token is being passed correctly as part of SNA URL validation.\n",
    "causes": "* Missing App Security Token.\n* App Security Token mismatch.",
    "solutions": "* Ensure you have correctly enabled additional token validation at verification creation.\n* Check App Security Token is being passed correctly as part of SNA URL validation.",
    "description": "Security Token validation failed",
    "date_created": "2024-10-02T15:36:06Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60008,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Unsupported Carrier",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\nThe request was received and failed due to the phone number's carrier not supporting this endpoint.\n\n### Possible solutions\n\n- Complete the [Account Security Registration](https://interactive.twilio.com/account-security-registration-form?_ga=2.40477419.894088021.1660748067-1879743973.1650468405) form to use this carrier.\n- If you have completed the Account Security Registration form, [contact Twilio Support](https://www.twilio.com/help/contact) to confirm that you are approved.\n- If you have completed the Account Security Registration form and it has been approved, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.\n- If using Silent Network Auth, retry Verification using a channel other than Silent Network Auth for this end user.\n",
    "causes": "The request was received and failed due to the phone number's carrier not supporting this endpoint.",
    "solutions": "* Complete the [Account Security Registration](https://interactive.twilio.com/account-security-registration-form?_ga=2.40477419.894088021.1660748067-1879743973.1650468405) form to use this carrier.\n* If you have completed the Account Security Registration form, [contact Twilio Support](https://www.twilio.com/help/contact) to confirm that you are approved.\n* If you have completed the Account Security Registration form and it has been approved, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.\n* If using Silent Network Auth, retry Verification using a channel other than Silent Network Auth for this end user.",
    "description": "",
    "date_created": "2022-09-06T13:17:31.60648Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60200,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid parameter",
    "secondary_message": "Parameter value is incorrectly formatted or is not an accepted option.",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe response `message` contains the name of the invalid parameter.\n\nHTTP status: 400\n\nExample where `To` is the invalid parameter:\n\n```bash\n{\n    \"code\": 60200,\n    \"message\": \"Invalid parameter: To\",\n    \"more_info\": \"https://www.twilio.com/docs/errors/60200\",\n    \"status\": 400\n}\n```\n\n### Possible causes\n\nWhen [starting a verification](/docs/verify/api/verification#start-new-verification):\n\n- `To` parameter is incorrectly formatted or missing the leading `+`.\n- `Channel` parameter is not one of the [accepted options](/docs/verify/api/verification#start-new-verification), or you might not have access to the requested channel.\n\nWhen [checking a verification](/docs/verify/api/verification-check#check-a-verification):\n\n- `Code` parameter is not between 4-10 numbers long.\n\nWhen [creating a service](/docs/verify/api/service#create-a-verification-service):\n\n- `FriendlyName` is too long (max 30 characters).\n\nWhen [fetching a service](/docs/verify/api/service#fetch-a-service):\n\n- Neither `ServiceSid` nor `UniqueName` is present.\n\n### Possible solutions\n\n- Use strict [E.164 formatting](/docs/glossary/what-e164), including the `+` sign, for phone numbers in the `To` parameter. Example: `+15017122661`.\n- If using the `sna` channel, ensure you have requested and been granted access. See [SNA Overview](/docs/verify/sna) for details.\n",
    "causes": "When [starting a verification](/docs/verify/api/verification#start-new-verification): - `To` parameter is incorrectly formatted or missing the leading `+`.\n- `Channel` parameter is not one of the [accepted options](/docs/verify/api/verification#start-new-verification), or you might not have access to the requested channel. When [checking a verification](/docs/verify/api/verification-check#check-a-verification): - `Code` parameter is not between 4-10 numbers long. When [creating a service](/docs/verify/api/service#create-a-verification-service): - `FriendlyName` is too long (max 30 characters). When [fetching a service](/docs/verify/api/service#fetch-a-service): - Neither `ServiceSid` nor `UniqueName` is present.",
    "solutions": "* Use strict [E.164 formatting](/docs/glossary/what-e164), including the `+` sign, for phone numbers in the `To` parameter. Example: `+15017122661`.\n* If using the `sna` channel, ensure you have requested and been granted access. See [SNA Overview](/docs/verify/sna) for details.",
    "description": "The response `message` contains the name of the invalid parameter. HTTP status: 400 Example where `To` is the invalid parameter: ```bash\n{\n    \"code\": 60200,\n    \"message\": \"Invalid parameter: To\",\n    \"more_info\": \"https://www.twilio.com/docs/errors/60200\",\n    \"status\": 400\n}\n```",
    "date_created": "2017-10-04T22:00:46Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Selected template translation is not approved",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nSelected template translation is not approved.\n\n### Possible causes\n\n- A custom template was created but has not been approved.\n\n### Possible solutions\n\n[Approve your templates in the Twilio Console](https://console.twilio.com/us1/develop/verify/settings/templates).\n\nIf your custom template is not listed, contact Twilio Support to create a new template. Learn more about [verification templates](/docs/verify/api/templates).\n",
    "causes": "* A custom template was created but has not been approved.",
    "solutions": "[Approve your templates in the Twilio Console](https://console.twilio.com/us1/develop/verify/settings/templates). If your custom template is not listed, contact Twilio Support to create a new template. Learn more about [verification templates](/docs/verify/api/templates).",
    "description": "Selected template translation is not approved.",
    "date_created": "2022-08-30T20:31:40Z",
    "last_updated": "2026-07-14T08:30:02-04:00"
  },
  {
    "code": 60202,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max check attempts reached",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nMax (5) verification check attempts reached.\n\nHTTP status: 429\n\n### Possible causes\n\nYou have attempted to check a verification more than 5 times and have reached the limit.\n\n### Possible solutions\n\nYou have 5 attempts to check a verification code, after that you will need to wait until the current verification expires (10 minutes) to create a new verification. Find more recommendations for avoiding rate limits while testing Verify in [this blog post](https://www.twilio.com/blog/test-verify-no-rate-limits).\n",
    "causes": "You have attempted to check a verification more than 5 times and have reached the limit.",
    "solutions": "You have 5 attempts to check a verification code, after that you will need to wait until the current verification expires (10 minutes) to create a new verification. Find more recommendations for avoiding rate limits while testing Verify in [this blog post](https://www.twilio.com/blog/test-verify-no-rate-limits).",
    "description": "Max (5) verification check attempts reached. HTTP status: 429",
    "date_created": "2018-11-20T19:38:55Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60203,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max send attempts reached.",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis rate limit is triggered when the verification lifecycle (sending and checking) is not completed.\n\nHTTP status: 429\n\n### Possible causes\n\n- You have attempted to send the verification code more than 5 times and have reached the limit.\n- You have not [checked the verification](/docs/verify/api/verification-check).\n\n### Possible solutions\n\n- Complete a verification lifecycle by calling the [Verification Check endpoint](/docs/verify/api/verification-check).\n- Wait for the verification to [expire](/docs/verify/api/rate-limits-and-timeouts) (10 minutes).\n- For use with [custom codes](/docs/verify/api/customization-options) you can manually approve or cancel the verification by calling the [Verification Update endpoint](/docs/verify/api/verification#update-a-verification-status).\n- **For testing** you can manually cancel the verification by calling the [Verification Update endpoint](/docs/verify/api/verification#update-a-verification-status).\n\nIf you identify a delivery issue, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).\n",
    "causes": "* You have attempted to send the verification code more than 5 times and have reached the limit.\n* You have not [checked the verification](/docs/verify/api/verification-check).",
    "solutions": "* Complete a verification lifecycle by calling the [Verification Check endpoint](/docs/verify/api/verification-check).\n* Wait for the verification to [expire](/docs/verify/api/rate-limits-and-timeouts) (10 minutes).\n* For use with [custom codes](/docs/verify/api/customization-options) you can manually approve or cancel the verification by calling the [Verification Update endpoint](/docs/verify/api/verification#update-a-verification-status).\n* **For testing** you can manually cancel the verification by calling the [Verification Update endpoint](/docs/verify/api/verification#update-a-verification-status). If you identify a delivery issue, please reach out to Twilio Support through the [Console](https://console.twilio.com) or [Help Center](https://support.twilio.com).",
    "description": "This rate limit is triggered when the verification lifecycle (sending and checking) is not completed. HTTP status: 429",
    "date_created": "2018-11-20T19:39:41Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60204,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Service does not support this feature",
    "secondary_message": "Your service does not have access to this feature.",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour service does not have access to this feature.\n\nHTTP status: 403\n\n### Possible causes\n\nYou attempted to use a premium feature, but this feature is not enabled in your Service. Further authorization required.\n\n### Possible solutions\n\nIf you are looking to use [custom verification codes](/docs/verify/api/customization-options#custom-verification-codes), you must first select the **Enable Custom Verification Code** option on your [Verify service](https://console.twilio.com/us1/develop/verify/services) via the Twilio Console. [Learn more](/docs/verify/api/customization-options#custom-verification-codes).\n\nIf you are looking to use a [custom friendly name](/docs/verify/api/customization-options#custom-company-name), contact [Twilio Sales](https://www.twilio.com/help/sales) to have this feature enabled.\n",
    "causes": "You attempted to use a premium feature, but this feature is not enabled in your Service. Further authorization required.",
    "solutions": "If you are looking to use [custom verification codes](/docs/verify/api/customization-options#custom-verification-codes), you must first select the **Enable Custom Verification Code** option on your [Verify service](https://console.twilio.com/us1/develop/verify/services) via the Twilio Console. [Learn more](/docs/verify/api/customization-options#custom-verification-codes). If you are looking to use a [custom friendly name](/docs/verify/api/customization-options#custom-company-name), contact [Twilio Sales](https://www.twilio.com/help/sales) to have this feature enabled.",
    "description": "Your service does not have access to this feature. HTTP status: 403",
    "date_created": "2018-11-20T19:40:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60205,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SMS is not supported by landline phone number",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou have attempted to send the verification code to phone number that does not support SMS.\n\nHTTP status: 403\n\n### Possible causes\n\nYou have attempted to send the verification code to phone number that does not support SMS.\n\n### Possible solutions\n\n- Make sure the number you are sending a verification to is a valid mobile phone number\n- Disable validating phone numbers using the Twilio API setting `SkipSmsToLandlines` on your Verification Service to `false`.\n",
    "causes": "You have attempted to send the verification code to phone number that does not support SMS.",
    "solutions": "* Make sure the number you are sending a verification to is a valid mobile phone number\n* Disable validating phone numbers using the Twilio API setting `SkipSmsToLandlines` on your Verification Service to `false`.",
    "description": "You have attempted to send the verification code to phone number that does not support SMS. HTTP status: 403",
    "date_created": "2018-12-06T20:10:12Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60206,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Amount' & 'Payee' params are required",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour service has the `Psd2Enabled `flag which requires you to send the 'Amount' & 'Payee' params when creating a verification\n\nHTTP status: 400\n\n### Possible causes\n\nYour service has the `Psd2Enabled `flag which requires you to send the 'Amount' & 'Payee' params when creating a verification\n\n### Possible solutions\n\n- Make sure that you send the 'Amount' & 'Payee' params\n- Set the `Psd2Enabled `flag on your Verification Service to `false`.\n",
    "causes": "Your service has the `Psd2Enabled `flag which requires you to send the 'Amount' & 'Payee' params when creating a verification",
    "solutions": "* Make sure that you send the 'Amount' & 'Payee' params\n* Set the `Psd2Enabled `flag on your Verification Service to `false`.",
    "description": "Your service has the `Psd2Enabled `flag which requires you to send the 'Amount' & 'Payee' params when creating a verification HTTP status: 400",
    "date_created": "2019-03-27T23:19:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60207,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max rate limits per service reached ",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour service has reached the max number of rate limits\n\nHTTP status: 400\n\n### Possible causes\n\nYour service has reached the max number of rate limits\n\n### Possible solutions\n\n- Delete/update rate limits that you are not using at the moment\n- Create a new service and add the desired rate limit to the new service\n",
    "causes": "Your service has reached the max number of rate limits",
    "solutions": "* Delete/update rate limits that you are not using at the moment\n* Create a new service and add the desired rate limit to the new service",
    "description": "Your service has reached the max number of rate limits HTTP status: 400",
    "date_created": "2019-05-08T15:21:08Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60208,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rate limit with that UniqueName already exists",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou tried to create a rate limit with a `UniqueName` that already exists for the specified service\n\nHTTP status: 400\n\n### Possible causes\n\nYou tried to create a rate limit with a `UniqueName` that already exists for the specified service\n\n### Possible solutions\n\n- Use a different `UniqueName`\n- Create a new service and create a rate limit with the desired `UniqueName`\n",
    "causes": "You tried to create a rate limit with a `UniqueName` that already exists for the specified service",
    "solutions": "* Use a different `UniqueName`\n* Create a new service and create a rate limit with the desired `UniqueName`",
    "description": "You tried to create a rate limit with a `UniqueName` that already exists for the specified service HTTP status: 400",
    "date_created": "2019-05-08T15:23:07Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60209,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "UniqueName format is invalid",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\n`UniqueName` only supports alphanumeric characters and `-`, `_` or `.`\n\nHTTP status: 400\n\n### Possible causes\n\n`UniqueName` only supports alphanumeric characters and `-`, `_` or `.`\n\n### Possible solutions\n\n- Remove unsupported characters from `UniqueName`\n",
    "causes": "`UniqueName` only supports alphanumeric characters and `-`, `_` or `.`",
    "solutions": "* Remove unsupported characters from `UniqueName`",
    "description": "`UniqueName` only supports alphanumeric characters and `-`, `_` or `.` HTTP status: 400",
    "date_created": "2019-05-07T18:18:07Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60210,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max Buckets per Rate limit reached",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour Rate limit has reached the max number of Buckets\n\nHTTP status: 400\n\n### Possible causes\n\nYour Rate limit has reached the max number of Buckets\n\n### Possible solutions\n\n- Delete/update Buckets that you are not using at the moment\n- Create a new Rate limit and add the desired Buckets to the new Rate limit\n",
    "causes": "Your Rate limit has reached the max number of Buckets",
    "solutions": "* Delete/update Buckets that you are not using at the moment\n* Create a new Rate limit and add the desired Buckets to the new Rate limit",
    "description": "Your Rate limit has reached the max number of Buckets HTTP status: 400",
    "date_created": "2019-05-08T15:26:21Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60211,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Bucket with the given Interval already exists",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou have already configured that Max number of requests for this `Interval`\n\nHTTP status: 400\n\n### Possible causes\n\nYou have already configured that Max number of requests for this `Interval`\n\n### Possible solutions\n\n- Delete/Update Bucket that has this same `Interval`\n",
    "causes": "You have already configured that Max number of requests for this `Interval`",
    "solutions": "* Delete/Update Bucket that has this same `Interval`",
    "description": "You have already configured that Max number of requests for this `Interval` HTTP status: 400",
    "date_created": "2019-05-08T15:28:24Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60212,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Too many concurrent requests for phone number",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour application is initiating many verifications in a short period of time for the same phone number.\n\nHTTP status: 429\n\n### Possible causes\n\nYour application is initiating many verifications in a short period of time for the same phone number.\n\n### Possible solutions\n\n- Check if your application is being the target of fraudulent traffic.\n- Review your implementation.\n",
    "causes": "Your application is initiating many verifications in a short period of time for the same phone number.",
    "solutions": "* Check if your application is being the target of fraudulent traffic.\n* Review your implementation.",
    "description": "Your application is initiating many verifications in a short period of time for the same phone number. HTTP status: 429",
    "date_created": "2019-06-07T17:15:10Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60213,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "A Messaging Configuration already exists for the given country",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\n- You have already configured the given country.\n\nHTTP status: 400\n\n### Possible causes\n\n- You have already configured the given country.\n\n### Possible solutions\n\n- Try updating the Messaging Configuration instead.\n",
    "causes": "* You have already configured the given country.",
    "solutions": "* Try updating the Messaging Configuration instead.",
    "description": "* You have already configured the given country. HTTP status: 400",
    "date_created": "2019-06-07T17:35:16Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60214,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Call channel is not supported when using PSD2",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nCall channel is not supported when using PSD2\n\nHTTP status: 400\n\n### Possible causes\n\n- Verify Service has PSD2 enabled\n\n### Possible solutions\n\n- Disable PSD2 for this Verify Service\n- Use SMS channel\n",
    "causes": "* Verify Service has PSD2 enabled",
    "solutions": "* Disable PSD2 for this Verify Service\n* Use SMS channel",
    "description": "Call channel is not supported when using PSD2 HTTP status: 400",
    "date_created": "2019-09-19T19:38:52Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60215,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max number of mailers per account reached",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nMax number of mailers per account reached\n\nHTTP status: 400\n\n### Possible causes\n\nYour account has reached the max number of Mailers\n\n### Possible solutions\n\nDelete/update Mailers that you are not using at the moment\n",
    "causes": "Your account has reached the max number of Mailers",
    "solutions": "Delete/update Mailers that you are not using at the moment",
    "description": "Max number of mailers per account reached HTTP status: 400",
    "date_created": "2019-11-27T21:52:13Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60217,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Service configuration",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAdd an email integration before using the Email channel.\n\nHTTP status: 400\n\n### Possible causes\n\nNo email integration has been set up with the Verify Service.\n\n### Possible solutions\n\nCreate a SendGrid email integration for the Service before using the email channel. [Detailed instructions available here.](/docs/verify/email)\n",
    "causes": "No email integration has been set up with the Verify Service.",
    "solutions": "Create a SendGrid email integration for the Service before using the email channel. [Detailed instructions available here.](/docs/verify/email)",
    "description": "Add an email integration before using the Email channel. HTTP status: 400",
    "date_created": "2019-11-21T15:59:24Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60218,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SendGrid Template is not active",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nSendGrid Template is not active\n\nHTTP status: 400\n\n### Possible causes\n\nThe provided template is not active\n\n### Possible solutions\n\nLog into SendGrid's dashboard and activate the template, or select a different template\n",
    "causes": "The provided template is not active",
    "solutions": "Log into SendGrid's dashboard and activate the template, or select a different template",
    "description": "SendGrid Template is not active HTTP status: 400",
    "date_created": "2019-11-27T22:01:05Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60219,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SendGrid Template does not contain required placeholders",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nSendGrid Template does not contain required placeholders\n\nHTTP status: 400\n\n### Possible causes\n\nMissing placeholders \\{\\{twilio\\_code}} or \\{\\{twilio\\_message}}\n\n### Possible solutions\n\nAdd the required placeholders\n",
    "causes": "Missing placeholders {{twilio\\_code}} or {{twilio\\_message}}",
    "solutions": "Add the required placeholders",
    "description": "SendGrid Template does not contain required placeholders HTTP status: 400",
    "date_created": "2019-11-27T22:14:31Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60220,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Messages to China require use case vetting",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nMessages to China require use case vetting, please refer to this support article https://support.twilio.com/hc/en-us/articles/17024185400859-Use-Case-Vetting-for-Verify-Messages-to-China to understand this in detail.\n\nHTTP status: 400\n\n### Possible causes\n\nYour account is not allowed to create verifications towards China\n\n### Possible solutions\n\nPlease read this support article https://support.twilio.com/hc/en-us/articles/17024185400859-Use-Case-Vetting-for-Verify-Messages-to-China to get your more details on how to get your use case vetted for China.\n",
    "causes": "Your account is not allowed to create verifications towards China",
    "solutions": "Please read this support article https://support.twilio.com/hc/en-us/articles/17024185400859-Use-Case-Vetting-for-Verify-Messages-to-China to get your more details on how to get your use case vetted for China.",
    "description": "Messages to China require use case vetting, please refer to this support article https://support.twilio.com/hc/en-us/articles/17024185400859-Use-Case-Vetting-for-Verify-Messages-to-China to understand this in detail. HTTP status: 400",
    "date_created": "2019-12-06T20:21:57Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60221,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "No target verification specified",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nEnsure that either a `To` or `VerificationSid` is provided\n\nHTTP status: 400\n\n### Possible causes\n\nNo `To` nor `VerificationSid` is provided in the request\n\n### Possible solutions\n\nEnsure that either a `To` or `VerificationSid` is provided\n",
    "causes": "No `To` nor `VerificationSid` is provided in the request",
    "solutions": "Ensure that either a `To` or `VerificationSid` is provided",
    "description": "Ensure that either a `To` or `VerificationSid` is provided HTTP status: 400",
    "date_created": "2020-07-03T00:53:12Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60222,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SendGrid The from address does not match a verified Sender Identity",
    "secondary_message": "The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved.",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nNow SendGrid needs that the account has been verified before it can send messages.\n\nHTTP status: 403\n\n### Possible causes\n\nThe SendGrid account from address the message has not been verified.\n\n### Possible solutions\n\nVisit https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ to see the Sender Identity requirements\n",
    "causes": "The SendGrid account from address the message has not been verified.",
    "solutions": "Visit https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ to see the Sender Identity requirements",
    "description": "Now SendGrid needs that the account has been verified before it can send messages. HTTP status: 403",
    "date_created": "2020-07-16T23:53:55Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60223,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Delivery channel disabled",
    "secondary_message": "Create verification failed because delivery channel is currently disabled",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nCreate verification failed because delivery channel is currently disabled\n\nHTTP status: 400\n\n### Possible causes\n\nThe delivery channel specified is currently disabled in the Verify Service settings\n\n### Possible solutions\n\n- Enable delivery channel in Verify Service settings\n- Change the delivery channel specified in the create verification request\n",
    "causes": "The delivery channel specified is currently disabled in the Verify Service settings",
    "solutions": "* Enable delivery channel in Verify Service settings\n* Change the delivery channel specified in the create verification request",
    "description": "Create verification failed because delivery channel is currently disabled HTTP status: 400",
    "date_created": "2020-09-16T16:26:13Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60224,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Missing substitutions for selected template",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe selected template has one or more expected substitutions that were not provided in the request.\n\n### Possible causes\n\n- The template requires extra fields for building the message that are not included in the request.\n- The substitutions were not provided in the correct format (stringified JSON).\n\n### Possible solutions\n\n- Include all the substitutions for the place holder variables with the `TemplateCustomSubstitution` parameter.\n- Format the variable object as stringified JSON.\n\nFor example, the following template requires a **`uuid`** substitution:\n\n\"**Your \\{\\{friendly\\_name}} login link: https://example.com/verify.html?uuid=\\{\\{uuid}}\\&code=\\{\\{code}}**\"\n\nThe expected request in cURL:\n\n```bash\ncurl -X POST https://verify.twilio.com/v2/Services/VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Verifications \\\r\n--data-urlencode \"To=+15017122661\" \\\r\n--data-urlencode \"Channel=sms\" \\\r\n--data-urlencode \"TemplateSid=HJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\" \\\r\n--data-urlencode \"TemplateCustomSubstitutions={ \\\"uuid\\\": \\\"MY_UNIQUE_ID\\\" }\" \\\r\n-u $TWILIO_API_KEY:$TWILIO_API_SECRET\n```\n\nThe expected request in Node.js:\n\n```javascript\nconst verification = await client.verify.v2\r\n  .services(\"VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\")\r\n  .verifications.create({\r\n    channel: \"sms\",\r\n    templateSid: \"HJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\",\r\n    to: \"+15017122661\",\r\n    templateCustomSubstitutions: '{ \"uuid\": \"MY_UNIQUE_ID\" }'\r\n  });\n```\n\nThe following variables are auto-populated by Twilio and do **not** need to be included in your request:\n\n- `{{friendly_name}}`\n- `{{code}}`\n- `{{ttl}}`\n",
    "causes": "* The template requires extra fields for building the message that are not included in the request.\n* The substitutions were not provided in the correct format (stringified JSON).",
    "solutions": "* Include all the substitutions for the place holder variables with the `TemplateCustomSubstitution` parameter.\n* Format the variable object as stringified JSON. For example, the following template requires a **`uuid`** substitution: \"**Your {{friendly\\_name}} login link: https://example.com/verify.html?uuid={{uuid}}\\&code={{code}}**\" The expected request in cURL: ```bash\ncurl -X POST https://verify.twilio.com/v2/Services/VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Verifications \\\r\n--data-urlencode \"To=+15017122661\" \\\r\n--data-urlencode \"Channel=sms\" \\\r\n--data-urlencode \"TemplateSid=HJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\" \\\r\n--data-urlencode \"TemplateCustomSubstitutions={ \\\"uuid\\\": \\\"MY_UNIQUE_ID\\\" }\" \\\r\n-u $TWILIO_API_KEY:$TWILIO_API_SECRET\n``` The expected request in Node.js: ```javascript\nconst verification = await client.verify.v2\r\n  .services(\"VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\")\r\n  .verifications.create({\r\n    channel: \"sms\",\r\n    templateSid: \"HJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\",\r\n    to: \"+15017122661\",\r\n    templateCustomSubstitutions: '{ \"uuid\": \"MY_UNIQUE_ID\" }'\r\n  });\n``` The following variables are auto-populated by Twilio and do **not** need to be included in your request: * `{{friendly_name}}`\n* `{{code}}`\n* `{{ttl}}`",
    "description": "The selected template has one or more expected substitutions that were not provided in the request.",
    "date_created": "2021-06-16T15:51:44Z",
    "last_updated": "2026-08-20T11:09:16-07:00"
  },
  {
    "code": 60225,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Translation already exists for the provided template",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTranslation already exists for the provided template.\n\nHTTP status: 409\n\n### Possible causes\n\nThe user has provided an existent translation for the template.\n\n### Possible solutions\n\nTry to create another translation with a different locale.\n",
    "causes": "The user has provided an existent translation for the template.",
    "solutions": "Try to create another translation with a different locale.",
    "description": "Translation already exists for the provided template. HTTP status: 409",
    "date_created": "2021-06-16T15:54:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60226,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Messages sent to china require friendly_name",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you start a Verify SMS verification to a phone number in China and the verification message does not include a friendly name. In Verify, the Service `friendlyName` appears in the body of verification messages, `CustomFriendlyName` can override that value for an individual verification request, and templates used in China must be registered to your account.\n\n### Possible causes\n\n- Your Verify Service does not have a usable `friendlyName`, even though Verify uses that value in the body of verification messages.\n- Your verification request depends on a per-request override, but you did not send `CustomFriendlyName` when creating the verification. `CustomFriendlyName` overwrites the existing friendly name in the verification message.\n- You are using a Verify template for China and the effective message body does not include a friendly name. Verify templates can use `{{friendly_name}}`, and Twilio requires template registration before you use a template in China.\n- You changed the Service configuration or selected a different template, and the final SMS content for China no longer includes the friendly name required for that destination. Verify chooses the message template from the request `TemplateSid`, the Service `DefaultTemplateSid`, or the Verify Default template.\n\n### Possible solutions\n\n- Set or update the Verify Service `friendlyName` to the brand or application name you want to appear in the verification message. Keep it within Verify requirements. It can include letters, numbers, spaces, dashes, and underscores. Do not use phone numbers, special characters, links, or PII.\n- If you need to override the Service name for a single request, send `CustomFriendlyName` in the Start New Verification API request.\n- If you use templates for China traffic, select a registered template and confirm the message body includes `{{friendly_name}}`. Pass the template with `TemplateSid` on the verification request or set it as the Service `DefaultTemplateSid`.\n- Retry the verification after you update the Service or template configuration so the final SMS body sent to the China destination includes a friendly name.\n\n#### Additional resources\n\n- [Verify Services API](/docs/verify/api/service)\n- [Verifications API](/docs/verify/api/verification)\n- [Getting Started with Verification Templates](/docs/verify/verification-templates)\n",
    "causes": "* Your Verify Service does not have a usable `friendlyName`, even though Verify uses that value in the body of verification messages.\n* Your verification request depends on a per-request override, but you did not send `CustomFriendlyName` when creating the verification. `CustomFriendlyName` overwrites the existing friendly name in the verification message.\n* You are using a Verify template for China and the effective message body does not include a friendly name. Verify templates can use `{{friendly_name}}`, and Twilio requires template registration before you use a template in China.\n* You changed the Service configuration or selected a different template, and the final SMS content for China no longer includes the friendly name required for that destination. Verify chooses the message template from the request `TemplateSid`, the Service `DefaultTemplateSid`, or the Verify Default template.",
    "solutions": "* Set or update the Verify Service `friendlyName` to the brand or application name you want to appear in the verification message. Keep it within Verify requirements. It can include letters, numbers, spaces, dashes, and underscores. Do not use phone numbers, special characters, links, or PII.\n* If you need to override the Service name for a single request, send `CustomFriendlyName` in the Start New Verification API request.\n* If you use templates for China traffic, select a registered template and confirm the message body includes `{{friendly_name}}`. Pass the template with `TemplateSid` on the verification request or set it as the Service `DefaultTemplateSid`.\n* Retry the verification after you update the Service or template configuration so the final SMS body sent to the China destination includes a friendly name.",
    "description": "This error occurs when you start a Verify SMS verification to a phone number in China and the verification message does not include a friendly name. In Verify, the Service `friendlyName` appears in the body of verification messages, `CustomFriendlyName` can override that value for an individual verification request, and templates used in China must be registered to your account.",
    "date_created": "2021-09-07T20:04:16Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60227,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The selected channel for template is not supported",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create or use a Verify template with a delivery channel that the selected template does not support. Verify rejects the request because the template and channel combination is invalid.\n\n### Possible causes\n\n- You selected a channel that is not available for the template you are trying to use.\n- The template was created for a different delivery method, such as SMS or voice, and you sent the request with another channel.\n- Your application passed an invalid `channel` value for the selected Verify template.\n- The template configuration does not include support for the destination channel in your request.\n\n### Possible solutions\n\n- Check the template configuration and confirm which delivery channels it supports.\n- Update your request so the `channel` value matches a supported channel for that template.\n- If you need to send the verification over a different channel, use a template that supports that channel.\n- Review your application logic to make sure it does not reuse a template across unsupported channels.\n- If you manage templates dynamically, validate the selected template and channel combination before you send the Verify request.\n\n#### Additional resources\n\n- [Verify documentation](/docs/verify)\n- [Verify API documentation](/docs/verify/api)\n",
    "causes": "* You selected a channel that is not available for the template you are trying to use.\n* The template was created for a different delivery method, such as SMS or voice, and you sent the request with another channel.\n* Your application passed an invalid `channel` value for the selected Verify template.\n* The template configuration does not include support for the destination channel in your request.",
    "solutions": "* Check the template configuration and confirm which delivery channels it supports.\n* Update your request so the `channel` value matches a supported channel for that template.\n* If you need to send the verification over a different channel, use a template that supports that channel.\n* Review your application logic to make sure it does not reuse a template across unsupported channels.\n* If you manage templates dynamically, validate the selected template and channel combination before you send the Verify request.",
    "description": "This error occurs when you create or use a Verify template with a delivery channel that the selected template does not support. Verify rejects the request because the template and channel combination is invalid.",
    "date_created": "2022-08-23T16:05:06Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60228,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Template was not found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio could not find the Verify template identified by the `TemplateSid` in your request. This error occurs when the template SID does not exist in your account or does not match an available Verify template.\n\n### Possible causes\n\n- The `TemplateSid` value is incorrect or contains a typo.\n- The template was deleted or is no longer available.\n- The request uses a template SID from a different account or environment.\n- The request passes a value in `TemplateSid` that is not a valid Verify template SID format.\n\n### Possible solutions\n\n- Confirm that the `TemplateSid` in your request matches an existing Verify template in the same account.\n- Copy the template SID directly from the Twilio Console or from the API response that created or listed the template.\n- Verify that you are sending the request with the correct Account SID and authentication credentials for the account that owns the template.\n- If the template was deleted, update your application to use an active template or create a new one before sending the request.\n- Validate request parameters in your application before making the Verify API call.\n\n#### Additional resources\n\n- [Twilio Verify documentation](/docs/verify)\n- [Verify API documentation](/docs/verify/api)\n- [API authentication and credentials](/docs/iam)\n",
    "causes": "* The `TemplateSid` value is incorrect or contains a typo.\n* The template was deleted or is no longer available.\n* The request uses a template SID from a different account or environment.\n* The request passes a value in `TemplateSid` that is not a valid Verify template SID format.",
    "solutions": "* Confirm that the `TemplateSid` in your request matches an existing Verify template in the same account.\n* Copy the template SID directly from the Twilio Console or from the API response that created or listed the template.\n* Verify that you are sending the request with the correct Account SID and authentication credentials for the account that owns the template.\n* If the template was deleted, update your application to use an active template or create a new one before sending the request.\n* Validate request parameters in your application before making the Verify API call.",
    "description": "Twilio could not find the Verify template identified by the `TemplateSid` in your request. This error occurs when the template SID does not exist in your account or does not match an available Verify template.",
    "date_created": "2022-08-30T18:44:09Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60229,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Template translation was not found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio could not find the requested translation locale for the Verify message template. This error occurs when your request references a template translation that does not exist for the template or locale you specified.\n\n### Possible causes\n\n- The `locale` in your request does not match any translation configured for the template.\n- The template exists, but no translation has been created for the requested language or region.\n- The template identifier or translation reference in your request is incorrect.\n- The request uses a locale format that does not match the configured translation locale.\n\n### Possible solutions\n\n- Verify that the template exists in your Verify configuration and that the requested translation has been created.\n- Check that the locale value in your request exactly matches an available translation for the template.\n- Update your request to use a supported template translation locale.\n- Add the missing translation to the template before sending the verification request.\n- If you do not need a localized template, use a template or locale that is already available in your Verify setup.\n\n#### Additional resources\n\n- [Twilio Verify documentation](/docs/verify)\n- [Verify API documentation](/docs/verify/api)\n",
    "causes": "* The `locale` in your request does not match any translation configured for the template.\n* The template exists, but no translation has been created for the requested language or region.\n* The template identifier or translation reference in your request is incorrect.\n* The request uses a locale format that does not match the configured translation locale.",
    "solutions": "* Verify that the template exists in your Verify configuration and that the requested translation has been created.\n* Check that the locale value in your request exactly matches an available translation for the template.\n* Update your request to use a supported template translation locale.\n* Add the missing translation to the template before sending the verification request.\n* If you do not need a localized template, use a template or locale that is already available in your Verify setup.",
    "description": "Twilio could not find the requested translation locale for the Verify message template. This error occurs when your request references a template translation that does not exist for the template or locale you specified.",
    "date_created": "2022-08-30T18:46:38Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60231,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sender id already exists for account",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create or register a Sender ID that already exists in your account for Twilio Verify. A Sender ID must be unique within the account context used for the request.\n\n### Possible causes\n\n- You submitted a request to create a Sender ID that has already been added to the same account\n- Your application retried the same create request and attempted to add a duplicate Sender ID\n- You used an existing Sender ID value without first checking the current Sender IDs configured for the account\n\n### Possible solutions\n\n- Use a different Sender ID value when creating a new Sender ID\n- Review your existing Verify Sender IDs before creating another one and avoid reusing the same value\n- Update your application logic to prevent duplicate create requests for the same Sender ID\n- If you intended to use an existing Sender ID, reference that existing configuration instead of creating a new one\n\n#### Additional resources\n\n- [Verify documentation](/docs/verify)\n- [Twilio Verify API documentation](/docs/verify/api)\n",
    "causes": "* You submitted a request to create a Sender ID that has already been added to the same account\n* Your application retried the same create request and attempted to add a duplicate Sender ID\n* You used an existing Sender ID value without first checking the current Sender IDs configured for the account",
    "solutions": "* Use a different Sender ID value when creating a new Sender ID\n* Review your existing Verify Sender IDs before creating another one and avoid reusing the same value\n* Update your application logic to prevent duplicate create requests for the same Sender ID\n* If you intended to use an existing Sender ID, reference that existing configuration instead of creating a new one",
    "description": "This error occurs when you try to create or register a Sender ID that already exists in your account for Twilio Verify. A Sender ID must be unique within the account context used for the request.",
    "date_created": "2023-05-24T16:48:21Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60232,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sender id does not exist",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returned this error because the `SenderSid` or sender identifier in your Verify request does not match a sender that exists in your account for the channel and configuration you are trying to use.\n\n### Possible causes\n\n- The request includes a `SenderSid` value that is incorrect, misspelled, or no longer valid.\n- The sender was created in a different account or subaccount than the one used to make the request.\n- The sender type does not match the Verify channel you are using.\n- The sender has not been configured for your account or is not available in your current Verify setup.\n\n### Possible solutions\n\n- Check the sender identifier in your request and confirm that the `SenderSid` is correct.\n- Make sure you are sending the request from the same account or subaccount where the sender is configured.\n- Verify that the sender is supported for the channel you are using in Verify.\n- If you need a new sender, create or configure the appropriate sender in your Verify settings before retrying the request.\n- If you are using Silent Network Auth or another Verify channel that depends on channel-specific setup, review your Verify configuration and update the request to use a valid sender.\n\n#### Additional resources\n\n- [Twilio Verify overview](/docs/verify)\n- [Verify API reference](/docs/verify/api)\n",
    "causes": "* The request includes a `SenderSid` value that is incorrect, misspelled, or no longer valid.\n* The sender was created in a different account or subaccount than the one used to make the request.\n* The sender type does not match the Verify channel you are using.\n* The sender has not been configured for your account or is not available in your current Verify setup.",
    "solutions": "* Check the sender identifier in your request and confirm that the `SenderSid` is correct.\n* Make sure you are sending the request from the same account or subaccount where the sender is configured.\n* Verify that the sender is supported for the channel you are using in Verify.\n* If you need a new sender, create or configure the appropriate sender in your Verify settings before retrying the request.\n* If you are using Silent Network Auth or another Verify channel that depends on channel-specific setup, review your Verify configuration and update the request to use a valid sender.",
    "description": "Twilio returned this error because the `SenderSid` or sender identifier in your Verify request does not match a sender that exists in your account for the channel and configuration you are trying to use.",
    "date_created": "2023-05-24T16:51:18Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60233,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Default sender id can't be deleted",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou tried to delete a Sender ID that is currently set as the default Sender ID. Twilio does not delete that Sender ID until you update the default assignment.\n\n### Possible causes\n\n- The Sender ID in your delete request is the default Sender ID for the destination you configured.\n- Your Verify configuration still points to that Sender ID as the default sender.\n- The Sender ID was previously set as the default in Console, so deleting it without changing the default first is blocked.\n\n### Possible solutions\n\n- Set a different registered Sender ID as the default for that destination. Then retry the delete request.\n- Review your Sender ID configuration in Console and confirm which sender is marked as the default before you delete it.\n- If you do not want to use a default Sender ID for that destination, remove the default Sender ID assignment first. Then delete the Sender ID you no longer need.\n- Make sure the replacement Sender ID is already registered and available for the same destination before you switch the default.\n\n#### Additional resources\n\n- [Verify API overview](/docs/verify/api)\n- [Configure your default Sender ID](/docs/phone-numbers/default-sender-id)\n- [Configure an Alphanumeric Sender ID for Verify](https://help.twilio.com/articles/19753683390363-Configure-an-Alphanumeric-Sender-ID-for-Verify)\n",
    "causes": "* The Sender ID in your delete request is the default Sender ID for the destination you configured.\n* Your Verify configuration still points to that Sender ID as the default sender.\n* The Sender ID was previously set as the default in Console, so deleting it without changing the default first is blocked.",
    "solutions": "* Set a different registered Sender ID as the default for that destination. Then retry the delete request.\n* Review your Sender ID configuration in Console and confirm which sender is marked as the default before you delete it.\n* If you do not want to use a default Sender ID for that destination, remove the default Sender ID assignment first. Then delete the Sender ID you no longer need.\n* Make sure the replacement Sender ID is already registered and available for the same destination before you switch the default.",
    "description": "You tried to delete a Sender ID that is currently set as the default Sender ID. Twilio does not delete that Sender ID until you update the default assignment.",
    "date_created": "2023-08-15T21:41:25Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60234,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sender id can not be set as not default",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nSender id can not be set as not default\n\n### Possible causes\n\nThe sender id that's being updated is default and it's not allowed to set default as false\n\n### Possible solutions\n\nSet another sender id as default\n",
    "causes": "The sender id that's being updated is default and it's not allowed to set default as false",
    "solutions": "Set another sender id as default",
    "description": "Sender id can not be set as not default",
    "date_created": "2023-08-15T21:55:41Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60235,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sender Definitions does not match with requirements",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou sent a Verify sender definition that Twilio cannot accept. Review the sender definition and make sure each value matches the requirements for the sender you want to use. If you are using an Alphanumeric Sender ID, it must meet Twilio's sender rules and be valid for the destination country.\n\n### Possible causes\n\n- The sender definition includes invalid or unsupported properties.\n- The sender ID value is shorter than 3 characters or longer than 11 characters.\n- The sender ID uses characters that do not meet Twilio's supported sender requirements.\n- The sender ID does not include at least one alphabetic character.\n- You are trying to use an Alphanumeric Sender ID for a destination where Alphanumeric Sender IDs are not supported.\n- The destination country requires sender ID registration and the sender has not been registered for use with Verify.\n\n### Possible solutions\n\n- Validate the sender definition object and remove any invalid or unsupported properties.\n- Update the sender ID so it is between 3 and 11 characters long.\n- Use a sender ID that matches Twilio's supported formatting requirements for Alphanumeric Sender IDs.\n- Make sure the sender ID includes at least one letter and is not numeric only.\n- Confirm that the destination country supports Alphanumeric Sender IDs before you send the verification.\n- If the destination requires pre-registration, register the sender ID and configure it for your Verify service before sending traffic.\n- If you do not need a custom sender, remove the custom sender definition and use Verify's default sender configuration.\n\n#### Additional resources\n\n- [Alphanumeric sender ID](/docs/trust-hub/registrations/alphanumeric-sender-id)\n- [Verify Countries and Regions Deliverability](/docs/verify/verify-countries-and-regions-deliverability)\n- [Configure an Alphanumeric Sender ID for Verify](https://help.twilio.com/articles/19753683390363)\n",
    "causes": "* The sender definition includes invalid or unsupported properties.\n* The sender ID value is shorter than 3 characters or longer than 11 characters.\n* The sender ID uses characters that do not meet Twilio's supported sender requirements.\n* The sender ID does not include at least one alphabetic character.\n* You are trying to use an Alphanumeric Sender ID for a destination where Alphanumeric Sender IDs are not supported.\n* The destination country requires sender ID registration and the sender has not been registered for use with Verify.",
    "solutions": "* Validate the sender definition object and remove any invalid or unsupported properties.\n* Update the sender ID so it is between 3 and 11 characters long.\n* Use a sender ID that matches Twilio's supported formatting requirements for Alphanumeric Sender IDs.\n* Make sure the sender ID includes at least one letter and is not numeric only.\n* Confirm that the destination country supports Alphanumeric Sender IDs before you send the verification.\n* If the destination requires pre-registration, register the sender ID and configure it for your Verify service before sending traffic.\n* If you do not need a custom sender, remove the custom sender definition and use Verify's default sender configuration.",
    "description": "You sent a Verify sender definition that Twilio cannot accept. Review the sender definition and make sure each value matches the requirements for the sender you want to use. If you are using an Alphanumeric Sender ID, it must meet Twilio's sender rules and be valid for the destination country.",
    "date_created": "2023-08-16T21:48:52Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60236,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "The domain could not be obtained from the given email",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe domain could not be obtained from the given email\n\n### Possible causes\n\nCould not obtain the domain from the email provided\n\n### Possible solutions\n\nPlease review the email provided or the email registered of your account administrator users\n",
    "causes": "Could not obtain the domain from the email provided",
    "solutions": "Please review the email provided or the email registered of your account administrator users",
    "description": "The domain could not be obtained from the given email",
    "date_created": "2023-09-19T22:07:03Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60237,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "The given domain is on a deny list",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio blocked the email address domain you provided because that domain is not allowed for this Verify flow. This error commonly appears when you use a public email domain for scenarios that require a business or custom domain.\n\n### Possible causes\n\n- You submitted an email address that uses a public domain such as Gmail, Yahoo, Hotmail, or Outlook.\n- Your Verify configuration or onboarding flow requires a custom business domain instead of a consumer email domain.\n- The domain in the email address matches a domain that Twilio does not allow for that feature.\n\n### Possible solutions\n\n- Use an email address with a custom company-owned domain instead of a public email provider.\n- Check the email address you submitted and confirm the domain is correct and spelled properly.\n- Review your Verify integration and confirm you are sending the intended email address in the request.\n- If you need help determining whether your use case supports the email you want to use, review the Verify documentation and your account configuration.\n\n#### Additional resources\n\n- [Twilio Verify documentation](/docs/verify)\n- [Verify API documentation](/docs/verify/api)\n",
    "causes": "* You submitted an email address that uses a public domain such as Gmail, Yahoo, Hotmail, or Outlook.\n* Your Verify configuration or onboarding flow requires a custom business domain instead of a consumer email domain.\n* The domain in the email address matches a domain that Twilio does not allow for that feature.",
    "solutions": "* Use an email address with a custom company-owned domain instead of a public email provider.\n* Check the email address you submitted and confirm the domain is correct and spelled properly.\n* Review your Verify integration and confirm you are sending the intended email address in the request.\n* If you need help determining whether your use case supports the email you want to use, review the Verify documentation and your account configuration.",
    "description": "Twilio blocked the email address domain you provided because that domain is not allowed for this Verify flow. This error commonly appears when you use a public email domain for scenarios that require a business or custom domain.",
    "date_created": "2023-09-20T15:14:13Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60238,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Verification Creation Attempt blocked by Twilio",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nVerification creation attempt is blocked by Twilio\n\n### Possible causes\n\n- Your request has been blocked because your upgrade request is going through a review process\n- Your request has been blocked because you are attempting to send a message to Iran, Syria or Cuba.\n\n### Possible solutions\n\nIf you are still getting this error after 72 hours, please reach out to our support team for assistance.\n",
    "causes": "* Your request has been blocked because your upgrade request is going through a review process\n* Your request has been blocked because you are attempting to send a message to Iran, Syria or Cuba.",
    "solutions": "If you are still getting this error after 72 hours, please reach out to our support team for assistance.",
    "description": "Verification creation attempt is blocked by Twilio",
    "date_created": "2023-10-05T03:20:04Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60239,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "BYOT feature is not enabled",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour account doesn't have access to use Bring your Own templates (BYOT). The verification was sent using default templates.\n\n### Possible causes\n\nThe BYOT feature is not enabled on your account.\n\n### Possible solutions\n\nIf you need access to the BYOT feature please contact Twilio Support.\n",
    "causes": "The BYOT feature is not enabled on your account.",
    "solutions": "If you need access to the BYOT feature please contact Twilio Support.",
    "description": "Your account doesn't have access to use Bring your Own templates (BYOT). The verification was sent using default templates.",
    "date_created": "2023-10-24T17:30:01Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60240,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Templates not allowed",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour account does not have enough permissions to use templates\n\n### Possible causes\n\nSome countries have special requirements that can override the message to be compliant with the country thus preventing the use of templates.\n\n### Possible solutions\n\nPlease contact the support team to validate the requirements needed to be compliant with the country and avoid the override of the message.\n",
    "causes": "Some countries have special requirements that can override the message to be compliant with the country thus preventing the use of templates.",
    "solutions": "Please contact the support team to validate the requirements needed to be compliant with the country and avoid the override of the message.",
    "description": "Your account does not have enough permissions to use templates",
    "date_created": "2023-11-03T19:27:55Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60241,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Static message required",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis warning occurs when Verify cannot send the custom verification text you requested and requires a static, approved message instead. The `customMessage` parameter is deprecated, and SMS or Voice customizations should use the default Verify template or an approved `TemplateSid`.\n\n### Possible causes\n\n- Your verification request included `customMessage`, which Verify marks as deprecated.\n- The destination country applies messaging restrictions that require fixed or approved verification copy. Verify calls out special SMS restrictions for Canada and Singapore, and China requires template registration.\n- You need customized SMS or Voice text, but your Verify service or verification request is not using an approved template. Verify templates are the supported way to customize SMS and Voice verification messages.\n\n### Possible solutions\n\n- Remove `customMessage` from the verification request. Let Verify send the default message, or pass an approved `TemplateSid` for SMS or Voice.\n- If you need custom copy, use a pre-approved template or request a custom template. You can set the template as the default for the Verify service or provide `TemplateSid` when you create the verification.\n- If you send traffic to countries with stricter requirements, such as Canada, Singapore, Malaysia, or China, contact support to register or validate your template before sending. If you change the template for China, register the new message body again.\n\n#### Additional resources\n\n- [Verify Templates](/docs/verify/api/templates)\n- [Verifications API resource](/docs/verify/api/verification)\n- [Is it Possible to Customize the Verification Message for Verify?](https://help.twilio.com/articles/9960174409627-Is-it-Possible-to-Customize-the-Verification-Message-for-Verify-)\n",
    "causes": "* Your verification request included `customMessage`, which Verify marks as deprecated.\n* The destination country applies messaging restrictions that require fixed or approved verification copy. Verify calls out special SMS restrictions for Canada and Singapore, and China requires template registration.\n* You need customized SMS or Voice text, but your Verify service or verification request is not using an approved template. Verify templates are the supported way to customize SMS and Voice verification messages.",
    "solutions": "* Remove `customMessage` from the verification request. Let Verify send the default message, or pass an approved `TemplateSid` for SMS or Voice.\n* If you need custom copy, use a pre-approved template or request a custom template. You can set the template as the default for the Verify service or provide `TemplateSid` when you create the verification.\n* If you send traffic to countries with stricter requirements, such as Canada, Singapore, Malaysia, or China, contact support to register or validate your template before sending. If you change the template for China, register the new message body again.",
    "description": "This warning occurs when Verify cannot send the custom verification text you requested and requires a static, approved message instead. The `customMessage` parameter is deprecated, and SMS or Voice customizations should use the default Verify template or an approved `TemplateSid`.",
    "date_created": "2023-11-03T19:28:30Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60242,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "WhatsApp template not found",
    "secondary_message": "An approved WhatsApp template was not found for the given account sid and language",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAn approved WhatsApp template was not found for the given account sid and language\n\n### Possible causes\n\nSelected account does not have whatsApp template created or approved\n\n### Possible solutions\n\nCreate and request approval for a whatsApp template in the needed language\n",
    "causes": "Selected account does not have whatsApp template created or approved",
    "solutions": "Create and request approval for a whatsApp template in the needed language",
    "description": "An approved WhatsApp template was not found for the given account sid and language",
    "date_created": "2023-12-22T15:31:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60243,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Custom messages are not supported",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour verification is using custom messages.\n\n### Possible causes\n\nVerification created using custom message are not supported.\n\n### Possible solutions\n\nEnsure that you pass the OTP code via [custom code](/docs/verify/api/customization-options) parameter in the API request, following which it will be automatically map your incoming message to Verify default templates or migrate your custom messages to use [Verify Custom Templates](/docs/verify/api/templates)\n",
    "causes": "Verification created using custom message are not supported.",
    "solutions": "Ensure that you pass the OTP code via [custom code](/docs/verify/api/customization-options) parameter in the API request, following which it will be automatically map your incoming message to Verify default templates or migrate your custom messages to use [Verify Custom Templates](/docs/verify/api/templates)",
    "description": "Your verification is using custom messages.",
    "date_created": "2024-02-06T14:26:49Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60244,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Custom messages are not supported",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour verification messages are upgraded to default templates.\n\n### Possible causes\n\nVerifications created using custom messages are no longer supported and upgraded to default templates.\n\n### Possible solutions\n\nIf you would like to continue using custom message text migrate to [BYOT templates](/docs/verify/api/templates).\n",
    "causes": "Verifications created using custom messages are no longer supported and upgraded to default templates.",
    "solutions": "If you would like to continue using custom message text migrate to [BYOT templates](/docs/verify/api/templates).",
    "description": "Your verification messages are upgraded to default templates.",
    "date_created": "2024-02-06T14:35:30Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60245,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "You have exceeded your messaging limits",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou have reached a rate limit or messaging volume limit for Verify. Twilio returns this error when your account, service, or destination has exceeded the allowed number of verification messages for a given period.\n\n### Possible causes\n\n- Your Verify service has sent too many verification SMS or voice messages in a short time.\n- A single phone number has received too many verification attempts.\n- Your account has reached a platform-enforced limit designed to protect against fraud, abuse, or accidental overuse.\n- Your application is retrying verification requests too aggressively.\n- You are sending verifications without using rate limits or other abuse prevention controls.\n\n### Possible solutions\n\n- Reduce how often your application starts new verification attempts for the same user or phone number.\n- Add retry backoff and avoid sending multiple verification requests in rapid succession.\n- Review your Verify service settings and any application logic that could trigger repeated sends.\n- Use Verify rate limits to control verification traffic by phone number, IP address, or other identifiers.\n- If your use case requires higher throughput, review your Verify configuration and contact support if you need help evaluating your limits.\n\n#### Additional resources\n\n- [/docs/verify/api/verification](/docs/verify/api/verification)\n- [/docs/verify/api/rate-limits-and-timeouts](/docs/verify/api/rate-limits-and-timeouts)\n- [Verify best practices](/docs/verify/developer-best-practices)\n",
    "causes": "* Your Verify service has sent too many verification SMS or voice messages in a short time.\n* A single phone number has received too many verification attempts.\n* Your account has reached a platform-enforced limit designed to protect against fraud, abuse, or accidental overuse.\n* Your application is retrying verification requests too aggressively.\n* You are sending verifications without using rate limits or other abuse prevention controls.",
    "solutions": "* Reduce how often your application starts new verification attempts for the same user or phone number.\n* Add retry backoff and avoid sending multiple verification requests in rapid succession.\n* Review your Verify service settings and any application logic that could trigger repeated sends.\n* Use Verify rate limits to control verification traffic by phone number, IP address, or other identifiers.\n* If your use case requires higher throughput, review your Verify configuration and contact support if you need help evaluating your limits.",
    "description": "You have reached a rate limit or messaging volume limit for Verify. Twilio returns this error when your account, service, or destination has exceeded the allowed number of verification messages for a given period.",
    "date_created": "2024-05-20T16:59:05Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60246,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Service already exists",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create a Verify Service with a `UniqueName` that is already assigned to another service. A Verify Service contains the shared configuration used to create and check verifications.\n\n### Possible causes\n\n- Your create service request included a `UniqueName` that already exists.\n- Your application retried a previous service creation request and sent the same `UniqueName` again. Twilio lets you list services and fetch an existing service, which can help you confirm whether the service was already created.\n\n### Possible solutions\n\n- Create the service with a different `UniqueName`.\n- If you intended to reuse an existing Verify Service, list your services with `GET /v2/Services` and use the existing Service SID instead of creating another service.\n- If you already know the Service SID you want to use, fetch it with `GET /v2/Services/{Sid}` and update your application to reference that service instead of creating a duplicate.\n- When you create services from the API or Console, store the returned Service SID so later requests can reuse the same service configuration. Verify Services can be created in the Console or with `POST /v2/Services`.\n\n#### Additional resources\n\n- [Verify API](/docs/verify/api)\n- [Verify Services API](/docs/verify/api/service)\n- [Getting Started with Twilio Verify V2](https://help.twilio.com/articles/360033309133-Getting-Started-with-Twilio-Verify-V2)\n",
    "causes": "* Your create service request included a `UniqueName` that already exists.\n* Your application retried a previous service creation request and sent the same `UniqueName` again. Twilio lets you list services and fetch an existing service, which can help you confirm whether the service was already created.",
    "solutions": "* Create the service with a different `UniqueName`.\n* If you intended to reuse an existing Verify Service, list your services with `GET /v2/Services` and use the existing Service SID instead of creating another service.\n* If you already know the Service SID you want to use, fetch it with `GET /v2/Services/{Sid}` and update your application to reference that service instead of creating a duplicate.\n* When you create services from the API or Console, store the returned Service SID so later requests can reuse the same service configuration. Verify Services can be created in the Console or with `POST /v2/Services`.",
    "description": "This error occurs when you try to create a Verify Service with a `UniqueName` that is already assigned to another service. A Verify Service contains the shared configuration used to create and check verifications.",
    "date_created": "2024-06-11T14:08:57Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60247,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Message Length Exceeded",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe message body generated for your verification is too long. The maximum number of characters allowed is 500.\n\n### Possible causes\n\n1. Template Substitutions: If you are using a template, ensure that it, including any variable substitutions, does not exceed the 500-character limit.\n2. Friendly Name, Code, or Custom Substitutions: Review your message's friendly name, code, or custom substitutions. These elements might be increasing the message length and causing it to exceed the limit.\n\n### Possible solutions\n\n1. Template Substitutions:\n\n   - Review the length of dynamic variables or placeholders in your template, such as \\{\\{customer\\_name}} or \\{\\{order\\_number}}. These values might be longer than expected once replaced.\n   - Simplify or abbreviate the content of your template. For example, instead of \"Dear \\{\\{customer\\_name}}, we are pleased to inform that your code is \\{\\{code}}\", try \"Hi \\{\\{customer\\_name}}, your code is \\{\\{code}}\"\n2. Friendly Name Substitutions:\n   - If you're using a friendly name for identification, ensure it's concise.\n3. Code Substitutions:\n   - Check for codes that are dynamically added to the message. Long codes may need to be shortened. For example, you could change the code length of your verify service.\n4. Custom Substitutions:\n   - Look for unnecessary custom substitutions that may be inflating the message length.\n\nThese substitutions are focused on shortening the content without losing clarity, helping users keep their messages within the 500-character limit.\n",
    "causes": "1. Template Substitutions: If you are using a template, ensure that it, including any variable substitutions, does not exceed the 500-character limit.\n2. Friendly Name, Code, or Custom Substitutions: Review your message's friendly name, code, or custom substitutions. These elements might be increasing the message length and causing it to exceed the limit.",
    "solutions": "1. Template Substitutions:\n\n   * Review the length of dynamic variables or placeholders in your template, such as {{customer\\_name}} or {{order\\_number}}. These values might be longer than expected once replaced.\n   * Simplify or abbreviate the content of your template. For example, instead of \"Dear {{customer\\_name}}, we are pleased to inform that your code is {{code}}\", try \"Hi {{customer\\_name}}, your code is {{code}}\"\n2. Friendly Name Substitutions:\n   * If you're using a friendly name for identification, ensure it's concise.\n3. Code Substitutions:\n   * Check for codes that are dynamically added to the message. Long codes may need to be shortened. For example, you could change the code length of your verify service.\n4. Custom Substitutions:\n   * Look for unnecessary custom substitutions that may be inflating the message length. These substitutions are focused on shortening the content without losing clarity, helping users keep their messages within the 500-character limit.",
    "description": "The message body generated for your verification is too long. The maximum number of characters allowed is 500.",
    "date_created": "2024-09-27T15:07:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60248,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Friendly Name contains a restricted word",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe specified Friendly Name to create or update the Verify Service is not allowed because it contains a restricted word. Provide a different Friendly Name or contact support.\n\n### Possible causes\n\nThe specified Friendly Name for the Verify Service contains a restricted word.\n\n### Possible solutions\n\nProvide a different Friendly Name that does not contain a restricted word or contact support to request an exemption from the restriction.\n",
    "causes": "The specified Friendly Name for the Verify Service contains a restricted word.",
    "solutions": "Provide a different Friendly Name that does not contain a restricted word or contact support to request an exemption from the restriction.",
    "description": "The specified Friendly Name to create or update the Verify Service is not allowed because it contains a restricted word. Provide a different Friendly Name or contact support.",
    "date_created": "2025-10-22T23:42:58.273Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60249,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Translation content is invalid for this template type",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe translation content provided for the Verify template is not valid for the selected template type.\n\nHTTP status: 400\n\n### Possible causes\n\n- The translation content does not use the format required by the template type.\n- The translation includes fields or variables that the template type does not support.\n- A required field is missing from the translation content.\n\n### Possible solutions\n\n- Confirm the template type and provide translation content in the format that it supports.\n- Remove unsupported fields or variables from the translation.\n- Include all fields required by the template type and submit the request again.\n\n#### Additional resources\n\n- [Verify Templates API](/docs/verify/api/templates)\n- [Getting Started with Verification Templates](/docs/verify/verification-templates)\n",
    "causes": "* The translation content does not use the format required by the template type.\n* The translation includes fields or variables that the template type does not support.\n* A required field is missing from the translation content.",
    "solutions": "* Confirm the template type and provide translation content in the format that it supports.\n* Remove unsupported fields or variables from the translation.\n* Include all fields required by the template type and submit the request again.",
    "description": "The translation content provided for the Verify template is not valid for the selected template type. HTTP status: 400",
    "date_created": "2026-08-03T11:02:39+03:00",
    "last_updated": "2026-08-03T11:02:39+03:00"
  },
  {
    "code": 60250,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Missing Registration for Australia",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour message to an Australian phone number (+61) was blocked because your account does not have required business information. Under local Australian regulation, senders are required to provide Business Legal Name and Business Registration number before they can send messages to Australian destinations.\n\n### Possible causes\n\n- Missing Business Profile: You have not created a Business Profile in the Twilio Trust Hub or missing necessary business information.\n- Pending Approval: You have submitted a Business Profile, but it has not yet reached the \"Approved\" status.\n\n### Possible solutions\n\nTo resume sending traffic to Australia, you must demonstrate a proof of association with a registered business Navigate to the Twilio Console to create a Primary Customer Profile and provide your Business Legal Name, your Australian Business Number (ABN) or an equivalent government-issued registration number from your home country. For complete details on each step, refer to the [Australia sender ID Onboarding Guide](https://help.twilio.com/articles/47624808819483-Register-your-Alphanumeric-Sender-ID-for-Australia-in-the-Twilio-Console).\n",
    "causes": "* Missing Business Profile: You have not created a Business Profile in the Twilio Trust Hub or missing necessary business information.\n* Pending Approval: You have submitted a Business Profile, but it has not yet reached the \"Approved\" status.",
    "solutions": "To resume sending traffic to Australia, you must demonstrate a proof of association with a registered business Navigate to the Twilio Console to create a Primary Customer Profile and provide your Business Legal Name, your Australian Business Number (ABN) or an equivalent government-issued registration number from your home country. For complete details on each step, refer to the [Australia sender ID Onboarding Guide](https://help.twilio.com/articles/47624808819483-Register-your-Alphanumeric-Sender-ID-for-Australia-in-the-Twilio-Console).",
    "description": "Your message to an Australian phone number (+61) was blocked because your account does not have required business information. Under local Australian regulation, senders are required to provide Business Legal Name and Business Registration number before they can send messages to Australian destinations.",
    "date_created": "2026-05-04T10:19:24-05:00",
    "last_updated": "2026-05-08T12:39:23-05:00"
  },
  {
    "code": 60251,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Templates parameter",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe `Templates` parameter in your request to create a verification is not structurally valid. Twilio rejected the request before attempting to resolve any template.\n\n`Templates` is a JSON-encoded array of template configurations, sent as a string because the Verify API uses `application/x-www-form-urlencoded`. Each entry requires a `sid` and may include an optional `substitutions` object.\n\nHTTP status: 400\n\n### Possible causes\n\n- The `Templates` value is not valid JSON, or is valid JSON but not an array.\n- An entry in the array is missing the required `sid` field.\n- A `sid` value is not a valid template SID. Template SIDs start with `HJ` followed by 32 hexadecimal digits.\n- An entry's `substitutions` value is not an object of key-value pairs.\n- The array contains more than the maximum number of entries allowed.\n\n### Possible solutions\n\n- JSON-encode the `Templates` value as an array before URL-encoding it into the request body.\n- Give every entry a `sid`, and copy each SID directly from the Twilio Console or from a Templates API response rather than typing it by hand.\n- Send `substitutions` as an object, for example `{\"sid\": \"HJ...\", \"substitutions\": {\"title\": \"Sign in\"}}`.\n- Reduce the number of entries so the list stays within the allowed maximum.\n- Validate the `Templates` payload in your application before calling the Verify API.\n\n### Related errors\n\n- [Template was not found](/docs/api/errors/60228)\n- [Missing substitutions for selected template](/docs/api/errors/60224)\n- [The selected channel for template is not supported](/docs/api/errors/60227)\n\n#### Additional resources\n\n- [Start New Verification](/docs/verify/api/verification#start-new-verification)\n- [Verify Templates API](/docs/verify/api/templates)\n- [Getting Started with Verification Templates](/docs/verify/verification-templates)\n",
    "causes": "* The `Templates` value is not valid JSON, or is valid JSON but not an array.\n* An entry in the array is missing the required `sid` field.\n* A `sid` value is not a valid template SID. Template SIDs start with `HJ` followed by 32 hexadecimal digits.\n* An entry's `substitutions` value is not an object of key-value pairs.\n* The array contains more than the maximum number of entries allowed.",
    "solutions": "* JSON-encode the `Templates` value as an array before URL-encoding it into the request body.\n* Give every entry a `sid`, and copy each SID directly from the Twilio Console or from a Templates API response rather than typing it by hand.\n* Send `substitutions` as an object, for example `{\"sid\": \"HJ...\", \"substitutions\": {\"title\": \"Sign in\"}}`.\n* Reduce the number of entries so the list stays within the allowed maximum.\n* Validate the `Templates` payload in your application before calling the Verify API.",
    "description": "The `Templates` parameter in your request to create a verification is not structurally valid. Twilio rejected the request before attempting to resolve any template. `Templates` is a JSON-encoded array of template configurations, sent as a string because the Verify API uses `application/x-www-form-urlencoded`. Each entry requires a `sid` and may include an optional `substitutions` object. HTTP status: 400",
    "date_created": "2026-08-12T15:15:14+03:00",
    "last_updated": "2026-08-19T11:26:11+03:00"
  },
  {
    "code": 60252,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Templates are invalid",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio Verify could not generate a message from the provided templates. This occurs when all supplied template candidates fail validation, such as when a template is unapproved or missing required substitutions\n\nHTTP status: 400\n\n### Possible causes\n\n- The provided template candidates failed validation (e.g., due to rendering issues).\n- One or more template candidates are unapproved\n- One or more candidates are missing required substitutions.\n- A template candidate does not support the requested delivery channel.\n- A template candidate contains invalid content for its template type.\n\n### Possible solutions\n\n- Review each template candidate to confirm that it is approved.\n- Provide all required substitution values for every template candidate.\n- Use only template candidates compatible with the requested delivery channel.\n- Check that the translation content matches the template type for each candidate.\n- Remove or replace any invalid template candidates before retrying the verification.\n\n### Related errors\n\n- [Selected template translation is not approved](/docs/api/errors/60201)\n- [Missing substitutions for selected template](/docs/api/errors/60224)\n- [The selected channel for template is not supported](/docs/api/errors/60227)\n- [Template was not found](/docs/api/errors/60228)\n- [Translation content is invalid for this template type](/docs/api/errors/60249)\n\n#### Additional resources\n\n- [Start New Verification](/docs/verify/api/verification#start-new-verification)\n- [Verify Templates API](/docs/verify/api/templates)\n- [Getting Started with Verification Templates](/docs/verify/verification-templates)\n",
    "causes": "* The provided template candidates failed validation (e.g., due to rendering issues).\n* One or more template candidates are unapproved\n* One or more candidates are missing required substitutions.\n* A template candidate does not support the requested delivery channel.\n* A template candidate contains invalid content for its template type.",
    "solutions": "* Review each template candidate to confirm that it is approved.\n* Provide all required substitution values for every template candidate.\n* Use only template candidates compatible with the requested delivery channel.\n* Check that the translation content matches the template type for each candidate.\n* Remove or replace any invalid template candidates before retrying the verification.",
    "description": "Twilio Verify could not generate a message from the provided templates. This occurs when all supplied template candidates fail validation, such as when a template is unapproved or missing required substitutions HTTP status: 400",
    "date_created": "2026-08-27T16:41:39+03:00",
    "last_updated": "2026-08-27T16:41:39+03:00"
  },
  {
    "code": 60300,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Param",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe request contained malformed or semantically incorrect parameters.\n\n#### Is the request safe to retry?\n\nA 60300 error request is never processed and is always safe to retry.\n\nHTTP status: 400\n\n### Possible causes\n\n- Missing parameter.\n- Invalid parameter type, value, or length.\n\n### Possible solutions\n\n- Send the required parameter.\n- Review the parameter type or value.\n- Review the parameter length.\n",
    "causes": "* Missing parameter.\n* Invalid parameter type, value, or length.",
    "solutions": "* Send the required parameter.\n* Review the parameter type or value.\n* Review the parameter length.",
    "description": "The request contained malformed or semantically incorrect parameters.",
    "date_created": "2020-06-30T16:44:20Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60301,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Entity already exists",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error indicates that your request tried to create a Verify Entity with an `Identity` that already exists in the same Verify Service. Twilio returns HTTP 409 for this conflict because each Entity `Identity` must be unique within a Service.\n\n### Possible causes\n\n- You sent a `Create Entity` request with an `Identity` that is already assigned to another Entity in the same Verify Service.\n- Your application retried the same request and attempted to create a duplicate Entity.\n- Your application does not check whether the Entity already exists before creating a new one.\n- You are reusing the same `Identity` value across multiple users or records in the same Service.\n\n### Possible solutions\n\n- Use a unique `Identity` value for each Entity in the Verify Service.\n- Check whether the Entity already exists before you send a `Create Entity` request.\n- If you intended to work with an existing Entity, fetch or update that Entity instead of creating a new one.\n- Review your retry and idempotency logic to prevent duplicate create requests.\n- Confirm that your application maps each user to only one Entity per Verify Service.\n\n#### Additional resources\n\n- [Verify documentation](/docs/verify)\n- [Verify API reference](/docs/verify/api)\n- [Manage Entities, Factors, and Challenges in Verify Push](/docs/verify/push)\n",
    "causes": "* You sent a `Create Entity` request with an `Identity` that is already assigned to another Entity in the same Verify Service.\n* Your application retried the same request and attempted to create a duplicate Entity.\n* Your application does not check whether the Entity already exists before creating a new one.\n* You are reusing the same `Identity` value across multiple users or records in the same Service.",
    "solutions": "* Use a unique `Identity` value for each Entity in the Verify Service.\n* Check whether the Entity already exists before you send a `Create Entity` request.\n* If you intended to work with an existing Entity, fetch or update that Entity instead of creating a new one.\n* Review your retry and idempotency logic to prevent duplicate create requests.\n* Confirm that your application maps each user to only one Entity per Verify Service.",
    "description": "This error indicates that your request tried to create a Verify Entity with an `Identity` that already exists in the same Verify Service. Twilio returns HTTP 409 for this conflict because each Entity `Identity` must be unique within a Service.",
    "date_created": "2020-06-30T16:46:05Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60302,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "FactorType already exists",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe Entity has already a `FactorType` of the same type.\n\nHTTP status: 400\n\n### Possible causes\n\nEach Entity can have multiples Factor types, but each `FactorType` has to be unique for the given Entity.\n\n### Possible solutions\n\nMake sure you are assigning the new `FactorType` to the right Entity.\n",
    "causes": "Each Entity can have multiples Factor types, but each `FactorType` has to be unique for the given Entity.",
    "solutions": "Make sure you are assigning the new `FactorType` to the right Entity.",
    "description": "The Entity has already a `FactorType` of the same type. HTTP status: 400",
    "date_created": "2020-06-30T16:47:35Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60305,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Access Token parameters are invalid",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAccess Token parameters are invalid.\n\nHTTP status: 400\n\n### Possible causes\n\nAny of the required parameters are missing in the request params:\n\n- **Identity:** External unique identifier for the Entity.\n- **FactorType:** The factor type that the Access Token will be used to create.\n\n### Possible solutions\n\nCheck Access Token parameters.\n",
    "causes": "Any of the required parameters are missing in the request params: - **Identity:** External unique identifier for the Entity.\n- **FactorType:** The factor type that the Access Token will be used to create.",
    "solutions": "Check Access Token parameters.",
    "description": "Access Token parameters are invalid. HTTP status: 400",
    "date_created": "2020-06-30T16:49:31Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60306,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Request",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe request is invalid.\n\nHTTP status: 400\n\n### Possible causes\n\nOne or more parameters are in an invalid format:\n\n- Invalid `AccountSid`.\n- Invalid `ServiceSid`.\n- Invalid `Identity`.\n- Invalid Factor parameters: Invalid `FriendlyName`, `Binding`, etc.\n- Invalid `AuthPayload` when verifying a factor or challenge.\n- Invalid `FactorSid`.\n- Invalid list parameters: Invalid `Page`, `PageSize` or `PageToken`.\n- Invalid Challenge parameters: Invalid `FactorSid`, `ExpirationDate`, `Details` or `HiddenDetails`.\n- Invalid `ChallengeSid`.\n- Invalid Factor configuration.\n- Invalid `JWT`.\n- Invalid Webhooks parameters: Invalid `EventTypes`\n- Invalid `PhoneNumber` or Invalid `PhoneNumberPrefix` when adding a `PhoneNumber` or `PhoneNumberPrefix` to Global Safelist APIs.\n\n### Possible solutions\n\nReview the parameters you are passing from the list above and try again. Accepted parameters are detailed in the [API reference](/docs/verify/api).\n",
    "causes": "One or more parameters are in an invalid format: - Invalid `AccountSid`.\n- Invalid `ServiceSid`.\n- Invalid `Identity`.\n- Invalid Factor parameters: Invalid `FriendlyName`, `Binding`, etc.\n- Invalid `AuthPayload` when verifying a factor or challenge.\n- Invalid `FactorSid`.\n- Invalid list parameters: Invalid `Page`, `PageSize` or `PageToken`.\n- Invalid Challenge parameters: Invalid `FactorSid`, `ExpirationDate`, `Details` or `HiddenDetails`.\n- Invalid `ChallengeSid`.\n- Invalid Factor configuration.\n- Invalid `JWT`.\n- Invalid Webhooks parameters: Invalid `EventTypes`\n- Invalid `PhoneNumber` or Invalid `PhoneNumberPrefix` when adding a `PhoneNumber` or `PhoneNumberPrefix` to Global Safelist APIs.",
    "solutions": "Review the parameters you are passing from the list above and try again. Accepted parameters are detailed in the [API reference](/docs/verify/api).",
    "description": "The request is invalid. HTTP status: 400",
    "date_created": "2020-06-30T16:53:02Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60307,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot resend push notifications to 'none' notification platform",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error is returned when the resend push notification endpoint was called for a factor using \"none\" as notification platform in its configuration.\n\n### Possible causes\n\nYou called the resend push notification endpoint for a factor with the \"none\" notification platform configured.\n\n### Possible solutions\n\nFor factor configured with \"none\" as notification platform, it is not necessary to call the resend push notification endpoint.\n",
    "causes": "You called the resend push notification endpoint for a factor with the \"none\" notification platform configured.",
    "solutions": "For factor configured with \"none\" as notification platform, it is not necessary to call the resend push notification endpoint.",
    "description": "This error is returned when the resend push notification endpoint was called for a factor using \"none\" as notification platform in its configuration.",
    "date_created": "2021-10-29T18:08:00Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60308,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Challenge verification attempts limit reached",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe maximum number of verification attempts for a Challenge has been reached.\n\nMax. number of attempts for TOTP: 5.\n\nHTTP status: 429\n\n### Possible causes\n\nToo many incorrect TOTP codes have been provided in the AuthPayload\n\n### Possible solutions\n\n- Create a new Challenge and verify that one.\n- For TOTP, ask the user to provide the correct TOTP code or re-register them with a new Factor if they are unable to generate correct codes for the existing Factor.\n",
    "causes": "Too many incorrect TOTP codes have been provided in the AuthPayload",
    "solutions": "* Create a new Challenge and verify that one.\n* For TOTP, ask the user to provide the correct TOTP code or re-register them with a new Factor if they are unable to generate correct codes for the existing Factor.",
    "description": "The maximum number of verification attempts for a Challenge has been reached. Max. number of attempts for TOTP: 5. HTTP status: 429",
    "date_created": "2021-04-23T22:03:03Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60309,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Push notifications limit reached for a Challenge",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe maximum number of push notifications for the Challenge has been reached\n\nMax number of notifications: 3\n\nHTTP status: 429\n\n### Possible causes\n\nToo many calls to the Resend Notification endpoint for a given Challenge\n\n### Possible solutions\n\nCreate a new Challenge and send notifications for it.\n",
    "causes": "Too many calls to the Resend Notification endpoint for a given Challenge",
    "solutions": "Create a new Challenge and send notifications for it.",
    "description": "The maximum number of push notifications for the Challenge has been reached Max number of notifications: 3 HTTP status: 429",
    "date_created": "2021-04-30T14:49:42Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60310,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor verification attempts reached",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe maximum number of verification attempts for a Factor has been reached.\n\nMax. Number of attempts for a TOTP Factor: 5.\n\nHTTP status: 429\n\n### Possible causes\n\nToo many incorrect TOTP codes have been provided in the AuthPayload\n\n### Possible solutions\n\n- Create a new Factor and verify that one..\n- For a TOTP Factor, ask the user to provide the correct TOTP code or create a new Factor if they are unable to generate the correct codes for the Factor they are verifying.\n",
    "causes": "Too many incorrect TOTP codes have been provided in the AuthPayload",
    "solutions": "* Create a new Factor and verify that one..\n* For a TOTP Factor, ask the user to provide the correct TOTP code or create a new Factor if they are unable to generate the correct codes for the Factor they are verifying.",
    "description": "The maximum number of verification attempts for a Factor has been reached. Max. Number of attempts for a TOTP Factor: 5. HTTP status: 429",
    "date_created": "2021-05-11T19:20:57Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60311,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor verification failed",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nVerify returns this error when a Factor verification request fails during enrollment. This usually means the verification request did not prove possession of the Factor, so the Factor could not move from `unverified` to `verified`.\n\n### Possible causes\n\n- The Factor could not be verified with the data provided in the request.\n- For a TOTP Factor, the `AuthPayload` did not match the latest code generated from the shared seed.\n- For a TOTP Factor, the code in `AuthPayload` expired before the request was processed. The default `Config.TimeStep` is 30 seconds.\n- The authenticator app was not set up with the correct seed, or it is generating codes with settings that do not match the Factor configuration.\n- You changed TOTP settings such as `Config.CodeLength` or `Config.TimeStep`, and the authenticator app being used does not support those settings.\n\n### Possible solutions\n\n- Send a new verification request with the latest value in `AuthPayload`.\n- For TOTP enrollment, make sure the user scanned the correct QR code or entered the seed correctly before retrying verification.\n- Retry immediately with a fresh TOTP code if the previous code may have expired.\n- Verify that your authenticator app supports the Factor configuration you created. If you use non-default TOTP settings, confirm the app can generate codes with those values.\n- If the Factor remains `unverified`, create a new Factor and restart enrollment.\n- If you are integrating Verify TOTP, check the returned Factor `status` after updating the Factor. For current TOTP behavior, an incorrect `AuthPayload` leaves the Factor in `unverified` instead of returning an error.\n\n#### Additional resources\n\n- [Factor resource](/docs/verify/api/factor)\n- [Verify TOTP Quickstart](/docs/verify/quickstarts/totp)\n- [Verify TOTP change in API response when `AuthPayload` is incorrect](/docs/verify/quickstarts/verify-totp-change-in-api-response-when-authpayload-is-incorrect)\n",
    "causes": "* The Factor could not be verified with the data provided in the request.\n* For a TOTP Factor, the `AuthPayload` did not match the latest code generated from the shared seed.\n* For a TOTP Factor, the code in `AuthPayload` expired before the request was processed. The default `Config.TimeStep` is 30 seconds.\n* The authenticator app was not set up with the correct seed, or it is generating codes with settings that do not match the Factor configuration.\n* You changed TOTP settings such as `Config.CodeLength` or `Config.TimeStep`, and the authenticator app being used does not support those settings.",
    "solutions": "* Send a new verification request with the latest value in `AuthPayload`.\n* For TOTP enrollment, make sure the user scanned the correct QR code or entered the seed correctly before retrying verification.\n* Retry immediately with a fresh TOTP code if the previous code may have expired.\n* Verify that your authenticator app supports the Factor configuration you created. If you use non-default TOTP settings, confirm the app can generate codes with those values.\n* If the Factor remains `unverified`, create a new Factor and restart enrollment.\n* If you are integrating Verify TOTP, check the returned Factor `status` after updating the Factor. For current TOTP behavior, an incorrect `AuthPayload` leaves the Factor in `unverified` instead of returning an error.",
    "description": "Verify returns this error when a Factor verification request fails during enrollment. This usually means the verification request did not prove possession of the Factor, so the Factor could not move from `unverified` to `verified`.",
    "date_created": "2020-06-30T17:03:06Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60312,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Challenge creation limit reached",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe maximum number of Challenge creations for a Factor has been reached.\n\nMax. number of attempts for a Factor with `Config.CodeLength` less or equal to 4: 10 every 24 hours.\n\nMax. number of attempts for a Factor with `Config.CodeLength` greater or equal to 5: 50 every hour, and up to 100 every 24 hours.\n\nHTTP status: 429\n\n### Possible causes\n\nToo many Challenges created within a time period.\n\n### Possible solutions\n\n- Create a new Factor and verify it. Then create new Challenges under the new Factor.\n- Depending on the Factor's `Config.CodeLength` parameter, await rate limit cooldown period between 1 hour and 24 hours.\n",
    "causes": "Too many Challenges created within a time period.",
    "solutions": "* Create a new Factor and verify it. Then create new Challenges under the new Factor.\n* Depending on the Factor's `Config.CodeLength` parameter, await rate limit cooldown period between 1 hour and 24 hours.",
    "description": "The maximum number of Challenge creations for a Factor has been reached. Max. number of attempts for a Factor with `Config.CodeLength` less or equal to 4: 10 every 24 hours. Max. number of attempts for a Factor with `Config.CodeLength` greater or equal to 5: 50 every hour, and up to 100 every 24 hours. HTTP status: 429",
    "date_created": "2021-05-21T16:36:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60313,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unauthorized factor creation",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou are not authorized to create a Factor.\n\nHTTP status: 403\n\n### Possible causes\n\nYou do not have the permissions required to create a Factor.\n\n### Possible solutions\n\nRequest permissions.\n",
    "causes": "You do not have the permissions required to create a Factor.",
    "solutions": "Request permissions.",
    "description": "You are not authorized to create a Factor. HTTP status: 403",
    "date_created": "2020-06-30T17:04:43Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60314,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factors binding format is invalid",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe format of the Factor binding is not valid.\n\nHTTP status: 400\n\n### Possible causes\n\nThe `Public Key` might be invalid.\n\n### Possible solutions\n\nMake sure that the `Public Key` and `Algorithm` are correct.\n",
    "causes": "The `Public Key` might be invalid.",
    "solutions": "Make sure that the `Public Key` and `Algorithm` are correct.",
    "description": "The format of the Factor binding is not valid. HTTP status: 400",
    "date_created": "2020-06-30T17:08:13Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60315,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Reached max limit of 20 push Factors associated per Entity",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\n- Reached max limit of 20 Factors of `FactorType` = `push` per Entity.\n- Reached max limit of 100 Factors of `FactorType` = `totp` per Entity.\n\nHTTP status: 400\n\n### Possible causes\n\n- You already have 20 `push` Factors created for the Entity.\n- You already have 100 `totp` Factors created for the Entity.\n\n### Possible solutions\n\nDelete one of the existing Factors of the same `FactorType` to create a new one.\n",
    "causes": "* You already have 20 `push` Factors created for the Entity.\n* You already have 100 `totp` Factors created for the Entity.",
    "solutions": "Delete one of the existing Factors of the same `FactorType` to create a new one.",
    "description": "* Reached max limit of 20 Factors of `FactorType` = `push` per Entity.\n* Reached max limit of 100 Factors of `FactorType` = `totp` per Entity. HTTP status: 400",
    "date_created": "2020-06-30T17:09:54Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60317,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor already exists",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou are creating a Factor that already exists.\n\nHTTP status: 409\n\n### Possible causes\n\nYou are trying to create a Factor with the same binding parameters as an existing one.\n\n### Possible solutions\n\nCheck that the binding parameters are not the same as those in an existing Factor.\n",
    "causes": "You are trying to create a Factor with the same binding parameters as an existing one.",
    "solutions": "Check that the binding parameters are not the same as those in an existing Factor.",
    "description": "You are creating a Factor that already exists. HTTP status: 409",
    "date_created": "2020-06-30T17:14:44Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60318,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor is unverified",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error with HTTP 403 when your request uses a Verify `Factor` whose `status` is `unverified`. Verify `Factors` must be verified before you use them in authentication flows. Unverified Factors can also be deleted and become unverifiable 1 to 24 hours after creation.\n\n### Possible causes\n\n- You created a new TOTP `Factor`, but you did not complete the first-time verification step by sending a valid `authPayload`, so the `Factor` remained `unverified`.\n- You created a Push `Factor`, but the device enrollment flow did not complete the factor verification step in the Verify Push SDK flow.\n- You attempted to create or use a `Challenge` with a `factorSid` that points to a `Factor` that has not been verified yet.\n- The `Factor` stayed `unverified` long enough to age out, which can leave it deleted or no longer verifiable.\n\n### Possible solutions\n\n- Fetch the `Factor` and confirm its `status` is `verified` before you use it for authentication.\n- For TOTP, update the `Factor` with the latest `authPayload` from the authenticator app. If the code is correct, the `Factor` status changes to `verified`.\n- For Push, complete the Verify Push factor verification step in your device enrollment flow before you create a `Challenge`.\n- If the `Factor` is still `unverified` or has already aged out, create a new `Factor` and complete verification as soon as you create it.\n- If you manage multiple Factors for the same user, make sure your request uses the correct `factorSid` for the verified Factor you intend to challenge.\n\n#### Additional resources\n\n- [Factor Resource](/docs/verify/api/factor)\n- [Verify TOTP Quickstart](/docs/verify/quickstarts/totp)\n- [Verify Push & Silent Device Approval Overview](/docs/verify/push)\n",
    "causes": "* You created a new TOTP `Factor`, but you did not complete the first-time verification step by sending a valid `authPayload`, so the `Factor` remained `unverified`.\n* You created a Push `Factor`, but the device enrollment flow did not complete the factor verification step in the Verify Push SDK flow.\n* You attempted to create or use a `Challenge` with a `factorSid` that points to a `Factor` that has not been verified yet.\n* The `Factor` stayed `unverified` long enough to age out, which can leave it deleted or no longer verifiable.",
    "solutions": "* Fetch the `Factor` and confirm its `status` is `verified` before you use it for authentication.\n* For TOTP, update the `Factor` with the latest `authPayload` from the authenticator app. If the code is correct, the `Factor` status changes to `verified`.\n* For Push, complete the Verify Push factor verification step in your device enrollment flow before you create a `Challenge`.\n* If the `Factor` is still `unverified` or has already aged out, create a new `Factor` and complete verification as soon as you create it.\n* If you manage multiple Factors for the same user, make sure your request uses the correct `factorSid` for the verified Factor you intend to challenge.",
    "description": "Twilio returns this error with HTTP 403 when your request uses a Verify `Factor` whose `status` is `unverified`. Verify `Factors` must be verified before you use them in authentication flows. Unverified Factors can also be deleted and become unverifiable 1 to 24 hours after creation.",
    "date_created": "2020-06-30T21:31:32Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60322,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Challenge already responded",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe Challenge was already responded before.\n\nHTTP status: 403\n\n### Possible causes\n\nThis Challenge already have a previous response.\n\n### Possible solutions\n\nCreate a new Challenge.\n",
    "causes": "This Challenge already have a previous response.",
    "solutions": "Create a new Challenge.",
    "description": "The Challenge was already responded before. HTTP status: 403",
    "date_created": "2020-06-30T21:34:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60323,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Challenge expired",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify Challenge expires before it is approved or verified. Twilio returns HTTP 403. Challenges are used with `push` and `totp` factors. A Challenge expires at `expirationDate`. If you do not set `expirationDate`, Twilio sets it to five minutes after creation. You can set `expirationDate` to at most 60 minutes after creation.\n\n### Possible causes\n\n- The user did not respond to the Challenge before `expirationDate`.\n- Your application used the default Challenge lifetime and the user needed more than five minutes to approve or verify it.\n- Your application tried to verify a Challenge after its status had already changed from `pending` to `expired`.\n- For a `push` Challenge, the device did not receive or surface the approval request in time.\n- For a `totp` Challenge, the code in `authPayload` was submitted after the Challenge had already expired.\n\n### Possible solutions\n\n- Create a new Challenge and ask the user to approve or verify the new request.\n- If your approval flow needs more time, set `expirationDate` when you create the Challenge. Keep the value within 60 minutes of creation.\n- Check the Challenge status before prompting the user to respond. If the status is `expired`, stop the current flow and create a new Challenge.\n- For `push` flows, implement polling for pending Challenges when the app opens. Use push notifications as an added convenience, not as the only way the app learns about a new Challenge.\n- If a user does not receive the first push notification and the Challenge is still valid, request another notification for the same Challenge with the Notifications resource. If the Challenge has already expired, create a new Challenge instead.\n- For `totp` flows, prompt the user to enter the code immediately and create a new Challenge if the current one has expired.\n\n#### Additional resources\n\n- [Challenge resource](/docs/verify/api/challenge)\n- [Notifications resource](/docs/verify/api/notifications-resource)\n- [Verify Push and Silent Device Approval Best Practices for Production use](/docs/verify/push/best-practices)\n",
    "causes": "* The user did not respond to the Challenge before `expirationDate`.\n* Your application used the default Challenge lifetime and the user needed more than five minutes to approve or verify it.\n* Your application tried to verify a Challenge after its status had already changed from `pending` to `expired`.\n* For a `push` Challenge, the device did not receive or surface the approval request in time.\n* For a `totp` Challenge, the code in `authPayload` was submitted after the Challenge had already expired.",
    "solutions": "* Create a new Challenge and ask the user to approve or verify the new request.\n* If your approval flow needs more time, set `expirationDate` when you create the Challenge. Keep the value within 60 minutes of creation.\n* Check the Challenge status before prompting the user to respond. If the status is `expired`, stop the current flow and create a new Challenge.\n* For `push` flows, implement polling for pending Challenges when the app opens. Use push notifications as an added convenience, not as the only way the app learns about a new Challenge.\n* If a user does not receive the first push notification and the Challenge is still valid, request another notification for the same Challenge with the Notifications resource. If the Challenge has already expired, create a new Challenge instead.\n* For `totp` flows, prompt the user to enter the code immediately and create a new Challenge if the current one has expired.",
    "description": "This error occurs when a Verify Challenge expires before it is approved or verified. Twilio returns HTTP 403. Challenges are used with `push` and `totp` factors. A Challenge expires at `expirationDate`. If you do not set `expirationDate`, Twilio sets it to five minutes after creation. You can set `expirationDate` to at most 60 minutes after creation.",
    "date_created": "2020-06-30T21:42:23Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60324,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Challenge verification failed",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nVerification attempt was unsuccessful, AuthPayload is invalid.\n\nHTTP status: 403\n\n### Possible causes\n\n- For a Push Challenge, the signature in AuthPayload is invalid.\n- For a TOTP Challenge, the OTP code in AuthPayload is invalid.\n\n### Possible solutions\n\n- For a Push Challenge, check the signature sent in AuthPayload and retry.\n- For a TOTP Challenge, check the OTP code sent in AuthPayload and retry.\n",
    "causes": "* For a Push Challenge, the signature in AuthPayload is invalid.\n* For a TOTP Challenge, the OTP code in AuthPayload is invalid.",
    "solutions": "* For a Push Challenge, check the signature sent in AuthPayload and retry.\n* For a TOTP Challenge, check the OTP code sent in AuthPayload and retry.",
    "description": "Verification attempt was unsuccessful, AuthPayload is invalid. HTTP status: 403",
    "date_created": "2020-06-30T21:45:43Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60325,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Translation for locale not found, using default",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe template you are using does not have the translation with the locale you specified.\n\n### Possible causes\n\nThe translation might not exist.\n\n### Possible solutions\n\nIf you want to add more translations, please contact support.\n",
    "causes": "The translation might not exist.",
    "solutions": "If you want to add more translations, please contact support.",
    "description": "The template you are using does not have the translation with the locale you specified.",
    "date_created": "2021-10-16T15:11:12Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60326,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Too many requests to create factors for the entity",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\n- Too many requests to create factors for the entity\n\nHTTP status: 429\n\n### Possible causes\n\n- This entity tried to create more than 100 factors per day\n\n### Possible solutions\n\nTry again 24h later\n",
    "causes": "* This entity tried to create more than 100 factors per day",
    "solutions": "Try again 24h later",
    "description": "* Too many requests to create factors for the entity HTTP status: 429",
    "date_created": "2022-02-16T18:37:04Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60327,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Channel not supported by template; Verify falling back to static message",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis warning appears when you start a verification with a template that does not support the requested channel. Verify sends the verification with the Verify Default template for that channel instead. Pre-approved and custom templates support only SMS and Voice.\n\n### Possible causes\n\n- The selected pre-approved or custom template does not support the channel you used for the verification request. Pre-approved and custom templates are supported only with SMS and Voice.\n- The template's `channels` property does not include the channel you requested.\n- Verify Templates are not enabled for your account, so Verify falls back to the Verify Default template for the selected channel.\n\n### Possible solutions\n\n- In Console, open your Verify Service and check the Message preview. Use only templates that show the SMS and or Call icons for the channel you want to send.\n- If you send verifications through the API, list available templates first and confirm that the template `channels` array includes your requested channel before you pass `TemplateSid`.\n- Use the Verify Default template when you need to send over a channel that your selected template does not support. The Verify Default template supports SMS, Voice, and WhatsApp.\n- If the available templates do not fit your use case, request a custom template and use it only on supported channels.\n\n#### Additional resources\n\n- [Getting Started with Verification Templates](/docs/verify/verification-templates)\n- [Templates API](/docs/verify/api/templates)\n- [Verifications API](/docs/verify/api/verification/)\n",
    "causes": "* The selected pre-approved or custom template does not support the channel you used for the verification request. Pre-approved and custom templates are supported only with SMS and Voice.\n* The template's `channels` property does not include the channel you requested.\n* Verify Templates are not enabled for your account, so Verify falls back to the Verify Default template for the selected channel.",
    "solutions": "* In Console, open your Verify Service and check the Message preview. Use only templates that show the SMS and or Call icons for the channel you want to send.\n* If you send verifications through the API, list available templates first and confirm that the template `channels` array includes your requested channel before you pass `TemplateSid`.\n* Use the Verify Default template when you need to send over a channel that your selected template does not support. The Verify Default template supports SMS, Voice, and WhatsApp.\n* If the available templates do not fit your use case, request a custom template and use it only on supported channels.",
    "description": "This warning appears when you start a verification with a template that does not support the requested channel. Verify sends the verification with the Verify Default template for that channel instead. Pre-approved and custom templates support only SMS and Voice.",
    "date_created": "2023-11-17T12:43:56Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 60328,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Entities rate limit exceeded",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nExceeded the rate limit of entities created per account per second\n\n### Possible causes\n\n- More than 40 entities were created within the last second\n\n### Possible solutions\n\n- Lower the rate at which entities are being created\n- Keep in mind that this could also happen while using the create factor endpoint\n- Verify that your application is not misbehaving and the load is expected. If everything is as expected then contact Customer Support to review your use case and limits\n",
    "causes": "* More than 40 entities were created within the last second",
    "solutions": "* Lower the rate at which entities are being created\n* Keep in mind that this could also happen while using the create factor endpoint\n* Verify that your application is not misbehaving and the load is expected. If everything is as expected then contact Customer Support to review your use case and limits",
    "description": "Exceeded the rate limit of entities created per account per second",
    "date_created": "2024-05-30T18:21:59Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60329,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verify SNA does not work with `psd2_enabled`",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe Silent Network Auth channel does not work when `psd2_nabled` is set to `true` for a Verify `Service`.\n\n### Possible causes\n\n- Attempting to create a `Verification` with `channel` set to `sna` under a Verify `Service` with `psd2_enabled` set to `true`.\n\n### Possible solutions\n\n- Do not use `sna` channel for a Verify `Service` with `psd2_enabled` set to `true`.\n",
    "causes": "* Attempting to create a `Verification` with `channel` set to `sna` under a Verify `Service` with `psd2_enabled` set to `true`.",
    "solutions": "* Do not use `sna` channel for a Verify `Service` with `psd2_enabled` set to `true`.",
    "description": "The Silent Network Auth channel does not work when `psd2_nabled` is set to `true` for a Verify `Service`.",
    "date_created": "2022-07-11T19:05:18Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60330,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to invoke the webhook",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nHTTP status: 400\n\n### Possible causes\n\n- Unable to access the `webhook` **URL**\n- The `webhook` is allowing **HTTP** requests other than **`POST`**\n- The `webhook` is responding with a status code other than **200** (OK)\n\n### Possible solutions\n\n- Make sure the `webhook` **URL** is reachable\n- Remember the `webhook` must allow **HTTP `POST`** requests\n- Make sure the `webhook` is responding with status code **200** when everything is going well\n",
    "causes": "* Unable to access the `webhook` **URL**\n* The `webhook` is allowing **HTTP** requests other than **`POST`**\n* The `webhook` is responding with a status code other than **200** (OK)",
    "solutions": "* Make sure the `webhook` **URL** is reachable\n* Remember the `webhook` must allow **HTTP `POST`** requests\n* Make sure the `webhook` is responding with status code **200** when everything is going well",
    "description": "HTTP status: 400",
    "date_created": "2020-07-27T15:07:28Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60331,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Locale requested is not supported by Verify Text-To-Speech conversion",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Verify request includes a `locale` for voice delivery that Twilio cannot convert with Text-to-Speech. For Verify `call` channel verifications, Twilio can resolve the language automatically from the destination phone number. If you send an unsupported `locale` override, update it to a supported value or remove it so Twilio can apply the default language selection and fallback behavior.\n\n### Possible causes\n\n- Your Verification request included a `locale` override that is not supported for Verify voice delivery.\n- The `locale` value does not match a supported Verify language tag for the Voice channel.\n- The requested spoken locale is not available for Twilio Text-to-Speech. Twilio requires supported language values for synthesized speech.\n- If you use a pre-approved template, the requested language is not available for that template. Pre-approved templates support only a subset of Verify languages.\n- If you use a custom template, the required translation for the requested locale has not been provided.\n\n### Possible solutions\n\n- Remove the `locale` parameter and retry the verification. Twilio will resolve the language from the phone number country code and fall back to English or the template default translation when needed.\n- Set `locale` to a supported value from the Verify supported languages list. For voice delivery, confirm that the locale is available for the Voice channel.\n- If you need a specific spoken locale, verify that Twilio Text-to-Speech supports that language and locale before you send the verification.\n- If you use a pre-approved or custom template, confirm that the template type supports the requested locale and that the required translations are available.\n\n#### Additional resources\n\n- [Verify supported languages](/docs/verify/supported-languages)\n- [Verifications API reference](/docs/verify/api/verification)\n- [Text-to-Speech (TTS)](/docs/voice/twiml/say/text-speech)\n",
    "causes": "* Your Verification request included a `locale` override that is not supported for Verify voice delivery.\n* The `locale` value does not match a supported Verify language tag for the Voice channel.\n* The requested spoken locale is not available for Twilio Text-to-Speech. Twilio requires supported language values for synthesized speech.\n* If you use a pre-approved template, the requested language is not available for that template. Pre-approved templates support only a subset of Verify languages.\n* If you use a custom template, the required translation for the requested locale has not been provided.",
    "solutions": "* Remove the `locale` parameter and retry the verification. Twilio will resolve the language from the phone number country code and fall back to English or the template default translation when needed.\n* Set `locale` to a supported value from the Verify supported languages list. For voice delivery, confirm that the locale is available for the Voice channel.\n* If you need a specific spoken locale, verify that Twilio Text-to-Speech supports that language and locale before you send the verification.\n* If you use a pre-approved or custom template, confirm that the template type supports the requested locale and that the required translations are available.",
    "description": "Twilio returns this error when your Verify request includes a `locale` for voice delivery that Twilio cannot convert with Text-to-Speech. For Verify `call` channel verifications, Twilio can resolve the language automatically from the destination phone number. If you send an unsupported `locale` override, update it to a supported value or remove it so Twilio can apply the default language selection and fallback behavior.",
    "date_created": "2022-08-17T20:42:49Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60333,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "The SMS message was sent using a brandless template.",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe SMS message was sent using a brandless template, instead of the template that you configured, which contains a friendly name (brand).\n\n### Possible causes\n\nDue to mobile carrier regulations, Verify needs to remove the friendly name from the message body. This is due to compliance, and our best-effort to ensure delivery of your OTP to certain restricted destinations.\n\n### Possible solutions\n\nConfigure a dedicated Sender ID or phone number to send messages, instead of using a shared one.\n\nTo learn more, see [Why was my friendly name not included in the Verify SMS?](https://support.twilio.com/hc/en-us/articles/12387480513307-Why-was-my-friendly-name-not-included-in-the-Verify-SMS-)\n",
    "causes": "Due to mobile carrier regulations, Verify needs to remove the friendly name from the message body. This is due to compliance, and our best-effort to ensure delivery of your OTP to certain restricted destinations.",
    "solutions": "Configure a dedicated Sender ID or phone number to send messages, instead of using a shared one. To learn more, see [Why was my friendly name not included in the Verify SMS?](https://support.twilio.com/hc/en-us/articles/12387480513307-Why-was-my-friendly-name-not-included-in-the-Verify-SMS-)",
    "description": "The SMS message was sent using a brandless template, instead of the template that you configured, which contains a friendly name (brand).",
    "date_created": "2023-01-27T16:26:17Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60334,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "The SMS message was sent using a brandful template.",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe SMS message was sent using a brandful template instead of the configured template, which does not contain a friendly name (brand).\n\n### Possible causes\n\nDue to mobile carrier regulations, Verify needs to add the friendly name from the message body.\n\n### Possible solutions\n\nConfigure or use a dedicated template that includes the friendly name.\n",
    "causes": "Due to mobile carrier regulations, Verify needs to add the friendly name from the message body.",
    "solutions": "Configure or use a dedicated template that includes the friendly name.",
    "description": "The SMS message was sent using a brandful template instead of the configured template, which does not contain a friendly name (brand).",
    "date_created": "2024-05-09T22:41:18Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60335,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "The SMS message was sent using a brandless template.",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe SMS message was sent using a brandless template instead of the template that you configured, which contains a Friendly Name (brand) configured in the Verify Service.\n\n### Possible causes\n\nThe Friendly Name that you have configured contains restricted words\n\n### Possible solutions\n\nContact support if you would like to request an exemption. To learn more, see Why was my friendly name not included in the Verify SMS?\n",
    "causes": "The Friendly Name that you have configured contains restricted words",
    "solutions": "Contact support if you would like to request an exemption. To learn more, see Why was my friendly name not included in the Verify SMS?",
    "description": "The SMS message was sent using a brandless template instead of the template that you configured, which contains a Friendly Name (brand) configured in the Verify Service.",
    "date_created": "2025-11-20T18:22:08.455Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60361,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account SID is invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returned this error because the request did not include a valid Account SID, or the Account SID format was invalid. This error usually occurs when you send a Verify API request with a missing account identifier, a malformed `AC...` value, or credentials that do not match the account you are trying to access.\n\n### Possible causes\n\n- The request did not include an Account SID.\n- The Account SID value is malformed or does not start with `AC`.\n- The Account SID contains extra whitespace, truncated characters, or an invalid length.\n- The request used credentials from a different Twilio account than the one that owns the Verify resource.\n- An environment variable or application secret that stores the Account SID is empty or incorrectly configured.\n- The request mixed a valid API key or auth token with the wrong Account SID.\n\n### Possible solutions\n\n- Confirm that your request includes the correct Account SID for the Twilio account that owns the Verify resource.\n- Verify that the Account SID is formatted correctly and starts with `AC`.\n- Check your application configuration, environment variables, and secret management system to make sure the Account SID is present and not blank.\n- Remove any leading or trailing spaces from the Account SID before sending the request.\n- If you use API keys, make sure the API key, secret, and Account SID all belong to the same Twilio account.\n- Test the same credentials with a known good Verify API request to confirm the account information is valid.\n- If you manage multiple Twilio accounts or subaccounts, make sure you are using the correct Account SID for the target account.\n\n#### Additional resources\n\n- [Twilio credentials and API authentication](/docs/iam/api)\n- [Verify documentation](/docs/verify)\n",
    "causes": "* The request did not include an Account SID.\n* The Account SID value is malformed or does not start with `AC`.\n* The Account SID contains extra whitespace, truncated characters, or an invalid length.\n* The request used credentials from a different Twilio account than the one that owns the Verify resource.\n* An environment variable or application secret that stores the Account SID is empty or incorrectly configured.\n* The request mixed a valid API key or auth token with the wrong Account SID.",
    "solutions": "* Confirm that your request includes the correct Account SID for the Twilio account that owns the Verify resource.\n* Verify that the Account SID is formatted correctly and starts with `AC`.\n* Check your application configuration, environment variables, and secret management system to make sure the Account SID is present and not blank.\n* Remove any leading or trailing spaces from the Account SID before sending the request.\n* If you use API keys, make sure the API key, secret, and Account SID all belong to the same Twilio account.\n* Test the same credentials with a known good Verify API request to confirm the account information is valid.\n* If you manage multiple Twilio accounts or subaccounts, make sure you are using the correct Account SID for the target account.",
    "description": "Twilio returned this error because the request did not include a valid Account SID, or the Account SID format was invalid. This error usually occurs when you send a Verify API request with a missing account identifier, a malformed `AC...` value, or credentials that do not match the account you are trying to access.",
    "date_created": "2023-12-13T09:48:07Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60362,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor SID invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify request that requires `factorSid` or a Factor `{Sid}` does not include a valid Factor SID. Factor SIDs are 34-character identifiers that start with `YF`, and `factorSid` is required when you create a Challenge for a user's Factor.\n\n### Possible causes\n\n- You did not send `factorSid` in a request that creates a Challenge.\n- You did not send the Factor `{Sid}` path parameter when you fetched, updated, or otherwise addressed a specific Factor resource.\n- The value you sent does not match the expected Factor SID pattern `^YF[0-9a-fA-F]{32}$`.\n- You are creating a TOTP verification attempt for a user with multiple factors and did not provide the intended `factorSid`.\n- You no longer have the Factor SID that was returned when the Factor was created.\n\n### Possible solutions\n\n- Send `factorSid` in requests that create a Challenge. Send the Factor `{Sid}` path parameter in requests that address a specific Factor resource.\n- Verify that the SID starts with `YF` and is exactly 34 characters long before you send the request.\n- Use the Factor SID returned when you create the Factor.\n- If you do not have the Factor SID, list the Factors for the user's Entity and select the correct one before retrying the request.\n- If a user can have multiple TOTP factors, store the intended `factorSid` and send that specific value when you create the Verification Attempt.\n\n#### Additional resources\n\n- [Factor Resource](/docs/verify/api/factor)\n- [Challenge Resource](/docs/verify/api/challenge)\n- [Verify TOTP Quickstart](/docs/verify/quickstarts/totp)\n",
    "causes": "* You did not send `factorSid` in a request that creates a Challenge.\n* You did not send the Factor `{Sid}` path parameter when you fetched, updated, or otherwise addressed a specific Factor resource.\n* The value you sent does not match the expected Factor SID pattern `^YF[0-9a-fA-F]{32}$`.\n* You are creating a TOTP verification attempt for a user with multiple factors and did not provide the intended `factorSid`.\n* You no longer have the Factor SID that was returned when the Factor was created.",
    "solutions": "* Send `factorSid` in requests that create a Challenge. Send the Factor `{Sid}` path parameter in requests that address a specific Factor resource.\n* Verify that the SID starts with `YF` and is exactly 34 characters long before you send the request.\n* Use the Factor SID returned when you create the Factor.\n* If you do not have the Factor SID, list the Factors for the user's Entity and select the correct one before retrying the request.\n* If a user can have multiple TOTP factors, store the intended `factorSid` and send that specific value when you create the Verification Attempt.",
    "description": "This error occurs when a Verify request that requires `factorSid` or a Factor `{Sid}` does not include a valid Factor SID. Factor SIDs are 34-character identifiers that start with `YF`, and `factorSid` is required when you create a Challenge for a user's Factor.",
    "date_created": "2023-12-13T09:50:20Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60363,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Service SID invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\n60363 indicates that the Verify request did not include a valid Service SID. Verify requires a Service SID that identifies the Verify Service for the request. If the SID is missing, malformed, or does not match an existing Verify Service in your account, Twilio cannot process the request.\n\n### Possible causes\n\n- The request does not include the required Service SID.\n- The Service SID is misspelled or truncated.\n- The Service SID does not use the expected SID format for a Verify Service.\n- The request references a Verify Service that does not exist in the account or subaccount you are using.\n- The request is sent with Account SID and Auth Token credentials that do not have access to the specified Verify Service.\n\n### Possible solutions\n\n- Include the correct Verify Service SID in your request.\n- Confirm that the Service SID matches the Verify Service you want to use in the Twilio Console or your application configuration.\n- Check for formatting errors introduced by typos, whitespace, or copied values.\n- Verify that you are using credentials from the same account or subaccount that owns the Verify Service.\n- If you build the request URL dynamically, confirm that the Service SID is inserted correctly before sending the request.\n\n#### Additional resources\n\n- [/docs/verify/api](/docs/verify/api)\n- [/docs/verify/api/service](/docs/verify/api/service)\n- [Verify quickstarts](/docs/verify/quickstarts)\n",
    "causes": "* The request does not include the required Service SID.\n* The Service SID is misspelled or truncated.\n* The Service SID does not use the expected SID format for a Verify Service.\n* The request references a Verify Service that does not exist in the account or subaccount you are using.\n* The request is sent with Account SID and Auth Token credentials that do not have access to the specified Verify Service.",
    "solutions": "* Include the correct Verify Service SID in your request.\n* Confirm that the Service SID matches the Verify Service you want to use in the Twilio Console or your application configuration.\n* Check for formatting errors introduced by typos, whitespace, or copied values.\n* Verify that you are using credentials from the same account or subaccount that owns the Verify Service.\n* If you build the request URL dynamically, confirm that the Service SID is inserted correctly before sending the request.",
    "description": "60363 indicates that the Verify request did not include a valid Service SID. Verify requires a Service SID that identifies the Verify Service for the request. If the SID is missing, malformed, or does not match an existing Verify Service in your account, Twilio cannot process the request.",
    "date_created": "2023-12-13T09:52:58Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60364,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Challenge SID invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Verify request does not include a valid Challenge SID. Challenge resources are used by Verify Push and Verify TOTP, and the Challenge `sid` must be a `SID<YC>` value that starts with `YC` and contains 34 characters.\n\n### Possible causes\n\n- The request did not include the Challenge `sid`.\n- The value provided for the Challenge `sid` does not match the required format `^YC[0-9a-fA-F]{32}$`.\n- The request used the SID for a different resource, such as a Service, Entity, or Factor, instead of the Challenge `sid`.\n- The Challenge `sid` was truncated, altered, or stored incorrectly before the request was sent.\n\n### Possible solutions\n\n- Send the Challenge `sid` returned by the Challenge resource in the `sid` field.\n- Validate the SID before sending the request. Use a 34-character value with the `YC` prefix.\n- Confirm you are passing the Challenge SID in the correct path parameter for endpoints such as `/Services/{ServiceSid}/Entities/{Identity}/Challenges/{Sid}`.\n- Verify that the Challenge SID belongs to the same Verify Service and `Identity` you are using for the request.\n- If you approve challenges from your backend or client application, validate that you are sending the expected challenge SID for that action.\n\n#### Additional resources\n\n- [Challenge Resource](/docs/verify/api/challenge)\n- [Verify Push Client Library Technical Overview](/docs/verify/push/technical-overview)\n- [Verify TOTP Technical Overview](/docs/verify/totp/technical-overview)\n",
    "causes": "* The request did not include the Challenge `sid`.\n* The value provided for the Challenge `sid` does not match the required format `^YC[0-9a-fA-F]{32}$`.\n* The request used the SID for a different resource, such as a Service, Entity, or Factor, instead of the Challenge `sid`.\n* The Challenge `sid` was truncated, altered, or stored incorrectly before the request was sent.",
    "solutions": "* Send the Challenge `sid` returned by the Challenge resource in the `sid` field.\n* Validate the SID before sending the request. Use a 34-character value with the `YC` prefix.\n* Confirm you are passing the Challenge SID in the correct path parameter for endpoints such as `/Services/{ServiceSid}/Entities/{Identity}/Challenges/{Sid}`.\n* Verify that the Challenge SID belongs to the same Verify Service and `Identity` you are using for the request.\n* If you approve challenges from your backend or client application, validate that you are sending the expected challenge SID for that action.",
    "description": "Twilio returns this error when your Verify request does not include a valid Challenge SID. Challenge resources are used by Verify Push and Verify TOTP, and the Challenge `sid` must be a `SID<YC>` value that starts with `YC` and contains 34 characters.",
    "date_created": "2023-12-13T09:54:54Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60365,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Entity SID invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAn Entity in Verify represents a user or other identity that needs verification. This error occurs when your request references an Entity by SID and that value is missing or does not match the expected `SID<YE>` format.\n\n### Possible causes\n\n- The request did not include the required Entity SID.\n- The Entity SID is incorrectly formatted and does not match the expected `^YE[0-9a-fA-F]{32}$` pattern.\n- The request used a different identifier, such as the Entity `identity` value or another resource SID, instead of the Entity SID. Verify treats `sid` and `identity` as separate fields.\n\n### Possible solutions\n\n- Include the correct Entity SID in the request field required by the endpoint you are calling.\n- Verify that the SID starts with `YE`, is 34 characters long, and contains only hexadecimal characters after the prefix.\n- If you only have the Entity `identity`, create or fetch the Entity first and then use the returned `sid` value in requests that require an Entity SID.\n\n#### Additional resources\n\n- [Entity Resource](/docs/verify/api/entity)\n- [Factor Resource](/docs/verify/api/factor)\n- [Challenge Resource](/docs/verify/api/challenge)\n",
    "causes": "* The request did not include the required Entity SID.\n* The Entity SID is incorrectly formatted and does not match the expected `^YE[0-9a-fA-F]{32}$` pattern.\n* The request used a different identifier, such as the Entity `identity` value or another resource SID, instead of the Entity SID. Verify treats `sid` and `identity` as separate fields.",
    "solutions": "* Include the correct Entity SID in the request field required by the endpoint you are calling.\n* Verify that the SID starts with `YE`, is 34 characters long, and contains only hexadecimal characters after the prefix.\n* If you only have the Entity `identity`, create or fetch the Entity first and then use the returned `sid` value in requests that require an Entity SID.",
    "description": "An Entity in Verify represents a user or other identity that needs verification. This error occurs when your request references an Entity by SID and that value is missing or does not match the expected `SID<YE>` format.",
    "date_created": "2023-12-13T10:21:50Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60366,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Entity invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Verify request does not include a valid Entity identifier. In Verify, an Entity represents the user or identity being verified, and the required identifier must be provided in the format expected by the endpoint.\n\n### Possible causes\n\n- The request did not include `Identity` where the Verify endpoint requires it.\n- The `Identity` value is not valid for Verify. It must be 8 to 64 characters long and can contain only dash-separated alphanumeric characters.\n- The request used an `Identity` value that does not match the Entity for the Verify Service.\n- The request to an Entity, Factor, or Challenge endpoint omitted the required `{Identity}` path parameter.\n\n### Possible solutions\n\n- Add the required `Identity` value to the request. When you create an Entity, send `Identity` in the request body.\n- For Entity, Factor, and Challenge endpoints, include the correct `{Identity}` value in the request path.\n- Validate the Entity identifier before you send the request. Use an immutable identifier generated by your system, such as a UUID, GUID, or SID.\n- Make sure the identifier is 8 to 64 characters long and contains only dash-separated alphanumeric characters.\n- Reuse the same Entity identity for related Verify resources in the same Service.\n\n#### Additional resources\n\n- [Entity Resource](/docs/verify/api/entity)\n- [Factor Resource](/docs/verify/api/factor)\n- [Challenge Resource](/docs/verify/api/challenge)\n",
    "causes": "* The request did not include `Identity` where the Verify endpoint requires it.\n* The `Identity` value is not valid for Verify. It must be 8 to 64 characters long and can contain only dash-separated alphanumeric characters.\n* The request used an `Identity` value that does not match the Entity for the Verify Service.\n* The request to an Entity, Factor, or Challenge endpoint omitted the required `{Identity}` path parameter.",
    "solutions": "* Add the required `Identity` value to the request. When you create an Entity, send `Identity` in the request body.\n* For Entity, Factor, and Challenge endpoints, include the correct `{Identity}` value in the request path.\n* Validate the Entity identifier before you send the request. Use an immutable identifier generated by your system, such as a UUID, GUID, or SID.\n* Make sure the identifier is 8 to 64 characters long and contains only dash-separated alphanumeric characters.\n* Reuse the same Entity identity for related Verify resources in the same Service.",
    "description": "Twilio returns this error when your Verify request does not include a valid Entity identifier. In Verify, an Entity represents the user or identity being verified, and the required identifier must be provided in the format expected by the endpoint.",
    "date_created": "2023-12-13T10:23:51Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60367,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid entity identity",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n\n## Description\nThis error occurs when you send an `Identity` value for a Verify Entity that is missing or does not meet the required format. Use an immutable identifier generated by your system that is 8 to 64 characters long and contains only dash-separated alphanumeric characters.\n\n### Possible causes\n- The request did not include the Entity `Identity` value.\n- The `Identity` value is shorter than 8 characters or longer than 64 characters.\n- The `Identity` value contains characters other than letters, numbers, and dashes.\n- The request uses an Entity identifier that was not generated as a stable external user identifier, such as a UUID, GUID, or SID from your system.\n\n### Possible solutions\n- Include the Entity `Identity` value in the request. This value is required when you create an Entity and when you create or update a Push Factor for an Entity.\n- Replace the current value with an immutable identifier from your system, such as a UUID, GUID, or SID.\n- Verify that the `Identity` value is between 8 and 64 characters long and uses only dash-separated alphanumeric characters.\n- Do not use directly identifying information for `Identity`. Use a non-PII identifier instead.\n\n#### Additional resources\n- [Entity Resource](/docs/verify/api/entity)\n- [Factor Resource](/docs/verify/api/factor)\n- [Verify Push Client Library Technical Overview](/docs/verify/push/technical-overview)\n",
    "causes": "* The request did not include the Entity `Identity` value.\n* The `Identity` value is shorter than 8 characters or longer than 64 characters.\n* The `Identity` value contains characters other than letters, numbers, and dashes.\n* The request uses an Entity identifier that was not generated as a stable external user identifier, such as a UUID, GUID, or SID from your system.",
    "solutions": "* Include the Entity `Identity` value in the request. This value is required when you create an Entity and when you create or update a Push Factor for an Entity.\n* Replace the current value with an immutable identifier from your system, such as a UUID, GUID, or SID.\n* Verify that the `Identity` value is between 8 and 64 characters long and uses only dash-separated alphanumeric characters.\n* Do not use directly identifying information for `Identity`. Use a non-PII identifier instead.",
    "description": "This error occurs when you send an `Identity` value for a Verify Entity that is missing or does not meet the required format. Use an immutable identifier generated by your system that is 8 to 64 characters long and contains only dash-separated alphanumeric characters.",
    "date_created": "2023-12-19T11:29:59Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 60368,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Challenge details invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n\n## Description\nTwilio returns this error when a Verify Challenge request does not include valid `details`, or when the `details` payload does not match the expected structure for the Challenge being created. For push challenges, `details.message` is required and `details.fields` must follow the documented format and limits.\n\n### Possible causes\n- The request creates a push Challenge without `details.message`, which is required when `factor_type` is `push`.\n- The `details.fields` payload is not sent as a list of objects with `label` and `value` pairs.\n- One or more `details.fields` entries exceed the supported limits. Each `label` can be up to 36 characters, each `value` can be up to 128 characters, and you can send up to 20 fields.\n- The `details.message` value exceeds the supported maximum of 256 characters.\n- The request sends context in `hiddenDetails` but omits the user-facing `details` values needed for the Challenge. `hiddenDetails` is separate from the Challenge details shown to the end user.\n\n### Possible solutions\n- If you are creating a push Challenge, include `details.message` in the request body. Use it for the message shown when the push notification arrives.\n- If you send `details.fields`, structure each item as a field object with `label` and `value`. Match the Create a Challenge request format shown in the API reference.\n- Keep all Challenge detail values within the documented limits. Limit `details.message` to 256 characters, each field `label` to 36 characters, each field `value` to 128 characters, and the total number of fields to 20.\n- Send `hiddenDetails` only for context that should not be shown to the user. Put user-facing challenge content in `details`.\n- Compare your request against the Verify Challenge creation examples and update your request body so the parameter names and payload shape match the documented API.\n\n#### Additional resources\n- [Challenge Resource](/docs/verify/api/challenge)\n- [Verify Push & Silent Device Approval Overview](/docs/verify/push)\n- [Verify Push Client Library Technical Overview](/docs/verify/push/technical-overview)\n",
    "causes": "* The request creates a push Challenge without `details.message`, which is required when `factor_type` is `push`.\n* The `details.fields` payload is not sent as a list of objects with `label` and `value` pairs.\n* One or more `details.fields` entries exceed the supported limits. Each `label` can be up to 36 characters, each `value` can be up to 128 characters, and you can send up to 20 fields.\n* The `details.message` value exceeds the supported maximum of 256 characters.\n* The request sends context in `hiddenDetails` but omits the user-facing `details` values needed for the Challenge. `hiddenDetails` is separate from the Challenge details shown to the end user.",
    "solutions": "* If you are creating a push Challenge, include `details.message` in the request body. Use it for the message shown when the push notification arrives.\n* If you send `details.fields`, structure each item as a field object with `label` and `value`. Match the Create a Challenge request format shown in the API reference.\n* Keep all Challenge detail values within the documented limits. Limit `details.message` to 256 characters, each field `label` to 36 characters, each field `value` to 128 characters, and the total number of fields to 20.\n* Send `hiddenDetails` only for context that should not be shown to the user. Put user-facing challenge content in `details`.\n* Compare your request against the Verify Challenge creation examples and update your request body so the parameter names and payload shape match the documented API.",
    "description": "Twilio returns this error when a Verify Challenge request does not include valid `details`, or when the `details` payload does not match the expected structure for the Challenge being created. For push challenges, `details.message` is required and `details.fields` must follow the documented format and limits.",
    "date_created": "2023-12-19T11:34:41Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 60369,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor type invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n\n## Description\nThis error occurs when your request to create or verify a Verify Factor or Challenge either omits the `factorType` parameter or includes a value that the endpoint does not support. For requests to `/v2/Services/{ServiceSid}/Entities/{Identity}`, valid values for `factorType` are `push` and `totp`. To create or verify passkey Factors or Challenges, use the endpoints at `/v2/Services/{ServiceSid}/Passkeys`.\n\n### Possible causes\n- The request body doesn't include the required `factorType` field.\n- The request includes an empty or unsupported `factorType` value for the standard Factor resource.\n- The request is trying to register a passkey by using the standard Factor endpoint instead of the Passkeys Factor endpoint.\n- The request attempts to verify a Passkey Factor by using the standard Factor update endpoint (`/v2/Services/{ServiceSid}/Entities/{Identity}/Factors/{FactorSid}`).\n- The request attempts to create a Challenge for a Passkey Factor by using the standard Challenge endpoint (`/v2/Services/{ServiceSid}/Entities/{Identity}/Challenges`).\n- The request attempts to approve a Passkey Challenge by using the standard Challenge update endpoint (`/v2/Services/{ServiceSid}/Entities/{Identity}/Challenges/{ChallengeSid}`).\n- The `FactorSid` or `ChallengeSid` value is malformed or doesn't belong to a known factor type.\n\n### Possible solutions\n- Add `factorType` to the request body and set it to a valid value for the standard Factor resource, such as `push` or `totp`.\n- If you are creating a passkey factor, send the request to `/v2/Services/{ServiceSid}/Passkeys/Factors` instead of `/v2/Services/{ServiceSid}/Entities/{Identity}/Factors`.\n- Verify a PasskeyFactor. Send the request to `/v2/Services/{ServiceSid}/Passkeys/VerifyFactor`.\n- Create a PasskeyChallenge by using `/v2/Services/{ServiceSid}/Passkeys/Challenges`.\n- Approve an existing PasskeyChallenge by using `/v2/Services/{ServiceSid}/Passkeys/ApproveChallenge`.\n- If you're creating a push factor, make sure the request includes the push-specific fields required for that factor type, including `binding.publicKey`, `config.appId`, `config.notificationToken`, and `config.sdkVersion`.\n- If you're creating a TOTP factor, follow the TOTP factor creation flow and include `factorType` with `friendlyName`. Add TOTP configuration fields only when you need to override the defaults.\n- Confirm that the `FactorSid` or `ChallengeSid` value exactly matches the value returned by the API.\n\n#### Additional resources\n- [Factor Resource API reference](/docs/verify/api/factor)\n- [Verify Push Technical Overview](/docs/verify/push/technical-overview)\n- [Verify TOTP Quickstart](/docs/verify/quickstarts/totp)\n",
    "causes": "* The request body doesn't include the required `factorType` field.\n* The request includes an empty or unsupported `factorType` value for the standard Factor resource.\n* The request is trying to register a passkey by using the standard Factor endpoint instead of the Passkeys Factor endpoint.\n* The request attempts to verify a Passkey Factor by using the standard Factor update endpoint (`/v2/Services/{ServiceSid}/Entities/{Identity}/Factors/{FactorSid}`).\n* The request attempts to create a Challenge for a Passkey Factor by using the standard Challenge endpoint (`/v2/Services/{ServiceSid}/Entities/{Identity}/Challenges`).\n* The request attempts to approve a Passkey Challenge by using the standard Challenge update endpoint (`/v2/Services/{ServiceSid}/Entities/{Identity}/Challenges/{ChallengeSid}`).\n* The `FactorSid` or `ChallengeSid` value is malformed or doesn't belong to a known factor type.",
    "solutions": "* Add `factorType` to the request body and set it to a valid value for the standard Factor resource, such as `push` or `totp`.\n* If you are creating a passkey factor, send the request to `/v2/Services/{ServiceSid}/Passkeys/Factors` instead of `/v2/Services/{ServiceSid}/Entities/{Identity}/Factors`.\n* Verify a PasskeyFactor. Send the request to `/v2/Services/{ServiceSid}/Passkeys/VerifyFactor`.\n* Create a PasskeyChallenge by using `/v2/Services/{ServiceSid}/Passkeys/Challenges`.\n* Approve an existing PasskeyChallenge by using `/v2/Services/{ServiceSid}/Passkeys/ApproveChallenge`.\n* If you're creating a push factor, make sure the request includes the push-specific fields required for that factor type, including `binding.publicKey`, `config.appId`, `config.notificationToken`, and `config.sdkVersion`.\n* If you're creating a TOTP factor, follow the TOTP factor creation flow and include `factorType` with `friendlyName`. Add TOTP configuration fields only when you need to override the defaults.\n* Confirm that the `FactorSid` or `ChallengeSid` value exactly matches the value returned by the API.",
    "description": "This error occurs when your request to create or verify a Verify Factor or Challenge either omits the `factorType` parameter or includes a value that the endpoint does not support. For requests to `/v2/Services/{ServiceSid}/Entities/{Identity}`, valid values for `factorType` are `push` and `totp`. To create or verify passkey Factors or Challenges, use the endpoints at `/v2/Services/{ServiceSid}/Passkeys`.",
    "date_created": "2023-12-19T11:36:56Z",
    "last_updated": "2026-10-23T14:37:41+01:00"
  },
  {
    "code": 60370,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor config invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n\n## Description\nThis error occurs when your Verify Factor request does not include a valid `config` value for the selected `factorType`. Send the `config` fields that match the factor you are creating or updating. For Push factors, Verify expects required configuration fields such as `config.appId`, `config.notificationPlatform`, `config.notificationToken`, and `config.sdkVersion`. For TOTP factors, any `config` values you send must stay within the documented ranges. For Passkeys factors, send a valid passkey configuration object.\n\n### Possible causes\n- The request did not include a `config` value for a Factor request that requires it.\n- The `config` fields do not match the selected `factorType`.\n- A Push factor request is missing one or more required fields such as `config.appId`, `config.notificationPlatform`, `config.notificationToken`, or `config.sdkVersion`.\n- A Push factor request includes an invalid `config.notificationPlatform` value or a `config.notificationToken` that is shorter than 32 characters or longer than 255 characters.\n- A TOTP factor request includes an out-of-range value for `config.timeStep`, `config.skew`, or `config.codeLength`.\n- A TOTP factor request includes an unsupported `config.alg` value.\n- A Passkeys factor request includes an invalid or incomplete passkey configuration, such as missing or invalid relying party settings or unsupported authenticator preference values.\n\n### Possible solutions\n- Review the request for your selected `factorType` and send only the supported `config` fields for that factor.\n- For Push factors, include valid values for `config.appId`, `config.notificationPlatform`, `config.notificationToken`, and `config.sdkVersion`.\n- For Push factors, use one of the supported notification platform values and verify that `config.notificationToken` is between 32 and 255 characters long.\n- For TOTP factors, keep `config.timeStep` between 20 and 60, `config.skew` between 0 and 2, and `config.codeLength` between 3 and 8.\n- For TOTP factors, use a supported `config.alg` value such as `sha1`, `sha256`, or `sha512`.\n- For Passkeys factors, send a valid passkey `config` object with supported relying party and authenticator settings.\n- Compare your request with the Verify API examples and confirm that your parameter names and structure match the documented request format.\n\n#### Additional resources\n- [Factor Resource](/docs/verify/api/factor)\n- [Passkeys Factor Resource](/docs/verify/api/passkeys-factor)\n- [Verify TOTP Overview](/docs/verify/totp)\n",
    "causes": "* The request did not include a `config` value for a Factor request that requires it.\n* The `config` fields do not match the selected `factorType`.\n* A Push factor request is missing one or more required fields such as `config.appId`, `config.notificationPlatform`, `config.notificationToken`, or `config.sdkVersion`.\n* A Push factor request includes an invalid `config.notificationPlatform` value or a `config.notificationToken` that is shorter than 32 characters or longer than 255 characters.\n* A TOTP factor request includes an out-of-range value for `config.timeStep`, `config.skew`, or `config.codeLength`.\n* A TOTP factor request includes an unsupported `config.alg` value.\n* A Passkeys factor request includes an invalid or incomplete passkey configuration, such as missing or invalid relying party settings or unsupported authenticator preference values.",
    "solutions": "* Review the request for your selected `factorType` and send only the supported `config` fields for that factor.\n* For Push factors, include valid values for `config.appId`, `config.notificationPlatform`, `config.notificationToken`, and `config.sdkVersion`.\n* For Push factors, use one of the supported notification platform values and verify that `config.notificationToken` is between 32 and 255 characters long.\n* For TOTP factors, keep `config.timeStep` between 20 and 60, `config.skew` between 0 and 2, and `config.codeLength` between 3 and 8.\n* For TOTP factors, use a supported `config.alg` value such as `sha1`, `sha256`, or `sha512`.\n* For Passkeys factors, send a valid passkey `config` object with supported relying party and authenticator settings.\n* Compare your request with the Verify API examples and confirm that your parameter names and structure match the documented request format.",
    "description": "This error occurs when your Verify Factor request does not include a valid `config` value for the selected `factorType`. Send the `config` fields that match the factor you are creating or updating. For Push factors, Verify expects required configuration fields such as `config.appId`, `config.notificationPlatform`, `config.notificationToken`, and `config.sdkVersion`. For TOTP factors, any `config` values you send must stay within the documented ranges. For Passkeys factors, send a valid passkey configuration object.",
    "date_created": "2023-12-19T11:39:12Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 60371,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Relying party invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Verify Passkeys request does not include a valid relying party configuration. The relying party identifies the application requesting passkey registration or authentication, and the request must send that configuration in the expected format.\n\n### Possible causes\n\n- The request omits the relying party configuration.\n- The `relying_party` object is malformed or does not follow the expected structure for `id`, `name`, and `origins`.\n- The Passkeys relying party ID is not sent as your application domain without a scheme or port.\n- The relying party origins are missing, incorrectly formatted, or do not match the server origins or App IDs your service accepts.\n\n### Possible solutions\n\n- Send the relying party configuration in the correct field for the endpoint you are calling. For a Passkeys factor request, provide it in `config.relying_party`. For a Verify Service request, provide the Passkeys relying party fields on the Service configuration.\n- Set `id` to your application domain, such as `example.com`, and do not include a scheme or port.\n- Set `name` to the app or website name you want authenticators to display during registration and authentication.\n- Set `origins` to the exact HTTPS origins or App IDs that your Passkeys flow should accept, and make sure they match the domains where passkeys are created and verified.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Verify Service API reference](/docs/verify/api/service)\n- [Passkeys Factor API reference](/docs/verify/api/passkeys-factor)\n",
    "causes": "* The request omits the relying party configuration.\n* The `relying_party` object is malformed or does not follow the expected structure for `id`, `name`, and `origins`.\n* The Passkeys relying party ID is not sent as your application domain without a scheme or port.\n* The relying party origins are missing, incorrectly formatted, or do not match the server origins or App IDs your service accepts.",
    "solutions": "* Send the relying party configuration in the correct field for the endpoint you are calling. For a Passkeys factor request, provide it in `config.relying_party`. For a Verify Service request, provide the Passkeys relying party fields on the Service configuration.\n* Set `id` to your application domain, such as `example.com`, and do not include a scheme or port.\n* Set `name` to the app or website name you want authenticators to display during registration and authentication.\n* Set `origins` to the exact HTTPS origins or App IDs that your Passkeys flow should accept, and make sure they match the domains where passkeys are created and verified.",
    "description": "Twilio returns this error when your Verify Passkeys request does not include a valid relying party configuration. The relying party identifies the application requesting passkey registration or authentication, and the request must send that configuration in the expected format.",
    "date_created": "2023-12-20T09:19:37Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60372,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Relying party id invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error appears when your Verify Passkeys request does not include a valid `Passkeys.RelyingParty.Id`. The Relying Party ID identifies your application during passkey registration and authentication, and Twilio expects it to be the application domain, expressed without a scheme or port.\n\n### Possible causes\n\n- Your request did not include `Passkeys.RelyingParty.Id`.\n- You sent the Relying Party ID in an invalid format, such as including `https://` or a port instead of only the origin domain.\n- The value in `Passkeys.RelyingParty.Id` is not the domain of your application.\n- Your Passkeys configuration does not include the correct accepted origins for your application in `Passkeys.RelyingParty.Origins`.\n\n### Possible solutions\n\n- Include `Passkeys.RelyingParty.Id` when you create or update your Verify Passkeys service configuration.\n- Set `Passkeys.RelyingParty.Id` to your application domain only, for example `example.com`. Do not include a scheme, path, or port.\n- Review `Passkeys.RelyingParty.Origins` and make sure it lists the HTTPS origins or app IDs that your service should accept.\n- When you test passkey registration or authentication in the browser, use the domain expected by `publicKey.rpid`.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Verify Passkeys technical overview](/docs/verify/passkeys/technical-overview)\n- [Verify Services API reference](/docs/verify/api/service)\n",
    "causes": "* Your request did not include `Passkeys.RelyingParty.Id`.\n* You sent the Relying Party ID in an invalid format, such as including `https://` or a port instead of only the origin domain.\n* The value in `Passkeys.RelyingParty.Id` is not the domain of your application.\n* Your Passkeys configuration does not include the correct accepted origins for your application in `Passkeys.RelyingParty.Origins`.",
    "solutions": "* Include `Passkeys.RelyingParty.Id` when you create or update your Verify Passkeys service configuration.\n* Set `Passkeys.RelyingParty.Id` to your application domain only, for example `example.com`. Do not include a scheme, path, or port.\n* Review `Passkeys.RelyingParty.Origins` and make sure it lists the HTTPS origins or app IDs that your service should accept.\n* When you test passkey registration or authentication in the browser, use the domain expected by `publicKey.rpid`.",
    "description": "This error appears when your Verify Passkeys request does not include a valid `Passkeys.RelyingParty.Id`. The Relying Party ID identifies your application during passkey registration and authentication, and Twilio expects it to be the application domain, expressed without a scheme or port.",
    "date_created": "2023-12-20T09:21:40Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60373,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid page size",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Verify request includes an invalid page size. If you send `PageSize`, use an integer between 1 and 25.\n\n### Possible causes\n\n- You sent `PageSize` with a value smaller than 1 or larger than 25.\n- You sent `PageSize` in a format Verify could not parse as a valid page size value.\n- You sent pagination parameters for a Verify endpoint without matching the parameter format that endpoint expects. Verify list endpoints use pagination parameters such as `PageSize` and `PageToken`.\n\n### Possible solutions\n\n- Set `PageSize` to a whole number from 1 through 25, then resend the request.\n- Remove `PageSize` if you do not need to override the default page size for that request. The error dictionary states this limit applies when the value is specified.\n- Check the API reference for the Verify endpoint you are calling and send pagination parameters exactly as that endpoint defines them before retrying the request.\n\n#### Additional resources\n\n- [Verify API overview](/docs/verify/api)\n- [Verifications API](/docs/verify/api/verification)\n",
    "causes": "* You sent `PageSize` with a value smaller than 1 or larger than 25.\n* You sent `PageSize` in a format Verify could not parse as a valid page size value.\n* You sent pagination parameters for a Verify endpoint without matching the parameter format that endpoint expects. Verify list endpoints use pagination parameters such as `PageSize` and `PageToken`.",
    "solutions": "* Set `PageSize` to a whole number from 1 through 25, then resend the request.\n* Remove `PageSize` if you do not need to override the default page size for that request. The error dictionary states this limit applies when the value is specified.\n* Check the API reference for the Verify endpoint you are calling and send pagination parameters exactly as that endpoint defines them before retrying the request.",
    "description": "Twilio returns this error when your Verify request includes an invalid page size. If you send `PageSize`, use an integer between 1 and 25.",
    "date_created": "2023-12-20T09:29:30Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60374,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid page token",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify list request includes a `pageToken` value that Twilio cannot parse. Verify list endpoints document `pageToken` as a value provided by the API, and Twilio SDKs can handle pagination automatically for list resources.\n\n### Possible causes\n\n- The request includes an incorrectly formatted `pageToken`.\n- The `pageToken` value was not taken from a previous Verify list response, even though Verify expects that value to be provided by the API.\n- Your application is manually building pagination requests instead of using a Twilio SDK that handles pagination for list resources.\n\n### Possible solutions\n\n- Remove the invalid `pageToken` and send the list request again without it to retrieve the first page of results.\n- If you need the next page, pass the `pageToken` exactly as returned by the previous Verify list response. Do not generate or edit the token yourself.\n- If you paginate manually, follow the `next_page_url` returned in the response instead of constructing pagination state yourself.\n- If you use a Twilio SDK, let the SDK manage pagination for Verify list resources.\n\n#### Additional resources\n\n- [Verify Services API](/docs/verify/api/service)\n- [Verification Attempts API](/docs/verify/api/attempts)\n- [Twilio API responses and pagination](/docs/usage/twilios-response)\n",
    "causes": "* The request includes an incorrectly formatted `pageToken`.\n* The `pageToken` value was not taken from a previous Verify list response, even though Verify expects that value to be provided by the API.\n* Your application is manually building pagination requests instead of using a Twilio SDK that handles pagination for list resources.",
    "solutions": "* Remove the invalid `pageToken` and send the list request again without it to retrieve the first page of results.\n* If you need the next page, pass the `pageToken` exactly as returned by the previous Verify list response. Do not generate or edit the token yourself.\n* If you paginate manually, follow the `next_page_url` returned in the response instead of constructing pagination state yourself.\n* If you use a Twilio SDK, let the SDK manage pagination for Verify list resources.",
    "description": "This error occurs when a Verify list request includes a `pageToken` value that Twilio cannot parse. Verify list endpoints document `pageToken` as a value provided by the API, and Twilio SDKs can handle pagination automatically for list resources.",
    "date_created": "2023-12-27T09:35:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60375,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid id",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send an invalid `id` value in a Verify Passkeys request. For Passkeys registration and authentication, Verify expects `id` in the JSON payload for `VerifyFactor` and `ApproveChallenge`. That value must be the `base64url`-encoded representation of the credential `rawId` from the browser-generated `PublicKeyCredential`.\n\n### Possible causes\n\n- The `id` value is not encoded as the required `base64url` representation of the credential `rawId`.\n- You modified the browser-generated `credential` object before sending it. In the Passkeys flow, create or fetch the credential in the browser, copy it, and pass that JSON object to the Verify endpoint for the current step.\n- The request payload does not match the expected Passkeys credential shape, including `id`, `rawId`, `type`, and the required `response` fields for the registration or authentication step.\n\n### Possible solutions\n\n- Pass the `id` value from the browser-generated `credential` object exactly as returned. Do not reformat or regenerate it before sending the request.\n- If you are registering a Passkey, send the copied browser `credential` object to `VerifyFactor` and include the required fields for that step, including `id`, `rawId`, `authenticatorAttachment`, `type`, `response.clientDataJSON`, and `response.attestationObject`.\n- If you are approving a Passkey authentication challenge, send the copied browser `credential` object to `ApproveChallenge` and confirm that `id` and `rawId` come from the `PublicKeyCredential` returned by `navigator.credentials.get()`.\n- Follow the Verify Passkeys quickstart flow so the credential is created in the browser, copied, and then posted to the correct Verify endpoint.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n- [Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n",
    "causes": "* The `id` value is not encoded as the required `base64url` representation of the credential `rawId`.\n* You modified the browser-generated `credential` object before sending it. In the Passkeys flow, create or fetch the credential in the browser, copy it, and pass that JSON object to the Verify endpoint for the current step.\n* The request payload does not match the expected Passkeys credential shape, including `id`, `rawId`, `type`, and the required `response` fields for the registration or authentication step.",
    "solutions": "* Pass the `id` value from the browser-generated `credential` object exactly as returned. Do not reformat or regenerate it before sending the request.\n* If you are registering a Passkey, send the copied browser `credential` object to `VerifyFactor` and include the required fields for that step, including `id`, `rawId`, `authenticatorAttachment`, `type`, `response.clientDataJSON`, and `response.attestationObject`.\n* If you are approving a Passkey authentication challenge, send the copied browser `credential` object to `ApproveChallenge` and confirm that `id` and `rawId` come from the `PublicKeyCredential` returned by `navigator.credentials.get()`.\n* Follow the Verify Passkeys quickstart flow so the credential is created in the browser, copied, and then posted to the correct Verify endpoint.",
    "description": "This error occurs when you send an invalid `id` value in a Verify Passkeys request. For Passkeys registration and authentication, Verify expects `id` in the JSON payload for `VerifyFactor` and `ApproveChallenge`. That value must be the `base64url`-encoded representation of the credential `rawId` from the browser-generated `PublicKeyCredential`.",
    "date_created": "2023-12-27T09:36:59Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60376,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid rawId",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Verify Passkeys request includes a `rawId` value that Verify cannot validate for the browser-generated `PublicKeyCredential`. Use the `rawId` returned by the browser credential when you call `Passkeys/VerifyFactor` to complete Passkey registration or `Passkeys/ApproveChallenge` to approve a Passkey authentication challenge.\n\n### Possible causes\n\n- The `rawId` value was manually entered, reformatted, truncated, or otherwise changed instead of being passed directly from the browser-generated credential object.\n- The request uses `id` and `rawId` interchangeably or sends them in the wrong fields. For Passkeys challenge approval, `id` is the base64url-encoded representation of `rawId`.\n- The credential payload does not come from the correct Passkeys step. Verify uses browser credential data for `Passkeys/VerifyFactor` during registration and for `Passkeys/ApproveChallenge` during authentication.\n\n### Possible solutions\n\n- Read `rawId` directly from the browser credential object and send that value unchanged in your JSON request body.\n- Do not swap `id` and `rawId`. Send each value in its matching field.\n- Send the full credential payload required by the endpoint you are calling. For registration, use the fields documented for `Passkeys/VerifyFactor`. For authentication, use the fields documented for `Passkeys/ApproveChallenge`.\n- If you pass the credential from the browser to your server, preserve the original credential fields so `rawId` reaches Verify without being altered.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n- [Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n",
    "causes": "* The `rawId` value was manually entered, reformatted, truncated, or otherwise changed instead of being passed directly from the browser-generated credential object.\n* The request uses `id` and `rawId` interchangeably or sends them in the wrong fields. For Passkeys challenge approval, `id` is the base64url-encoded representation of `rawId`.\n* The credential payload does not come from the correct Passkeys step. Verify uses browser credential data for `Passkeys/VerifyFactor` during registration and for `Passkeys/ApproveChallenge` during authentication.",
    "solutions": "* Read `rawId` directly from the browser credential object and send that value unchanged in your JSON request body.\n* Do not swap `id` and `rawId`. Send each value in its matching field.\n* Send the full credential payload required by the endpoint you are calling. For registration, use the fields documented for `Passkeys/VerifyFactor`. For authentication, use the fields documented for `Passkeys/ApproveChallenge`.\n* If you pass the credential from the browser to your server, preserve the original credential fields so `rawId` reaches Verify without being altered.",
    "description": "This error occurs when your Verify Passkeys request includes a `rawId` value that Verify cannot validate for the browser-generated `PublicKeyCredential`. Use the `rawId` returned by the browser credential when you call `Passkeys/VerifyFactor` to complete Passkey registration or `Passkeys/ApproveChallenge` to approve a Passkey authentication challenge.",
    "date_created": "2023-12-27T09:39:06Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60377,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Authenticator attachment invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Verify Passkeys receives a request without a valid `authenticatorAttachment` value. Send the `authenticatorAttachment` returned in the WebAuthn `credential` object when you verify a Passkey factor or approve a Passkeys challenge. For those requests, Verify accepts only `platform` or `cross-platform`.\n\n### Possible causes\n\n- Your request to `VerifyFactor` or `ApproveChallenge` does not include the required `authenticatorAttachment` field.\n- Your request includes an unsupported value for `authenticatorAttachment`. For Passkey verification and challenge approval, supported values are `platform` and `cross-platform`.\n- You sent `any` in the credential payload. `any` is allowed in Passkeys service or factor configuration, but it is not a valid value in the WebAuthn credential payload you send to `VerifyFactor` or `ApproveChallenge`.\n- You rebuilt or filtered the browser `credential` object before sending it to Verify, and the `authenticatorAttachment` property was removed or renamed. The Passkeys quickstart shows `authenticatorAttachment` as part of the generated credential and instructs you to pass that copied JSON object to the Verify endpoint.\n\n### Possible solutions\n\n- Send the full browser `credential` object returned by `navigator.credentials.create()` or `navigator.credentials.get()` as JSON when you call `VerifyFactor` or `ApproveChallenge`.\n- Validate that `authenticatorAttachment` is present before you send the request. Do not omit the field in registration or authentication payloads.\n- Make sure the value is exactly `platform` or `cross-platform` when you submit the credential payload.\n- If your Passkeys service or factor configuration uses `any`, keep that value only in configuration fields such as `Passkeys.AuthenticatorAttachment` or `config.authenticator_attachment`. Do not send `any` as the credential's `authenticatorAttachment`.\n- Follow the Passkeys quickstart flow to create the factor or challenge, generate the credential in the browser, and then submit that copied credential object to Verify without changing field names.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n- [Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n",
    "causes": "* Your request to `VerifyFactor` or `ApproveChallenge` does not include the required `authenticatorAttachment` field.\n* Your request includes an unsupported value for `authenticatorAttachment`. For Passkey verification and challenge approval, supported values are `platform` and `cross-platform`.\n* You sent `any` in the credential payload. `any` is allowed in Passkeys service or factor configuration, but it is not a valid value in the WebAuthn credential payload you send to `VerifyFactor` or `ApproveChallenge`.\n* You rebuilt or filtered the browser `credential` object before sending it to Verify, and the `authenticatorAttachment` property was removed or renamed. The Passkeys quickstart shows `authenticatorAttachment` as part of the generated credential and instructs you to pass that copied JSON object to the Verify endpoint.",
    "solutions": "* Send the full browser `credential` object returned by `navigator.credentials.create()` or `navigator.credentials.get()` as JSON when you call `VerifyFactor` or `ApproveChallenge`.\n* Validate that `authenticatorAttachment` is present before you send the request. Do not omit the field in registration or authentication payloads.\n* Make sure the value is exactly `platform` or `cross-platform` when you submit the credential payload.\n* If your Passkeys service or factor configuration uses `any`, keep that value only in configuration fields such as `Passkeys.AuthenticatorAttachment` or `config.authenticator_attachment`. Do not send `any` as the credential's `authenticatorAttachment`.\n* Follow the Passkeys quickstart flow to create the factor or challenge, generate the credential in the browser, and then submit that copied credential object to Verify without changing field names.",
    "description": "This error occurs when Verify Passkeys receives a request without a valid `authenticatorAttachment` value. Send the `authenticatorAttachment` returned in the WebAuthn `credential` object when you verify a Passkey factor or approve a Passkeys challenge. For those requests, Verify accepts only `platform` or `cross-platform`.",
    "date_created": "2023-12-27T09:40:39Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60378,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Authenticator response invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a Verify Passkeys request without a valid `response` object. During passkey registration, `VerifyFactor` requires `response.clientDataJSON` and `response.attestationObject`. During passkey authentication, `ApproveChallenge` requires `response.authenticatorData`, `response.clientDataJSON`, and `response.signature`.\n\n### Possible causes\n\n- You omitted the `response` object from the JSON payload or sent a value that Verify could not interpret as a WebAuthn credential response.\n- You sent a passkey registration request to `VerifyFactor` without the required `response.clientDataJSON` or `response.attestationObject` fields.\n- You sent a passkey authentication request to `ApproveChallenge` without the required `response.authenticatorData`, `response.clientDataJSON`, or `response.signature` fields.\n- You modified, filtered, or rebuilt the browser credential instead of sending the credential object returned by `navigator.credentials.create()` or `navigator.credentials.get()` as JSON.\n\n### Possible solutions\n\n- Send the full browser-generated `credential` object as JSON to the correct Passkeys endpoint instead of reconstructing the `response` object manually.\n- For passkey registration, send the credential to `VerifyFactor` and include `id`, `rawId`, `authenticatorAttachment`, `type`, `response.clientDataJSON`, and `response.attestationObject`.\n- For passkey authentication, send the credential to `ApproveChallenge` and include `id`, `rawId`, `authenticatorAttachment`, `type`, `response.authenticatorData`, `response.clientDataJSON`, and `response.signature`.\n- Generate the payload from the correct WebAuthn browser call. Use `navigator.credentials.create()` when you register and verify a new factor. Use `navigator.credentials.get()` when you approve a passkey challenge.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n",
    "causes": "* You omitted the `response` object from the JSON payload or sent a value that Verify could not interpret as a WebAuthn credential response.\n* You sent a passkey registration request to `VerifyFactor` without the required `response.clientDataJSON` or `response.attestationObject` fields.\n* You sent a passkey authentication request to `ApproveChallenge` without the required `response.authenticatorData`, `response.clientDataJSON`, or `response.signature` fields.\n* You modified, filtered, or rebuilt the browser credential instead of sending the credential object returned by `navigator.credentials.create()` or `navigator.credentials.get()` as JSON.",
    "solutions": "* Send the full browser-generated `credential` object as JSON to the correct Passkeys endpoint instead of reconstructing the `response` object manually.\n* For passkey registration, send the credential to `VerifyFactor` and include `id`, `rawId`, `authenticatorAttachment`, `type`, `response.clientDataJSON`, and `response.attestationObject`.\n* For passkey authentication, send the credential to `ApproveChallenge` and include `id`, `rawId`, `authenticatorAttachment`, `type`, `response.authenticatorData`, `response.clientDataJSON`, and `response.signature`.\n* Generate the payload from the correct WebAuthn browser call. Use `navigator.credentials.create()` when you register and verify a new factor. Use `navigator.credentials.get()` when you approve a passkey challenge.",
    "description": "This error occurs when you send a Verify Passkeys request without a valid `response` object. During passkey registration, `VerifyFactor` requires `response.clientDataJSON` and `response.attestationObject`. During passkey authentication, `ApproveChallenge` requires `response.authenticatorData`, `response.clientDataJSON`, and `response.signature`.",
    "date_created": "2023-12-27T09:42:29Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60379,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Authenticator data invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you approve a Verify Passkeys challenge and the request does not include a valid `response.authenticatorData` value. Send the WebAuthn authentication result from `navigator.credentials.get()` to the `ApproveChallenge` subresource, and include `authenticatorData` inside the `response` object.\n\n### Possible causes\n\n- The request body does not include `response.authenticatorData`.\n- `authenticatorData` is sent in the wrong location instead of inside `response`.\n- The value was altered, truncated, or reformatted before you sent it.\n- The request sends registration data from `navigator.credentials.create()` instead of authentication data from `navigator.credentials.get()`.\n- The credential payload is incomplete, which can happen when `id`, `rawId`, `response.clientDataJSON`, or `response.signature` are missing or copied incorrectly.\n\n### Possible solutions\n\n- Create a Passkeys challenge first, then call `navigator.credentials.get()` with the challenge options returned by Twilio.\n- Send the credential payload to `POST /v2/Services/{ServiceSid}/Passkeys/ApproveChallenge` as JSON.\n- Include the authentication fields exactly as returned by the browser. Send `id`, `rawId`, `authenticatorAttachment`, and a `response` object that contains `authenticatorData`, `clientDataJSON`, and `signature`.\n- Do not send registration-only fields such as `attestationObject` when you approve a challenge.\n- If your application serializes or transforms the browser credential before sending it to your server, verify that the process does not drop, rename, or corrupt `authenticatorData`.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n- [Verify Passkeys overview](/docs/verify/passkeys)\n",
    "causes": "* The request body does not include `response.authenticatorData`.\n* `authenticatorData` is sent in the wrong location instead of inside `response`.\n* The value was altered, truncated, or reformatted before you sent it.\n* The request sends registration data from `navigator.credentials.create()` instead of authentication data from `navigator.credentials.get()`.\n* The credential payload is incomplete, which can happen when `id`, `rawId`, `response.clientDataJSON`, or `response.signature` are missing or copied incorrectly.",
    "solutions": "* Create a Passkeys challenge first, then call `navigator.credentials.get()` with the challenge options returned by Twilio.\n* Send the credential payload to `POST /v2/Services/{ServiceSid}/Passkeys/ApproveChallenge` as JSON.\n* Include the authentication fields exactly as returned by the browser. Send `id`, `rawId`, `authenticatorAttachment`, and a `response` object that contains `authenticatorData`, `clientDataJSON`, and `signature`.\n* Do not send registration-only fields such as `attestationObject` when you approve a challenge.\n* If your application serializes or transforms the browser credential before sending it to your server, verify that the process does not drop, rename, or corrupt `authenticatorData`.",
    "description": "This error occurs when you approve a Verify Passkeys challenge and the request does not include a valid `response.authenticatorData` value. Send the WebAuthn authentication result from `navigator.credentials.get()` to the `ApproveChallenge` subresource, and include `authenticatorData` inside the `response` object.",
    "date_created": "2023-12-27T09:44:22Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60380,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Client data invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify Passkeys request does not include a valid `response.clientDataJSON` value. Verify requires `clientDataJSON` when you finish passkey registration with `VerifyFactor` and when you approve a passkey authentication challenge with `ApproveChallenge`.\n\n### Possible causes\n\n- The request body did not include `response.clientDataJSON`. Verify requires that field for both passkey registration and passkey challenge approval.\n- The request did not send the full browser-generated `credential` object as JSON. The Passkeys quickstart instructs you to pass the copied browser credential payload to `VerifyFactor` and `ApproveChallenge`.\n- The request used the wrong Passkeys payload for the step you are calling. `VerifyFactor` expects registration data that includes `response.attestationObject`, while `ApproveChallenge` expects authentication data that includes `response.authenticatorData` and `response.signature` together with `response.clientDataJSON`.\n\n### Possible solutions\n\n- For passkey registration, send the generated browser `credential` to `VerifyFactor` as JSON and include `id`, `rawId`, `authenticatorAttachment`, `type`, `response.clientDataJSON`, and `response.attestationObject`.\n- For passkey authentication, create a challenge, fetch the passkey in the browser, then send that browser response to `ApproveChallenge` with `id`, `rawId`, `authenticatorAttachment`, `response.authenticatorData`, `response.clientDataJSON`, and `response.signature`.\n- Keep the property name exactly as `clientDataJSON` and send the request body as `application/json`. Verify defines both Passkeys endpoints as JSON request bodies and names this field explicitly.\n- Compare your request payload with the Verify Passkeys quickstart examples. A successful registration returns a factor with `status: \"verified\"`, and a successful authentication returns a challenge with `status: \"approved\"`.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n- [Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n",
    "causes": "* The request body did not include `response.clientDataJSON`. Verify requires that field for both passkey registration and passkey challenge approval.\n* The request did not send the full browser-generated `credential` object as JSON. The Passkeys quickstart instructs you to pass the copied browser credential payload to `VerifyFactor` and `ApproveChallenge`.\n* The request used the wrong Passkeys payload for the step you are calling. `VerifyFactor` expects registration data that includes `response.attestationObject`, while `ApproveChallenge` expects authentication data that includes `response.authenticatorData` and `response.signature` together with `response.clientDataJSON`.",
    "solutions": "* For passkey registration, send the generated browser `credential` to `VerifyFactor` as JSON and include `id`, `rawId`, `authenticatorAttachment`, `type`, `response.clientDataJSON`, and `response.attestationObject`.\n* For passkey authentication, create a challenge, fetch the passkey in the browser, then send that browser response to `ApproveChallenge` with `id`, `rawId`, `authenticatorAttachment`, `response.authenticatorData`, `response.clientDataJSON`, and `response.signature`.\n* Keep the property name exactly as `clientDataJSON` and send the request body as `application/json`. Verify defines both Passkeys endpoints as JSON request bodies and names this field explicitly.\n* Compare your request payload with the Verify Passkeys quickstart examples. A successful registration returns a factor with `status: \"verified\"`, and a successful authentication returns a challenge with `status: \"approved\"`.",
    "description": "This error occurs when a Verify Passkeys request does not include a valid `response.clientDataJSON` value. Verify requires `clientDataJSON` when you finish passkey registration with `VerifyFactor` and when you approve a passkey authentication challenge with `ApproveChallenge`.",
    "date_created": "2023-12-27T09:46:25Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60381,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Signature invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you approve a Verify Passkeys challenge and the request does not include a valid `response.signature` value. For the `ApproveChallenge` request, send the authenticator assertion in `response.signature` together with the related `response.authenticatorData` and `response.clientDataJSON` fields.\n\n### Possible causes\n\n- The `response.signature` field is missing from the JSON body sent to `POST /v2/Services/{ServiceSid}/Passkeys/ApproveChallenge`.\n- Your application did not send the full credential assertion returned by `navigator.credentials.get()` when it approved the challenge.\n- The signature value was altered, truncated, or formatted incorrectly before your server sent it to Verify. Verify expects the assertion signature generated by the authenticator for the current authentication response.\n\n### Possible solutions\n\n- Include `response.signature` in the `ApproveChallenge` request body.\n- Send the complete credential assertion returned by `navigator.credentials.get()` as the JSON payload when you call `ApproveChallenge`. Include `id`, `rawId`, `authenticatorAttachment`, `type`, `response.authenticatorData`, `response.clientDataJSON`, and `response.signature`.\n- Compare your request payload with the Passkeys challenge example and make sure your application preserves the original browser values without dropping or renaming required fields.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n- [Verify Passkeys technical overview](/docs/verify/passkeys/technical-overview)\n",
    "causes": "* The `response.signature` field is missing from the JSON body sent to `POST /v2/Services/{ServiceSid}/Passkeys/ApproveChallenge`.\n* Your application did not send the full credential assertion returned by `navigator.credentials.get()` when it approved the challenge.\n* The signature value was altered, truncated, or formatted incorrectly before your server sent it to Verify. Verify expects the assertion signature generated by the authenticator for the current authentication response.",
    "solutions": "* Include `response.signature` in the `ApproveChallenge` request body.\n* Send the complete credential assertion returned by `navigator.credentials.get()` as the JSON payload when you call `ApproveChallenge`. Include `id`, `rawId`, `authenticatorAttachment`, `type`, `response.authenticatorData`, `response.clientDataJSON`, and `response.signature`.\n* Compare your request payload with the Passkeys challenge example and make sure your application preserves the original browser values without dropping or renaming required fields.",
    "description": "This error occurs when you approve a Verify Passkeys challenge and the request does not include a valid `response.signature` value. For the `ApproveChallenge` request, send the authenticator assertion in `response.signature` together with the related `response.authenticatorData` and `response.clientDataJSON` fields.",
    "date_created": "2023-12-27T09:48:08Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60382,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor does not match the relying party of the challenge",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs in Verify Passkeys when the passkey factor you use is bound to a different relying party than the challenge you are trying to complete. Passkeys are tied to a website or app domain, and Verify stores relying party settings on the factor and returns relying party information in the challenge options used for authentication.\n\n### Possible causes\n\n- The passkey factor was created or verified with `config.relying_party` values that do not match the relying party in the challenge. Verify stores relying party settings on the factor, and the challenge response includes the relying party used for authentication.\n- The Verify Service uses different `Passkeys.RelyingParty.id` or `Passkeys.RelyingParty.origins` values than the domain your browser is using for passkey registration or authentication. Passkeys bind to a specific domain, and WebAuthn checks that domain during creation and challenge verification.\n- You created the passkey on the wrong domain. During registration, use the domain returned in `config.relying_party.id`.\n- You are trying to authenticate from a different domain or browser context than the one tied to the challenge. The authentication flow requires using the challenge response in the browser on the configured relying party domain.\n\n### Possible solutions\n\n- Compare the factor's `config.relying_party.id`, `config.relying_party.origins`, and related passkey settings with the relying party returned in the challenge response. Use matching values before you create or approve the challenge.\n- Confirm your Verify Service is configured with the correct `Passkeys.RelyingParty.id`, `Passkeys.RelyingParty.name`, and `Passkeys.RelyingParty.origins` for the domain you want to support. Update the service if those values are wrong.\n- Register the passkey from the correct relying party domain. Open the browser on the domain returned in `config.relying_party.id` before you create and verify the factor.\n- Authenticate the passkey from the correct relying party domain and browser session. Use the challenge response in the browser on the configured domain before you call `ApproveChallenge`.\n- If the factor was created under the wrong relying party configuration, create a new passkey factor with the correct configuration and then create a new challenge for that factor or identity.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n- [Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n",
    "causes": "* The passkey factor was created or verified with `config.relying_party` values that do not match the relying party in the challenge. Verify stores relying party settings on the factor, and the challenge response includes the relying party used for authentication.\n* The Verify Service uses different `Passkeys.RelyingParty.id` or `Passkeys.RelyingParty.origins` values than the domain your browser is using for passkey registration or authentication. Passkeys bind to a specific domain, and WebAuthn checks that domain during creation and challenge verification.\n* You created the passkey on the wrong domain. During registration, use the domain returned in `config.relying_party.id`.\n* You are trying to authenticate from a different domain or browser context than the one tied to the challenge. The authentication flow requires using the challenge response in the browser on the configured relying party domain.",
    "solutions": "* Compare the factor's `config.relying_party.id`, `config.relying_party.origins`, and related passkey settings with the relying party returned in the challenge response. Use matching values before you create or approve the challenge.\n* Confirm your Verify Service is configured with the correct `Passkeys.RelyingParty.id`, `Passkeys.RelyingParty.name`, and `Passkeys.RelyingParty.origins` for the domain you want to support. Update the service if those values are wrong.\n* Register the passkey from the correct relying party domain. Open the browser on the domain returned in `config.relying_party.id` before you create and verify the factor.\n* Authenticate the passkey from the correct relying party domain and browser session. Use the challenge response in the browser on the configured domain before you call `ApproveChallenge`.\n* If the factor was created under the wrong relying party configuration, create a new passkey factor with the correct configuration and then create a new challenge for that factor or identity.",
    "description": "This error occurs in Verify Passkeys when the passkey factor you use is bound to a different relying party than the challenge you are trying to complete. Passkeys are tied to a website or app domain, and Verify stores relying party settings on the factor and returns relying party information in the challenge options used for authentication.",
    "date_created": "2023-12-27T09:49:43Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60383,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Illegal factor status",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to perform an operation on a Verify Factor that is not in a valid state for that request. Verify Factors use `unverified` and `verified` statuses. Unverified Factors are automatically deleted and become unverifiable 1 to 24 hours after creation.\n\n### Possible causes\n\n- The Factor is still `unverified`, and the request requires a completed enrollment flow before you can continue. Verify TOTP requires the user to prove they can generate a correct code from the seed. Verify Push enrollment also requires you to create and verify the Factor.\n- The Factor expired before enrollment was completed. Unverified Factors are deleted and become unverifiable 1 to 24 hours after creation.\n- For Verify TOTP, the registration check did not succeed. If the `authPayload` value is incorrect, the Factor remains `unverified`.\n- For Verify Push, the device no longer has the original stored key material, such as after an app uninstall and reinstall, so the existing Factor can no longer be used as enrolled.\n\n### Possible solutions\n\n- Fetch the Factor and confirm its current `status` before retrying the operation. Only continue with flows that require an enrolled factor after the Factor is `verified`.\n- If the Factor is `unverified`, complete Factor verification first. For Verify TOTP, submit the latest code in `authPayload`. For Verify Push, complete the client SDK verify step after creating the Factor.\n- If the Factor is no longer usable because enrollment timed out, the Factor aged out, or the device state changed, create a new Factor and re-register the identity or device.\n- For Verify Push, provide a re-enrollment path for users who reinstall the app or lose the device state. Delete old verified Factors you no longer need before re-enrolling when appropriate.\n\n#### Additional resources\n\n- [Factor Resource](/docs/verify/api/factor)\n- [Verify TOTP Quickstart](/docs/verify/quickstarts/totp)\n- [Verify Push & Silent Device Approval Overview](/docs/verify/push)\n",
    "causes": "* The Factor is still `unverified`, and the request requires a completed enrollment flow before you can continue. Verify TOTP requires the user to prove they can generate a correct code from the seed. Verify Push enrollment also requires you to create and verify the Factor.\n* The Factor expired before enrollment was completed. Unverified Factors are deleted and become unverifiable 1 to 24 hours after creation.\n* For Verify TOTP, the registration check did not succeed. If the `authPayload` value is incorrect, the Factor remains `unverified`.\n* For Verify Push, the device no longer has the original stored key material, such as after an app uninstall and reinstall, so the existing Factor can no longer be used as enrolled.",
    "solutions": "* Fetch the Factor and confirm its current `status` before retrying the operation. Only continue with flows that require an enrolled factor after the Factor is `verified`.\n* If the Factor is `unverified`, complete Factor verification first. For Verify TOTP, submit the latest code in `authPayload`. For Verify Push, complete the client SDK verify step after creating the Factor.\n* If the Factor is no longer usable because enrollment timed out, the Factor aged out, or the device state changed, create a new Factor and re-register the identity or device.\n* For Verify Push, provide a re-enrollment path for users who reinstall the app or lose the device state. Delete old verified Factors you no longer need before re-enrolling when appropriate.",
    "description": "This error occurs when you try to perform an operation on a Verify Factor that is not in a valid state for that request. Verify Factors use `unverified` and `verified` statuses. Unverified Factors are automatically deleted and become unverifiable 1 to 24 hours after creation.",
    "date_created": "2023-12-27T09:51:28Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60384,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid challenge timeout",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the challenge timeout in your Verify Passkeys request is negative. Verify returns Passkeys challenge options in the `options.publicKey` object, and the timeout value must be positive.\n\n### Possible causes\n\n- Your request includes a negative challenge timeout value.\n- Your application calculates the challenge timeout dynamically and sends a value below `0`.\n- Your request-building logic transforms a valid timeout into a negative value before you create the challenge.\n\n### Possible solutions\n\n- Update your request so the challenge timeout is a positive value.\n- Validate the timeout in your application before you create the challenge.\n- Review any code that derives the timeout from user input, configuration, or arithmetic and prevent negative values from being sent.\n\n#### Additional resources\n\n- [Verify Passkeys Challenge resource](/docs/verify/api/passkeys-challenge)\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Verify Services API](/docs/verify/api/service)\n",
    "causes": "* Your request includes a negative challenge timeout value.\n* Your application calculates the challenge timeout dynamically and sends a value below `0`.\n* Your request-building logic transforms a valid timeout into a negative value before you create the challenge.",
    "solutions": "* Update your request so the challenge timeout is a positive value.\n* Validate the timeout in your application before you create the challenge.\n* Review any code that derives the timeout from user input, configuration, or arithmetic and prevent negative values from being sent.",
    "description": "Twilio returns this error when the challenge timeout in your Verify Passkeys request is negative. Verify returns Passkeys challenge options in the `options.publicKey` object, and the timeout value must be positive.",
    "date_created": "2023-12-27T09:53:08Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60385,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Public key invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create a Verify Push factor and the request does not include `binding.publicKey`, or the value is not a valid ECDSA public key in PKIX ASN.1 DER format encoded in Base64. Verify Push factors use public-key cryptography and store the public key generated by the registered device.\n\n### Possible causes\n\n- The request uses `factorType` `push` but does not include `binding.publicKey`.\n- The `binding.publicKey` value is present, but it is not an ECDSA public key in PKIX ASN.1 DER format encoded in Base64.\n- The factor creation request does not include the public key generated during the device registration flow for Verify Push.\n\n### Possible solutions\n\n- Include `binding.publicKey` in the create Factor request whenever `factorType` is `push`.\n- Send the public key in the required format: an ECDSA public key in PKIX ASN.1 DER format encoded in Base64.\n- If you use a Verify Push SDK, register the user and device again and create the factor from the SDK registration flow so the request includes the correct device-generated public key.\n\n#### Additional resources\n\n- [Factor Resource](/docs/verify/api/factor)\n- [Verify Push & Silent Device Approval Overview](/docs/verify/push)\n- [Verify Push Client Library Technical Overview](/docs/verify/push/technical-overview)\n",
    "causes": "* The request uses `factorType` `push` but does not include `binding.publicKey`.\n* The `binding.publicKey` value is present, but it is not an ECDSA public key in PKIX ASN.1 DER format encoded in Base64.\n* The factor creation request does not include the public key generated during the device registration flow for Verify Push.",
    "solutions": "* Include `binding.publicKey` in the create Factor request whenever `factorType` is `push`.\n* Send the public key in the required format: an ECDSA public key in PKIX ASN.1 DER format encoded in Base64.\n* If you use a Verify Push SDK, register the user and device again and create the factor from the SDK registration flow so the request includes the correct device-generated public key.",
    "description": "This error occurs when you create a Verify Push factor and the request does not include `binding.publicKey`, or the value is not a valid ECDSA public key in PKIX ASN.1 DER format encoded in Base64. Verify Push factors use public-key cryptography and store the public key generated by the registered device.",
    "date_created": "2023-12-27T09:54:45Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60386,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attestation object invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Verify Passkeys registration request does not include a valid `response.attestationObject`. Send the credential returned by `navigator.credentials.create()` to the `VerifyFactor` endpoint. That credential includes the attestation data required to register the new passkey.\n\n### Possible causes\n\n- Your request body does not include `response.attestationObject`.\n- The `response.attestationObject` value is empty, malformed, or changed during serialization.\n- You manually rebuilt the credential payload instead of sending the full registration result from `navigator.credentials.create()`.\n- You sent authentication data from `navigator.credentials.get()` instead of registration data from `navigator.credentials.create()`.\n- The nested `response` object is missing or incorrectly structured in the JSON payload.\n\n### Possible solutions\n\n- Create the passkey again in the browser and send the full credential object returned by `navigator.credentials.create()`.\n- Include the required registration fields in your request, including `id`, `rawId`, `type`, `authenticatorAttachment`, `response.clientDataJSON`, and `response.attestationObject`.\n- Preserve the credential values exactly as returned by the browser. Do not truncate, rename, or re-encode `response.attestationObject`.\n- Confirm that `type` is `public-key` and that your request body matches the Passkeys `VerifyFactor` schema.\n- Use the passkey registration flow for this endpoint. If you are approving a sign-in challenge, send the `navigator.credentials.get()` result to the challenge approval endpoint instead.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n- [Verify Passkeys overview](/docs/verify/passkeys)\n",
    "causes": "* Your request body does not include `response.attestationObject`.\n* The `response.attestationObject` value is empty, malformed, or changed during serialization.\n* You manually rebuilt the credential payload instead of sending the full registration result from `navigator.credentials.create()`.\n* You sent authentication data from `navigator.credentials.get()` instead of registration data from `navigator.credentials.create()`.\n* The nested `response` object is missing or incorrectly structured in the JSON payload.",
    "solutions": "* Create the passkey again in the browser and send the full credential object returned by `navigator.credentials.create()`.\n* Include the required registration fields in your request, including `id`, `rawId`, `type`, `authenticatorAttachment`, `response.clientDataJSON`, and `response.attestationObject`.\n* Preserve the credential values exactly as returned by the browser. Do not truncate, rename, or re-encode `response.attestationObject`.\n* Confirm that `type` is `public-key` and that your request body matches the Passkeys `VerifyFactor` schema.\n* Use the passkey registration flow for this endpoint. If you are approving a sign-in challenge, send the `navigator.credentials.get()` result to the challenge approval endpoint instead.",
    "description": "This error occurs when your Verify Passkeys registration request does not include a valid `response.attestationObject`. Send the credential returned by `navigator.credentials.create()` to the `VerifyFactor` endpoint. That credential includes the attestation data required to register the new passkey.",
    "date_created": "2023-12-27T09:56:15Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60387,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attested credential data invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `VerifyFactor` request for Verify Passkeys does not include valid attested credential data from a WebAuthn registration response. Finish passkey registration by sending the copied credential object returned during passkey creation, including `id`, `rawId`, `type`, `authenticatorAttachment`, `response.clientDataJSON`, and `response.attestationObject`.\n\n### Possible causes\n\n- You did not include `response.attestationObject` in the `VerifyFactor` request.\n- You sent a payload that did not come from the passkey registration flow. Registration uses the credential returned by `create(parseCreationOptionsFromJSON(options))`, which produces the `AuthenticatorAttestationResponse` required for `VerifyFactor`.\n- This can happen if you changed the generated credential payload before sending it. Copy the generated credential JSON from the browser and pass that object to `VerifyFactor`.\n\n### Possible solutions\n\n- Generate a new passkey credential in the browser and send the full copied credential JSON to `POST /v2/Services/{service_sid}/Passkeys/VerifyFactor`. Include `id`, `rawId`, `type`, `authenticatorAttachment`, `response.clientDataJSON`, and `response.attestationObject`.\n- Use the registration flow when you create the credential. Send the result of `create(parseCreationOptionsFromJSON(options))` to `VerifyFactor` instead of sending a credential from the authentication flow.\n- If you recreate the passkey on the web, verify that your Verify Service passkeys configuration uses the correct Relying Party ID and allowed origins for your domain. Create the passkey over HTTPS before you retry.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor API reference](/docs/verify/api/passkeys-factor)\n- [Verify Passkeys technical overview](/docs/verify/passkeys/technical-overview)\n",
    "causes": "* You did not include `response.attestationObject` in the `VerifyFactor` request.\n* You sent a payload that did not come from the passkey registration flow. Registration uses the credential returned by `create(parseCreationOptionsFromJSON(options))`, which produces the `AuthenticatorAttestationResponse` required for `VerifyFactor`.\n* This can happen if you changed the generated credential payload before sending it. Copy the generated credential JSON from the browser and pass that object to `VerifyFactor`.",
    "solutions": "* Generate a new passkey credential in the browser and send the full copied credential JSON to `POST /v2/Services/{service_sid}/Passkeys/VerifyFactor`. Include `id`, `rawId`, `type`, `authenticatorAttachment`, `response.clientDataJSON`, and `response.attestationObject`.\n* Use the registration flow when you create the credential. Send the result of `create(parseCreationOptionsFromJSON(options))` to `VerifyFactor` instead of sending a credential from the authentication flow.\n* If you recreate the passkey on the web, verify that your Verify Service passkeys configuration uses the correct Relying Party ID and allowed origins for your domain. Create the passkey over HTTPS before you retry.",
    "description": "This error occurs when the `VerifyFactor` request for Verify Passkeys does not include valid attested credential data from a WebAuthn registration response. Finish passkey registration by sending the copied credential object returned during passkey creation, including `id`, `rawId`, `type`, `authenticatorAttachment`, `response.clientDataJSON`, and `response.attestationObject`.",
    "date_created": "2023-12-27T09:57:51Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60388,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "User display name not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create a Verify Passkeys Factor without the user display name needed for passkey registration. When you create a Passkeys Factor, `friendly_name` is required, and the returned registration options include `publicKey.user.displayName`.\n\n### Possible causes\n\n- The request body for `POST /v2/Services/{ServiceSid}/Passkeys/Factors` did not include `friendly_name`.\n- Your application sent an empty or missing value for the field that should populate the passkey user's display name in the registration options.\n- Your application used `identity` as the only user value and did not provide a separate human-readable factor name. `identity` as an immutable external identifier and `friendly_name` as the human-readable value for the Factor.\n\n### Possible solutions\n\n- Include `friendly_name` and `identity` in the JSON body when you create the Passkeys Factor. The Passkeys quickstart shows both values in the factor creation request.\n- Populate `friendly_name` with a human-readable value that helps distinguish the Factor. this field as a human-facing name for the Factor and the Passkeys response shows that value in `publicKey.user.displayName`.\n- Keep your user-facing display text separate from `identity`. Use `identity` as an immutable identifier and send the human-readable label through `friendly_name` when you create the Factor.\n- Inspect the Factor creation response before you begin browser registration and confirm the returned `options.publicKey.user.displayName` contains the expected value.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n- [Entity Resource](/docs/verify/api/entity)\n",
    "causes": "* The request body for `POST /v2/Services/{ServiceSid}/Passkeys/Factors` did not include `friendly_name`.\n* Your application sent an empty or missing value for the field that should populate the passkey user's display name in the registration options.\n* Your application used `identity` as the only user value and did not provide a separate human-readable factor name. `identity` as an immutable external identifier and `friendly_name` as the human-readable value for the Factor.",
    "solutions": "* Include `friendly_name` and `identity` in the JSON body when you create the Passkeys Factor. The Passkeys quickstart shows both values in the factor creation request.\n* Populate `friendly_name` with a human-readable value that helps distinguish the Factor. this field as a human-facing name for the Factor and the Passkeys response shows that value in `publicKey.user.displayName`.\n* Keep your user-facing display text separate from `identity`. Use `identity` as an immutable identifier and send the human-readable label through `friendly_name` when you create the Factor.\n* Inspect the Factor creation response before you begin browser registration and confirm the returned `options.publicKey.user.displayName` contains the expected value.",
    "description": "This error occurs when you create a Verify Passkeys Factor without the user display name needed for passkey registration. When you create a Passkeys Factor, `friendly_name` is required, and the returned registration options include `publicKey.user.displayName`.",
    "date_created": "2024-08-02T12:50:02Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60390,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor not found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify request references a Factor that cannot be found for the specified `ServiceSid`, `identity`, and `FactorSid` or Factor `sid`. A Factor belongs to an Entity inside a Verify Service, and Factors are used by Verify Push and Verify TOTP.\n\n### Possible causes\n\n- The request includes a `FactorSid` or Factor `sid` that does not match an existing Factor.\n- The Factor exists under a different `identity` or a different `ServiceSid`. Factor operations are scoped to both the Verify Service and the Entity identity.\n- The Factor was deleted before you tried to fetch it, update it, delete it, or use it to create a Challenge.\n- The Factor was never verified and was automatically deleted 1 to 24 hours after creation.\n\n### Possible solutions\n\n- Confirm that you are sending the correct `ServiceSid`, the same immutable `identity` value used when the Factor was created, and the correct `FactorSid` or Factor `sid`.\n- Fetch or list the Factors for the Entity and use the returned Factor `sid` from the Verify API response.\n- If you are creating a Challenge, pass the `FactorSid` of an existing Factor for that Entity.\n- If the Factor was deleted or aged out while still unverified, create a new Factor and complete verification before using it again.\n\n#### Additional resources\n\n- [Factor Resource](/docs/verify/api/factor)\n- [Entity Resource](/docs/verify/api/entity)\n- [Challenge Resource](/docs/verify/api/challenge)\n",
    "causes": "* The request includes a `FactorSid` or Factor `sid` that does not match an existing Factor.\n* The Factor exists under a different `identity` or a different `ServiceSid`. Factor operations are scoped to both the Verify Service and the Entity identity.\n* The Factor was deleted before you tried to fetch it, update it, delete it, or use it to create a Challenge.\n* The Factor was never verified and was automatically deleted 1 to 24 hours after creation.",
    "solutions": "* Confirm that you are sending the correct `ServiceSid`, the same immutable `identity` value used when the Factor was created, and the correct `FactorSid` or Factor `sid`.\n* Fetch or list the Factors for the Entity and use the returned Factor `sid` from the Verify API response.\n* If you are creating a Challenge, pass the `FactorSid` of an existing Factor for that Entity.\n* If the Factor was deleted or aged out while still unverified, create a new Factor and complete verification before using it again.",
    "description": "This error occurs when a Verify request references a Factor that cannot be found for the specified `ServiceSid`, `identity`, and `FactorSid` or Factor `sid`. A Factor belongs to an Entity inside a Verify Service, and Factors are used by Verify Push and Verify TOTP.",
    "date_created": "2023-12-27T09:59:52Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60391,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Challenge not found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the requested Challenge resource cannot be found in Verify. A Challenge represents a single verification attempt for an Entity using a Factor, and Challenge fetch and update requests are scoped by `ServiceSid`, `Identity`, and the Challenge `Sid`.\n\n### Possible causes\n\n- The Challenge `Sid` in your request does not match an existing Challenge resource.\n- The `Identity` value in the request does not match the Entity that owns the Challenge. Verify requires `identity` to be an immutable external identifier, and Challenge operations are scoped to that Entity.\n- The `ServiceSid` points to a different Verify Service than the one where the Challenge was created. Challenge requests are nested under a specific Service and Entity path.\n- Your application may be reusing a stale Challenge SID or combining values from different Services, Entities, or environments.\n\n### Possible solutions\n\n- Confirm that `ServiceSid`, `Identity`, and the Challenge `Sid` exactly match the values returned when you created or previously fetched the Challenge.\n- If you do not have the current Challenge SID, list the Challenges for the Entity and verify that the resource exists before you fetch or update it. You can also filter the list by `factorSid` or `status`.\n- Store and reuse the same immutable `identity` value for the user across Entity, Factor, and Challenge operations. Do not substitute a different user identifier in later requests.\n- If you need a new verification attempt, create a new Challenge for the correct Entity and Factor, then use the new Challenge `Sid` in subsequent requests.\n\n#### Additional resources\n\n- [Challenge Resource](/docs/verify/api/challenge)\n- [Entity Resource](/docs/verify/api/entity)\n- [Factor Resource](/docs/verify/api/factor)\n",
    "causes": "* The Challenge `Sid` in your request does not match an existing Challenge resource.\n* The `Identity` value in the request does not match the Entity that owns the Challenge. Verify requires `identity` to be an immutable external identifier, and Challenge operations are scoped to that Entity.\n* The `ServiceSid` points to a different Verify Service than the one where the Challenge was created. Challenge requests are nested under a specific Service and Entity path.\n* Your application may be reusing a stale Challenge SID or combining values from different Services, Entities, or environments.",
    "solutions": "* Confirm that `ServiceSid`, `Identity`, and the Challenge `Sid` exactly match the values returned when you created or previously fetched the Challenge.\n* If you do not have the current Challenge SID, list the Challenges for the Entity and verify that the resource exists before you fetch or update it. You can also filter the list by `factorSid` or `status`.\n* Store and reuse the same immutable `identity` value for the user across Entity, Factor, and Challenge operations. Do not substitute a different user identifier in later requests.\n* If you need a new verification attempt, create a new Challenge for the correct Entity and Factor, then use the new Challenge `Sid` in subsequent requests.",
    "description": "Twilio returns this error when the requested Challenge resource cannot be found in Verify. A Challenge represents a single verification attempt for an Entity using a Factor, and Challenge fetch and update requests are scoped by `ServiceSid`, `Identity`, and the Challenge `Sid`.",
    "date_created": "2023-12-27T10:01:33Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60392,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Entity not found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Verify request references an `Entity` that does not exist in the specified Verify Service. An `Entity` represents the user identity for Verify Push and Verify TOTP, and Entities are scoped to a single Service.\n\n### Possible causes\n\n- The `identity` value in the request does not match an existing Entity in the Service.\n- The request uses the wrong `ServiceSid`. Entities are not shared across Services.\n- The Entity was deleted before you fetched it or before you created a related `Challenge` or fetched a related `Factor`.\n- Your application stored or sent a different identity than the immutable identifier originally used to create the Entity.\n\n### Possible solutions\n\n- Send the exact same `identity` and `ServiceSid` that you used when you created the user's Entity or Factor.\n- Store the identity consistently across your application. Use an immutable identifier that is 8 to 64 characters long and contains only dash-separated alphanumeric characters.\n- If this is the user's first Verify Push or Verify TOTP enrollment, create a `Factor` for that identity. Verify creates the Entity automatically when you create a Factor.\n- Fetch or list Entities for the Service before you create or update related Factors and Challenges so you can confirm that the Entity exists.\n- If the Entity was removed, recreate it by creating a new Factor for the correct identity.\n\n#### Additional resources\n\n- [Entity Resource](/docs/verify/api/entity)\n- [Factor Resource](/docs/verify/api/factor)\n- [Verify Push Client Library Technical Overview](/docs/verify/push/technical-overview)\n",
    "causes": "* The `identity` value in the request does not match an existing Entity in the Service.\n* The request uses the wrong `ServiceSid`. Entities are not shared across Services.\n* The Entity was deleted before you fetched it or before you created a related `Challenge` or fetched a related `Factor`.\n* Your application stored or sent a different identity than the immutable identifier originally used to create the Entity.",
    "solutions": "* Send the exact same `identity` and `ServiceSid` that you used when you created the user's Entity or Factor.\n* Store the identity consistently across your application. Use an immutable identifier that is 8 to 64 characters long and contains only dash-separated alphanumeric characters.\n* If this is the user's first Verify Push or Verify TOTP enrollment, create a `Factor` for that identity. Verify creates the Entity automatically when you create a Factor.\n* Fetch or list Entities for the Service before you create or update related Factors and Challenges so you can confirm that the Entity exists.\n* If the Entity was removed, recreate it by creating a new Factor for the correct identity.",
    "description": "This error occurs when your Verify request references an `Entity` that does not exist in the specified Verify Service. An `Entity` represents the user identity for Verify Push and Verify TOTP, and Entities are scoped to a single Service.",
    "date_created": "2023-12-27T10:03:19Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60401,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Network Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error indicates that Verify could not communicate properly with the API while processing your request. Retry the request as a transient failure first, then confirm that the request itself is valid if the error continues.\n\n### Possible causes\n\n- A transient communication failure occurred while Verify was calling the API.\n- An active Twilio incident or degraded service is affecting API requests.\n- Your SDK or HTTP client is introducing the failure. If the same request succeeds with `curl`, the problem is likely in your SDK-side integration.\n\n### Possible solutions\n\n- Retry the request after a short delay. If you automate retries, implement exponential backoff.\n- Validate the Verify request before retrying. Send the request to the Verify Verifications endpoint, provide a valid `To` value, and use a supported `channel`. Phone numbers must be in `E.164` format.\n- If you use a helper library or SDK, send the same request with `curl`. If the request works with `curl`, fix the SDK-side request generation. If it fails in both places, contact Support.\n- When you contact Support, include the `Twilio-Request-Id` header from the failed response. Also check the Twilio status page for any ongoing incident that could affect API requests.\n\n#### Additional resources\n\n- [Verify Verifications API reference](/docs/verify/api/verification)\n- [API best practices](/docs/usage/rest-api-best-practices)\n- [Checking Twilio Service and API Status with the Status Page](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page)\n",
    "causes": "* A transient communication failure occurred while Verify was calling the API.\n* An active Twilio incident or degraded service is affecting API requests.\n* Your SDK or HTTP client is introducing the failure. If the same request succeeds with `curl`, the problem is likely in your SDK-side integration.",
    "solutions": "* Retry the request after a short delay. If you automate retries, implement exponential backoff.\n* Validate the Verify request before retrying. Send the request to the Verify Verifications endpoint, provide a valid `To` value, and use a supported `channel`. Phone numbers must be in `E.164` format.\n* If you use a helper library or SDK, send the same request with `curl`. If the request works with `curl`, fix the SDK-side request generation. If it fails in both places, contact Support.\n* When you contact Support, include the `Twilio-Request-Id` header from the failed response. Also check the Twilio status page for any ongoing incident that could affect API requests.",
    "description": "This error indicates that Verify could not communicate properly with the API while processing your request. Retry the request as a transient failure first, then confirm that the request itself is valid if the error continues.",
    "date_created": "2021-03-15T20:43:25Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60402,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Mapper Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Verify cannot map an Entity into the expected format. In Verify, an Entity represents the user or identity being verified and can contain multiple Factors.\n\n### Possible causes\n\n- The Entity record returned by Verify is in an unexpected format.\n- A related Factor record contains data that Verify cannot map correctly for the Entity.\n- An existing Verify Push or Verify TOTP enrollment is no longer usable and needs to be recreated.\n- The Entity `identity` used for the enrollment is not a stable external identifier in the expected format.\n\n### Possible solutions\n\n- Create a new Factor for the affected Entity and complete factor verification again.\n- Delete the affected Factor and register the device or TOTP seed again if the existing enrollment is no longer usable.\n- Verify that the Entity `identity` is immutable, between 8 and 64 characters, and contains only dash-separated alphanumeric characters.\n- If the problem continues for the same user, delete the Entity and recreate it before creating a new Factor.\n\n#### Additional resources\n\n- [Entity Resource](/docs/verify/api/entity)\n- [Factor Resource](/docs/verify/api/factor)\n- [Verify TOTP Technical Overview](/docs/verify/totp/technical-overview)\n",
    "causes": "* The Entity record returned by Verify is in an unexpected format.\n* A related Factor record contains data that Verify cannot map correctly for the Entity.\n* An existing Verify Push or Verify TOTP enrollment is no longer usable and needs to be recreated.\n* The Entity `identity` used for the enrollment is not a stable external identifier in the expected format.",
    "solutions": "* Create a new Factor for the affected Entity and complete factor verification again.\n* Delete the affected Factor and register the device or TOTP seed again if the existing enrollment is no longer usable.\n* Verify that the Entity `identity` is immutable, between 8 and 64 characters, and contains only dash-separated alphanumeric characters.\n* If the problem continues for the same user, delete the Entity and recreate it before creating a new Factor.",
    "description": "This error occurs when Verify cannot map an Entity into the expected format. In Verify, an Entity represents the user or identity being verified and can contain multiple Factors.",
    "date_created": "2021-03-15T20:44:09Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60403,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Storage Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAn error occurred while storing/loading an entity.\n\n### Possible causes\n\n- Storage may be corrupted.\n- Factor not found.\n\n### Possible solutions\n\nCreate a new factor.\n",
    "causes": "* Storage may be corrupted.\n* Factor not found.",
    "solutions": "Create a new factor.",
    "description": "An error occurred while storing/loading an entity.",
    "date_created": "2021-03-15T20:44:48Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60404,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Input Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nVerify returns this error when it cannot process one or more request inputs. This usually means the request is missing a required field, includes a malformed value, or sends a parameter that does not match the Verify endpoint or channel you are using.\n\n### Possible causes\n\n- The request is missing a required parameter. For example, creating a verification requires `serviceSid`, `to`, and `channel`. Checking a verification requires `serviceSid` and either `to` or `verificationSid`.\n- The `to` value is not formatted correctly for the selected channel. Phone numbers sent to Verify must be in `E.164` format.\n- The request includes an unsupported or mismatched channel configuration, such as an invalid `channel` value or a `TemplateSid` on a channel other than SMS or Voice.\n- A structured field is malformed, such as `serviceSid`, `verificationSid`, `TemplateSid`, or `deviceIp`. Verify expects specific SID prefixes and lengths, and `deviceIp` must be a valid IPv4 or IPv6 address if you provide it.\n- A code or channel-specific value does not meet parameter requirements, such as a `customCode` or verification `code` that is not between 4 and 10 characters, or an email sender override in `channelConfiguration` that is not a valid email address.\n\n### Possible solutions\n\n- Validate the request before you send it. Make sure you are using the correct Verify endpoint and including every required field for that endpoint.\n- Normalize phone numbers to `E.164` before sending them to Verify. This helps prevent formatting errors in the `to` parameter.\n- Use only supported Verify channel values. If you pass channel-specific parameters, confirm they are valid for that channel. For example, use `TemplateSid` only with SMS or Voice.\n- Validate SID and structured parameter formats in your application before making the API request. Confirm that `serviceSid` starts with `VA`, `verificationSid` starts with `VE`, and `TemplateSid` starts with `HJ`.\n- If you use Verify email, confirm your email integration is set up correctly and that any `channelConfiguration.from` override contains a valid email address.\n- Review Verify Logs in Console to identify which field failed validation, then correct the request and retry.\n\n#### Additional resources\n\n- [Start a Verification](/docs/verify/api/verification)\n- [Check a Verification](/docs/verify/api/verification-check)\n- [What is E.164?](/docs/glossary/what-e164)\n",
    "causes": "* The request is missing a required parameter. For example, creating a verification requires `serviceSid`, `to`, and `channel`. Checking a verification requires `serviceSid` and either `to` or `verificationSid`.\n* The `to` value is not formatted correctly for the selected channel. Phone numbers sent to Verify must be in `E.164` format.\n* The request includes an unsupported or mismatched channel configuration, such as an invalid `channel` value or a `TemplateSid` on a channel other than SMS or Voice.\n* A structured field is malformed, such as `serviceSid`, `verificationSid`, `TemplateSid`, or `deviceIp`. Verify expects specific SID prefixes and lengths, and `deviceIp` must be a valid IPv4 or IPv6 address if you provide it.\n* A code or channel-specific value does not meet parameter requirements, such as a `customCode` or verification `code` that is not between 4 and 10 characters, or an email sender override in `channelConfiguration` that is not a valid email address.",
    "solutions": "* Validate the request before you send it. Make sure you are using the correct Verify endpoint and including every required field for that endpoint.\n* Normalize phone numbers to `E.164` before sending them to Verify. This helps prevent formatting errors in the `to` parameter.\n* Use only supported Verify channel values. If you pass channel-specific parameters, confirm they are valid for that channel. For example, use `TemplateSid` only with SMS or Voice.\n* Validate SID and structured parameter formats in your application before making the API request. Confirm that `serviceSid` starts with `VA`, `verificationSid` starts with `VE`, and `TemplateSid` starts with `HJ`.\n* If you use Verify email, confirm your email integration is set up correctly and that any `channelConfiguration.from` override contains a valid email address.\n* Review Verify Logs in Console to identify which field failed validation, then correct the request and retry.",
    "description": "Verify returns this error when it cannot process one or more request inputs. This usually means the request is missing a required field, includes a malformed value, or sends a parameter that does not match the Verify endpoint or channel you are using.",
    "date_created": "2021-03-15T20:45:25Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 60405,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Key Storage Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAn error occurred while storing/loading keypairs.\n\n### Possible causes\n\n- Keypair not set.\n- Keypair could not be created.\n- Signature failed.\n\n### Possible solutions\n\nCreate a new factor.\n",
    "causes": "* Keypair not set.\n* Keypair could not be created.\n* Signature failed.",
    "solutions": "Create a new factor.",
    "description": "An error occurred while storing/loading keypairs.",
    "date_created": "2021-03-15T20:46:04Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60406,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Initialization Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error means your Verify integration tried to initialize a required SDK object or factor payload without all required values. Verify Push setup requires your app to create a `TwilioVerify` instance, obtain an Access Token from your backend, and provide the values needed to create a factor, including `identity` and the Verify Service SID.\n\n### Possible causes\n\n- Your app tried to initialize the Verify client without completing the SDK setup step that creates a `TwilioVerify` instance.\n- Your backend did not return the Access Token, `identity`, or Verify Service SID that the mobile app needs before it can create a push factor.\n- Your Access Token request omitted required values. Creating an Access Token requires the `serviceSid` path parameter plus `identity` and `factorType` in the request body.\n- Your factor creation request or `PushFactorPayload` was missing one or more required values such as `friendlyName`, `factorType`, `binding.publicKey`, `config.appId`, `config.notificationPlatform`, `config.notificationToken`, or `config.sdkVersion`.\n- Your app tried to use a `pushToken` before the device had a valid registration token, or passed an invalid `identity` value instead of an immutable non-PII identifier.\n\n### Possible solutions\n\n- Initialize the SDK exactly as shown for your platform before you create or verify any factors. For Android, create the client with `new TwilioVerify.Builder(applicationContext).build()`.\n- Update your backend so it requests a Verify Push Access Token and returns the Access Token, `identity`, and Verify Service SID to the mobile app together.\n- When you create an Access Token, include a valid Verify `serviceSid` and send both `identity` and `factorType: push` in the request. Use an immutable identifier such as a UUID, GUID, or SID for `identity`.\n- When you create a push factor, supply every required value for the payload or API request, including the factor name, Verify Service SID, `identity`, Access Token, public key, app ID, notification platform, notification token, and SDK version.\n- Validate that the device has a registration token before you pass it as `pushToken`. If you are not configuring push notifications for the factor, set `pushToken` to `null`.\n- Retry the request only after you confirm that the missing values are present and correctly formatted. Unverified factors expire and become unverifiable after 1 to 24 hours, so recreate the factor if the original enrollment has already expired.\n\n#### Additional resources\n\n- [Verify Push & Silent Device Approval Overview](/docs/verify/push)\n- [Access Token Resource](/docs/verify/api/access-token)\n- [Factor Resource](/docs/verify/api/factor)\n",
    "causes": "* Your app tried to initialize the Verify client without completing the SDK setup step that creates a `TwilioVerify` instance.\n* Your backend did not return the Access Token, `identity`, or Verify Service SID that the mobile app needs before it can create a push factor.\n* Your Access Token request omitted required values. Creating an Access Token requires the `serviceSid` path parameter plus `identity` and `factorType` in the request body.\n* Your factor creation request or `PushFactorPayload` was missing one or more required values such as `friendlyName`, `factorType`, `binding.publicKey`, `config.appId`, `config.notificationPlatform`, `config.notificationToken`, or `config.sdkVersion`.\n* Your app tried to use a `pushToken` before the device had a valid registration token, or passed an invalid `identity` value instead of an immutable non-PII identifier.",
    "solutions": "* Initialize the SDK exactly as shown for your platform before you create or verify any factors. For Android, create the client with `new TwilioVerify.Builder(applicationContext).build()`.\n* Update your backend so it requests a Verify Push Access Token and returns the Access Token, `identity`, and Verify Service SID to the mobile app together.\n* When you create an Access Token, include a valid Verify `serviceSid` and send both `identity` and `factorType: push` in the request. Use an immutable identifier such as a UUID, GUID, or SID for `identity`.\n* When you create a push factor, supply every required value for the payload or API request, including the factor name, Verify Service SID, `identity`, Access Token, public key, app ID, notification platform, notification token, and SDK version.\n* Validate that the device has a registration token before you pass it as `pushToken`. If you are not configuring push notifications for the factor, set `pushToken` to `null`.\n* Retry the request only after you confirm that the missing values are present and correctly formatted. Unverified factors expire and become unverifiable after 1 to 24 hours, so recreate the factor if the original enrollment has already expired.",
    "description": "This error means your Verify integration tried to initialize a required SDK object or factor payload without all required values. Verify Push setup requires your app to create a `TwilioVerify` instance, obtain an Access Token from your backend, and provide the values needed to create a factor, including `identity` and the Verify Service SID.",
    "date_created": "2021-03-15T20:47:11Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60407,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Authentication Token Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Verify cannot generate an `AccessToken` for a Verify Push enrollment request. Use the Verify `AccessToken` resource only for Verify Push enrollment and registration flows. This resource supports only the `push` factor type.\n\n### Possible causes\n\n- You sent a `factorType` value that Verify Push does not support. The Verify `AccessToken` resource accepts only `push`.\n- You tried to use the Verify Push `AccessToken` flow for a non-push verification flow. The `AccessToken` resource is for creating or registering a Verify Push Entity or Factor, not for starting SMS, voice, WhatsApp, email, or other Verify channel verifications.\n- You attempted to reuse an access token pattern from another Twilio SDK product. Verify Push `AccessToken` values cannot be reused between Voice, Chat, or Video style token flows.\n\n### Possible solutions\n\n- Set `factorType` to `push` when you create the `AccessToken`.\n- Generate the token from your backend for the correct Verify Service and return the token, `identity`, and Verify Service SID to your client application as part of your Verify Push enrollment flow.\n- If you need SMS, voice, WhatsApp, email, or another non-push Verify channel, start a Verification with the appropriate `channel` instead of creating an `AccessToken`.\n- Use an immutable `identity` value from your own system when you create the token, such as a UUID, GUID, or SID.\n\n#### Additional resources\n\n- [Access Token Resource](/docs/verify/api/access-token)\n- [Verify Push Client Library Technical Overview](/docs/verify/push/technical-overview)\n- [Verification Channels](/docs/verify/authentication-channels)\n",
    "causes": "* You sent a `factorType` value that Verify Push does not support. The Verify `AccessToken` resource accepts only `push`.\n* You tried to use the Verify Push `AccessToken` flow for a non-push verification flow. The `AccessToken` resource is for creating or registering a Verify Push Entity or Factor, not for starting SMS, voice, WhatsApp, email, or other Verify channel verifications.\n* You attempted to reuse an access token pattern from another Twilio SDK product. Verify Push `AccessToken` values cannot be reused between Voice, Chat, or Video style token flows.",
    "solutions": "* Set `factorType` to `push` when you create the `AccessToken`.\n* Generate the token from your backend for the correct Verify Service and return the token, `identity`, and Verify Service SID to your client application as part of your Verify Push enrollment flow.\n* If you need SMS, voice, WhatsApp, email, or another non-push Verify channel, start a Verification with the appropriate `channel` instead of creating an `AccessToken`.\n* Use an immutable `identity` value from your own system when you create the token, such as a UUID, GUID, or SID.",
    "description": "This error occurs when Verify cannot generate an `AccessToken` for a Verify Push enrollment request. Use the Verify `AccessToken` resource only for Verify Push enrollment and registration flows. This resource supports only the `push` factor type.",
    "date_created": "2021-03-15T20:47:45Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60408,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "TemplateSid is only supported for the SMS channel",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTemplateSid is only supported for the SMS channel\n\n### Possible causes\n\nCreating a verification on CALL or EMAIL with TemplateSid parameter.\n\n### Possible solutions\n\nStop sending the TemplateSid param with non SMS verifications\n",
    "causes": "Creating a verification on CALL or EMAIL with TemplateSid parameter.",
    "solutions": "Stop sending the TemplateSid param with non SMS verifications",
    "description": "TemplateSid is only supported for the SMS channel",
    "date_created": "2021-06-22T04:57:26Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60409,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Custom message did not match any template",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe custom message did not match any of our approved templates for your account. Usage of approved message templates are strongly recommended as they increase the deliverability and conversion rate.\n\n### Possible causes\n\nYou have changed your custom message and it does not match any of our approved templates.\n\n### Possible solutions\n\nIn case you have changed the custom message, please return to the old one and contact support before changing it again. In case you have not changed the custom message, please contact support to provide the correct template for you. Note: Consider using templates instead of custom messages, if none of the available templates work for you, please contact support and we can create it for you.\n",
    "causes": "You have changed your custom message and it does not match any of our approved templates.",
    "solutions": "In case you have changed the custom message, please return to the old one and contact support before changing it again. In case you have not changed the custom message, please contact support to provide the correct template for you. Note: Consider using templates instead of custom messages, if none of the available templates work for you, please contact support and we can create it for you.",
    "description": "The custom message did not match any of our approved templates for your account. Usage of approved message templates are strongly recommended as they increase the deliverability and conversion rate.",
    "date_created": "2021-08-09T01:54:51Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60410,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification delivery attempt blocked",
    "secondary_message": "A verification delivery attempt was blocked.",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis is because [Fraud Guard](/docs/verify/preventing-toll-fraud/sms-fraud-guard) has identified potential fraudulent messages being sent to one or more destination. A temporary block on SMS traffic has been placed for the next 12 hours on the prefix you used. This block will be lifted at the end of this 12-hour period. If further fraudulent activity is detected after this block, this pattern will continue with further temporary 12 hour blocks until the issue is no longer observed.\n\n### Possible causes\n\nWe [identified SMS fraud](/docs/verify/preventing-toll-fraud/sms-fraud-guard) occurring within your Verify product.\n\n### Possible solutions\n\nYou do not need to take any specific action. The block is temporary and will resolve in 12 hours if we do not detect additional fraud.\n",
    "causes": "We [identified SMS fraud](/docs/verify/preventing-toll-fraud/sms-fraud-guard) occurring within your Verify product.",
    "solutions": "You do not need to take any specific action. The block is temporary and will resolve in 12 hours if we do not detect additional fraud.",
    "description": "This is because [Fraud Guard](/docs/verify/preventing-toll-fraud/sms-fraud-guard) has identified potential fraudulent messages being sent to one or more destination. A temporary block on SMS traffic has been placed for the next 12 hours on the prefix you used. This block will be lifted at the end of this 12-hour period. If further fraudulent activity is detected after this block, this pattern will continue with further temporary 12 hour blocks until the issue is no longer observed.",
    "date_created": "2022-03-15T12:01:33Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60411,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone Number or Phone Number Prefix already exists in Safelist",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe phone number or prefix of the phone number that you are trying to add already exists in the SafeList.\n\n### Possible causes\n\n- Multiple requests were made to add the phone number or phone number prefix to the SafeList.\n- The phone number or prefix of the phone number was already added at an earlier time.\n\n### Possible solutions\n\nIf either the phone number or the prefix of the phone number is present in the SafeList already, it requires no further action on your end.\n",
    "causes": "* Multiple requests were made to add the phone number or phone number prefix to the SafeList.\n* The phone number or prefix of the phone number was already added at an earlier time.",
    "solutions": "If either the phone number or the prefix of the phone number is present in the SafeList already, it requires no further action on your end.",
    "description": "The phone number or prefix of the phone number that you are trying to add already exists in the SafeList.",
    "date_created": "2022-09-02T19:45:38Z",
    "last_updated": "2026-03-11T15:43:38-05:00"
  },
  {
    "code": 60412,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification blocked by Fraudulent Signup Prevention",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nBased on your service configuration, Twilio Verify has blocked this request because it was identified as a possible fraudulent signup attempt.\n\nTo prevent platform abuse and unnecessary costs, the verification attempt was terminated before the message was sent.\n\n### Causes\n\n- The request was identified as a high-risk attempt to create a fake or duplicate account.\n- You have not added a legitimate number to the Verify Safelist.\n\n### Possible solutions\n\n- **Update your Safelist**: Add the phone number to your [Verify Safelist](/docs/verify/api/safe-list). This prevents active filters from blocking this specific phone number.\n- **Override it using the `risk_check` parameter**: If you're sure that this authentication is legitimate and safe, you can bypass the block by including the `risk_check=disable` parameter in your API request.\n  - Note: Disabling risk checks increases your exposure to SMS pumping and fake account creation.\n- **Adjust Fraudulent Signup Prevention Setting**: While the feature is in pilot, contact your account manager or reach out to support to adjust the prevention mode.\n",
    "causes": null,
    "solutions": "* **Update your Safelist**: Add the phone number to your [Verify Safelist](/docs/verify/api/safe-list). This prevents active filters from blocking this specific phone number.\n* **Override it using the `risk_check` parameter**: If you're sure that this authentication is legitimate and safe, you can bypass the block by including the `risk_check=disable` parameter in your API request.\n  * Note: Disabling risk checks increases your exposure to SMS pumping and fake account creation.\n* **Adjust Fraudulent Signup Prevention Setting**: While the feature is in pilot, contact your account manager or reach out to support to adjust the prevention mode.",
    "description": "Based on your service configuration, Twilio Verify has blocked this request because it was identified as a possible fraudulent signup attempt. To prevent platform abuse and unnecessary costs, the verification attempt was terminated before the message was sent.",
    "date_created": "2026-03-03T13:31:55-05:00",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60420,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Contact ID format",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Verify request includes a Contact ID that Twilio cannot parse. In Verify Passkeys, a user is represented as an `Entity`, and Twilio recommends using an immutable identifier such as a system UUID, GUID, or SID for the `identity` value. That `identity` should be 8 to 64 characters long and contain only dash-separated alphanumeric characters. If you send a Passkeys `response.userHandle`, it must be a Base64-encoded, URL-safe contact ID.\n\n### Possible causes\n\n- The Contact ID or `identity` value contains characters that do not match the allowed format for Verify `Entity` identifiers.\n- The Contact ID is too short or too long for the Verify `Entity` identifier requirements.\n- The `identity` value changed between Passkeys factor creation and later requests, such as challenge creation. Twilio expects you to use the same `identity` value when you create a Passkeys challenge.\n- The Passkeys `response.userHandle` value is not Base64-encoded and URL-safe.\n\n### Possible solutions\n\n- Generate an immutable, non-PII identifier in your system, such as a UUID, GUID, or SID, and use that value consistently as the user's `identity`.\n- Validate the Contact ID before you send the request. For Verify `Entity` identifiers, keep the value between 8 and 64 characters and use only dash-separated alphanumeric characters.\n- Store the `identity` value you used when you created the Passkeys factor, then reuse that exact value in later Verify requests for the same user.\n- If you send `response.userHandle` in a Passkeys flow, pass it exactly as returned by the authenticator and do not manually reformat or re-encode it.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Entity Resource](/docs/verify/api/entity)\n- [Passkeys Factor Resource](/docs/verify/api/passkeys-factor)\n",
    "causes": "* The Contact ID or `identity` value contains characters that do not match the allowed format for Verify `Entity` identifiers.\n* The Contact ID is too short or too long for the Verify `Entity` identifier requirements.\n* The `identity` value changed between Passkeys factor creation and later requests, such as challenge creation. Twilio expects you to use the same `identity` value when you create a Passkeys challenge.\n* The Passkeys `response.userHandle` value is not Base64-encoded and URL-safe.",
    "solutions": "* Generate an immutable, non-PII identifier in your system, such as a UUID, GUID, or SID, and use that value consistently as the user's `identity`.\n* Validate the Contact ID before you send the request. For Verify `Entity` identifiers, keep the value between 8 and 64 characters and use only dash-separated alphanumeric characters.\n* Store the `identity` value you used when you created the Passkeys factor, then reuse that exact value in later Verify requests for the same user.\n* If you send `response.userHandle` in a Passkeys flow, pass it exactly as returned by the authenticator and do not manually reformat or re-encode it.",
    "description": "Twilio returns this error when your Verify request includes a Contact ID that Twilio cannot parse. In Verify Passkeys, a user is represented as an `Entity`, and Twilio recommends using an immutable identifier such as a system UUID, GUID, or SID for the `identity` value. That `identity` should be 8 to 64 characters long and contain only dash-separated alphanumeric characters. If you send a Passkeys `response.userHandle`, it must be a Base64-encoded, URL-safe contact ID.",
    "date_created": "2024-07-15T10:44:39Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60421,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Unexpected result when creating contact",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when Verify cannot create the contact record needed for your request. Verify uses the destination you send in `to` to start a verification for a phone number or email address, and that value must be valid for the channel you selected. For phone-based channels, the destination must be in `E.164` format. For email, any `channelConfiguration.from` value you include must be a valid email address.\n\n### Possible causes\n\n- The request body contains contact information that Verify cannot use to create the contact, such as a malformed phone number or email address.\n- For SMS, voice, WhatsApp, or Silent Network Auth, the `to` value is not formatted in `E.164`.\n- For the email channel, `channelConfiguration.from` is included but is not a valid email address.\n- The API request is sent with an unsupported content type instead of `application/x-www-form-urlencoded` or `multipart/form-data`, which can cause unexpected API errors.\n- A user entered the wrong phone number or email address during sign-up or profile update, and the incorrect identifier was sent to Verify.\n\n### Possible solutions\n\n- Validate the contact data before you send the request. For initial verification flows, show the full phone number or email address back to the user so they can catch typos before you start verification.\n- Normalize phone numbers to `E.164` before calling Verify. For example, use `+14155552671` instead of a local or partially formatted number.\n- If you use the email channel, confirm that the Verify Service is configured for email and that any `channelConfiguration.from` value is a valid email address.\n- Send the request using `application/x-www-form-urlencoded` or `multipart/form-data`. If possible, use an official Twilio helper library to avoid request formatting issues.\n- Retry the request only after you correct the contact information in the request body.\n\n#### Additional resources\n\n- [Start a verification](/docs/verify/api/verification)\n- [Send Email Verifications with Verify and Twilio SendGrid](/docs/verify/email)\n- [Verification and two-factor authentication best practices](/docs/verify/developer-best-practices)\n",
    "causes": "* The request body contains contact information that Verify cannot use to create the contact, such as a malformed phone number or email address.\n* For SMS, voice, WhatsApp, or Silent Network Auth, the `to` value is not formatted in `E.164`.\n* For the email channel, `channelConfiguration.from` is included but is not a valid email address.\n* The API request is sent with an unsupported content type instead of `application/x-www-form-urlencoded` or `multipart/form-data`, which can cause unexpected API errors.\n* A user entered the wrong phone number or email address during sign-up or profile update, and the incorrect identifier was sent to Verify.",
    "solutions": "* Validate the contact data before you send the request. For initial verification flows, show the full phone number or email address back to the user so they can catch typos before you start verification.\n* Normalize phone numbers to `E.164` before calling Verify. For example, use `+14155552671` instead of a local or partially formatted number.\n* If you use the email channel, confirm that the Verify Service is configured for email and that any `channelConfiguration.from` value is a valid email address.\n* Send the request using `application/x-www-form-urlencoded` or `multipart/form-data`. If possible, use an official Twilio helper library to avoid request formatting issues.\n* Retry the request only after you correct the contact information in the request body.",
    "description": "Twilio returns this error when Verify cannot create the contact record needed for your request. Verify uses the destination you send in `to` to start a verification for a phone number or email address, and that value must be valid for the channel you selected. For phone-based channels, the destination must be in `E.164` format. For email, any `channelConfiguration.from` value you include must be a valid email address.",
    "date_created": "2024-07-15T10:46:59Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60422,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Contact not found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error means your Verify request references a Contact that cannot be found.\n\n### Possible causes\n\n- The requested Contact is missing.\n- The Contact in the request body is incorrect.\n- The request points to a Contact that Twilio cannot match to an existing record.\n\n### Possible solutions\n\n- Check that the Contact in the request body is correct.\n- Send the request again with the correct existing Contact.\n- If you pass a Contact ID, verify that the value matches the Contact you want to use.\n\n#### Additional resources\n\n- [Verify API](/docs/verify/api)\n- [Verifications](/docs/verify/api/verification)\n- [Verification and two-factor authentication best practices](/docs/verify/developer-best-practices)\n",
    "causes": "* The requested Contact is missing.\n* The Contact in the request body is incorrect.\n* The request points to a Contact that Twilio cannot match to an existing record.",
    "solutions": "* Check that the Contact in the request body is correct.\n* Send the request again with the correct existing Contact.\n* If you pass a Contact ID, verify that the value matches the Contact you want to use.",
    "description": "This error means your Verify request references a Contact that cannot be found.",
    "date_created": "2024-07-15T10:48:28Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60423,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Multiple contacts were found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when Verify resolves more than one contact from the lookup criteria in your request. Verify cannot continue until your request identifies a single contact record.\n\n### Possible causes\n\n- Your request uses lookup criteria that are too broad or ambiguous, so more than one contact matches.\n- You stored duplicate or overlapping identifiers across contacts. `unique_customer_provided_id` values and channel values must be unique for each contact.\n- You stored or submitted phone-based identifiers in an inconsistent format. Verify and the Contact API require phone numbers in `E.164` format.\n\n### Possible solutions\n\n- Send one unambiguous identifier for the contact. If you fetch a contact, use either `unique_customer_provided_id` or `channel`, not both.\n- Review your contact records and merge or remove duplicates. If the contact already exists, update the existing contact instead of creating another one.\n- Normalize phone numbers to `E.164` before you create contacts or start verifications, then retry the request.\n- If you upsert contacts through the Contact API, use each item's `correlation_id` and response details to identify and correct problematic records before you retry.\n\n#### Additional resources\n\n- [Verify](/docs/verify)\n- [Verifications API](/docs/verify/api/verification)\n- [Contact API](/docs/messaging/features/contact-api)\n",
    "causes": "* Your request uses lookup criteria that are too broad or ambiguous, so more than one contact matches.\n* You stored duplicate or overlapping identifiers across contacts. `unique_customer_provided_id` values and channel values must be unique for each contact.\n* You stored or submitted phone-based identifiers in an inconsistent format. Verify and the Contact API require phone numbers in `E.164` format.",
    "solutions": "* Send one unambiguous identifier for the contact. If you fetch a contact, use either `unique_customer_provided_id` or `channel`, not both.\n* Review your contact records and merge or remove duplicates. If the contact already exists, update the existing contact instead of creating another one.\n* Normalize phone numbers to `E.164` before you create contacts or start verifications, then retry the request.\n* If you upsert contacts through the Contact API, use each item's `correlation_id` and response details to identify and correct problematic records before you retry.",
    "description": "Twilio returns this error when Verify resolves more than one contact from the lookup criteria in your request. Verify cannot continue until your request identifies a single contact record.",
    "date_created": "2024-07-15T10:50:26Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60424,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Contact address not found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Verify request references a contact, but Twilio cannot find the phone number or email address needed for the verification. Verify sends verifications to a phone number or email address, so the contact must contain a valid destination for the channel you selected.\n\n### Possible causes\n\n- The contact does not include a phone number or email address for the requested verification channel.\n- The contact has an address, but your application selected a different channel than the address supports.\n- The phone number stored on the contact is not in `E.164` format for a phone-based verification.\n\n### Possible solutions\n\n- Update the contact so it includes the correct destination address for the channel you are using.\n- If you are verifying a phone number, store the contact's phone number in `E.164` format before you retry the request.\n- If you are verifying by email, add a valid email address to the contact and send the verification with the `email` channel.\n- Validate both the selected channel and the contact address in your application before you create the verification.\n\n#### Additional resources\n\n- [Verifications API](/docs/verify/api/verification)\n- [What is E.164?](/docs/glossary/what-e164)\n- [Send Email Verifications with Verify and Twilio SendGrid](/docs/verify/email)\n",
    "causes": "* The contact does not include a phone number or email address for the requested verification channel.\n* The contact has an address, but your application selected a different channel than the address supports.\n* The phone number stored on the contact is not in `E.164` format for a phone-based verification.",
    "solutions": "* Update the contact so it includes the correct destination address for the channel you are using.\n* If you are verifying a phone number, store the contact's phone number in `E.164` format before you retry the request.\n* If you are verifying by email, add a valid email address to the contact and send the verification with the `email` channel.\n* Validate both the selected channel and the contact address in your application before you create the verification.",
    "description": "This error occurs when your Verify request references a contact, but Twilio cannot find the phone number or email address needed for the verification. Verify sends verifications to a phone number or email address, so the contact must contain a valid destination for the channel you selected.",
    "date_created": "2024-07-15T10:52:01Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60425,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification SID invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a Verify request with a missing or malformed Verification SID. For a Verification Check request, `verificationSid` must be a `SID<VE>` value that starts with `VE` and is 34 characters long. If you do not send `verificationSid`, send `to` instead.\n\n### Possible causes\n\n- The request includes `verificationSid`, but the value does not match the required `SID<VE>` format.\n- The request omits `verificationSid`, and you also did not provide `to`. Verify requires one of those values when you create a Verification Check.\n- The request passes the wrong SID type, such as a Service SID that starts with `VA`, instead of a Verification SID that starts with `VE`.\n- The SID was copied incorrectly, truncated, or includes extra characters. Verify expects `verificationSid` to be 34 characters long.\n\n### Possible solutions\n\n- Send the `verificationSid` exactly as returned when the verification was created. Make sure it starts with `VE` and is 34 characters long.\n- If you do not have the Verification SID, create the Verification Check request with `to` instead of `verificationSid`.\n- Confirm that you are using a Verification SID and not another resource SID such as `serviceSid`. `serviceSid` values start with `VA`, while Verification SIDs start with `VE`.\n\n#### Additional resources\n\n- [Verification Check API](/docs/verify/api/verification-check)\n- [Verifications API](/docs/verify/api/verification)\n- [Verify V2 returns a 404 after Fetching a Verification SID](https://help.twilio.com/articles/360033357033-Verify-V2-returns-a-404-after-Fetching-a-Verification-SID)\n",
    "causes": "* The request includes `verificationSid`, but the value does not match the required `SID<VE>` format.\n* The request omits `verificationSid`, and you also did not provide `to`. Verify requires one of those values when you create a Verification Check.\n* The request passes the wrong SID type, such as a Service SID that starts with `VA`, instead of a Verification SID that starts with `VE`.\n* The SID was copied incorrectly, truncated, or includes extra characters. Verify expects `verificationSid` to be 34 characters long.",
    "solutions": "* Send the `verificationSid` exactly as returned when the verification was created. Make sure it starts with `VE` and is 34 characters long.\n* If you do not have the Verification SID, create the Verification Check request with `to` instead of `verificationSid`.\n* Confirm that you are using a Verification SID and not another resource SID such as `serviceSid`. `serviceSid` values start with `VA`, while Verification SIDs start with `VE`.",
    "description": "This error occurs when you send a Verify request with a missing or malformed Verification SID. For a Verification Check request, `verificationSid` must be a `SID<VE>` value that starts with `VE` and is 34 characters long. If you do not send `verificationSid`, send `to` instead.",
    "date_created": "2024-07-15T10:53:38Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60426,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification ID invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Verify request sends a missing or malformed Verification SID. Verify uses Verification SIDs that start with `VE`, and the `verificationSid` value must match the expected SID format when you check a verification by SID.\n\n### Possible causes\n\n- The request does not include `verificationSid` when your integration is trying to identify the verification by SID instead of by `to`.\n- The Verification SID is incorrectly formatted and does not match `^VE[0-9a-fA-F]{32}$`.\n- The value sent in `verificationSid` is not the `verification.sid` returned when you created the verification.\n- The request sends a different SID type, such as a Service SID that starts with `VA`, instead of a Verification SID that starts with `VE`.\n\n### Possible solutions\n\n- Pass the `verification.sid` returned by the create Verification response if you want to check the verification by SID.\n- Validate that the `verificationSid` value starts with `VE`, is 34 characters long, and matches `^VE[0-9a-fA-F]{32}$` before you send the request.\n- If you are not checking the verification by SID, send the `to` parameter instead. Verify accepts either `to` or `verificationSid` for a Verification Check request.\n- Make sure you send the Verification SID in the correct request field and do not substitute another resource SID, such as the Verify Service SID.\n\n#### Additional resources\n\n- [Verification Check](/docs/verify/api/verification-check)\n- [Verifications](/docs/verify/api/verification)\n- [What is a SID?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* The request does not include `verificationSid` when your integration is trying to identify the verification by SID instead of by `to`.\n* The Verification SID is incorrectly formatted and does not match `^VE[0-9a-fA-F]{32}$`.\n* The value sent in `verificationSid` is not the `verification.sid` returned when you created the verification.\n* The request sends a different SID type, such as a Service SID that starts with `VA`, instead of a Verification SID that starts with `VE`.",
    "solutions": "* Pass the `verification.sid` returned by the create Verification response if you want to check the verification by SID.\n* Validate that the `verificationSid` value starts with `VE`, is 34 characters long, and matches `^VE[0-9a-fA-F]{32}$` before you send the request.\n* If you are not checking the verification by SID, send the `to` parameter instead. Verify accepts either `to` or `verificationSid` for a Verification Check request.\n* Make sure you send the Verification SID in the correct request field and do not substitute another resource SID, such as the Verify Service SID.",
    "description": "This error occurs when your Verify request sends a missing or malformed Verification SID. Verify uses Verification SIDs that start with `VE`, and the `verificationSid` value must match the expected SID format when you check a verification by SID.",
    "date_created": "2024-07-15T10:55:55Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60427,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Factor ID invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify request that expects a Factor SID does not receive one, or receives a value that does not match the required Factor SID format. Verify Factor SIDs are 34-character identifiers that start with `YF`. You can see this on endpoints that work with Factors directly and on Challenge requests that require `factorSid`.\n\n### Possible causes\n\n- The request does not include a Factor SID where the endpoint expects it. For example, Create Challenge requires `factorSid`, while Factor fetch, update, and delete requests require `Sid` in the path.\n- The value in `Sid` or `factorSid` is not a valid Factor SID. Verify expects a 34-character SID that starts with `YF`.\n- The value sent in the request is empty, truncated, or otherwise does not match the Factor SID pattern required by Verify.\n- In Verify TOTP, the user has multiple factors on the same device and the intended `factorSid` was not included when creating the verification attempt.\n\n### Possible solutions\n\n- Send the Factor SID in the correct part of the request. Use `Sid` for Factor fetch, update, and delete endpoints. Use `factorSid` when you create a Challenge.\n- Validate the SID before you send the request. Use a 34-character Factor SID that matches `^YF[0-9a-fA-F]{32}$`.\n- If you do not have the Factor SID yet, create the factor first or list the entity's factors and use the `sid` returned by Verify.\n- For Verify TOTP users with multiple factors on the same device, store the correct Factor SID for the selected factor and pass that exact `factorSid` when you create the Challenge.\n\n#### Additional resources\n\n- [Factor Resource](/docs/verify/api/factor)\n- [Challenge Resource](/docs/verify/api/challenge)\n- [Verify TOTP Overview](/docs/verify/totp)\n",
    "causes": "* The request does not include a Factor SID where the endpoint expects it. For example, Create Challenge requires `factorSid`, while Factor fetch, update, and delete requests require `Sid` in the path.\n* The value in `Sid` or `factorSid` is not a valid Factor SID. Verify expects a 34-character SID that starts with `YF`.\n* The value sent in the request is empty, truncated, or otherwise does not match the Factor SID pattern required by Verify.\n* In Verify TOTP, the user has multiple factors on the same device and the intended `factorSid` was not included when creating the verification attempt.",
    "solutions": "* Send the Factor SID in the correct part of the request. Use `Sid` for Factor fetch, update, and delete endpoints. Use `factorSid` when you create a Challenge.\n* Validate the SID before you send the request. Use a 34-character Factor SID that matches `^YF[0-9a-fA-F]{32}$`.\n* If you do not have the Factor SID yet, create the factor first or list the entity's factors and use the `sid` returned by Verify.\n* For Verify TOTP users with multiple factors on the same device, store the correct Factor SID for the selected factor and pass that exact `factorSid` when you create the Challenge.",
    "description": "This error occurs when a Verify request that expects a Factor SID does not receive one, or receives a value that does not match the required Factor SID format. Verify Factor SIDs are 34-character identifiers that start with `YF`. You can see this on endpoints that work with Factors directly and on Challenge requests that require `factorSid`.",
    "date_created": "2024-07-15T10:57:25Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60428,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported channel",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Verify request includes a `channel` value that the endpoint cannot use. For the Verifications create request, use a supported channel value such as `sms`, `call`, `whatsapp`, `email`, `sna`, or `auto`. Some channels also require additional Verify Service setup before you can send a verification.\n\n### Possible causes\n\n- The request includes an invalid or misspelled `channel` value. The Verifications create request only accepts the channel values documented for that endpoint.\n- The request uses a Verify authentication method that exists elsewhere in Verify, but not on this Verification request. Verify supports additional methods such as Passkeys, Push, Silent Device Approval, and TOTP through their own product flows.\n- The request uses `whatsapp`, but your Verify setup does not have a WhatsApp sender configured. WhatsApp for Verify requires you to bring your own WhatsApp sender.\n- The request uses `email`, but your Verify Service does not have email configured. Verify email requires a SendGrid integration before you can send email verifications.\n- The request uses `sna` or `auto` without the required Silent Network Auth setup. SNA requires upfront configuration on your Verify Service.\n\n### Possible solutions\n\n- Update the `channel` parameter to a value supported by the Verifications create request. For OTP and phone or email verification requests, use `sms`, `call`, `whatsapp`, `email`, `sna`, or `auto` as documented for that endpoint.\n- If you want to use a different Verify authentication method, switch to the API flow for that method instead of the Verifications create request. Review the Verify channel documentation to choose the correct implementation path.\n- If you want to send verifications over WhatsApp, configure a WhatsApp sender for Verify before retrying the request.\n- If you want to send verifications over email, complete the SendGrid email integration for your Verify Service and then retry with `channel=email`.\n- If you want to use Silent Network Auth, complete the required SNA setup first. If you are using Automatic SMS Fallback, use `channel=auto` only after that feature is configured for your Service.\n\n#### Additional resources\n\n- [Verification API reference](/docs/verify/api/verification)\n- [Verification Channels](/docs/verify/authentication-channels)\n- [Send Email Verifications with Verify and Twilio SendGrid](/docs/verify/email)\n",
    "causes": "* The request includes an invalid or misspelled `channel` value. The Verifications create request only accepts the channel values documented for that endpoint.\n* The request uses a Verify authentication method that exists elsewhere in Verify, but not on this Verification request. Verify supports additional methods such as Passkeys, Push, Silent Device Approval, and TOTP through their own product flows.\n* The request uses `whatsapp`, but your Verify setup does not have a WhatsApp sender configured. WhatsApp for Verify requires you to bring your own WhatsApp sender.\n* The request uses `email`, but your Verify Service does not have email configured. Verify email requires a SendGrid integration before you can send email verifications.\n* The request uses `sna` or `auto` without the required Silent Network Auth setup. SNA requires upfront configuration on your Verify Service.",
    "solutions": "* Update the `channel` parameter to a value supported by the Verifications create request. For OTP and phone or email verification requests, use `sms`, `call`, `whatsapp`, `email`, `sna`, or `auto` as documented for that endpoint.\n* If you want to use a different Verify authentication method, switch to the API flow for that method instead of the Verifications create request. Review the Verify channel documentation to choose the correct implementation path.\n* If you want to send verifications over WhatsApp, configure a WhatsApp sender for Verify before retrying the request.\n* If you want to send verifications over email, complete the SendGrid email integration for your Verify Service and then retry with `channel=email`.\n* If you want to use Silent Network Auth, complete the required SNA setup first. If you are using Automatic SMS Fallback, use `channel=auto` only after that feature is configured for your Service.",
    "description": "This error occurs when your Verify request includes a `channel` value that the endpoint cannot use. For the Verifications create request, use a supported channel value such as `sms`, `call`, `whatsapp`, `email`, `sna`, or `auto`. Some channels also require additional Verify Service setup before you can send a verification.",
    "date_created": "2024-07-15T10:59:15Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60431,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification not found",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when the request references a Verify Verification resource that does not exist or is no longer available. Verify Verification SIDs start with `VE` and are scoped to a Verify Service SID. Twilio also deletes a verification SID after it is approved, after it expires, or after it reaches the maximum number of check attempts.\n\n### Possible causes\n\n- The `verification_sid` or other verification identifier in the request does not match an existing Verification resource.\n- The request uses the wrong Verify Service SID, so the `ServiceSid` and verification SID do not point to the same resource.\n- The verification was already approved, expired after 10 minutes, or reached the maximum number of check attempts, and Twilio deleted the verification SID.\n\n### Possible solutions\n\n- Confirm that you are sending the correct Verification SID returned when you created the verification. Verify Verification SIDs start with `VE`.\n- Use the Verify Service SID that owns the verification. When you fetch a verification, send the request to `/Services/{ServiceSid}/Verifications/{Sid}`. When you check a code, send the request to `/Services/{ServiceSid}/VerificationCheck`.\n- If the previous verification was approved, expired, or hit the maximum number of check attempts, start a new verification instead of reusing the old SID.\n- Review the Verify Logs in Console if you need to confirm what happened to a specific verification.\n\n#### Additional resources\n\n- [Verify overview](/docs/verify)\n- [Verifications API resource](/docs/verify/api/verification)\n- [Verification Check API resource](/docs/verify/api/verification-check)\n",
    "causes": "* The `verification_sid` or other verification identifier in the request does not match an existing Verification resource.\n* The request uses the wrong Verify Service SID, so the `ServiceSid` and verification SID do not point to the same resource.\n* The verification was already approved, expired after 10 minutes, or reached the maximum number of check attempts, and Twilio deleted the verification SID.",
    "solutions": "* Confirm that you are sending the correct Verification SID returned when you created the verification. Verify Verification SIDs start with `VE`.\n* Use the Verify Service SID that owns the verification. When you fetch a verification, send the request to `/Services/{ServiceSid}/Verifications/{Sid}`. When you check a code, send the request to `/Services/{ServiceSid}/VerificationCheck`.\n* If the previous verification was approved, expired, or hit the maximum number of check attempts, start a new verification instead of reusing the old SID.\n* Review the Verify Logs in Console if you need to confirm what happened to a specific verification.",
    "description": "This error occurs when the request references a Verify Verification resource that does not exist or is no longer available. Verify Verification SIDs start with `VE` and are scoped to a Verify Service SID. Twilio also deletes a verification SID after it is approved, after it expires, or after it reaches the maximum number of check attempts.",
    "date_created": "2024-07-15T11:02:52Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60432,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported passkeys relying party",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Verify Passkeys request includes a relying party value that Verify cannot use. For Passkeys, configure the relying party with your application domain in `passkeys.relyingParty.id` and with the origins or App IDs your Service accepts in `passkeys.relyingParty.origins`.\n\n### Possible causes\n\n- Your request includes a `passkeys.relyingParty.id` value that is not a supported application domain.\n- Your request includes a `passkeys.relyingParty.origins` value that Verify Passkeys does not accept for your app or website.\n- Your web passkey flow is using an origin that does not meet WebAuthn requirements, such as a non-HTTPS origin.\n- The relying party values in your request do not match the passkey configuration on your Verify Service.\n\n### Possible solutions\n\n- Set `passkeys.relyingParty.id` to your application domain, such as `example.com`. Do not include a scheme or port.\n- Set `passkeys.relyingParty.origins` to the origin URLs or App IDs your Service should accept. If you use multiple origins, provide each supported value in the list for your Service configuration.\n- For web passkey flows, use HTTPS origins. If you are testing locally, `http://localhost` is a common development exception.\n- Review your Verify Service passkey configuration and make sure the same relying party values are used during service setup, passkey registration, and authentication.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Verify Passkeys technical overview](/docs/verify/passkeys/technical-overview)\n- [Verify Service API reference](/docs/verify/api/service)\n",
    "causes": "* Your request includes a `passkeys.relyingParty.id` value that is not a supported application domain.\n* Your request includes a `passkeys.relyingParty.origins` value that Verify Passkeys does not accept for your app or website.\n* Your web passkey flow is using an origin that does not meet WebAuthn requirements, such as a non-HTTPS origin.\n* The relying party values in your request do not match the passkey configuration on your Verify Service.",
    "solutions": "* Set `passkeys.relyingParty.id` to your application domain, such as `example.com`. Do not include a scheme or port.\n* Set `passkeys.relyingParty.origins` to the origin URLs or App IDs your Service should accept. If you use multiple origins, provide each supported value in the list for your Service configuration.\n* For web passkey flows, use HTTPS origins. If you are testing locally, `http://localhost` is a common development exception.\n* Review your Verify Service passkey configuration and make sure the same relying party values are used during service setup, passkey registration, and authentication.",
    "description": "This error occurs when your Verify Passkeys request includes a relying party value that Verify cannot use. For Passkeys, configure the relying party with your application domain in `passkeys.relyingParty.id` and with the origins or App IDs your Service accepts in `passkeys.relyingParty.origins`.",
    "date_created": "2024-07-15T11:04:45Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60433,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported passkeys approval content type",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to approve a Verify Passkeys challenge with a request content type that Verify does not support. The `ApproveChallenge` endpoint accepts an `application/json` body, and the Passkeys approval payload is sent as a JSON object.\n\n### Possible causes\n\n- You sent the `POST /v2/Services/{ServiceSid}/Passkeys/ApproveChallenge` request with a `Content-Type` other than `application/json`.\n- You submitted the Passkeys approval payload as form data or another unsupported body format instead of the JSON object that the endpoint expects.\n- Your HTTP client, proxy, or middleware changed the request headers before the request reached Verify.\n\n### Possible solutions\n\n- Send the approval request as `application/json`. Set the `Content-Type` header to `application/json`.\n- Build the request body as the JSON object expected by `ApproveChallenge`, including required fields such as `id`, `rawId`, `authenticatorAttachment`, and `response`.\n- If you send the request manually, compare it to the Passkeys quickstart. If possible, use a Twilio helper library example for `approveChallenge.update()` to avoid incorrect request encoding.\n\n#### Additional resources\n\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Challenge resource API reference](/docs/verify/api/passkeys-challenge)\n- [Verify Passkeys overview](/docs/verify/passkeys)\n",
    "causes": "* You sent the `POST /v2/Services/{ServiceSid}/Passkeys/ApproveChallenge` request with a `Content-Type` other than `application/json`.\n* You submitted the Passkeys approval payload as form data or another unsupported body format instead of the JSON object that the endpoint expects.\n* Your HTTP client, proxy, or middleware changed the request headers before the request reached Verify.",
    "solutions": "* Send the approval request as `application/json`. Set the `Content-Type` header to `application/json`.\n* Build the request body as the JSON object expected by `ApproveChallenge`, including required fields such as `id`, `rawId`, `authenticatorAttachment`, and `response`.\n* If you send the request manually, compare it to the Passkeys quickstart. If possible, use a Twilio helper library example for `approveChallenge.update()` to avoid incorrect request encoding.",
    "description": "This error occurs when you try to approve a Verify Passkeys challenge with a request content type that Verify does not support. The `ApproveChallenge` endpoint accepts an `application/json` body, and the Passkeys approval payload is sent as a JSON object.",
    "date_created": "2024-07-15T11:06:28Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60434,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported passkeys verification content type",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a Verify Passkeys verification request with a credential `type` that Verify does not support. Verify Passkeys uses WebAuthn passkey registration and authentication flows, and the passkeys verification payload accepts `public-key` for the credential `type`.\n\n### Possible causes\n\n- The credential object sent to `VerifyFactor` used a `type` other than `public-key`.\n- The verification request did not include the WebAuthn credential payload generated during passkey registration.\n- The request payload came from a different Verify flow or a non-Passkeys implementation, so the verification content type was not valid for Passkeys.\n\n### Possible solutions\n\n- Send the credential returned by your browser passkey registration flow to `VerifyFactor` as a JSON object.\n- Make sure the credential `type` is `public-key`.\n- Include the required WebAuthn registration fields in `response`, including `clientDataJSON` and `attestationObject`.\n- If you include `transports`, use only supported values.\n- Follow the Verify Passkeys quickstart to create the factor, generate the browser credential, and verify the factor with the expected payload structure.\n\n#### Additional resources\n\n- [Verify Passkeys overview](/docs/verify/passkeys)\n- [Verify Passkeys quickstart](/docs/verify/quickstarts/passkeys)\n- [Passkeys Factor resource](/docs/verify/api/passkeys-factor)\n",
    "causes": "* The credential object sent to `VerifyFactor` used a `type` other than `public-key`.\n* The verification request did not include the WebAuthn credential payload generated during passkey registration.\n* The request payload came from a different Verify flow or a non-Passkeys implementation, so the verification content type was not valid for Passkeys.",
    "solutions": "* Send the credential returned by your browser passkey registration flow to `VerifyFactor` as a JSON object.\n* Make sure the credential `type` is `public-key`.\n* Include the required WebAuthn registration fields in `response`, including `clientDataJSON` and `attestationObject`.\n* If you include `transports`, use only supported values.\n* Follow the Verify Passkeys quickstart to create the factor, generate the browser credential, and verify the factor with the expected payload structure.",
    "description": "This error occurs when you send a Verify Passkeys verification request with a credential `type` that Verify does not support. Verify Passkeys uses WebAuthn passkey registration and authentication flows, and the passkeys verification payload accepts `public-key` for the credential `type`.",
    "date_created": "2024-07-15T11:07:56Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60436,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Recipient invalid or not provided",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Verify request does not include a valid recipient destination. Verify accepts a phone number or an email address as the destination, and phone numbers must be provided in `E.164` format.\n\n### Possible causes\n\n- The request did not include the recipient destination required for the verification request.\n- The recipient is a phone number that is not formatted in `E.164`.\n- The selected Verify channel and recipient type do not match, such as using the `email` channel without an email address.\n- Your application passed unconfirmed user input, such as a mistyped phone number or email address. Confirming contact information and validating phone numbers before sending an OTP helps catch these errors earlier.\n\n### Possible solutions\n\n- Include the recipient destination in the request body and resend the verification request.\n- For `sms`, `call`, `whatsapp`, `sna`, or `auto`, send the recipient as a complete `E.164` phone number, such as `+14155552671`.\n- For the `email` channel, send an email address as the destination and make sure your Verify email integration is configured before sending email verifications.\n- Normalize and validate phone numbers before creating a verification. Use Lookup if you need help converting or screening user input before you send the OTP.\n\n#### Additional resources\n\n- [Start a verification](/docs/verify/api/verification)\n- [Send Email Verifications with Verify and Twilio SendGrid](/docs/verify/email)\n- [Lookup](/docs/lookup)\n",
    "causes": "* The request did not include the recipient destination required for the verification request.\n* The recipient is a phone number that is not formatted in `E.164`.\n* The selected Verify channel and recipient type do not match, such as using the `email` channel without an email address.\n* Your application passed unconfirmed user input, such as a mistyped phone number or email address. Confirming contact information and validating phone numbers before sending an OTP helps catch these errors earlier.",
    "solutions": "* Include the recipient destination in the request body and resend the verification request.\n* For `sms`, `call`, `whatsapp`, `sna`, or `auto`, send the recipient as a complete `E.164` phone number, such as `+14155552671`.\n* For the `email` channel, send an email address as the destination and make sure your Verify email integration is configured before sending email verifications.\n* Normalize and validate phone numbers before creating a verification. Use Lookup if you need help converting or screening user input before you send the OTP.",
    "description": "Twilio returns this error when your Verify request does not include a valid recipient destination. Verify accepts a phone number or an email address as the destination, and phone numbers must be provided in `E.164` format.",
    "date_created": "2024-07-15T11:10:08Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60437,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Recipient type unsupported",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error indicates that the recipient you submitted is not a recipient type that Verify can use for the requested verification. Verify supports verifications to a phone number or an email address. For phone-based verifications, send the destination in `E.164` format. For email verifications, use `channel=email` and configure email for your Verify Service.\n\n### Possible causes\n\n- The `to` value is not a supported Verify recipient type, such as a phone number or an email address.\n- You used a phone-based channel with a recipient that is not a valid phone number. Verify uses phone numbers for channels such as `sms`, `whatsapp`, `call`, and `sna`.\n- You used `channel=email` with a recipient that is not an email address.\n- You attempted to send an email verification before completing the required email configuration for your Verify Service.\n\n### Possible solutions\n\n- Send a supported recipient in `to`. Use a phone number for phone-based channels and an email address for `channel=email`.\n- Format phone numbers in `E.164` before creating the verification.\n- Make sure the `channel` you selected matches the recipient type you are sending. For example, use `channel=email` only with an email address.\n- If you need to verify email addresses, set up email for your Verify Service first. Create the email integration, authenticate your sending domain or use single sender verification for testing, and then retry the request.\n\n#### Additional resources\n\n- [Verifications API](/docs/verify/api/verification)\n- [Verification Channels](/docs/verify/authentication-channels)\n- [Send Email Verifications with Verify and Twilio SendGrid](/docs/verify/email)\n",
    "causes": "* The `to` value is not a supported Verify recipient type, such as a phone number or an email address.\n* You used a phone-based channel with a recipient that is not a valid phone number. Verify uses phone numbers for channels such as `sms`, `whatsapp`, `call`, and `sna`.\n* You used `channel=email` with a recipient that is not an email address.\n* You attempted to send an email verification before completing the required email configuration for your Verify Service.",
    "solutions": "* Send a supported recipient in `to`. Use a phone number for phone-based channels and an email address for `channel=email`.\n* Format phone numbers in `E.164` before creating the verification.\n* Make sure the `channel` you selected matches the recipient type you are sending. For example, use `channel=email` only with an email address.\n* If you need to verify email addresses, set up email for your Verify Service first. Create the email integration, authenticate your sending domain or use single sender verification for testing, and then retry the request.",
    "description": "This error indicates that the recipient you submitted is not a recipient type that Verify can use for the requested verification. Verify supports verifications to a phone number or an email address. For phone-based verifications, send the destination in `E.164` format. For email verifications, use `channel=email` and configure email for your Verify Service.",
    "date_created": "2024-07-15T11:11:39Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60440,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported verification content type",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a Verify request asks for a verification content type that Verify does not support. Start new verification requests support a defined set of channels. They also use different customization options depending on the channel. For example, SMS and Voice use `TemplateSid`, while email uses `channelConfiguration` with a Verify email integration.\n\n### Possible causes\n\n- The request includes a verification content type value that Verify does not recognize or support.\n- The request uses content customization that does not match the selected channel. Verify accepts `TemplateSid` for SMS and Voice verifications, while email customizations are passed in `channelConfiguration`.\n- The request is using the email channel without the required Verify email integration. Email verifications require SendGrid setup before you can send customized email verification content.\n- The request is built for a channel outside the supported Verify verification flow. When you start a verification, use one of the supported Verify channels for that endpoint.\n\n### Possible solutions\n\n- Review the request sent to the Verifications endpoint and remove any unsupported verification content type values. Then retry the request with a supported Verify channel and its matching parameters.\n- If you are customizing SMS or Voice verification messages, use a valid `TemplateSid` from your Verify templates instead of an unsupported content type. Verify templates expose the channels they support so you can match the template to the verification channel.\n- If you are sending email verifications, configure a Verify email integration with SendGrid and pass email-specific overrides in `channelConfiguration`, such as `template_id`, `from`, `from_name`, or `substitutions`.\n- Retry the verification without custom content to confirm the base request succeeds. If you do not select a specific template and no Service default template is configured, Verify uses the default verification template automatically.\n\n#### Additional resources\n\n- [Verifications API](/docs/verify/api/verification)\n- [Verification Channels](/docs/verify/authentication-channels)\n- [Getting Started with Verification Templates](/docs/verify/verification-templates)\n",
    "causes": "* The request includes a verification content type value that Verify does not recognize or support.\n* The request uses content customization that does not match the selected channel. Verify accepts `TemplateSid` for SMS and Voice verifications, while email customizations are passed in `channelConfiguration`.\n* The request is using the email channel without the required Verify email integration. Email verifications require SendGrid setup before you can send customized email verification content.\n* The request is built for a channel outside the supported Verify verification flow. When you start a verification, use one of the supported Verify channels for that endpoint.",
    "solutions": "* Review the request sent to the Verifications endpoint and remove any unsupported verification content type values. Then retry the request with a supported Verify channel and its matching parameters.\n* If you are customizing SMS or Voice verification messages, use a valid `TemplateSid` from your Verify templates instead of an unsupported content type. Verify templates expose the channels they support so you can match the template to the verification channel.\n* If you are sending email verifications, configure a Verify email integration with SendGrid and pass email-specific overrides in `channelConfiguration`, such as `template_id`, `from`, `from_name`, or `substitutions`.\n* Retry the verification without custom content to confirm the base request succeeds. If you do not select a specific template and no Service default template is configured, Verify uses the default verification template automatically.",
    "description": "Twilio returns this error when a Verify request asks for a verification content type that Verify does not support. Start new verification requests support a defined set of channels. They also use different customization options depending on the channel. For example, SMS and Voice use `TemplateSid`, while email uses `channelConfiguration` with a Verify email integration.",
    "date_created": "2024-07-15T11:13:25Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60441,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Illegal status",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error indicates that Verify encountered a verification status it could not process for the current operation. Verify statuses can be `pending`, `approved`, `canceled`, `max_attempts_reached`, `deleted`, `failed`, or `expired`. If you update a verification directly, the update endpoint only supports `approved` and `canceled`. For most verification flows, use the Verification Check API to validate the code and let Verify manage the lifecycle.\n\n### Possible causes\n\n- A verification operation returned an unexpected status.\n- Your application attempted to update a verification with a status other than `approved` or `canceled`.\n- Your integration is using manual verification status updates for a flow that should be completed with the Verification Check API.\n\n### Possible solutions\n\n- If you call Update a Verification Status, send only `approved` after your application has validated the code or `canceled` when you need to start a new verification session.\n- Use the Verification Check API for normal OTP validation so Verify can manage the verification lifecycle.\n- Review the verification in Verify Logs in Console to confirm the status that was returned. If you continue to receive 60441 for valid requests, contact Support with the Verify Service SID and Verification SID.\n\n#### Additional resources\n\n- [Verify API: Verifications](/docs/verify/api/verification)\n- [Verify API: Verification Check](/docs/verify/api/verification-check)\n- [Verify overview](/docs/verify)\n",
    "causes": "* A verification operation returned an unexpected status.\n* Your application attempted to update a verification with a status other than `approved` or `canceled`.\n* Your integration is using manual verification status updates for a flow that should be completed with the Verification Check API.",
    "solutions": "* If you call Update a Verification Status, send only `approved` after your application has validated the code or `canceled` when you need to start a new verification session.\n* Use the Verification Check API for normal OTP validation so Verify can manage the verification lifecycle.\n* Review the verification in Verify Logs in Console to confirm the status that was returned. If you continue to receive 60441 for valid requests, contact Support with the Verify Service SID and Verification SID.",
    "description": "This error indicates that Verify encountered a verification status it could not process for the current operation. Verify statuses can be `pending`, `approved`, `canceled`, `max_attempts_reached`, `deleted`, `failed`, or `expired`. If you update a verification directly, the update endpoint only supports `approved` and `canceled`. For most verification flows, use the Verification Check API to validate the code and let Verify manage the lifecycle.",
    "date_created": "2024-07-15T11:15:12Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60500,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Phone Number Mismatch",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error means Verify completed the Silent Network Auth flow with the carrier, but the phone number detected for the device's active SIM did not match the phone number you sent in the Verification request. Silent Network Auth verifies phone number possession by confirming with the carrier that the SIM on the device invoking `sna.url` corresponds to the number being verified.\n\n### Possible causes\n\n- The phone number you sent in the Verification request does not belong to the SIM in the device that invoked `sna.url`.\n- The device uses dual SIM, and the active mobile data session is using a different SIM than the number you are trying to verify.\n- The end user is trying to verify a phone number that does not belong to the SIM in the device.\n\n### Possible solutions\n\n- Confirm that the phone number you send in `to` is the same mobile number assigned to the SIM in the device that will invoke `sna.url`. Start a new Verification after the user confirms the correct number.\n- If the device may be dual SIM, start the verification with `channel=auto` and include `device_ip` so Verify can assess connectivity and whether the device might be using dual SIM before attempting SNA.\n- Fall back to SMS or another Verify channel for this user. For SNA errors, you can generally fail over to another Verification channel, and `channel=auto` can use SMS as a backup when SNA is not suitable.\n\n#### Additional resources\n\n- [Verify Silent Network Auth Overview](/docs/verify/sna)\n- [Verify Automatic SMS Fallback Overview](/docs/verify/automatic-channel-selection)\n- [Best Practices for Verify SNA Error Handling](/docs/verify/best-practices-for-verify-sna-error-handling)\n",
    "causes": "* The phone number you sent in the Verification request does not belong to the SIM in the device that invoked `sna.url`.\n* The device uses dual SIM, and the active mobile data session is using a different SIM than the number you are trying to verify.\n* The end user is trying to verify a phone number that does not belong to the SIM in the device.",
    "solutions": "* Confirm that the phone number you send in `to` is the same mobile number assigned to the SIM in the device that will invoke `sna.url`. Start a new Verification after the user confirms the correct number.\n* If the device may be dual SIM, start the verification with `channel=auto` and include `device_ip` so Verify can assess connectivity and whether the device might be using dual SIM before attempting SNA.\n* Fall back to SMS or another Verify channel for this user. For SNA errors, you can generally fail over to another Verification channel, and `channel=auto` can use SMS as a backup when SNA is not suitable.",
    "description": "This error means Verify completed the Silent Network Auth flow with the carrier, but the phone number detected for the device's active SIM did not match the phone number you sent in the Verification request. Silent Network Auth verifies phone number possession by confirming with the carrier that the SIM on the device invoking `sna.url` corresponds to the number being verified.",
    "date_created": "2022-08-29T21:51:30Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60510,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Verify receives a Silent Network Auth verification request but cannot complete the SNA flow successfully. Silent Network Auth depends on invoking `sna.url` from the end user's device over an active cellular data session so Verify can confirm the session with the carrier.\n\n### Possible causes\n\n- The mobile client invoked `sna.url` while connected to Wi-Fi instead of cellular data. Silent Network Auth requires a cellular data connection for the carrier check.\n- The handset did not have the active mobile data session that Silent Network Auth needs to complete the verification flow.\n- Carrier or network restrictions prevented the Silent Network Auth process from completing successfully.\n\n### Possible solutions\n\n- Invoke `sna.url` from the end user's mobile device over cellular data, not Wi-Fi. During testing, turn off Wi-Fi before opening the SNA URL.\n- Call the Verification Check API and inspect `sna_attempts_error_codes` to get the final SNA result and more detailed error information for troubleshooting and monitoring.\n- Fall back to SMS or another Verify channel for this end user. If you want Verify to try Silent Network Auth first and use SMS when SNA is unavailable, use the `auto` channel flow.\n\n#### Additional resources\n\n- [Verify Silent Network Auth Overview](/docs/verify/sna)\n- [Best Practices for Verify SNA Error Handling](/docs/verify/best-practices-for-verify-sna-error-handling)\n- [Verifications API Reference](/docs/verify/api/verification)\n",
    "causes": "* The mobile client invoked `sna.url` while connected to Wi-Fi instead of cellular data. Silent Network Auth requires a cellular data connection for the carrier check.\n* The handset did not have the active mobile data session that Silent Network Auth needs to complete the verification flow.\n* Carrier or network restrictions prevented the Silent Network Auth process from completing successfully.",
    "solutions": "* Invoke `sna.url` from the end user's mobile device over cellular data, not Wi-Fi. During testing, turn off Wi-Fi before opening the SNA URL.\n* Call the Verification Check API and inspect `sna_attempts_error_codes` to get the final SNA result and more detailed error information for troubleshooting and monitoring.\n* Fall back to SMS or another Verify channel for this end user. If you want Verify to try Silent Network Auth first and use SMS when SNA is unavailable, use the `auto` channel flow.",
    "description": "This error occurs when Verify receives a Silent Network Auth verification request but cannot complete the SNA flow successfully. Silent Network Auth depends on invoking `sna.url` from the end user's device over an active cellular data session so Verify can confirm the session with the carrier.",
    "date_created": "2022-08-30T16:43:11Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60511,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Downstream Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify request that uses Silent Network Auth fails during downstream SNA processing. Check the Verification Check response for `sna_attempts_error_codes` to confirm that 60511 was returned, then move the user to another verification channel.\n\n### Possible causes\n\n- A required carrier header was missing during the Silent Network Auth flow.\n- The phone number used for the verification attempt was invalid.\n- The `sna.url` request was invoked on a carrier path that does not support HTTPS for that SNA flow.\n- The redirect chain for the `sna.url` invocation was invalid or interrupted before the carrier could complete the check.\n\n### Possible solutions\n\n- Retry the verification with a different Verify channel instead of Silent Network Auth.\n- Check `sna_attempts_error_codes` on the Verification Check response and use that result to decide whether to fall back to SMS, voice, WhatsApp, or another supported channel.\n- Verify that the destination phone number is valid and formatted in `E.164` before starting a new verification.\n- Invoke the one-time `sna.url` from the end user's device over the mobile network and use `POST` for production implementations.\n- Allow the SNA redirect flow to complete without rewriting or interrupting the request.\n- If you are testing with a browser or Live Test Number, confirm that the device or browser is not forcing HTTPS in a way that breaks the carrier flow.\n\n#### Additional resources\n\n- [Verify Silent Network Auth Overview](/docs/verify/sna)\n- [Best Practices for Verify SNA Error Handling](/docs/verify/best-practices-for-verify-sna-error-handling)\n- [Verify Channel Selection](/docs/verify/fallback-scenarios)\n",
    "causes": "* A required carrier header was missing during the Silent Network Auth flow.\n* The phone number used for the verification attempt was invalid.\n* The `sna.url` request was invoked on a carrier path that does not support HTTPS for that SNA flow.\n* The redirect chain for the `sna.url` invocation was invalid or interrupted before the carrier could complete the check.",
    "solutions": "* Retry the verification with a different Verify channel instead of Silent Network Auth.\n* Check `sna_attempts_error_codes` on the Verification Check response and use that result to decide whether to fall back to SMS, voice, WhatsApp, or another supported channel.\n* Verify that the destination phone number is valid and formatted in `E.164` before starting a new verification.\n* Invoke the one-time `sna.url` from the end user's device over the mobile network and use `POST` for production implementations.\n* Allow the SNA redirect flow to complete without rewriting or interrupting the request.\n* If you are testing with a browser or Live Test Number, confirm that the device or browser is not forcing HTTPS in a way that breaks the carrier flow.",
    "description": "This error occurs when a Verify request that uses Silent Network Auth fails during downstream SNA processing. Check the Verification Check response for `sna_attempts_error_codes` to confirm that 60511 was returned, then move the user to another verification channel.",
    "date_created": "2022-08-30T16:46:26Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60517,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA User-Agent Mismatch Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify Silent Network Auth verification reaches the redirect stage, but Twilio detects a `User-Agent` mismatch before the SNA flow can complete. To use SNA, start the verification with the `sna` channel, invoke `sna.url` from the client device on a mobile network, and complete the flow before checking the verification result.\n\n### Possible causes\n\n- A `User-Agent` mismatch was detected during one or more redirects in the SNA flow.\n- The SNA request started in one client context and continued in another, such as moving between a mobile app and a mobile browser during redirects. This can change the `User-Agent` and cause the verification attempt to fail.\n- The implementation did not keep a consistent client context while following the carrier redirect chain. Some carriers require multiple redirects before you can complete the SNA flow.\n\n### Possible solutions\n\n- Retry the verification using another Verify channel for this end user, such as SMS. For SNA errors in general, you can fail over to SMS or another verification channel except for 60540.\n- Invoke `sna.url` directly from the end user's mobile device that is connected to the mobile network, then complete the verification with a server-to-server Verification Check request.\n- Follow all redirects returned during the SNA URL invocation. Some carriers use multiple redirects in the SNA flow.\n- If you implement SNA in a mobile app, keep the request in a single client context during the redirect flow instead of switching between app and browser experiences.\n- If you want SNA with built-in SMS fallback, use `channel=auto` so Verify can attempt SNA first and fall back to SMS when needed.\n\n#### Additional resources\n\n- [Verify Silent Network Auth overview](/docs/verify/sna)\n- [Verifications API reference](/docs/verify/api/verification)\n- [Best practices for Verify SNA error handling](/docs/verify/best-practices-for-verify-sna-error-handling)\n",
    "causes": "* A `User-Agent` mismatch was detected during one or more redirects in the SNA flow.\n* The SNA request started in one client context and continued in another, such as moving between a mobile app and a mobile browser during redirects. This can change the `User-Agent` and cause the verification attempt to fail.\n* The implementation did not keep a consistent client context while following the carrier redirect chain. Some carriers require multiple redirects before you can complete the SNA flow.",
    "solutions": "* Retry the verification using another Verify channel for this end user, such as SMS. For SNA errors in general, you can fail over to SMS or another verification channel except for 60540.\n* Invoke `sna.url` directly from the end user's mobile device that is connected to the mobile network, then complete the verification with a server-to-server Verification Check request.\n* Follow all redirects returned during the SNA URL invocation. Some carriers use multiple redirects in the SNA flow.\n* If you implement SNA in a mobile app, keep the request in a single client context during the redirect flow instead of switching between app and browser experiences.\n* If you want SNA with built-in SMS fallback, use `channel=auto` so Verify can attempt SNA first and fall back to SMS when needed.",
    "description": "This error occurs when a Verify Silent Network Auth verification reaches the redirect stage, but Twilio detects a `User-Agent` mismatch before the SNA flow can complete. To use SNA, start the verification with the `sna` channel, invoke `sna.url` from the client device on a mobile network, and complete the flow before checking the verification result.",
    "date_created": "2022-08-30T16:48:34Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60519,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Verification Result Pending",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nThe Verification request was received and is still pending completion.\n\nThis can happen when:\n\n- A Verification Check is performed on a Verification that is still in progress.\n- A Verification was created for a phone number whose carrier is not supported for the selected Twilio Region. For example, if an SNA Verification was created for a UK phone number using the US1 Region instead of the IE1 Region. In this case, the Verification request will never complete.\n\n### Possible solutions\n\n- Confirm the Verification Check is performed only after a HTTP 200 Response is received from invoking the SNA URL.\n- Retry if the Verification is still in its validity window and has not expired.\n- Confirm the Verification was created in the correct Twilio Region for the phone number, see [Using Verify Silent Network Auth with Twilio Regions ](/docs/verify/using-verify-silent-network-auth-with-twilio-regions)for more detailed information. If it was not, retry Verification using correct Region.\n",
    "causes": "The Verification request was received and is still pending completion. This can happen when: - A Verification Check is performed on a Verification that is still in progress.\n- A Verification was created for a phone number whose carrier is not supported for the selected Twilio Region. For example, if an SNA Verification was created for a UK phone number using the US1 Region instead of the IE1 Region. In this case, the Verification request will never complete.",
    "solutions": "* Confirm the Verification Check is performed only after a HTTP 200 Response is received from invoking the SNA URL.\n* Retry if the Verification is still in its validity window and has not expired.\n* Confirm the Verification was created in the correct Twilio Region for the phone number, see [Using Verify Silent Network Auth with Twilio Regions ](/docs/verify/using-verify-silent-network-auth-with-twilio-regions)for more detailed information. If it was not, retry Verification using correct Region.",
    "description": "",
    "date_created": "2022-08-30T16:50:11Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60520,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA URL Failed",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nThe Verification request was received and failed due to an error related to invoking the SNA URL.\n\n### Possible solutions\n\n- Retry Verification using a channel other than Silent Network Auth for this end user.\n- [Contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.\n",
    "causes": "The Verification request was received and failed due to an error related to invoking the SNA URL.",
    "solutions": "* Retry Verification using a channel other than Silent Network Auth for this end user.\n* [Contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.",
    "description": "",
    "date_created": "2022-08-30T16:52:54Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60531,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Carrier Not Detected",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Verify Silent Network Auth cannot identify the end user's carrier from the network used to invoke `sna.url`. Silent Network Auth requires the mobile device that holds the target SIM to invoke `sna.url` over mobile data so Verify can complete the carrier check.\n\n### Possible causes\n\n- The device opened `sna.url` over Wi-Fi instead of a cellular data connection.\n- The SNA step was started from a desktop or browser-based flow, but the end user did not switch from Wi-Fi to mobile data before invoking `sna.url` on their phone.\n- The request did not come directly from the mobile device and SIM that Verify needs to check with the carrier.\n- The network IP used for the SNA request could not be associated with a carrier session, so Verify could not determine whether SNA was available for that attempt.\n\n### Possible solutions\n\n- Make sure the mobile device with the target SIM directly invokes `sna.url` over mobile data. Do not use Wi-Fi for the SNA request.\n- If you use a mobile app, route the SNA request over the cellular network so the device does not fall back to Wi-Fi.\n- If you use a browser-based or desktop-assisted SNA flow, instruct the end user to turn off Wi-Fi before opening the SNA step on their phone.\n- If SNA may not work for a device, use `channel=auto` and include `device_ip` so Verify can fall back to SMS when carrier or network restrictions prevent SNA.\n- If you are not using automatic fallback, retry the verification with another supported Verify channel such as SMS.\n\n#### Additional resources\n\n- [Verify Silent Network Auth Overview](/docs/verify/sna)\n- [Verify Silent Network Auth Technical Overview](/docs/verify/sna/tech-overview)\n- [Verify Automatic SMS Fallback Overview](/docs/verify/automatic-channel-selection)\n",
    "causes": "* The device opened `sna.url` over Wi-Fi instead of a cellular data connection.\n* The SNA step was started from a desktop or browser-based flow, but the end user did not switch from Wi-Fi to mobile data before invoking `sna.url` on their phone.\n* The request did not come directly from the mobile device and SIM that Verify needs to check with the carrier.\n* The network IP used for the SNA request could not be associated with a carrier session, so Verify could not determine whether SNA was available for that attempt.",
    "solutions": "* Make sure the mobile device with the target SIM directly invokes `sna.url` over mobile data. Do not use Wi-Fi for the SNA request.\n* If you use a mobile app, route the SNA request over the cellular network so the device does not fall back to Wi-Fi.\n* If you use a browser-based or desktop-assisted SNA flow, instruct the end user to turn off Wi-Fi before opening the SNA step on their phone.\n* If SNA may not work for a device, use `channel=auto` and include `device_ip` so Verify can fall back to SMS when carrier or network restrictions prevent SNA.\n* If you are not using automatic fallback, retry the verification with another supported Verify channel such as SMS.",
    "description": "This error occurs when Verify Silent Network Auth cannot identify the end user's carrier from the network used to invoke `sna.url`. Silent Network Auth requires the mobile device that holds the target SIM to invoke `sna.url` over mobile data so Verify can complete the carrier check.",
    "date_created": "2022-08-30T17:00:49Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60532,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Potential Dual SIM Detected",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify Silent Network Auth request cannot be completed because the carrier identified from the device's public IP address does not match the carrier associated with the phone number being verified. This mismatch can indicate a dual SIM device or a shared device, so SNA cannot deterministically confirm phone number possession.\n\n### Possible causes\n\n- The public IP address detected during the SNA flow maps to a different carrier than the carrier associated with the phone number submitted for verification.\n- The device has multiple SIMs or SIM profiles, and the active data session does not align with the phone number being verified.\n- Multiple people share the same device, so the active carrier data session may belong to a different phone number than the one submitted in the Verification request.\n\n### Possible solutions\n\n- Retry the verification using a different Verify channel, such as SMS or another supported channel for this end user.\n- Make a Verification Check request and inspect `sna_attempts_error_codes` so you can confirm and log the final SNA error before or while failing over to another channel.\n- If your flow supports it, start the verification with `channel=auto` and include `device_ip` so Verify can assess whether SNA is likely to work and automatically fall back to SMS when needed.\n\n#### Additional resources\n\n- [Verify Silent Network Auth Overview](/docs/verify/sna)\n- [Best Practices for Verify SNA Error Handling](/docs/verify/best-practices-for-verify-sna-error-handling)\n- [Automatic SMS Fallback Overview](/docs/verify/automatic-channel-selection)\n",
    "causes": "* The public IP address detected during the SNA flow maps to a different carrier than the carrier associated with the phone number submitted for verification.\n* The device has multiple SIMs or SIM profiles, and the active data session does not align with the phone number being verified.\n* Multiple people share the same device, so the active carrier data session may belong to a different phone number than the one submitted in the Verification request.",
    "solutions": "* Retry the verification using a different Verify channel, such as SMS or another supported channel for this end user.\n* Make a Verification Check request and inspect `sna_attempts_error_codes` so you can confirm and log the final SNA error before or while failing over to another channel.\n* If your flow supports it, start the verification with `channel=auto` and include `device_ip` so Verify can assess whether SNA is likely to work and automatically fall back to SMS when needed.",
    "description": "This error occurs when a Verify Silent Network Auth request cannot be completed because the carrier identified from the device's public IP address does not match the carrier associated with the phone number being verified. This mismatch can indicate a dual SIM device or a shared device, so SNA cannot deterministically confirm phone number possession.",
    "date_created": "2022-08-30T17:02:55Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60533,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Carrier Header Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Verify Silent Network Auth verification reaches the carrier step but the carrier does not provide a required header for Twilio to complete the verification. Because the `sna` channel depends on direct carrier confirmation for the device's SIM and phone number, the verification attempt cannot continue.\n\n### Possible causes\n\n- The carrier did not return a required header during the Silent Network Auth verification flow.\n- The verification was started with the `sna` channel, which requires a direct carrier network check to complete.\n- In browser-based or desktop-assisted SNA flows, the end user's device did not complete the SNA URL invocation over the carrier network.\n\n### Possible solutions\n\n- Retry the verification with a different Verify channel such as `sms` or `call` for this end user.\n- Make a Verification Check request and inspect `sna_attempts_error_codes` so you can record the failure and trigger your fallback flow.\n- If you use SNA in a browser or desktop flow, make sure the SNA URL is opened on the mobile device and completed over the carrier network.\n- Do not rely on channel-specific handling for this error beyond fallback. Use another verification method when SNA cannot be completed.\n\n#### Additional resources\n\n- [Verify Silent Network Auth Overview](/docs/verify/sna)\n- [Best Practices for Verify SNA Error Handling](/docs/verify/best-practices-for-verify-sna-error-handling)\n- [Verifications API Reference](/docs/verify/api/verification)\n",
    "causes": "* The carrier did not return a required header during the Silent Network Auth verification flow.\n* The verification was started with the `sna` channel, which requires a direct carrier network check to complete.\n* In browser-based or desktop-assisted SNA flows, the end user's device did not complete the SNA URL invocation over the carrier network.",
    "solutions": "* Retry the verification with a different Verify channel such as `sms` or `call` for this end user.\n* Make a Verification Check request and inspect `sna_attempts_error_codes` so you can record the failure and trigger your fallback flow.\n* If you use SNA in a browser or desktop flow, make sure the SNA URL is opened on the mobile device and completed over the carrier network.\n* Do not rely on channel-specific handling for this error beyond fallback. Use another verification method when SNA cannot be completed.",
    "description": "This error occurs when a Verify Silent Network Auth verification reaches the carrier step but the carrier does not provide a required header for Twilio to complete the verification. Because the `sna` channel depends on direct carrier confirmation for the device's SIM and phone number, the verification attempt cannot continue.",
    "date_created": "2022-08-30T17:07:51Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60534,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Downstream Carrier Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Verify receives a Silent Network Auth verification request, but the request fails during processing because of a downstream carrier error. Silent Network Auth requires the client to invoke `sna.url` from the end user's device over the mobile network so Verify can complete the carrier-side phone number check.\n\n### Possible causes\n\n- The downstream carrier returned an error while Verify was processing the Silent Network Auth request.\n- The Silent Network Auth flow could not be completed with the carrier.\n- The client did not complete the required `sna.url` request from a device connected to the mobile network, which can prevent the carrier verification step from completing.\n\n### Possible solutions\n\n- Retry the verification using a channel other than Silent Network Auth for this end user, such as SMS.\n- Use `channel=auto` if you want Verify to attempt Silent Network Auth first and fall back to SMS when SNA cannot be completed.\n- Make a Verification Check request and inspect `sna_attempts_error_codes` to get more detail about the failed SNA attempt.\n- Confirm that the client sends the `sna.url` request from the end user's device over an active mobile data connection, then retry the verification.\n\n#### Additional resources\n\n- [Verify Silent Network Auth Overview](/docs/verify/sna)\n- [Best Practices for Verify SNA Error Handling](/docs/verify/best-practices-for-verify-sna-error-handling)\n- [Verifications API Reference](/docs/verify/api/verification)\n",
    "causes": "* The downstream carrier returned an error while Verify was processing the Silent Network Auth request.\n* The Silent Network Auth flow could not be completed with the carrier.\n* The client did not complete the required `sna.url` request from a device connected to the mobile network, which can prevent the carrier verification step from completing.",
    "solutions": "* Retry the verification using a channel other than Silent Network Auth for this end user, such as SMS.\n* Use `channel=auto` if you want Verify to attempt Silent Network Auth first and fall back to SMS when SNA cannot be completed.\n* Make a Verification Check request and inspect `sna_attempts_error_codes` to get more detail about the failed SNA attempt.\n* Confirm that the client sends the `sna.url` request from the end user's device over an active mobile data connection, then retry the verification.",
    "description": "This error occurs when Verify receives a Silent Network Auth verification request, but the request fails during processing because of a downstream carrier error. Silent Network Auth requires the client to invoke `sna.url` from the end user's device over the mobile network so Verify can complete the carrier-side phone number check.",
    "date_created": "2022-08-30T17:10:56Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 60540,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "SNA Carrier Identified Invalid Phone Number",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nThe Verification request was received and failed during processing because the carrier indicated that the phone number is invalid, although the phone number formatting was valid. This can happen when the end user provides an invalid phone number in error, the phone number is deactivated, suspended, in the grace period before reassignment, or a fraudulent user purposefully uses an invalid phone number.\n\n### Possible solutions\n\n- Check that the phone number provided is correct.\n- Retry Verification using a channel not based on phone number such as email.\n\nIf fraud is suspected:\n\n- Do not retry Verification using a channel other than Silent Network Auth for this end user.\n- [Report potential fraud attempt](/docs/verify/preventing-toll-fraud#what-to-do-if-you-suspect-fraud-on-your-twilio-account).\n",
    "causes": "The Verification request was received and failed during processing because the carrier indicated that the phone number is invalid, although the phone number formatting was valid. This can happen when the end user provides an invalid phone number in error, the phone number is deactivated, suspended, in the grace period before reassignment, or a fraudulent user purposefully uses an invalid phone number.",
    "solutions": "* Check that the phone number provided is correct.\n* Retry Verification using a channel not based on phone number such as email. If fraud is suspected: * Do not retry Verification using a channel other than Silent Network Auth for this end user.\n* [Report potential fraud attempt](/docs/verify/preventing-toll-fraud#what-to-do-if-you-suspect-fraud-on-your-twilio-account).",
    "description": "",
    "date_created": "2022-08-30T17:23:44Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60550,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Auto Channel Failed: No channels selected due to validation errors. Check console.",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you start a verification with `channel=auto` and Verify cannot select a valid delivery path because the available channels fail validation. Automatic Channel Selection attempts Silent Network Auth first and uses SMS as a fallback when needed.\n\n### Possible causes\n\n- One or more delivery channels required for the request are disabled on your Verify Service.\n- Your account or Verify Service does not have access to a required feature for Automatic Channel Selection or Silent Network Auth. Automatic Channel Selection is a pilot feature and Silent Network Auth requires upfront Verify Service configuration.\n- The request uses `channel=auto`, but Verify cannot validate a usable path through Silent Network Auth or SMS for that verification attempt.\n\n### Possible solutions\n\n- Open the Console Debugger and review the related debugger message to identify the specific validation error for the failed verification attempt.\n- In your Verify Service settings, enable the delivery channels your flow depends on. If you use `channel=auto`, make sure SMS is available as the fallback channel.\n- Confirm that your account has access to Automatic Channel Selection and that your Verify Service is configured for Silent Network Auth before sending requests with `channel=auto`.\n- Include `device_ip` when you use `channel=auto` so Verify can assess whether Silent Network Auth can be used for the device before falling back to SMS.\n- If you do not need Automatic Channel Selection, retry the verification with a supported explicit channel such as `sms`, `call`, `whatsapp`, `email`, or `sna`.\n\n#### Additional resources\n\n- [Verify Automatic SMS Fallback Overview](/docs/verify/automatic-channel-selection)\n- [Verification Channels](/docs/verify/authentication-channels)\n- [Troubleshooting](/docs/comms/troubleshooting)\n",
    "causes": "* One or more delivery channels required for the request are disabled on your Verify Service.\n* Your account or Verify Service does not have access to a required feature for Automatic Channel Selection or Silent Network Auth. Automatic Channel Selection is a pilot feature and Silent Network Auth requires upfront Verify Service configuration.\n* The request uses `channel=auto`, but Verify cannot validate a usable path through Silent Network Auth or SMS for that verification attempt.",
    "solutions": "* Open the Console Debugger and review the related debugger message to identify the specific validation error for the failed verification attempt.\n* In your Verify Service settings, enable the delivery channels your flow depends on. If you use `channel=auto`, make sure SMS is available as the fallback channel.\n* Confirm that your account has access to Automatic Channel Selection and that your Verify Service is configured for Silent Network Auth before sending requests with `channel=auto`.\n* Include `device_ip` when you use `channel=auto` so Verify can assess whether Silent Network Auth can be used for the device before falling back to SMS.\n* If you do not need Automatic Channel Selection, retry the verification with a supported explicit channel such as `sms`, `call`, `whatsapp`, `email`, or `sna`.",
    "description": "This error occurs when you start a verification with `channel=auto` and Verify cannot select a valid delivery path because the available channels fail validation. Automatic Channel Selection attempts Silent Network Auth first and uses SMS as a fallback when needed.",
    "date_created": "2023-02-02T13:40:09Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 60600,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unprovisioned or out of coverage",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nNo information returned on the requested phone number\n\n### Possible causes\n\nPhone number provided is not assigned to a carrier based on our data sources; or the phone number is outside of the scope of our data coverage\n\n### Possible solutions\n\nConfirm with authoritative evidence that the phone number is valid and assigned to a carrier; then contact Support and let us know\n",
    "causes": "Phone number provided is not assigned to a carrier based on our data sources; or the phone number is outside of the scope of our data coverage",
    "solutions": "Confirm with authoritative evidence that the phone number is valid and assigned to a carrier; then contact Support and let us know",
    "description": "No information returned on the requested phone number",
    "date_created": "2017-11-27T20:24:04Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60601,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Authorization required for Canada lookups",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nAuthorization must be granted to your company by the CLNPC to return data on Canada phone numbers.\n\n### Possible causes\n\nYour account is not authorized for lookups on Canada phone numbers\n\n### Possible solutions\n\nTo apply for access to query Canada phone number information, see https://help.twilio.com/articles/360004563433-Twilio-Lookup-API-is-Not-Returning-Carrier-Data-for-Canadian-Phone-Numbers\n",
    "causes": "Your account is not authorized for lookups on Canada phone numbers",
    "solutions": "To apply for access to query Canada phone number information, see https://help.twilio.com/articles/360004563433-Twilio-Lookup-API-is-Not-Returning-Carrier-Data-for-Canadian-Phone-Numbers",
    "description": "Authorization must be granted to your company by the CLNPC to return data on Canada phone numbers.",
    "date_created": "2018-05-28T21:31:27Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "App hash can only be used with SMS channel",
    "secondary_message": "App hash can only be used with SMS channel",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nApp hash can only be used with SMS channel\n\nHTTP status: 400\n\n### Possible causes\n\nThe customer is using App Hash without SMS channel\n\n### Possible solutions\n\ndo not use app Hash with channel other than SMS\n",
    "causes": "The customer is using App Hash without SMS channel",
    "solutions": "do not use app Hash with channel other than SMS",
    "description": "App hash can only be used with SMS channel HTTP status: 400",
    "date_created": "2019-12-24T17:19:35Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60603,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SendGrid maximum credits exceeded",
    "secondary_message": "SendGrid maximum credits exceeded",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Verify tries to send an email verification through your SendGrid integration, but the linked SendGrid Email API account cannot send more email. This usually means the account has reached its available credits or sending limit. The Verify request returns HTTP status 401.\n\n### Possible causes\n\n- Your SendGrid Email API account is on a free trial or end-of-trial plan and has reached its available daily credits.\n- Your SendGrid account was downgraded to a free or end-of-trial state after a billing change or account reactivation.\n- Your SendGrid Email API plan has reached its sending limit for the current billing period.\n- You upgraded the Marketing Campaigns plan instead of the SendGrid Email API plan.\n- You recently upgraded the SendGrid Email API plan, but the payment for the prorated charges has not completed yet.\n- Your account is frozen because the payment method on file is invalid or a charge was declined.\n\n### Possible solutions\n\n- Open your SendGrid account and check Settings > Account Details > Your Products. Confirm that the Email API plan is active and matches the volume you need for verification emails.\n- If your account is on a free trial or end-of-trial plan, wait for the limit to reset if you are still within the trial allowance, or upgrade the Email API plan.\n- If you need higher sending volume, upgrade the SendGrid Email API plan instead of the Marketing Campaigns plan.\n- If you upgraded recently, confirm that your payment method is valid and that the new plan has been paid for successfully.\n- Review your recent email verification volume in SendGrid so you can confirm whether you hit the current plan limit.\n- If your account was downgraded unexpectedly or remains blocked after you update billing, contact SendGrid support.\n\n#### Additional resources\n\n- [Send Email Verifications with Verify and Twilio SendGrid](/docs/verify/email)\n- [Upgrade your plan](/docs/sendgrid/ui/account-and-settings/upgrading-your-plan)\n- [Understanding the \"Maximum Credits Exceeded\" error](https://help.twilio.com/articles/47402376505883-Understanding-the-Maximum-Credits-Exceeded-error)\n",
    "causes": "* Your SendGrid Email API account is on a free trial or end-of-trial plan and has reached its available daily credits.\n* Your SendGrid account was downgraded to a free or end-of-trial state after a billing change or account reactivation.\n* Your SendGrid Email API plan has reached its sending limit for the current billing period.\n* You upgraded the Marketing Campaigns plan instead of the SendGrid Email API plan.\n* You recently upgraded the SendGrid Email API plan, but the payment for the prorated charges has not completed yet.\n* Your account is frozen because the payment method on file is invalid or a charge was declined.",
    "solutions": "* Open your SendGrid account and check Settings > Account Details > Your Products. Confirm that the Email API plan is active and matches the volume you need for verification emails.\n* If your account is on a free trial or end-of-trial plan, wait for the limit to reset if you are still within the trial allowance, or upgrade the Email API plan.\n* If you need higher sending volume, upgrade the SendGrid Email API plan instead of the Marketing Campaigns plan.\n* If you upgraded recently, confirm that your payment method is valid and that the new plan has been paid for successfully.\n* Review your recent email verification volume in SendGrid so you can confirm whether you hit the current plan limit.\n* If your account was downgraded unexpectedly or remains blocked after you update billing, contact SendGrid support.",
    "description": "This error occurs when Verify tries to send an email verification through your SendGrid integration, but the linked SendGrid Email API account cannot send more email. This usually means the account has reached its available credits or sending limit. The Verify request returns HTTP status 401.",
    "date_created": "2019-12-30T18:04:42Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60604,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "SendGrid Authenticated user is not authorized to send mail",
    "secondary_message": "SendGrid Authenticated user is not authorized to send mail",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nSendGrid Authenticated user is not authorized to send mail\n\nHTTP status: 401\n\n### Possible causes\n\nSendGrid API key have no send emails privileges\n\n### Possible solutions\n\nUpdate your API key permissions\n",
    "causes": "SendGrid API key have no send emails privileges",
    "solutions": "Update your API key permissions",
    "description": "SendGrid Authenticated user is not authorized to send mail HTTP status: 401",
    "date_created": "2019-12-30T18:13:28Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60605,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification delivery attempt blocked",
    "secondary_message": "Verification delivery attempt blocked",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThe destination phone number has been blocked by Verify Geo-Permissions\n\nHTTP status: 403\n\nNote: To align with evolving regulatory requirements, Twilio has stopped delivering voice, messaging, and email traffic to recipients in Iran starting March 15, 2025 and Syria & Cuba starting September 15, 2025.\n\n### Possible causes\n\nThe destination has been disabled due to suspected fraudulent activity or for possible security reasons.\n\n### Possible solutions\n\nInvestigate your application for potential abuse. If you have a legitimate need to call this number, please check the following: https://support.twilio.com/hc/en-us/articles/5054044369179-Error-60605-Verification-delivery-attempt-blocked-\n",
    "causes": "The destination has been disabled due to suspected fraudulent activity or for possible security reasons.",
    "solutions": "Investigate your application for potential abuse. If you have a legitimate need to call this number, please check the following: https://support.twilio.com/hc/en-us/articles/5054044369179-Error-60605-Verification-delivery-attempt-blocked-",
    "description": "The destination phone number has been blocked by Verify Geo-Permissions HTTP status: 403 Note: To align with evolving regulatory requirements, Twilio has stopped delivering voice, messaging, and email traffic to recipients in Iran starting March 15, 2025 and Syria & Cuba starting September 15, 2025.",
    "date_created": "2020-10-14T15:41:59Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60606,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup Package is Not Enabled",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nYour account is not enabled to call the requested package.\n\n### Possible causes\n\nThe request was received but failed due to the Account not being enabled to access the requested Lookup package.\n\n### Possible solutions\n\n- Check that the Account SID provided is correct.\n- If the requested package requires it, complete the [Account Security Registration form](https://twlo.my.salesforce-sites.com/countrycarrier/SN_CarrierRegistration_VFP) to enable the package on your Account.\n- [Contact Twilio Support](https://www.twilio.com/help/contact) to rule out other issues.\n",
    "causes": "The request was received but failed due to the Account not being enabled to access the requested Lookup package.",
    "solutions": "* Check that the Account SID provided is correct.\n* If the requested package requires it, complete the [Account Security Registration form](https://twlo.my.salesforce-sites.com/countrycarrier/SN_CarrierRegistration_VFP) to enable the package on your Account.\n* [Contact Twilio Support](https://www.twilio.com/help/contact) to rule out other issues.",
    "description": "Your account is not enabled to call the requested package.",
    "date_created": "2020-12-28T19:48:36Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60607,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup Unsupported Country",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nNo provider found to satisfy the Lookup request\n\n### Possible causes\n\nThe request was received but failed due to the phone number being associated with a country that is not supported by the requested Lookup package.\n\n### Possible solutions\n\n- Check that the phone number provided is correct.\n- Confirm that the phone number's country is supported by the requested Lookup package. Check country coverage in https://www.twilio.com/docs/lookup/v2-api.\n",
    "causes": "The request was received but failed due to the phone number being associated with a country that is not supported by the requested Lookup package.",
    "solutions": "* Check that the phone number provided is correct.\n* Confirm that the phone number's country is supported by the requested Lookup package. Check country coverage in https://www.twilio.com/docs/lookup/v2-api.",
    "description": "No provider found to satisfy the Lookup request",
    "date_created": "2021-02-09T15:05:57Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60608,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Lookup Error",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nLookup provider replied with an error\n\n### Possible causes\n\nThe Lookup request was received but failed during processing due to an error encountered with downstream providers.\n\n### Possible solutions\n\n- Retry request to rule out transient issues.\n- If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.\n",
    "causes": "The Lookup request was received but failed during processing due to an error encountered with downstream providers.",
    "solutions": "* Retry request to rule out transient issues.\n* If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.",
    "description": "Lookup provider replied with an error",
    "date_created": "2021-02-09T15:07:14Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60609,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Live activity not enabled",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Lookup request asks for the `live_activity` data package, but that package is not enabled on your account. In Lookup v2, live activity is requested through the `Fields` parameter, and the current Line Status capability requires access before you can use it.\n\n### Possible causes\n\n- Your request includes `live_activity` in the `Fields` parameter, but your account is not enabled for that package.\n- Your account has not been approved for the current Line Status package, which requires access before use.\n\n### Possible solutions\n\n- Contact Support or Sales to enable the requested package on your account.\n- If you do not need live activity data, remove `live_activity` from the `Fields` parameter and send the Lookup request with only the fields you need. Lookup returns optional package data only when you request the corresponding field.\n- If you need this capability, request access to Line Status before sending Lookup requests that depend on it. For the current implementation, use `Fields=line_status` after access is enabled.\n\n#### Additional resources\n\n- [Lookup v2 API](/docs/lookup/v2-api)\n- [Line Status](/docs/lookup/v2-api/line-status)\n- [Lookup v2 Quickstart](/docs/lookup/quickstart)\n",
    "causes": "* Your request includes `live_activity` in the `Fields` parameter, but your account is not enabled for that package.\n* Your account has not been approved for the current Line Status package, which requires access before use.",
    "solutions": "* Contact Support or Sales to enable the requested package on your account.\n* If you do not need live activity data, remove `live_activity` from the `Fields` parameter and send the Lookup request with only the fields you need. Lookup returns optional package data only when you request the corresponding field.\n* If you need this capability, request access to Line Status before sending Lookup requests that depend on it. For the current implementation, use `Fields=line_status` after access is enabled.",
    "description": "This error occurs when your Lookup request asks for the `live_activity` data package, but that package is not enabled on your account. In Lookup v2, live activity is requested through the `Fields` parameter, and the current Line Status capability requires access before you can use it.",
    "date_created": "2021-06-30T14:15:13Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60610,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone number outside of coverage",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThe requested phone number is outside of our range of coverage\n\n### Possible causes\n\nYou have provided a phone number that appears as either not provisioned with any carrier or belonging to a carrier outside the scope of our data coverage.\n\n### Possible solutions\n\nTry a supported phone number\n",
    "causes": "You have provided a phone number that appears as either not provisioned with any carrier or belonging to a carrier outside the scope of our data coverage.",
    "solutions": "Try a supported phone number",
    "description": "The requested phone number is outside of our range of coverage",
    "date_created": "2021-06-30T14:26:50Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60611,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup Package Quota Reached",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nLookup quota for requested package has been reached\n\n### Possible causes\n\nThe request was received but failed due to the Account reaching its request quota for the given Lookup package. Some packages may have a quota set when they are in the Pilot phase.\n\n### Possible solutions\n\n- [Contact Twilio Support](https://www.twilio.com/help/contact) to remove the quota limitation.\n",
    "causes": "The request was received but failed due to the Account reaching its request quota for the given Lookup package. Some packages may have a quota set when they are in the Pilot phase.",
    "solutions": "* [Contact Twilio Support](https://www.twilio.com/help/contact) to remove the quota limitation.",
    "description": "Lookup quota for requested package has been reached",
    "date_created": "2021-07-02T16:34:22Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60612,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Requested phone number not mobile",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nRequested phone number is not a mobile number\n\n### Possible causes\n\nLookup package requested is only applicable to mobile phone numbers\n\n### Possible solutions\n\nTry again with a mobile phone number\n",
    "causes": "Lookup package requested is only applicable to mobile phone numbers",
    "solutions": "Try again with a mobile phone number",
    "description": "Requested phone number is not a mobile number",
    "date_created": "2021-08-03T20:54:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60613,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Lookup Provider Degradation",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nTemporary service degradation with provider encountered; fallback data returned if available.\n\n### Possible causes\n\nError encountered when calling Lookup data providers. Fallback data returned.\n\n### Possible solutions\n\n- Retry request to rule out transient issues in order to receive complete information.\n- If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out other issues.\n",
    "causes": "Error encountered when calling Lookup data providers. Fallback data returned.",
    "solutions": "* Retry request to rule out transient issues in order to receive complete information.\n* If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out other issues.",
    "description": "Temporary service degradation with provider encountered; fallback data returned if available.",
    "date_created": "2021-10-20T14:30:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60614,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup Request Must Be Completed in Different Twilio Region",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nLookup package requested is not supported in your Twilio Region.\n\n[Learn more about Twilio Regions here](/docs/global-infrastructure/understanding-twilio-regions).\n\n### Possible causes\n\nThe request was received but failed due to the Lookup request not being supported by the selected Twilio Region due to data residency requirements. This can happen when a request for an EU or GB phone number is made outside of the IE1 Region. Learn more at [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions) and [Using Lookup with Twilio Regions](/docs/lookup/using-lookup-with-twilio-regions).\n\n### Possible solutions\n\n- Confirm that the request is selecting the expected Region.\n- Confirm that the request is using an API key generated for the expected Region.\n",
    "causes": "The request was received but failed due to the Lookup request not being supported by the selected Twilio Region due to data residency requirements. This can happen when a request for an EU or GB phone number is made outside of the IE1 Region. Learn more at [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions) and [Using Lookup with Twilio Regions](/docs/lookup/using-lookup-with-twilio-regions).",
    "solutions": "* Confirm that the request is selecting the expected Region.\n* Confirm that the request is using an API key generated for the expected Region.",
    "description": "Lookup package requested is not supported in your Twilio Region. [Learn more about Twilio Regions here](/docs/global-infrastructure/understanding-twilio-regions).",
    "date_created": "2022-01-13T20:43:17Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60616,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup rate limit exceeded",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThe rate of lookup requests exceeds allowable limits for the requested package.\n\n### Possible causes\n\nYour application is making lookups at a rate higher than allowed for the requested package. This may be intentional or the result of an unexpected condition in your code.\n\n### Possible solutions\n\nOur downstream providers do not have uniform rate limits. Confirm the published rate limits for the requested package and debug your application to ensure your lookup request rate remains under allowed limits.\n",
    "causes": "Your application is making lookups at a rate higher than allowed for the requested package. This may be intentional or the result of an unexpected condition in your code.",
    "solutions": "Our downstream providers do not have uniform rate limits. Confirm the published rate limits for the requested package and debug your application to ensure your lookup request rate remains under allowed limits.",
    "description": "The rate of lookup requests exceeds allowable limits for the requested package.",
    "date_created": "2022-03-15T17:23:36Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60617,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup Not Enough Request Parameters",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nMissing at least one valid additional argument to execute the Lookup you requested\n\n### Possible causes\n\nThe request was received but failed due to the Lookup package you requested requiring at least one optional request parameter to match against the phone number. If there is a single request parameter, its value may not be left blank.\n\n### Possible solutions\n\n- Review request parameters to ensure at least one optional field, such as FirstName, is included.\n",
    "causes": "The request was received but failed due to the Lookup package you requested requiring at least one optional request parameter to match against the phone number. If there is a single request parameter, its value may not be left blank.",
    "solutions": "* Review request parameters to ensure at least one optional field, such as FirstName, is included.",
    "description": "Missing at least one valid additional argument to execute the Lookup you requested",
    "date_created": "2022-10-05T16:33:01Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60618,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup Malformed Request Parameter",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nAn invalid value was passed for query parameters\n\n### Possible causes\n\nThe request was received but failed due to one or more request parameters being malformed. This can happen when a parameter has exceeded its maximum length constraint.\n\n### Possible solutions\n\n- Review request parameters and retry request.\n",
    "causes": "The request was received but failed due to one or more request parameters being malformed. This can happen when a parameter has exceeded its maximum length constraint.",
    "solutions": "* Review request parameters and retry request.",
    "description": "An invalid value was passed for query parameters",
    "date_created": "2022-10-05T16:33:37Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60619,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup Request Cannot be Completed in Twilio Region",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThe Lookup request cannot be completed in the selected Twilio region.\n\n### Possible causes\n\nThe request was received but failed due to the Lookup request not being supported by the selected Twilio Region. This can happen when specific Lookup packages or functionality is not available in the Region. Learn more at [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions) and [Using Lookup with Twilio Regions](/docs/lookup/using-lookup-with-twilio-regions).\n\n### Possible solutions\n\n- Confirm that the request is selecting the expected Region.\n- Confirm that the request is using an API key generated for the expected Region.\n",
    "causes": "The request was received but failed due to the Lookup request not being supported by the selected Twilio Region. This can happen when specific Lookup packages or functionality is not available in the Region. Learn more at [Twilio Regions](/docs/global-infrastructure/understanding-twilio-regions) and [Using Lookup with Twilio Regions](/docs/lookup/using-lookup-with-twilio-regions).",
    "solutions": "* Confirm that the request is selecting the expected Region.\n* Confirm that the request is using an API key generated for the expected Region.",
    "description": "The Lookup request cannot be completed in the selected Twilio region.",
    "date_created": "2022-11-01T15:51:59Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60620,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Lookup SIM Swap Information is Incomplete From Carrier",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThis error means the carrier returned an incomplete SIM Swap response for the requested phone number. Twilio could not determine whether a SIM swap occurred during your configured `swapped_period`. As of January 21, 2025, this error is billable for approved SIM Swap requests.\n\n### Possible causes\n\n- The carrier was billed for the SIM Swap transaction but did not provide enough information for Twilio to determine whether a SIM swap occurred in the requested time period.\n- SIM Swap data availability and returned fields vary by carrier and country. During the beta phase, coverage may not include all major carriers in an otherwise supported country.\n- Your SIM Swap workflow depends on the `last_sim_swap` result, including `swapped_period` and `swapped_in_period`, but the carrier response did not include enough data to evaluate that result for this end user.\n\n### Possible solutions\n\n- Do not retry the same SIM Swap request for this end user. The carrier did not return enough data to produce a complete result.\n- Treat the SIM Swap result as unavailable and fall back to another fraud check or verification step. Depending on your workflow, use step-up authentication through a different channel, withhold the transaction, place the account on hold, or require the user to speak with an agent.\n- Review how your application handles incomplete SIM Swap results so the request can continue safely when `error_code` is returned in the `sim_swap` object. Test that path with SIM Swap Magic Numbers and your test credentials, including `+12345678916` to simulate 60620.\n- If your use case depends on a different time threshold, review your configured `swapped_period`. For countries that do not return `last_sim_swap_date`, Twilio sets `swapped_in_period` based on the onboarding configuration, and you can update that setting through Support.\n\n#### Additional resources\n\n- [SIM Swap](/docs/lookup/v2-api/sim-swap)\n- [Lookup SIM Swap Overview](/docs/lookup/lookup-sim-swap)\n- [Testing SIM Swap with Magic Numbers](/docs/lookup/magic-numbers-for-lookup/testing-sim-swap-with-magic-numbers)\n",
    "causes": "* The carrier was billed for the SIM Swap transaction but did not provide enough information for Twilio to determine whether a SIM swap occurred in the requested time period.\n* SIM Swap data availability and returned fields vary by carrier and country. During the beta phase, coverage may not include all major carriers in an otherwise supported country.\n* Your SIM Swap workflow depends on the `last_sim_swap` result, including `swapped_period` and `swapped_in_period`, but the carrier response did not include enough data to evaluate that result for this end user.",
    "solutions": "* Do not retry the same SIM Swap request for this end user. The carrier did not return enough data to produce a complete result.\n* Treat the SIM Swap result as unavailable and fall back to another fraud check or verification step. Depending on your workflow, use step-up authentication through a different channel, withhold the transaction, place the account on hold, or require the user to speak with an agent.\n* Review how your application handles incomplete SIM Swap results so the request can continue safely when `error_code` is returned in the `sim_swap` object. Test that path with SIM Swap Magic Numbers and your test credentials, including `+12345678916` to simulate 60620.\n* If your use case depends on a different time threshold, review your configured `swapped_period`. For countries that do not return `last_sim_swap_date`, Twilio sets `swapped_in_period` based on the onboarding configuration, and you can update that setting through Support.",
    "description": "This error means the carrier returned an incomplete SIM Swap response for the requested phone number. Twilio could not determine whether a SIM swap occurred during your configured `swapped_period`. As of January 21, 2025, this error is billable for approved SIM Swap requests.",
    "date_created": "2022-11-01T17:03:09Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60621,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Lookup Carrier Information Not Available",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nLookup SIM Swap Information is Incomplete From Carrier\n\n### Possible causes\n\nThe request was processed successfully and Last SIM Swap information was returned, but carrier information was not available.\n\n### Possible solutions\n\n- Retry request to rule out transient issues in order to receive carrier information.\n- If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out other issues.\n",
    "causes": "The request was processed successfully and Last SIM Swap information was returned, but carrier information was not available.",
    "solutions": "* Retry request to rule out transient issues in order to receive carrier information.\n* If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out other issues.",
    "description": "Lookup SIM Swap Information is Incomplete From Carrier",
    "date_created": "2022-11-01T17:07:42Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60622,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Magic Number",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThe request was received but failed due to the phone number not being a valid Magic Number.\n\n### Possible causes\n\nThe phone number sent is not a valid Magic Number.\n\n### Possible solutions\n\nCheck that the phone number provided is correct and one of the pre-configured phone numbers from Magic Numbers.\n",
    "causes": "The phone number sent is not a valid Magic Number.",
    "solutions": "Check that the phone number provided is correct and one of the pre-configured phone numbers from Magic Numbers.",
    "description": "The request was received but failed due to the phone number not being a valid Magic Number.",
    "date_created": "2023-08-18T16:05:52Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60623,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Verification Not Found",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nThe Lookup request was received but failed during the verification existence check because it was not found a success verification or it had failed or expired.\n\n### Possible solutions\n\n- Retry request to rule out transient issues.\n- If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.\n",
    "causes": "The Lookup request was received but failed during the verification existence check because it was not found a success verification or it had failed or expired.",
    "solutions": "* Retry request to rule out transient issues.\n* If error persists, [contact Twilio Support](https://www.twilio.com/help/contact) to rule out integration issues.",
    "description": "",
    "date_created": "2024-02-29T20:11:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60624,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum rate limit for Trial Accounts",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThe account has reached the maximum rate limit for Trial Accounts.\n\n### Possible causes\n\nThe error message indicates either excessive usage within a short period or exceeding the established request limit\n\n### Possible solutions\n\nA possible solution to mitigate this issue is to transition to a paid account that offers higher rate limits and unrestricted access to the services.\n",
    "causes": "The error message indicates either excessive usage within a short period or exceeding the established request limit",
    "solutions": "A possible solution to mitigate this issue is to transition to a paid account that offers higher rate limits and unrestricted access to the services.",
    "description": "The account has reached the maximum rate limit for Trial Accounts.",
    "date_created": "2024-05-21T15:57:11Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60625,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Phone Number is Cancelled",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Lookup SIM Swap request reaches the carrier and the carrier reports that the phone number has been cancelled. SIM Swap uses authoritative data from mobile network operators, so Twilio cannot return SIM swap information for a cancelled number.\n\n### Possible causes\n\n- The carrier reported the submitted phone number as cancelled.\n- The phone number is no longer active with the carrier.\n- SIM Swap could not retrieve carrier-backed SIM swap data because the number has been cancelled or deactivated at the carrier level.\n\n### Possible solutions\n\n- Do not retry the same SIM Swap request for this end user.\n- If you still expect this user to have service on this number, ask them to confirm or update their current mobile number before you submit a new Lookup request. This follows from the carrier reporting the number as cancelled.\n- If this check is part of an authentication or high-risk transaction flow, use another verification step or channel until you have an active number for the user.\n\n#### Additional resources\n\n- [Lookup SIM Swap Overview](/docs/lookup/lookup-sim-swap)\n- [SIM Swap in the Lookup API](/docs/lookup/v2-api/sim-swap)\n- [Lookup overview](/docs/lookup)\n- [Handling Deactivated Phone Numbers](https://help.twilio.com/articles/360042744973-Handling-Deactivated-Phone-Numbers)\n",
    "causes": "* The carrier reported the submitted phone number as cancelled.\n* The phone number is no longer active with the carrier.\n* SIM Swap could not retrieve carrier-backed SIM swap data because the number has been cancelled or deactivated at the carrier level.",
    "solutions": "* Do not retry the same SIM Swap request for this end user.\n* If you still expect this user to have service on this number, ask them to confirm or update their current mobile number before you submit a new Lookup request. This follows from the carrier reporting the number as cancelled.\n* If this check is part of an authentication or high-risk transaction flow, use another verification step or channel until you have an active number for the user.",
    "description": "This error occurs when a Lookup SIM Swap request reaches the carrier and the carrier reports that the phone number has been cancelled. SIM Swap uses authoritative data from mobile network operators, so Twilio cannot return SIM swap information for a cancelled number.",
    "date_created": "2025-03-25T20:21:44Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 60626,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone number rate limit exceeded",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThis error occurs when requests involving a specific phone number are sent more frequently than Twilio's allowed rate limits. The system blocks further requests to prevent abuse or accidental flooding.\n\n### Possible causes\n\nThe same phone number is being used in multiple requests within a short time frame. The same phone number is included multiple times within a single BULK request. There is a loop or logic error in your application that causes repeated or rapid submissions for the same number. Bulk operations are not properly throttled or batched.\n\n### Possible solutions\n\nReview your application logic to ensure each phone number is only included once per request. Implement rate limiting or throttling in your code to avoid sending requests for the same phone number too quickly. Add checks to prevent duplicate submissions of the same phone number within a single request.\n",
    "causes": "The same phone number is being used in multiple requests within a short time frame. The same phone number is included multiple times within a single BULK request. There is a loop or logic error in your application that causes repeated or rapid submissions for the same number. Bulk operations are not properly throttled or batched.",
    "solutions": "Review your application logic to ensure each phone number is only included once per request. Implement rate limiting or throttling in your code to avoid sending requests for the same phone number too quickly. Add checks to prevent duplicate submissions of the same phone number within a single request.",
    "description": "This error occurs when requests involving a specific phone number are sent more frequently than Twilio's allowed rate limits. The system blocks further requests to prevent abuse or accidental flooding.",
    "date_created": "2025-06-16T21:46:19.362Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60627,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trial account lookup quota exceeded",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nYour trial account has reached the maximum number of Lookup API requests allowed. Twilio trial accounts have a fixed Lookup request quota. Once this limit is reached, further requests are rejected until you upgrade your account.\n\n### Possible causes\n\nTrial accounts are subject to Lookup request quotas that do not apply to paid accounts. See [What you get with your Twilio trial](/docs/usage/trials#what-you-get-with-your-twilio-trial) for the specific limits that apply.\n\n### Possible solutions\n\n- Upgrade your Twilio account to a paid account to remove trial restrictions and gain unrestricted access to Lookup. After you upgrade, allow a few hours for the change to take effect before retrying.\n\n#### Additional resources\n\n- [What you get with your Twilio trial](/docs/usage/trials#what-you-get-with-your-twilio-trial)\n- [Twilio Free Trial Limitations](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations)\n",
    "causes": "Trial accounts are subject to Lookup request quotas that do not apply to paid accounts. See [What you get with your Twilio trial](/docs/usage/trials#what-you-get-with-your-twilio-trial) for the specific limits that apply.",
    "solutions": "* Upgrade your Twilio account to a paid account to remove trial restrictions and gain unrestricted access to Lookup. After you upgrade, allow a few hours for the change to take effect before retrying.",
    "description": "Your trial account has reached the maximum number of Lookup API requests allowed. Twilio trial accounts have a fixed Lookup request quota. Once this limit is reached, further requests are rejected until you upgrade your account.",
    "date_created": "2026-07-31T05:47:50-05:00",
    "last_updated": "2026-07-31T05:47:50-05:00"
  },
  {
    "code": 60628,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trial account expired after 30 days or trial free units depleted",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYour Twilio trial account has expired, or it has exhausted its trial free units for SMS messages, Voice calls, or Verifications. When your account expires or trial units are depleted, you can no longer use trial resources.\n\n### Possible causes\n\n- Your account was created more than 30 days ago and has not been upgraded.\n- Your account exhausted its allocated trial free units across SMS messages, Voice calls, or Verifications.\n\n### Possible solutions\n\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to continue building.\n\n#### Additional resources\n\n- [Twilio Trial Account](/docs/usage/trials)\n",
    "causes": "* Your account was created more than 30 days ago and has not been upgraded.\n* Your account exhausted its allocated trial free units across SMS messages, Voice calls, or Verifications.",
    "solutions": "* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to continue building.",
    "description": "Your Twilio trial account has expired, or it has exhausted its trial free units for SMS messages, Voice calls, or Verifications. When your account expires or trial units are depleted, you can no longer use trial resources.",
    "date_created": "2026-09-04T14:23:07-05:00",
    "last_updated": "2026-09-04T14:23:07-05:00"
  },
  {
    "code": 60699,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup Usage Disabled",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nUsage of Lookup has been disabled on your account\n\n### Possible causes\n\nOur systems have detected abnormal behavior and have disabled Lookup on your account.\n\n### Possible solutions\n\n- [Contact Twilio Support](https://www.twilio.com/help/contact) to re-activate your account.\n",
    "causes": "Our systems have detected abnormal behavior and have disabled Lookup on your account.",
    "solutions": "* [Contact Twilio Support](https://www.twilio.com/help/contact) to re-activate your account.",
    "description": "Usage of Lookup has been disabled on your account",
    "date_created": "2022-02-04T21:45:13Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60700,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Something went wrong. Try again later",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returned a server error for this Messaging request. Treat 60700 as a generic 500 error, and review the response body for additional details.\n\n### Possible causes\n\nThe response body includes additional details about the failure.\n\n### Possible solutions\n\n- Check the response body for the specific failure details before you retry.\n- Retry the request after the server issue clears.\n\n#### Additional resources\n\n- [Twilio API responses](/docs/usage/twilios-response)\n- [Programmable Messaging API](/docs/messaging/api)\n",
    "causes": "The response body includes additional details about the failure.",
    "solutions": "* Check the response body for the specific failure details before you retry.\n* Retry the request after the server issue clears.",
    "description": "Twilio returned a server error for this Messaging request. Treat 60700 as a generic 500 error, and review the response body for additional details.",
    "date_created": "2020-01-20T14:21:31Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 60701,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid request",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n60701 means Twilio rejected the Messaging request as invalid and returned a generic 400 Bad Request response. Use the response body to find the specific error detail for the request that failed.\n\n### Possible causes\n\n- The request did not pass validation, so Twilio returned a generic 400 Bad Request response.\n\n### Possible solutions\n\n- Inspect the response body for the detailed error message, then correct the request and retry it.\n- Review the debugging guide and error logs to isolate the parameter or field that caused the failure.\n\n#### Additional resources\n\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The request did not pass validation, so Twilio returned a generic 400 Bad Request response.",
    "solutions": "* Inspect the response body for the detailed error message, then correct the request and retry it.\n* Review the debugging guide and error logs to isolate the parameter or field that caused the failure.",
    "description": "60701 means Twilio rejected the Messaging request as invalid and returned a generic 400 Bad Request response. Use the response body to find the specific error detail for the request that failed.",
    "date_created": "2020-01-20T14:23:55Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 60702,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Business Profile not found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio couldn't find the Business Profile referenced by the `Business Profile SID` in your request. Use an approved Business Profile from Trust Hub when you register Branded Calling, or create one first if you do not have one yet.\n\n### Possible causes\n\n- The `Business Profile SID` is invalid or does not point to an existing profile.\n- You are using a draft, rejected, or deleted profile instead of an approved Business Profile. Twilio lets you delete draft or rejected profiles, and approved profiles are managed in Trust Hub.\n- The business or brand you want to register requires a different Customer Profile, such as a secondary profile for a separate business identity.\n\n### Possible solutions\n\n- Open Trust Hub in Console and verify that the Business Profile exists and is the one you want to use.\n- If you do not have a Business Profile yet, create a Primary Customer Profile and complete verification before you try again.\n- If the profile was deleted or never created, create a new profile or a secondary Customer Profile for the separate business identity, then retry the request.\n- If the profile should exist but still is not found, contact Twilio Support.\n\n#### Additional resources\n\n- [Trust Hub](/docs/trust-hub)\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced)\n- [Console: Create a Primary Customer Profile](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n",
    "causes": "* The `Business Profile SID` is invalid or does not point to an existing profile.\n* You are using a draft, rejected, or deleted profile instead of an approved Business Profile. Twilio lets you delete draft or rejected profiles, and approved profiles are managed in Trust Hub.\n* The business or brand you want to register requires a different Customer Profile, such as a secondary profile for a separate business identity.",
    "solutions": "* Open Trust Hub in Console and verify that the Business Profile exists and is the one you want to use.\n* If you do not have a Business Profile yet, create a Primary Customer Profile and complete verification before you try again.\n* If the profile was deleted or never created, create a new profile or a secondary Customer Profile for the separate business identity, then retry the request.\n* If the profile should exist but still is not found, contact Twilio Support.",
    "description": "Twilio couldn't find the Business Profile referenced by the `Business Profile SID` in your request. Use an approved Business Profile from Trust Hub when you register Branded Calling, or create one first if you do not have one yet.",
    "date_created": "2020-01-20T14:25:30Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 60703,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid phone numbers format",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when the origination or destination phone number in your request is not in `E.164` format. Use `E.164` formatting for `To` and `From` phone numbers in API requests. The Messaging API requires the recipient phone number in `To` to be in `E.164` format.\n\n### Possible causes\n\n- The origination or destination number is missing the leading `+` sign.\n- The phone number includes separators such as spaces or dashes instead of a continuous `E.164` value.\n- The number was submitted in a local or national format without the full country code required by `E.164`. ([help.twilio.com](https://help.twilio.com/articles/223183008-Formatting-International-Phone-Numbers))\n- The `To` value in your Messaging API request is not a recipient phone number in `E.164` format.\n- The `From` value is being sent as a phone number, but it is not formatted as a valid Twilio sender in `E.164`.\n\n### Possible solutions\n\n- Update the `From` and `To` values so each phone number is in `E.164` format, for example `+14155552671`. ([help.twilio.com](https://help.twilio.com/articles/223183008-Formatting-International-Phone-Numbers))\n- Remove spaces, dashes, and other formatting characters from the phone number before sending the request.\n- Include the country code for each number. If you are converting a local number to `E.164`, remove any domestic dialing prefix such as a leading `0` when required for that country. ([help.twilio.com](https://help.twilio.com/articles/223183008-Formatting-International-Phone-Numbers))\n- If you are sending a message with the Messaging API, make sure `To` contains the recipient phone number in `E.164` format and `From` is a valid Twilio sender for your account.\n\n#### Additional resources\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging API overview](/docs/messaging/api)\n- [Formatting International Phone Numbers](https://help.twilio.com/articles/223183008-Formatting-International-Phone-Numbers)\n",
    "causes": "* The origination or destination number is missing the leading `+` sign.\n* The phone number includes separators such as spaces or dashes instead of a continuous `E.164` value.\n* The number was submitted in a local or national format without the full country code required by `E.164`. ([help.twilio.com](https://help.twilio.com/articles/223183008-Formatting-International-Phone-Numbers))\n* The `To` value in your Messaging API request is not a recipient phone number in `E.164` format.\n* The `From` value is being sent as a phone number, but it is not formatted as a valid Twilio sender in `E.164`.",
    "solutions": "* Update the `From` and `To` values so each phone number is in `E.164` format, for example `+14155552671`. ([help.twilio.com](https://help.twilio.com/articles/223183008-Formatting-International-Phone-Numbers))\n* Remove spaces, dashes, and other formatting characters from the phone number before sending the request.\n* Include the country code for each number. If you are converting a local number to `E.164`, remove any domestic dialing prefix such as a leading `0` when required for that country. ([help.twilio.com](https://help.twilio.com/articles/223183008-Formatting-International-Phone-Numbers))\n* If you are sending a message with the Messaging API, make sure `To` contains the recipient phone number in `E.164` format and `From` is a valid Twilio sender for your account.",
    "description": "This error occurs when the origination or destination phone number in your request is not in `E.164` format. Use `E.164` formatting for `To` and `From` phone numbers in API requests. The Messaging API requires the recipient phone number in `To` to be in `E.164` format.",
    "date_created": "2020-01-20T14:34:25Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 60704,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Phone number not branded by Twilio",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when the origination number in `From` is not recognized as a valid branded phone number for your account. To send SMS or MMS to US recipients over a 10DLC number, register a Brand, register a Campaign, and register each phone number in the linked Messaging Service before you send traffic.\n\n### Possible causes\n\n- The `From` number does not belong to your account.\n- The `From` number is incorrect or not formatted in `E.164`.\n- The number is not correctly linked to an approved A2P 10DLC Brand and Campaign.\n- The Brand is deactivated, failed verification, or is not approved.\n- The Campaign is pending, failed, rejected, or suspended.\n- The phone number was not added to the Messaging Service linked to the Campaign, or the phone number registration has not completed.\n\n### Possible solutions\n\n- Make sure the `From` number belongs to your account and is in `E.164` format.\n- Complete A2P 10DLC registration for the sender. Create the required compliance profile, register your Brand, register your Campaign, and wait until the Campaign is verified before sending traffic.\n- Add the phone number to the Messaging Service linked to your Campaign. Use a Messaging Service for phone numbers subject to A2P 10DLC.\n- Check the Brand, Campaign, and phone number registration status in Console or with the API. If a registration failed, correct the registration data and resubmit it. If a Campaign has been pending longer than 10 days, contact Support.\n- If you only send one-time passcodes, use Verify instead of registering a 10DLC number. If A2P 10DLC is not the right fit for your use case, use a toll-free number or short code instead.\n\n#### Additional resources\n- [Programmable Messaging and A2P 10DLC](/docs/messaging/compliance/a2p-10dlc)\n- [A2P 10DLC registration application quickstart](/docs/messaging/compliance/a2p-10dlc/quickstart)\n- [How do I check that I have completed US A2P 10DLC registration?](https://help.twilio.com/articles/4418081745179-How-do-I-check-that-I-have-completed-US-A2P-10DLC-registration-)\n- [Troubleshooting A2P Phone Number registration issues](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-a2p-phone-number-registration-issues)\n",
    "causes": "* The `From` number does not belong to your account.\n* The `From` number is incorrect or not formatted in `E.164`.\n* The number is not correctly linked to an approved A2P 10DLC Brand and Campaign.\n* The Brand is deactivated, failed verification, or is not approved.\n* The Campaign is pending, failed, rejected, or suspended.\n* The phone number was not added to the Messaging Service linked to the Campaign, or the phone number registration has not completed.",
    "solutions": "* Make sure the `From` number belongs to your account and is in `E.164` format.\n* Complete A2P 10DLC registration for the sender. Create the required compliance profile, register your Brand, register your Campaign, and wait until the Campaign is verified before sending traffic.\n* Add the phone number to the Messaging Service linked to your Campaign. Use a Messaging Service for phone numbers subject to A2P 10DLC.\n* Check the Brand, Campaign, and phone number registration status in Console or with the API. If a registration failed, correct the registration data and resubmit it. If a Campaign has been pending longer than 10 days, contact Support.\n* If you only send one-time passcodes, use Verify instead of registering a 10DLC number. If A2P 10DLC is not the right fit for your use case, use a toll-free number or short code instead.",
    "description": "This error occurs when the origination number in `From` is not recognized as a valid branded phone number for your account. To send SMS or MMS to US recipients over a 10DLC number, register a Brand, register a Campaign, and register each phone number in the linked Messaging Service before you send traffic.",
    "date_created": "2020-01-20T14:37:39Z",
    "last_updated": "2026-10-27T16:46:31-04:00"
  },
  {
    "code": 60706,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Push Token",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when you register an iOS device for push notifications and the `PushToken` value is empty or not a valid APNs device token. When you create an `apn` Binding, use the device token returned by iOS as the Binding `Address`.\n\n### Possible causes\n\n- The app sent an empty `PushToken` value when it tried to register the device.\n- The app converted the APNs device token incorrectly. On iOS 13 and later, parsing `[deviceToken description]` can produce an invalid token string. Build the token as a hexadecimal string from the raw bytes instead.\n- The app tried to create the Binding before iOS finished registering for remote notifications and returned a device token.\n- The app's push configuration does not match the app build that generated the token, such as a bundle identifier mismatch.\n\n### Possible solutions\n\n- Wait until iOS successfully registers for remote notifications, then submit the returned device token when you register the device.\n- For `apn` Bindings, send the APNs device token as the Binding `Address`. Do not send an empty string, placeholder value, or a token from another push provider.\n- Convert the iOS `deviceToken` from bytes to a hexadecimal string. Do not rely on `[deviceToken description]` on iOS 13 and later.\n- Confirm that your Apple push setup uses an explicit bundle identifier that matches the bundle identifier in Xcode, then register the device again with a fresh token from that app.\n\n#### Additional resources\n- [Registering for Notifications on iOS](/docs/notify/register-for-notifications-ios)\n- [Notify API Binding resource](/docs/notify/api/binding-resource)\n- [How to Configure iOS Push Notifications](/docs/notify/configure-ios-push-notifications)\n",
    "causes": "* The app sent an empty `PushToken` value when it tried to register the device.\n* The app converted the APNs device token incorrectly. On iOS 13 and later, parsing `[deviceToken description]` can produce an invalid token string. Build the token as a hexadecimal string from the raw bytes instead.\n* The app tried to create the Binding before iOS finished registering for remote notifications and returned a device token.\n* The app's push configuration does not match the app build that generated the token, such as a bundle identifier mismatch.",
    "solutions": "* Wait until iOS successfully registers for remote notifications, then submit the returned device token when you register the device.\n* For `apn` Bindings, send the APNs device token as the Binding `Address`. Do not send an empty string, placeholder value, or a token from another push provider.\n* Convert the iOS `deviceToken` from bytes to a hexadecimal string. Do not rely on `[deviceToken description]` on iOS 13 and later.\n* Confirm that your Apple push setup uses an explicit bundle identifier that matches the bundle identifier in Xcode, then register the device again with a fresh token from that app.",
    "description": "This error occurs when you register an iOS device for push notifications and the `PushToken` value is empty or not a valid APNs device token. When you create an `apn` Binding, use the device token returned by iOS as the Binding `Address`.",
    "date_created": "2020-01-20T14:58:36Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 60707,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Branded Channel not found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when it cannot find the branded channel referenced by your request. ChannelSenders are associated with a Messaging Service, and Twilio selects the matching channel sender when you send to a channel destination.\n\n### Possible causes\n\n- The branded channel was deleted or no longer exists, so Twilio can no longer match the request to an active channel sender.\n- One or more request parameters is invalid, including `BrandedChannelSid`, `BrandSid`, or `BusinessSid`.\n\n### Possible solutions\n\n- Check the SIDs in your request and correct any invalid values before retrying.\n- Retrieve or list the ChannelSenders for the Messaging Service to confirm that the branded channel still exists.\n- If the branded channel was deleted, create a new ChannelSender for the Messaging Service before you retry the request.\n- If you are sending to a specific messaging channel, use the channel-specific address format Twilio expects for that channel. For example, RCS uses `rcs:{unique_id}`.\n\n#### Additional resources\n\n- [ChannelSenders subresource](/docs/messaging/api/messaging-service-channelsender-resource)\n- [Twilio Messaging Channels](/docs/messaging/channels)\n",
    "causes": "* The branded channel was deleted or no longer exists, so Twilio can no longer match the request to an active channel sender.\n* One or more request parameters is invalid, including `BrandedChannelSid`, `BrandSid`, or `BusinessSid`.",
    "solutions": "* Check the SIDs in your request and correct any invalid values before retrying.\n* Retrieve or list the ChannelSenders for the Messaging Service to confirm that the branded channel still exists.\n* If the branded channel was deleted, create a new ChannelSender for the Messaging Service before you retry the request.\n* If you are sending to a specific messaging channel, use the channel-specific address format Twilio expects for that channel. For example, RCS uses `rcs:{unique_id}`.",
    "description": "Twilio returns this warning when it cannot find the branded channel referenced by your request. ChannelSenders are associated with a Messaging Service, and Twilio selects the matching channel sender when you send to a channel destination.",
    "date_created": "2020-01-20T14:59:50Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 60708,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Phone record number not found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nTwilio could not find the DNS record for the phone number you tried to update or delete. This warning means the phone number record referenced by your request was not found for that operation.\n\n### Possible causes\n\n- The DNS provider did not find the phone number record you tried to update or delete.\n- The phone number record was already removed, so there is no active record left to update or delete.\n- The request used the wrong phone number identifier. Twilio requires the `sid` path parameter to identify the IncomingPhoneNumber resource for update and delete requests.\n- The phone number is not present in the account inventory you are managing. Twilio lists IncomingPhoneNumber resources for numbers you provision, port, or host.\n\n### Possible solutions\n\n- Confirm that the phone number record still exists before retrying the request.\n- If you are using the API, fetch the IncomingPhoneNumber resource first and verify that you are using the correct `PN` SID in the request path.\n- Review your active phone number inventory and make sure you are updating or deleting a number that belongs to the correct account.\n- If you are releasing a hosted number, use the IncomingPhoneNumber delete flow only for an active hosted number record. After release, Twilio retires the hosted number from the system.\n\n#### Additional resources\n\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n- [Hosted Number Orders quickstart](/docs/phone-numbers/hosted-numbers/quickstart)\n- [Numbers and Senders Overview](/docs/numbers-and-senders)\n",
    "causes": "* The DNS provider did not find the phone number record you tried to update or delete.\n* The phone number record was already removed, so there is no active record left to update or delete.\n* The request used the wrong phone number identifier. Twilio requires the `sid` path parameter to identify the IncomingPhoneNumber resource for update and delete requests.\n* The phone number is not present in the account inventory you are managing. Twilio lists IncomingPhoneNumber resources for numbers you provision, port, or host.",
    "solutions": "* Confirm that the phone number record still exists before retrying the request.\n* If you are using the API, fetch the IncomingPhoneNumber resource first and verify that you are using the correct `PN` SID in the request path.\n* Review your active phone number inventory and make sure you are updating or deleting a number that belongs to the correct account.\n* If you are releasing a hosted number, use the IncomingPhoneNumber delete flow only for an active hosted number record. After release, Twilio retires the hosted number from the system.",
    "description": "Twilio could not find the DNS record for the phone number you tried to update or delete. This warning means the phone number record referenced by your request was not found for that operation.",
    "date_created": "2020-01-20T15:01:54Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 60709,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Business Profile already exists",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning appears when you try to create a Business Profile for an account that already has one. Use one Primary Customer Profile for your core business identity on an account. If you need to represent a different brand or business, create a Secondary Customer Profile instead.\n\n### Possible causes\n\n- The account already has a Primary Customer Profile, and the request attempts to create another Business Profile.\n- You started the profile in the wrong main account. Primary Customer Profiles are created at the master account level.\n- You need to register a different brand or business identity and tried to create another primary profile instead of a secondary profile.\n\n### Possible solutions\n\n- Open Trust Hub and review the Customer Profiles already associated with the account before you create a new Business Profile.\n- If the business or brand differs from the managing company, create a Secondary Customer Profile instead of another Primary Customer Profile.\n- If you work across multiple accounts or subaccounts, switch to the correct main account before creating the profile. Primary Customer Profiles are created on the main account, and Twilio does not expose them to subaccounts.\n\n#### Additional resources\n\n- [Trust Hub](/docs/trust-hub)\n- [Console: Create a Primary Customer Profile](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n- [API: Create a Secondary Customer Profile](/docs/trust-hub/trusthub-rest-api/api-create-secondary-customer-profile)\n",
    "causes": "* The account already has a Primary Customer Profile, and the request attempts to create another Business Profile.\n* You started the profile in the wrong main account. Primary Customer Profiles are created at the master account level.\n* You need to register a different brand or business identity and tried to create another primary profile instead of a secondary profile.",
    "solutions": "* Open Trust Hub and review the Customer Profiles already associated with the account before you create a new Business Profile.\n* If the business or brand differs from the managing company, create a Secondary Customer Profile instead of another Primary Customer Profile.\n* If you work across multiple accounts or subaccounts, switch to the correct main account before creating the profile. Primary Customer Profiles are created on the main account, and Twilio does not expose them to subaccounts.",
    "description": "This warning appears when you try to create a Business Profile for an account that already has one. Use one Primary Customer Profile for your core business identity on an account. If you need to represent a different brand or business, create a Secondary Customer Profile instead.",
    "date_created": "2020-01-20T15:03:19Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 60710,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Phone number CPS not found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nYou see this warning when the phone number you query is not found in the Call Placement Service (CPS) Directory used for Branded Calling.\n\n### Possible causes\n\n- The number is not branded with Twilio or another CPS provider.\n- The number is not fully set up for Branded Calling.\n- The number has not been assigned to the correct Branded Calling bundle.\n- The number was assigned recently and is still under review or propagation.\n- The CPS discovery service is temporarily unable to query the phone number.\n\n### Possible solutions\n\n- Confirm that you are querying the exact same phone number you branded with Twilio or your CPS provider.\n- If you use Twilio Branded Calling, make sure the number is a Twilio phone number and that you completed the required setup for Business Profile, Voice Integrity, and Branded Calling.\n- Verify that the phone number is assigned to the correct Branded Calling bundle.\n- If you recently assigned the phone number, wait for the review to finish. New phone number assignments can take 24 to 48 hours to be added to a Branded Calling bundle, and branded information can take up to two hours to appear after assignment to an approved bundle.\n- Retry the request later if the CPS lookup issue continues.\n\n#### Additional resources\n- [Branded Calling overview](/docs/voice/branded-calling)\n- [US Basic Branded Calling](/docs/voice/branded-calling/us-basic)\n- [Branded Calling registration](/docs/trust-hub/registrations/branded-calling)\n",
    "causes": "* The number is not branded with Twilio or another CPS provider.\n* The number is not fully set up for Branded Calling.\n* The number has not been assigned to the correct Branded Calling bundle.\n* The number was assigned recently and is still under review or propagation.\n* The CPS discovery service is temporarily unable to query the phone number.",
    "solutions": "* Confirm that you are querying the exact same phone number you branded with Twilio or your CPS provider.\n* If you use Twilio Branded Calling, make sure the number is a Twilio phone number and that you completed the required setup for Business Profile, Voice Integrity, and Branded Calling.\n* Verify that the phone number is assigned to the correct Branded Calling bundle.\n* If you recently assigned the phone number, wait for the review to finish. New phone number assignments can take 24 to 48 hours to be added to a Branded Calling bundle, and branded information can take up to two hours to appear after assignment to an approved bundle.\n* Retry the request later if the CPS lookup issue continues.",
    "description": "You see this warning when the phone number you query is not found in the Call Placement Service (CPS) Directory used for Branded Calling.",
    "date_created": "2020-01-20T15:05:31Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 60711,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Business status does not allow updates",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a `POST` request to update a Business Profile that is in a non-editable status such as Pending Verification or Verified. Once a Customer Profile is in review or approved, you cannot edit it.\n\n### Possible causes\n\n- You sent a `POST` request to update a business that is in `Pending Verification` or `Verified` status.\n- The profile has already been submitted for review and moved to `In Review`. Profiles in review cannot be edited.\n- The profile has already been approved. Approved profiles cannot be edited.\n\n### Possible solutions\n\n- Confirm the current Customer Profile status before you send the update request. Customer Profile API status values include `draft`, `pending-review`, `in-review`, `twilio-rejected`, and `twilio-approved`.\n- Send updates while the profile is still editable. If the profile is `twilio-rejected`, correct the rejected information and resubmit it for review.\n- If you need to change a business that is pending verification or verified, dismiss its current status to move it back to Draft, then send the `POST` update again. Dismissal is only allowed when the business is in `Pending Verification` or `Verified` status.\n\n#### Additional resources\n\n- [Trust Hub](/docs/trust-hub)\n- [CustomerProfile Resource](/docs/trust-hub/trusthub-rest-api/customer-profiles)\n- [Console: Create a Primary Customer Profile](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n",
    "causes": "* You sent a `POST` request to update a business that is in `Pending Verification` or `Verified` status.\n* The profile has already been submitted for review and moved to `In Review`. Profiles in review cannot be edited.\n* The profile has already been approved. Approved profiles cannot be edited.",
    "solutions": "* Confirm the current Customer Profile status before you send the update request. Customer Profile API status values include `draft`, `pending-review`, `in-review`, `twilio-rejected`, and `twilio-approved`.\n* Send updates while the profile is still editable. If the profile is `twilio-rejected`, correct the rejected information and resubmit it for review.\n* If you need to change a business that is pending verification or verified, dismiss its current status to move it back to Draft, then send the `POST` update again. Dismissal is only allowed when the business is in `Pending Verification` or `Verified` status.",
    "description": "This error occurs when you send a `POST` request to update a Business Profile that is in a non-editable status such as Pending Verification or Verified. Once a Customer Profile is in review or approved, you cannot edit it.",
    "date_created": "2020-01-24T16:11:29Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60712,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Error communicating with Regulatory Compliance API",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Branded Comms KYC workflow cannot communicate with the Regulatory Compliance API that supports Twilio regulatory compliance data and review workflows.\n\n### Possible causes\n\n- Communication between the Branded Comms KYC flow and the Regulatory Compliance API failed.\n- A dependent Twilio regulatory service did not complete the request while processing compliance data such as regulatory bundles, end users, or supporting documents.\n\n### Possible solutions\n\n- Retry the operation after a short wait. This error can be temporary when a dependent regulatory service communication fails.\n- If the error continues, contact Support for investigation. Include the failure timestamp and the related identifiers from the affected workflow, such as a `BrandRegistration` SID or Bundle SID, so the request can be traced more quickly. The Brand registration APIs expose these identifiers, and Twilio's troubleshooting guidance recommends contacting Support when connection issues persist.\n\n#### Additional resources\n\n- [Regulatory Compliance REST APIs](/docs/phone-numbers/regulatory/api)\n- [Trust Hub](/docs/trust-hub)\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n",
    "causes": "* Communication between the Branded Comms KYC flow and the Regulatory Compliance API failed.\n* A dependent Twilio regulatory service did not complete the request while processing compliance data such as regulatory bundles, end users, or supporting documents.",
    "solutions": "* Retry the operation after a short wait. This error can be temporary when a dependent regulatory service communication fails.\n* If the error continues, contact Support for investigation. Include the failure timestamp and the related identifiers from the affected workflow, such as a `BrandRegistration` SID or Bundle SID, so the request can be traced more quickly. The Brand registration APIs expose these identifiers, and Twilio's troubleshooting guidance recommends contacting Support when connection issues persist.",
    "description": "This error occurs when a Branded Comms KYC workflow cannot communicate with the Regulatory Compliance API that supports Twilio regulatory compliance data and review workflows.",
    "date_created": "2020-01-24T18:10:54Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60713,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Error communicating with Regulatory Identification API",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nKYC in Branded Comms depends on Twilio regulatory APIs. This error occurs when Twilio can't communicate with the Regulatory Identification API during that workflow.\n\n### Possible causes\n\n- A KYC step in your Branded Comms workflow required a call to the Regulatory Identification API, and that communication failed.\n- A temporary internal service issue interrupted the regulatory identification request.\n\n### Possible solutions\n\n- Retry the request after a short wait.\n- If you are onboarding through a Trust Hub workflow, submit the KYC step again after the retry window. Trust Hub uses KYC verification to confirm customer identity for advanced communications services.\n- If the error continues, contact Support for help with the failed KYC or branded onboarding request.\n\n#### Additional resources\n\n- [Trust Hub](/docs/trust-hub)\n- [Create a Secondary Customer Profile](/docs/trust-hub/trusthub-rest-api/api-create-secondary-customer-profile)\n- [Branded Calling overview](/docs/voice/branded-calling)\n",
    "causes": "* A KYC step in your Branded Comms workflow required a call to the Regulatory Identification API, and that communication failed.\n* A temporary internal service issue interrupted the regulatory identification request.",
    "solutions": "* Retry the request after a short wait.\n* If you are onboarding through a Trust Hub workflow, submit the KYC step again after the retry window. Trust Hub uses KYC verification to confirm customer identity for advanced communications services.\n* If the error continues, contact Support for help with the failed KYC or branded onboarding request.",
    "description": "KYC in Branded Comms depends on Twilio regulatory APIs. This error occurs when Twilio can't communicate with the Regulatory Identification API during that workflow.",
    "date_created": "2020-01-24T18:10:52Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60714,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Brand not found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when your request references an A2P 10DLC `BrandRegistration` that Twilio cannot find for the specified business or account. A `BrandRegistration` is identified by a `BN` SID and is scoped to the account that created it.\n\n### Possible causes\n\n- The brand SID in your request does not match an existing `BrandRegistration`. Twilio expects a valid `BN` SID for this resource.\n- The request is using credentials for a different account or subaccount than the account that owns the brand. Twilio requires you to use the correct Account SID and Auth Token for A2P 10DLC requests.\n- The brand was deleted during troubleshooting or cleanup and has not been resubmitted. After a failed Brand is deleted in Console, you must submit a new Brand to continue onboarding.\n\n### Possible solutions\n\n- Retrieve or list your `BrandRegistration` resources for the account you are using, then confirm that you are passing the correct `BN` SID before retrying the request.\n- If you use subaccounts, resend the request with the Account SID and Auth Token for the account that created the brand.\n- If the brand was deleted, submit a new Brand for that business before you continue with campaign registration or other A2P 10DLC operations.\n- If the brand failed earlier in onboarding, correct the associated customer profile or trust bundle information, then resubmit or update the Brand using the A2P troubleshooting flow.\n\n#### Additional resources\n\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting A2P 10DLC Registrations](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands)\n- [Standard and Low-Volume Standard Brand onboarding guide for ISVs](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The brand SID in your request does not match an existing `BrandRegistration`. Twilio expects a valid `BN` SID for this resource.\n* The request is using credentials for a different account or subaccount than the account that owns the brand. Twilio requires you to use the correct Account SID and Auth Token for A2P 10DLC requests.\n* The brand was deleted during troubleshooting or cleanup and has not been resubmitted. After a failed Brand is deleted in Console, you must submit a new Brand to continue onboarding.",
    "solutions": "* Retrieve or list your `BrandRegistration` resources for the account you are using, then confirm that you are passing the correct `BN` SID before retrying the request.\n* If you use subaccounts, resend the request with the Account SID and Auth Token for the account that created the brand.\n* If the brand was deleted, submit a new Brand for that business before you continue with campaign registration or other A2P 10DLC operations.\n* If the brand failed earlier in onboarding, correct the associated customer profile or trust bundle information, then resubmit or update the Brand using the A2P troubleshooting flow.",
    "description": "Twilio returns this warning when your request references an A2P 10DLC `BrandRegistration` that Twilio cannot find for the specified business or account. A `BrandRegistration` is identified by a `BN` SID and is scoped to the account that created it.",
    "date_created": "2020-01-24T18:15:25Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 60715,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Error reading logo file",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when Twilio can't read the uploaded brand logo image. The logo file must be a valid `PNG` image and must not exceed 128 KB.\n\n### Possible causes\n\n- The uploaded logo file is corrupted or unreadable.\n- The uploaded file is not a valid `PNG` image.\n- The file uses a `.png` extension, but the underlying file format is different.\n- The logo file exceeds the 128 KB size limit.\n\n### Possible solutions\n\n- Upload a logo file that is saved as a valid `PNG` image and is 128 KB or smaller.\n- Re-export or convert the image to `PNG`, then upload it again.\n- Verify that the file opens correctly as a `PNG` before you retry the upload.\n- If the file appears to be corrupted, create a new export from the original image and submit the new file.\n\n#### Additional resources\n\n- [A2P 10DLC - BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n",
    "causes": "* The uploaded logo file is corrupted or unreadable.\n* The uploaded file is not a valid `PNG` image.\n* The file uses a `.png` extension, but the underlying file format is different.\n* The logo file exceeds the 128 KB size limit.",
    "solutions": "* Upload a logo file that is saved as a valid `PNG` image and is 128 KB or smaller.\n* Re-export or convert the image to `PNG`, then upload it again.\n* Verify that the file opens correctly as a `PNG` before you retry the upload.\n* If the file appears to be corrupted, create a new export from the original image and submit the new file.",
    "description": "Twilio returns this error when Twilio can't read the uploaded brand logo image. The logo file must be a valid `PNG` image and must not exceed 128 KB.",
    "date_created": "2020-01-24T18:23:35Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60716,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Selected logo is not a valid PNG file",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe selected brand logo file is not a valid PNG file. Twilio returns This error when the logo file is not recognized as PNG.\n\n### Possible causes\n\n- The uploaded logo file is not a PNG image.\n- The file was provided with a `.png` extension, but the underlying file format is different.\n\n### Possible solutions\n\n- Upload a logo file that is saved as a valid PNG image.\n- Re-export or convert the logo to PNG, then submit it again.\n- Verify the file opens correctly as a PNG before you retry the upload.\n\n#### Additional resources\n\n- [A2P 10DLC - BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n",
    "causes": "* The uploaded logo file is not a PNG image.\n* The file was provided with a `.png` extension, but the underlying file format is different.",
    "solutions": "* Upload a logo file that is saved as a valid PNG image.\n* Re-export or convert the logo to PNG, then submit it again.\n* Verify the file opens correctly as a PNG before you retry the upload.",
    "description": "The selected brand logo file is not a valid PNG file. Twilio returns This error when the logo file is not recognized as PNG.",
    "date_created": "2020-01-24T18:28:02Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 60717,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Error uploading logo to the storage",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio couldn't store the file sent for the brand logo image. This error usually indicates a temporary problem while Twilio is uploading the logo to internal storage.\n\n### Possible causes\n\n- A temporary communication issue interrupted the upload to the storage bucket while Twilio was saving the logo file.\n- If the same request continues to fail, the logo file may need correction before you retry. Related logo upload errors occur when Twilio can't read the file or when the file is not recognized as a PNG that meets the expected requirements.\n\n### Possible solutions\n\n- Retry the upload later.\n- Before you retry, confirm that the logo file is a valid PNG, is readable, and does not exceed the documented 128 KB size limit for this logo workflow.\n- If the upload still fails after you validate the file and retry, contact Support and include the error code and request details so Twilio can investigate the storage failure.\n\n#### Additional resources\n\n- [Trust Hub](/docs/trust-hub)\n- [Branded Calling overview](/docs/voice/branded-calling)\n- [US Enhanced Branded Calling](/docs/voice/branded-calling/us-enhanced)\n",
    "causes": "* A temporary communication issue interrupted the upload to the storage bucket while Twilio was saving the logo file.\n* If the same request continues to fail, the logo file may need correction before you retry. Related logo upload errors occur when Twilio can't read the file or when the file is not recognized as a PNG that meets the expected requirements.",
    "solutions": "* Retry the upload later.\n* Before you retry, confirm that the logo file is a valid PNG, is readable, and does not exceed the documented 128 KB size limit for this logo workflow.\n* If the upload still fails after you validate the file and retry, contact Support and include the error code and request details so Twilio can investigate the storage failure.",
    "description": "Twilio couldn't store the file sent for the brand logo image. This error usually indicates a temporary problem while Twilio is uploading the logo to internal storage.",
    "date_created": "2020-01-24T18:55:34Z",
    "last_updated": "2026-04-20T01:23:21-05:00"
  },
  {
    "code": 60719,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Branded Call not found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning appears when you request Branded Calling for a phone number that is not provisioned for Branded Calling. To use Branded Calling, you need an approved Business Profile, a Voice Integrity instance, and a Branded Calling bundle with the phone number assigned to it. Twilio reviews new Branded Calling registrations and newly assigned phone numbers before the branded display is available.\n\n### Possible causes\n\n- The phone number is not assigned to a Branded Calling bundle. A phone number can be associated with only one Branded Calling bundle.\n- The phone number is not registered with your Voice Integrity instance, which is required before you assign it to Branded Calling.\n- The Business Profile or brand identity used for the request is not approved yet. If the brand differs from the managing company, it may need its own Secondary Customer Profile.\n- The Branded Calling bundle or the newly assigned phone number is still in review or provisioning. Brand review can take up to seven days, and newly assigned phone numbers can take 24 to 48 hours to be added to the bundle.\n\n### Possible solutions\n\n- In Trust Hub, create or update the correct Business Profile and resubmit it until the profile reaches Approved status. If you manage a different brand or business, create a Secondary Customer Profile for that brand before you continue.\n- Assign the phone number to the approved Business Profile, then register that phone number with your Voice Integrity instance. Only phone numbers assigned to the Business Profile can be registered with Voice Integrity.\n- Create or update the Branded Calling bundle, then assign the phone number to that bundle in the Console or with the Trust Products API.\n- If you recently submitted the bundle or added the phone number, wait for provisioning to finish. Review can take up to seven days, number assignment can take 24 to 48 hours, and branded information can take up to two hours to appear after assignment to an approved bundle.\n\n#### Additional resources\n\n- [Branded Calling overview](/docs/voice/branded-calling)\n- [US Basic Branded Calling](/docs/voice/branded-calling/us-basic)\n- [Voice Integrity onboarding](/docs/voice/spam-monitoring-with-voiceintegrity/voice-integrity-onboarding)\n",
    "causes": "* The phone number is not assigned to a Branded Calling bundle. A phone number can be associated with only one Branded Calling bundle.\n* The phone number is not registered with your Voice Integrity instance, which is required before you assign it to Branded Calling.\n* The Business Profile or brand identity used for the request is not approved yet. If the brand differs from the managing company, it may need its own Secondary Customer Profile.\n* The Branded Calling bundle or the newly assigned phone number is still in review or provisioning. Brand review can take up to seven days, and newly assigned phone numbers can take 24 to 48 hours to be added to the bundle.",
    "solutions": "* In Trust Hub, create or update the correct Business Profile and resubmit it until the profile reaches Approved status. If you manage a different brand or business, create a Secondary Customer Profile for that brand before you continue.\n* Assign the phone number to the approved Business Profile, then register that phone number with your Voice Integrity instance. Only phone numbers assigned to the Business Profile can be registered with Voice Integrity.\n* Create or update the Branded Calling bundle, then assign the phone number to that bundle in the Console or with the Trust Products API.\n* If you recently submitted the bundle or added the phone number, wait for provisioning to finish. Review can take up to seven days, number assignment can take 24 to 48 hours, and branded information can take up to two hours to appear after assignment to an approved bundle.",
    "description": "This warning appears when you request Branded Calling for a phone number that is not provisioned for Branded Calling. To use Branded Calling, you need an approved Business Profile, a Voice Integrity instance, and a Branded Calling bundle with the phone number assigned to it. Twilio reviews new Branded Calling registrations and newly assigned phone numbers before the branded display is available.",
    "date_created": "2020-01-24T20:20:58Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60721,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Phone Number(s) already used in a Branded Channel",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning appears when your Branded Channel create or update request includes at least one phone number that is already associated with a different Branded Channel. A phone number can be associated with only one Branded Channel at a time.\n\n### Possible causes\n\n- At least one phone number in the request payload is already associated with a different Branded Channel.\n- You are trying to reuse a phone number that is still assigned to an existing Branded Channel.\n\n### Possible solutions\n\n- Review the phone numbers in your create or update request and remove any number that is already associated with another Branded Channel.\n- If you want to move a phone number to a different Branded Channel, remove it from the existing Branded Channel before you submit the new request.\n- If the existing Branded Channel must keep that number, use a different phone number in the new Branded Channel payload.\n\n#### Additional resources\n\n- [Get started with branded RCS messaging](/docs/rcs/onboarding)\n- [Messaging Services](/docs/messaging/services)\n- [Twilio Messaging Channels](/docs/messaging/channels)\n",
    "causes": "* At least one phone number in the request payload is already associated with a different Branded Channel.\n* You are trying to reuse a phone number that is still assigned to an existing Branded Channel.",
    "solutions": "* Review the phone numbers in your create or update request and remove any number that is already associated with another Branded Channel.\n* If you want to move a phone number to a different Branded Channel, remove it from the existing Branded Channel before you submit the new request.\n* If the existing Branded Channel must keep that number, use a different phone number in the new Branded Channel payload.",
    "description": "This warning appears when your Branded Channel create or update request includes at least one phone number that is already associated with a different Branded Channel. A phone number can be associated with only one Branded Channel at a time.",
    "date_created": "2020-01-24T20:26:36Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60722,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Business status does not allow dismissal",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning is returned when you try to dismiss a Business Profile whose current status is not eligible for dismissal. Dismissing the profile moves it back to `Draft`, and Twilio only allows that action when the Business Profile is in `Pending Verification` or `Verified`.\n\n### Possible causes\n\n- The Business Profile is already in `Draft`.\n- The Business Profile is in `Rejected`.\n- The dismiss request was sent before the Business Profile reached an eligible dismiss state. Twilio only allows dismissal from `Pending Verification` or `Verified`.\n\n### Possible solutions\n\n- Confirm the current Business Profile status before you send the dismiss request. Only send the request when the profile is in `Pending Verification` or `Verified`.\n- If the profile is already `Draft`, update the Business Profile directly instead of dismissing it again. Use the CustomerProfile update flow to make your changes.\n- If the profile is `Rejected`, review the rejection reason, correct the business information, and resubmit the profile.\n- If you need to continue the verification process after updating the profile, submit it for review again when the required information is complete.\n\n#### Additional resources\n\n- [Trust Hub overview](/docs/trust-hub)\n- [CustomerProfile resource](/docs/trust-hub/trusthub-rest-api/customer-profiles)\n- [Create a Primary Customer Profile in Console](/docs/trust-hub/trusthub-rest-api/console-create-a-primary-customer-profile)\n",
    "causes": "* The Business Profile is already in `Draft`.\n* The Business Profile is in `Rejected`.\n* The dismiss request was sent before the Business Profile reached an eligible dismiss state. Twilio only allows dismissal from `Pending Verification` or `Verified`.",
    "solutions": "* Confirm the current Business Profile status before you send the dismiss request. Only send the request when the profile is in `Pending Verification` or `Verified`.\n* If the profile is already `Draft`, update the Business Profile directly instead of dismissing it again. Use the CustomerProfile update flow to make your changes.\n* If the profile is `Rejected`, review the rejection reason, correct the business information, and resubmit the profile.\n* If you need to continue the verification process after updating the profile, submit it for review again when the required information is complete.",
    "description": "This warning is returned when you try to dismiss a Business Profile whose current status is not eligible for dismissal. Dismissing the profile moves it back to `Draft`, and Twilio only allows that action when the Business Profile is in `Pending Verification` or `Verified`.",
    "date_created": "2020-01-24T20:34:04Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60723,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Brand status does not allow updates",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou see this warning when you send a `POST` request to update a brand that is not in an editable state. A brand in `Pending Verification` or `Verified` must be dismissed back to `Draft` before you update it. If you are correcting a failed registration, update the associated Customer Profile or Trust Bundle data first, then resubmit the brand.\n\n### Possible causes\n\n- You sent a `POST` request to update a brand whose current status is `Pending Verification` or `Verified`.\n- You attempted to update the brand before retrieving it and confirming its current `status`.\n- The data that needs to be corrected is stored in the associated Customer Profile or Trust Bundle, so submitting another brand update without fixing that data will not succeed.\n\n### Possible solutions\n\n- Retrieve the BrandRegistration resource first and check its current `status`.\n- If the brand is in `Pending Verification` or `Verified` and you need to change its information, dismiss the brand so its status returns to `Draft`, then submit the update again.\n- If the brand previously failed verification, correct the underlying business data in the associated Customer Profile or Trust Bundle before you resubmit the brand.\n- Limit self-service resubmissions to the allowed number of brand updates. If you have already used those updates, contact Twilio Support for help with the next step.\n\n#### Additional resources\n\n- [A2P 10DLC BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Troubleshooting A2P 10DLC Standard and LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n- [Trust Hub](/docs/trust-hub)\n",
    "causes": "* You sent a `POST` request to update a brand whose current status is `Pending Verification` or `Verified`.\n* You attempted to update the brand before retrieving it and confirming its current `status`.\n* The data that needs to be corrected is stored in the associated Customer Profile or Trust Bundle, so submitting another brand update without fixing that data will not succeed.",
    "solutions": "* Retrieve the BrandRegistration resource first and check its current `status`.\n* If the brand is in `Pending Verification` or `Verified` and you need to change its information, dismiss the brand so its status returns to `Draft`, then submit the update again.\n* If the brand previously failed verification, correct the underlying business data in the associated Customer Profile or Trust Bundle before you resubmit the brand.\n* Limit self-service resubmissions to the allowed number of brand updates. If you have already used those updates, contact Twilio Support for help with the next step.",
    "description": "You see this warning when you send a `POST` request to update a brand that is not in an editable state. A brand in `Pending Verification` or `Verified` must be dismissed back to `Draft` before you update it. If you are correcting a failed registration, update the associated Customer Profile or Trust Bundle data first, then resubmit the brand.",
    "date_created": "2020-01-24T20:37:06Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60724,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Brand status does not allow dismissal",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning means your dismiss request was sent for a brand that is not in a dismissible state. Dismissing a brand changes its status to `Draft`, and you can only use that action when the brand is in `Pending Verification` or `Verified`.\n\n### Possible causes\n\n- The brand is already in `Draft`.\n- The brand is in `Rejected`.\n- You sent a dismiss request when you actually needed to update the brand after moving it back to `Draft`.\n- The brand requires a correction and resubmission flow instead of a dismiss request. Twilio supports brand updates and resubmissions for failed brand registrations through API and Console workflows.\n\n### Possible solutions\n\n- Retrieve the brand and confirm its current `status` before you send a dismiss request. You can use the BrandRegistrations API to fetch a specific brand and check its status.\n- Send the dismiss request only when the brand status is `Pending Verification` or `Verified`. A successful dismissal returns the brand to `Draft`.\n- If the brand is already in `Draft`, update the brand instead of dismissing it. Dismissal is the step that moves an eligible brand back to `Draft` so you can edit it.\n- If the brand was rejected or failed verification, correct the underlying business or profile information and then follow the documented brand update or resubmission flow. Twilio supports up to three self-service brand updates or resubmissions before you need Support assistance.\n\n#### Additional resources\n\n- [A2P 10DLC - BrandRegistrations resource](/docs/messaging/api/brand-registration-resource)\n- [Direct Standard and Low-Volume Standard Registration Guide](/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding)\n- [A2P 10DLC Brand Approval Best Practices](https://help.twilio.com/articles/4405758341659-A2P-10DLC-Brand-Approval-Best-Practices)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The brand is already in `Draft`.\n* The brand is in `Rejected`.\n* You sent a dismiss request when you actually needed to update the brand after moving it back to `Draft`.\n* The brand requires a correction and resubmission flow instead of a dismiss request. Twilio supports brand updates and resubmissions for failed brand registrations through API and Console workflows.",
    "solutions": "* Retrieve the brand and confirm its current `status` before you send a dismiss request. You can use the BrandRegistrations API to fetch a specific brand and check its status.\n* Send the dismiss request only when the brand status is `Pending Verification` or `Verified`. A successful dismissal returns the brand to `Draft`.\n* If the brand is already in `Draft`, update the brand instead of dismissing it. Dismissal is the step that moves an eligible brand back to `Draft` so you can edit it.\n* If the brand was rejected or failed verification, correct the underlying business or profile information and then follow the documented brand update or resubmission flow. Twilio supports up to three self-service brand updates or resubmissions before you need Support assistance.",
    "description": "This warning means your dismiss request was sent for a brand that is not in a dismissible state. Dismissing a brand changes its status to `Draft`, and you can only use that action when the brand is in `Pending Verification` or `Verified`.",
    "date_created": "2020-01-24T21:20:32Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 60725,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Brand status does not allow to have branded channels",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning appears when you try to create a branded channel for a brand that is not in a status that can use branded channels. Before you create branded channels, make sure the brand has completed verification.\n\n### Possible causes\n\n- The brand has not completed vetting yet and is still in a non-approved state such as `draft`, `pending-review`, or `in-review`.\n- The associated business or customer profile is still under review or was rejected. An approved Customer Profile is required to use Trust Products, and branded calling data requires the associated business and brand to be verified.\n- The brand or business information could not be validated during review, so the submission must be corrected and resubmitted before branded channels can be created.\n\n### Possible solutions\n\n- Check the current status of the brand in Trust Hub or through the Trust Products API. Create the branded channel only after the brand reaches an approved or verified state.\n- If the brand or business is still being reviewed, wait for vetting to finish before trying again. Customer Profile review can take up to 48 hours, and Branded Calling review can take up to seven days.\n- If the brand or business was rejected, review the rejection reason, correct the submitted information, and resubmit.\n- If you need to change brand information that is already under review or verified, return it to `Draft` where supported, update it, and then submit it again before creating branded channels.\n\n#### Additional resources\n\n- [Branded Calling overview](/docs/voice/branded-calling)\n- [US Basic Branded Calling](/docs/voice/branded-calling/us-basic)\n- [Trust Hub](/docs/trust-hub)\n",
    "causes": "* The brand has not completed vetting yet and is still in a non-approved state such as `draft`, `pending-review`, or `in-review`.\n* The associated business or customer profile is still under review or was rejected. An approved Customer Profile is required to use Trust Products, and branded calling data requires the associated business and brand to be verified.\n* The brand or business information could not be validated during review, so the submission must be corrected and resubmitted before branded channels can be created.",
    "solutions": "* Check the current status of the brand in Trust Hub or through the Trust Products API. Create the branded channel only after the brand reaches an approved or verified state.\n* If the brand or business is still being reviewed, wait for vetting to finish before trying again. Customer Profile review can take up to 48 hours, and Branded Calling review can take up to seven days.\n* If the brand or business was rejected, review the rejection reason, correct the submitted information, and resubmit.\n* If you need to change brand information that is already under review or verified, return it to `Draft` where supported, update it, and then submit it again before creating branded channels.",
    "description": "This warning appears when you try to create a branded channel for a brand that is not in a status that can use branded channels. Before you create branded channels, make sure the brand has completed verification.",
    "date_created": "2020-01-24T21:25:03Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 60726,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Business status does not allow to have brands",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning occurs when you try to create a BrandRegistration for a business profile that is not yet in a state that can be used for brand registration. Create the business profile in Trust Hub, complete the required business information, and submit the required Trust Hub and A2P registration steps before you create the brand.\n\n### Possible causes\n\n- The business Customer Profile is still in `draft` and has not been submitted for review.\n- The business Customer Profile was `twilio-rejected`, so the submitted business information must be corrected before you can continue.\n- The related Customer Profile or A2P trust product was not evaluated successfully and is not `compliant`.\n- If you are onboarding customers as an ISV, your parent account does not yet have a Primary Business Profile with `Twilio Approved` status.\n\n### Possible solutions\n\n- Fetch the Customer Profile you plan to use and confirm that you are passing the correct `customer_profile_bundle_sid` for the business you want to register.\n- If the Customer Profile is in `draft`, complete the required business details, evaluate the profile, and submit it for review with `status` set to `pending_review`.\n- If the Customer Profile is `twilio-rejected`, review the rejection reason, fix the business information, and resubmit the profile.\n- Evaluate the related A2P trust product and continue only after the evaluation returns `compliant`, then submit that trust product before creating the BrandRegistration.\n- If you are onboarding customers as an ISV, make sure your parent account has a Primary Business Profile with `Twilio Approved` status before you create brands for customer businesses.\n\n#### Additional resources\n\n- [Trust Hub](/docs/trust-hub)\n- [CustomerProfile resource](/docs/trust-hub/trusthub-rest-api/customer-profiles)\n- [A2P 10DLC Standard and Low-Volume Standard Brand Onboarding Guide for ISVs](/docs/messaging/compliance/a2p-10dlc/onboarding-isv-api)\n- [Troubleshooting A2P 10DLC Standard/LVS Brands](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-standardlvs-brands)\n",
    "causes": "* The business Customer Profile is still in `draft` and has not been submitted for review.\n* The business Customer Profile was `twilio-rejected`, so the submitted business information must be corrected before you can continue.\n* The related Customer Profile or A2P trust product was not evaluated successfully and is not `compliant`.\n* If you are onboarding customers as an ISV, your parent account does not yet have a Primary Business Profile with `Twilio Approved` status.",
    "solutions": "* Fetch the Customer Profile you plan to use and confirm that you are passing the correct `customer_profile_bundle_sid` for the business you want to register.\n* If the Customer Profile is in `draft`, complete the required business details, evaluate the profile, and submit it for review with `status` set to `pending_review`.\n* If the Customer Profile is `twilio-rejected`, review the rejection reason, fix the business information, and resubmit the profile.\n* Evaluate the related A2P trust product and continue only after the evaluation returns `compliant`, then submit that trust product before creating the BrandRegistration.\n* If you are onboarding customers as an ISV, make sure your parent account has a Primary Business Profile with `Twilio Approved` status before you create brands for customer businesses.",
    "description": "This warning occurs when you try to create a BrandRegistration for a business profile that is not yet in a state that can be used for brand registration. Create the business profile in Trust Hub, complete the required business information, and submit the required Trust Hub and A2P registration steps before you create the brand.",
    "date_created": "2020-01-24T21:26:35Z",
    "last_updated": "2026-10-27T09:08:36-04:00"
  },
  {
    "code": 60727,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Channel not found",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nTwilio returns this warning when it cannot find the channel referenced by your request. When you send to a channel destination with a Messaging Service, Twilio selects a sender for the corresponding channel. This warning appears when Twilio cannot find a matching channel or sender for that request.\n\n### Possible causes\n\n- The channel no longer exists.\n- The phone number or channel address in your request is invalid or incorrectly formatted.\n- The Messaging Service does not have an active channel sender for the channel you are trying to use.\n- The sender you provided does not match the destination channel.\n\n### Possible solutions\n\n- Verify the phone number or channel address in your request and make sure it uses the format required for that messaging channel.\n- Retrieve or list the channel senders for your Messaging Service and confirm the required sender is still associated with the service.\n- Add the correct sender to the Messaging Service if it was removed or was never added.\n- Update the request to use an active sender that matches the destination channel, then retry the request.\n\n#### Additional resources\n- [ChannelSenders subresource](/docs/messaging/api/messaging-service-channelsender-resource)\n- [Twilio Messaging Channels](/docs/messaging/channels)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The channel no longer exists.\n* The phone number or channel address in your request is invalid or incorrectly formatted.\n* The Messaging Service does not have an active channel sender for the channel you are trying to use.\n* The sender you provided does not match the destination channel.",
    "solutions": "* Verify the phone number or channel address in your request and make sure it uses the format required for that messaging channel.\n* Retrieve or list the channel senders for your Messaging Service and confirm the required sender is still associated with the service.\n* Add the correct sender to the Messaging Service if it was removed or was never added.\n* Update the request to use an active sender that matches the destination channel, then retry the request.",
    "description": "Twilio returns this warning when it cannot find the channel referenced by your request. When you send to a channel destination with a Messaging Service, Twilio selects a sender for the corresponding channel. This warning appears when Twilio cannot find a matching channel or sender for that request.",
    "date_created": "2020-04-14T22:49:13Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 60728,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account exceeded the hourly messages limit",
    "secondary_message": "Account exceeded the maximum amount of messages per hour",
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAccount exceeded the maximum amount of messages per hour\n\n### Possible causes\n\nAccount has sent too many messages.\n\n### Possible solutions\n\n- Wait for sometime and try again.\n- Check your [support center](https://help.twilio.com/tickets) or email inbox/spam folder for outreach from the Twilio team on how to remove/raise your hourly limit.\n",
    "causes": "Account has sent too many messages.",
    "solutions": "* Wait for sometime and try again.\n* Check your [support center](https://help.twilio.com/tickets) or email inbox/spam folder for outreach from the Twilio team on how to remove/raise your hourly limit.",
    "description": "Account exceeded the maximum amount of messages per hour",
    "date_created": "2024-04-15T05:28:57Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 60734,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rich Content Delivery Not Supported by Messaging Provider",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nTwilio Verify failed to deliver the verification message because the request included rich content (such as logos or media) that is not supported by the messaging channel or provider specified for this recipient.\n\n### Possible causes\n\n- The destination channel or provider does not support rich content as defined in the message template.\n- The recipient's carrier or country does not support rich content messaging.\n\n### Possible solutions\n\n- **Remove rich elements**: Resend the verification request without a rich content template (e.g., omit custom logos, headers, or media cards).\n- **Rich content provider availability**: Check that the destination country and carrier supports the rich content channel you are using.\n- **Contact support**: If you consistently need rich content for a given region, contact [Twilio Customer Support](https://help.twilio.com/) to confirm provider availability.\n\n#### Additional resources\n\n- [Verify documentation](/docs/verify)\n- [Verify API documentation](/docs/verify/api)\n",
    "causes": "* The destination channel or provider does not support rich content as defined in the message template.\n* The recipient's carrier or country does not support rich content messaging.",
    "solutions": "* **Remove rich elements**: Resend the verification request without a rich content template (e.g., omit custom logos, headers, or media cards).\n* **Rich content provider availability**: Check that the destination country and carrier supports the rich content channel you are using.\n* **Contact support**: If you consistently need rich content for a given region, contact [Twilio Customer Support](https://help.twilio.com/) to confirm provider availability.",
    "description": "Twilio Verify failed to deliver the verification message because the request included rich content (such as logos or media) that is not supported by the messaging channel or provider specified for this recipient.",
    "date_created": "2026-07-30T11:11:28-05:00",
    "last_updated": "2026-07-30T11:11:28-05:00"
  },
  {
    "code": 60735,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verification is owned by a different integration",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nA verification for this phone number and service already exists, but a different integration created it. You can't modify or retry that verification from another integration.\n\n### Possible causes\n\n- The verification was created by an AI assistant, but the retry attempt is coming from a direct API call or vice versa.\n- Two different integrations are sending verifications to the same phone number on the same service at the same time.\n\n### Possible solutions\n\n- **Wait for expiration**: Let the existing verification expire, then create a new verification from the desired integration.\n- **Use the same integration**: Send all retries from the same integration that created the original verification.\n- **Use a different Verify Service**: If multiple integrations must verify the same phone number at the same time, create a separate Verify Service for each integration.\n\n#### Additional resources\n\n- [Verify documentation](/docs/verify)\n- [Verify API documentation](/docs/verify/api)\n",
    "causes": "* The verification was created by an AI assistant, but the retry attempt is coming from a direct API call or vice versa.\n* Two different integrations are sending verifications to the same phone number on the same service at the same time.",
    "solutions": "* **Wait for expiration**: Let the existing verification expire, then create a new verification from the desired integration.\n* **Use the same integration**: Send all retries from the same integration that created the original verification.\n* **Use a different Verify Service**: If multiple integrations must verify the same phone number at the same time, create a separate Verify Service for each integration.",
    "description": "A verification for this phone number and service already exists, but a different integration created it. You can't modify or retry that verification from another integration.",
    "date_created": "2026-08-13T13:28:33+01:00",
    "last_updated": "2026-08-13T13:28:33+01:00"
  },
  {
    "code": 60736,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "This phone number is still in use by a Branded Calling registration.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe phone number cannot be unassigned from its linked registration or profile because it is currently associated with an active Branded Calling registration.\n\n### Possible causes\n\n- The phone number is assigned to an active or in-review Branded Calling registration.\n- The phone number is being unassigned or deleted from the account, Business Profile, or Voice Integrity instance before being removed from Branded Calling.\n\n### Possible solutions\n\n- In the Branded Calling bundle, unassign the phone number in Console or delete its `ChannelEndpointAssignment` with the Trust Products API.\n- After the Branded Calling assignment is removed, retry removing the phone number from the linked profile or Voice Integrity instance.\n\n#### Additional resources\n\n- [Unassign a phone number from a Branded Calling bundle](/docs/voice/branded-calling/us-basic#unassign-a-phone-number-from-your-branded-calling-bundle)\n",
    "causes": "* The phone number is assigned to an active or in-review Branded Calling registration.\n* The phone number is being unassigned or deleted from the account, Business Profile, or Voice Integrity instance before being removed from Branded Calling.",
    "solutions": "* In the Branded Calling bundle, unassign the phone number in Console or delete its `ChannelEndpointAssignment` with the Trust Products API.\n* After the Branded Calling assignment is removed, retry removing the phone number from the linked profile or Voice Integrity instance.",
    "description": "The phone number cannot be unassigned from its linked registration or profile because it is currently associated with an active Branded Calling registration.",
    "date_created": "2026-10-12T19:34:28+05:30",
    "last_updated": "2026-10-12T19:34:28+05:30"
  },
  {
    "code": 61000,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Add-ons: Internal server error",
    "secondary_message": "This is generic catch all error for Add-on related conditions that were not caught by a more specific error.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou see this error when Twilio hits an unexpected internal condition while processing an Add-on request. Twilio uses 61000 as a catch-all Add-ons error when the failure does not map to a more specific Add-ons code.\n\n### Possible causes\n\n- Twilio encountered an internal error while processing the Add-on request.\n- The Add-on request failed in a way that did not match a more specific Add-ons error.\n- Twilio could not complete Twilio-managed Add-ons processing for the request.\n\n### Possible solutions\n\n- Open the Twilio Debugger and review the error event and log properties for code 61000.\n- Check the API response or callback for the failing Add-on request and capture the Request SID.\n- Gather the Add-on unique name, Installed Add-on SID, and Add-on SID before you continue troubleshooting or contact support.\n- Contact Twilio Support if the error continues or repeats. Twilio handles 61000 issues for Marketplace Listings.\n\n#### Additional resources\n\n- [Marketplace Listings overview](/docs/marketplace/listings)\n- [How to use Marketplace Listings](/docs/marketplace/listings/usage)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* Twilio encountered an internal error while processing the Add-on request.\n* The Add-on request failed in a way that did not match a more specific Add-ons error.\n* Twilio could not complete Twilio-managed Add-ons processing for the request.",
    "solutions": "* Open the Twilio Debugger and review the error event and log properties for code 61000.\n* Check the API response or callback for the failing Add-on request and capture the Request SID.\n* Gather the Add-on unique name, Installed Add-on SID, and Add-on SID before you continue troubleshooting or contact support.\n* Contact Twilio Support if the error continues or repeats. Twilio handles 61000 issues for Marketplace Listings.",
    "description": "You see this error when Twilio hits an unexpected internal condition while processing an Add-on request. Twilio uses 61000 as a catch-all Add-ons error when the failure does not map to a more specific Add-ons code.",
    "date_created": "2016-06-01T00:35:33Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 61001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Add-ons: Request timed out",
    "secondary_message": "The Add-on Provider failed to respond in the allotted time. The request was terminated and no further processing was attempted.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- The Add-on Provider failed to respond in the allotted time. The request was terminated and no further processing was attempted.\n\n### Possible solutions\n\n- Contact Add-on Provider if this error persists\n",
    "causes": "* The Add-on Provider failed to respond in the allotted time. The request was terminated and no further processing was attempted.",
    "solutions": "* Contact Add-on Provider if this error persists",
    "description": "",
    "date_created": "2016-06-01T00:36:03Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 61002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Add-ons: Provider could not complete request",
    "secondary_message": "The Add-on Provider provided a HTTP Status Code in the 500 range. This indicates an error processing the Add-on Request on the Vendors side.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error means a Marketplace Add-on request reached the Listing Partner, but the partner returned an HTTP status code in the 500 range while processing the request. In Add-on responses and callbacks, Marketplace errors in the 61xxx range appear in the `code` field alongside values such as `message` and `request_sid`.\n\n### Possible causes\n\n- The Listing Partner returned an HTTP status code in the 500 range while processing the Add-on request.\n- The Add-on request failed in the partner service that is integrated with Marketplace, rather than in Twilio's Add-on callback delivery.\n\n### Possible solutions\n\n- Check the Add-on response or callback payload for the failing Listing's `code`, `message`, and `request_sid` so you can identify the specific failed request.\n- Contact the Listing Partner for help with 61002. For this error, support is provided by the Listing Partner.\n- When you contact the partner, include the Add-on Unique Name, `request_sid`, Installed Add-on SID, and Add-on SID to help isolate the failure.\n- Review the Listing's detail page in Marketplace for partner support information and any product-specific setup requirements before sending another request.\n\n#### Additional resources\n\n- [Listings Overview](/docs/marketplace/listings)\n- [How to Use Marketplace Listings](/docs/marketplace/listings/usage)\n- [InstalledAddOns Resource](/docs/marketplace/api/installed-add-ons)\n",
    "causes": "* The Listing Partner returned an HTTP status code in the 500 range while processing the Add-on request.\n* The Add-on request failed in the partner service that is integrated with Marketplace, rather than in Twilio's Add-on callback delivery.",
    "solutions": "* Check the Add-on response or callback payload for the failing Listing's `code`, `message`, and `request_sid` so you can identify the specific failed request.\n* Contact the Listing Partner for help with 61002. For this error, support is provided by the Listing Partner.\n* When you contact the partner, include the Add-on Unique Name, `request_sid`, Installed Add-on SID, and Add-on SID to help isolate the failure.\n* Review the Listing's detail page in Marketplace for partner support information and any product-specific setup requirements before sending another request.",
    "description": "This error means a Marketplace Add-on request reached the Listing Partner, but the partner returned an HTTP status code in the 500 range while processing the request. In Add-on responses and callbacks, Marketplace errors in the 61xxx range appear in the `code` field alongside values such as `message` and `request_sid`.",
    "date_created": "2016-06-01T00:36:32Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 61003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Add-ons: Requirements to invoke AddOns have not been met",
    "secondary_message": "A parameter required to complete the request was missing or is not supported. As a result the Add-on Request can not be completed.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n### Possible causes\n\n- A parameter required to complete the request was not provided at run time. As a result the Add-on Request can not be completed.\n- The Add-on does not support the data that was provided. For example the Add-on may not support looking up phone numbers in specific countries.\n\n### Possible solutions\n\n- Refer to Add-on documentation in Console to determine if the Add-on supports the country or format of the data you are providing\n- Check Add-on documentation to see if you may be missing some data for Lookup Add-ons\n",
    "causes": "* A parameter required to complete the request was not provided at run time. As a result the Add-on Request can not be completed.\n* The Add-on does not support the data that was provided. For example the Add-on may not support looking up phone numbers in specific countries.",
    "solutions": "* Refer to Add-on documentation in Console to determine if the Add-on supports the country or format of the data you are providing\n* Check Add-on documentation to see if you may be missing some data for Lookup Add-ons",
    "description": "",
    "date_created": "2016-06-01T00:36:55Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 61004,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Add-ons: No results",
    "secondary_message": "The Add-on Provider returned a successful response but the Response Validation Schema indicated there was no usable data.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis warning occurs when a Marketplace Add-on Listing runs and the Add-on Provider returns a successful response, but the returned payload does not contain data that passes the response validation schema and can be used in the Add-on result. Add-on Listings must be installed, configured for the correct Twilio product and usage point, and invoked with the expected parameters for that product.\n\n### Possible causes\n\n- The Add-on Provider returned a successful response, but the response validation schema found no usable data in the payload.\n- The Add-on Listing is installed, but the required configuration values defined by the Listing's `configurationSchema` were not provided or do not match the Listing's expected setup.\n- The Add-on was not configured for the usage point you are trying to use, such as Lookup, incoming SMS, incoming Voice calls, or Recordings.\n- The relevant Extension is not enabled. Extensions are disabled by default and must be enabled before they are invoked.\n- For Lookup requests, the Add-on was invoked without the correct `AddOns` value or without the required `AddOns.<unique_name>.<parameter_name>` runtime data for that Listing.\n\n### Possible solutions\n\n- Open the Add-on Listing in Console and verify that it is installed and configured for the Twilio product and usage point you want to use. If needed, review the Listing's supported products and configuration requirements before retrying the request.\n- Review the Listing's `configurationSchema` and update the installed Add-on configuration so all required values are present and valid.\n- Check the Installed Add-on Extensions for the Listing and enable the Extension that matches the product flow you are invoking.\n- If you are using Lookup, confirm that the request includes the correct `AddOns` value and any required `AddOns.<unique_name>.<parameter_name>` fields for that Listing.\n- Test again with input data that the Listing is designed to analyze. If the warning continues, review the Listing's Documentation tab in Console to confirm the expected inputs and result structure for that specific provider.\n\n#### Additional resources\n\n- [How to Use Marketplace Listings](/docs/marketplace/listings/usage)\n- [Installed Add-ons Resource](/docs/marketplace/api/installed-add-ons)\n- [Installed Add-ons Extensions Subresource](/docs/marketplace/api/installed-add-ons-extensions)\n",
    "causes": "* The Add-on Provider returned a successful response, but the response validation schema found no usable data in the payload.\n* The Add-on Listing is installed, but the required configuration values defined by the Listing's `configurationSchema` were not provided or do not match the Listing's expected setup.\n* The Add-on was not configured for the usage point you are trying to use, such as Lookup, incoming SMS, incoming Voice calls, or Recordings.\n* The relevant Extension is not enabled. Extensions are disabled by default and must be enabled before they are invoked.\n* For Lookup requests, the Add-on was invoked without the correct `AddOns` value or without the required `AddOns.<unique_name>.<parameter_name>` runtime data for that Listing.",
    "solutions": "* Open the Add-on Listing in Console and verify that it is installed and configured for the Twilio product and usage point you want to use. If needed, review the Listing's supported products and configuration requirements before retrying the request.\n* Review the Listing's `configurationSchema` and update the installed Add-on configuration so all required values are present and valid.\n* Check the Installed Add-on Extensions for the Listing and enable the Extension that matches the product flow you are invoking.\n* If you are using Lookup, confirm that the request includes the correct `AddOns` value and any required `AddOns.<unique_name>.<parameter_name>` fields for that Listing.\n* Test again with input data that the Listing is designed to analyze. If the warning continues, review the Listing's Documentation tab in Console to confirm the expected inputs and result structure for that specific provider.",
    "description": "This warning occurs when a Marketplace Add-on Listing runs and the Add-on Provider returns a successful response, but the returned payload does not contain data that passes the response validation schema and can be used in the Add-on result. Add-on Listings must be installed, configured for the correct Twilio product and usage point, and invoked with the expected parameters for that product.",
    "date_created": "2016-06-01T00:37:17Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 61005,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Add-ons: Bad request",
    "secondary_message": "The Vendor provided an HTTP Status Code in the 400 range. This indicates that the Add-on Provider received the request but was unable to processes it due to validation or authorization issue.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when a Marketplace Add-on provider returns an HTTP `4xx` response for a request Twilio sent on your behalf. The provider received the request but rejected it because the request data, Add-on configuration, or authorization details did not meet the Listing's requirements.\n\n### Possible causes\n\n- The Add-on was invoked with missing, invalid, or incorrectly formatted input.\n- A required runtime parameter was not passed in the expected `AddOns.<unique_name>.<parameter_name>` format for Lookup integrations.\n- The Listing was installed but not fully configured for the Twilio product or usage point you are using.\n- The Listing requires credentials, account identifiers, or other configuration values that are missing, expired, or invalid.\n- The Listing partner rejected the request because your account or configuration is not authorized to use that feature.\n\n### Possible solutions\n\n- Open the Listing in Console and verify that the Configure tab is complete, including the enabled usage points and any required configuration parameters.\n- If you invoke the Listing from Lookup, confirm that you pass the Add-on unique name in `AddOns` and include any required runtime fields in `AddOns.<unique_name>.<parameter_name>`.\n- Review the Listing's documentation in Console and make sure the values you send match the required formats and allowed values for that provider.\n- Verify that any credentials or account details stored for the Listing are valid and still authorized on the partner's platform.\n- Retry the request after correcting the input or configuration. If the request still fails, contact the Listing partner and include the Request SID, Installed Add-on SID, and Add-on unique name from the failed response or callback.\n\n#### Additional resources\n\n- [How to Use Marketplace Listings](/docs/marketplace/listings/usage)\n- [Marketplace Listings Overview](/docs/marketplace/listings)\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n",
    "causes": "* The Add-on was invoked with missing, invalid, or incorrectly formatted input.\n* A required runtime parameter was not passed in the expected `AddOns.<unique_name>.<parameter_name>` format for Lookup integrations.\n* The Listing was installed but not fully configured for the Twilio product or usage point you are using.\n* The Listing requires credentials, account identifiers, or other configuration values that are missing, expired, or invalid.\n* The Listing partner rejected the request because your account or configuration is not authorized to use that feature.",
    "solutions": "* Open the Listing in Console and verify that the Configure tab is complete, including the enabled usage points and any required configuration parameters.\n* If you invoke the Listing from Lookup, confirm that you pass the Add-on unique name in `AddOns` and include any required runtime fields in `AddOns.<unique_name>.<parameter_name>`.\n* Review the Listing's documentation in Console and make sure the values you send match the required formats and allowed values for that provider.\n* Verify that any credentials or account details stored for the Listing are valid and still authorized on the partner's platform.\n* Retry the request after correcting the input or configuration. If the request still fails, contact the Listing partner and include the Request SID, Installed Add-on SID, and Add-on unique name from the failed response or callback.",
    "description": "This error occurs when a Marketplace Add-on provider returns an HTTP `4xx` response for a request Twilio sent on your behalf. The provider received the request but rejected it because the request data, Add-on configuration, or authorization details did not meet the Listing's requirements.",
    "date_created": "2016-06-01T00:37:37Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 61006,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Add-ons: Add-ons unavailable for GET callbacks",
    "secondary_message": "Due to the size limitations of GET callbacks we do not include Add-on results in GET callbacks",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis warning appears when you use a Twilio Marketplace Add-on with an incoming Messaging or Voice webhook that is configured to send `GET` requests. Twilio does not include Add-on results in `GET` callbacks because URL length constraints can prevent the `AddOns` payload from being delivered.\n\n### Possible causes\n\n- Your incoming Messaging webhook is configured to use `GET`. Add-on results for Programmable SMS are only included in `POST` callbacks.\n- Your incoming Voice webhook is configured to use `GET`. Add-on results for Programmable Voice calls are only included in `POST` callbacks.\n- Your application expects the `AddOns` parameter in the callback even though the request method is `GET`. Twilio omits that data from `GET` callbacks for these Add-on usage points.\n\n### Possible solutions\n\n- Change the incoming webhook method to `POST` for the Messaging or Voice flow that invokes the Add-on. Twilio supports both `GET` and `POST` for these webhooks, and `POST` is required when you need Add-on results in the callback.\n- Update your application to read Add-on results from the `AddOns` parameter in the `POST` request body after you switch the webhook method.\n- If you need `GET` for caching static TwiML or webhook responses, do not rely on Add-on data in that callback. Use `POST` for the endpoint that must receive Add-on results.\n\n#### Additional resources\n\n- [How to Use Marketplace Listings](/docs/marketplace/listings/usage)\n- [Messaging Webhooks](/docs/usage/webhooks/messaging-webhooks)\n- [Voice Webhooks](/docs/usage/webhooks/voice-webhooks)\n",
    "causes": "* Your incoming Messaging webhook is configured to use `GET`. Add-on results for Programmable SMS are only included in `POST` callbacks.\n* Your incoming Voice webhook is configured to use `GET`. Add-on results for Programmable Voice calls are only included in `POST` callbacks.\n* Your application expects the `AddOns` parameter in the callback even though the request method is `GET`. Twilio omits that data from `GET` callbacks for these Add-on usage points.",
    "solutions": "* Change the incoming webhook method to `POST` for the Messaging or Voice flow that invokes the Add-on. Twilio supports both `GET` and `POST` for these webhooks, and `POST` is required when you need Add-on results in the callback.\n* Update your application to read Add-on results from the `AddOns` parameter in the `POST` request body after you switch the webhook method.\n* If you need `GET` for caching static TwiML or webhook responses, do not rely on Add-on data in that callback. Use `POST` for the endpoint that must receive Add-on results.",
    "description": "This warning appears when you use a Twilio Marketplace Add-on with an incoming Messaging or Voice webhook that is configured to send `GET` requests. Twilio does not include Add-on results in `GET` callbacks because URL length constraints can prevent the `AddOns` payload from being delivered.",
    "date_created": "2016-06-01T00:38:04Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 61007,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Add-ons: Response body too large",
    "secondary_message": "The Add-on Provider returned a response payload that exceeded 64 kilobytes. As a result the payload was removed and this error was returned instead.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when a Marketplace Add-on Listing returns a synchronous result payload larger than 64 KB. Twilio removes the oversized payload and returns this error instead.\n\n### Possible causes\n\n- The Add-on provider returned a response payload that exceeded the 64 KB limit for synchronous Marketplace results.\n- You are using the listing in a synchronous integration point, such as Lookup, incoming SMS, or incoming Voice, where Twilio returns results immediately and enforces the 64 KB size limit.\n- Your listing configuration may be returning more detail than fits within the synchronous result limit.\n\n### Possible solutions\n\n- Reduce the size of the synchronous result so it stays under 64 KB. If you manage the listing, return a smaller result object and remove optional fields that are not required.\n- Review the listing configuration in Console and adjust any listing-specific configuration parameters so the provider returns only the data you need.\n- If you need larger result payloads for recording analysis, use an asynchronous Add-on Listing instead. Asynchronous results support payloads up to 100 MB and can be retrieved through the Add-on Results API.\n- Check the Add-on result in the response path for your integration. Lookup returns results in `add_ons`. Incoming SMS and incoming Voice callbacks return results in `AddOns`.\n\n#### Additional resources\n\n- [How to Use Marketplace Listings](/docs/marketplace/listings/usage)\n- [Recording Add-on Results Resource](/docs/marketplace/api/recording-add-on-results)\n- [Marketplace Add-on Listing Tutorial](/docs/marketplace/listings/tutorial)\n",
    "causes": "* The Add-on provider returned a response payload that exceeded the 64 KB limit for synchronous Marketplace results.\n* You are using the listing in a synchronous integration point, such as Lookup, incoming SMS, or incoming Voice, where Twilio returns results immediately and enforces the 64 KB size limit.\n* Your listing configuration may be returning more detail than fits within the synchronous result limit.",
    "solutions": "* Reduce the size of the synchronous result so it stays under 64 KB. If you manage the listing, return a smaller result object and remove optional fields that are not required.\n* Review the listing configuration in Console and adjust any listing-specific configuration parameters so the provider returns only the data you need.\n* If you need larger result payloads for recording analysis, use an asynchronous Add-on Listing instead. Asynchronous results support payloads up to 100 MB and can be retrieved through the Add-on Results API.\n* Check the Add-on result in the response path for your integration. Lookup returns results in `add_ons`. Incoming SMS and incoming Voice callbacks return results in `AddOns`.",
    "description": "This error occurs when a Marketplace Add-on Listing returns a synchronous result payload larger than 64 KB. Twilio removes the oversized payload and returns this error instead.",
    "date_created": "2016-06-01T00:38:26Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 61008,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Add-ons:  HTTP too many redirects",
    "secondary_message": "Add-on Provider returned too many HTTP redirects. To prevent getting stuck in a redirect loop only 5 redirects will be followed. After that the request will be terminated and this error code will be returned.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when an Add-on provider returns too many HTTP redirects. To avoid a redirect loop, only five redirects are followed before the request is terminated and this error is returned.\n\n### Possible causes\n\n- The Add-on provider returned a redirect loop or more than five redirects for a single request.\n- A redirect rule on the provider side keeps rewriting the request between URLs, such as HTTP to HTTPS or `www` to a non-`www` hostname, instead of resolving to a final destination.\n- The installed Add-on instance is configured with a Listing-specific endpoint or other configuration parameter that points to an intermediate URL instead of the final URL.\n\n### Possible solutions\n\n- Update the Add-on provider or webhook configuration so the request goes directly to the final URL and does not depend on repeated redirects.\n- Test the provider URL with `curl`, Postman, or another HTTP client and inspect each response until the request no longer returns repeated redirects.\n- Review the installed Listing's configuration parameters and usage points in Console, then correct any endpoint or routing setting that sends requests to the wrong URL.\n- Check the Add-on result payload for the `status`, `message`, and `code` fields. Keep the Installed Add-on SID available for debugging and support requests with the Listing publisher.\n\n#### Additional resources\n\n- [How to Use Marketplace Listings](/docs/marketplace/listings/usage)\n- [Marketplace API overview for users](/docs/marketplace/listings/api-overview-users)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The Add-on provider returned a redirect loop or more than five redirects for a single request.\n* A redirect rule on the provider side keeps rewriting the request between URLs, such as HTTP to HTTPS or `www` to a non-`www` hostname, instead of resolving to a final destination.\n* The installed Add-on instance is configured with a Listing-specific endpoint or other configuration parameter that points to an intermediate URL instead of the final URL.",
    "solutions": "* Update the Add-on provider or webhook configuration so the request goes directly to the final URL and does not depend on repeated redirects.\n* Test the provider URL with `curl`, Postman, or another HTTP client and inspect each response until the request no longer returns repeated redirects.\n* Review the installed Listing's configuration parameters and usage points in Console, then correct any endpoint or routing setting that sends requests to the wrong URL.\n* Check the Add-on result payload for the `status`, `message`, and `code` fields. Keep the Installed Add-on SID available for debugging and support requests with the Listing publisher.",
    "description": "This error occurs when an Add-on provider returns too many HTTP redirects. To avoid a redirect loop, only five redirects are followed before the request is terminated and this error is returned.",
    "date_created": "2016-06-01T00:38:44Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 61009,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Add-ons: Could not fulfill request with available data",
    "secondary_message": "One of the request fields in the Add-ons specification could not be interpolated with the provided data. The result is an invalid URL, Header value or other parameter that makes the request impossible to execute.",
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when Twilio cannot build a valid outbound request for a Marketplace Add-on because one of the Add-on request fields could not be interpolated from the data available for that invocation. The resulting value is invalid for a URL, header, or another request parameter, so Twilio cannot execute the Add-on request.\n\n### Possible causes\n\n- A required Add-on value was missing from the data sent for that invocation. For Lookup Add-ons, run-time values must be passed with `AddOns.<unique_name>.<parameter_name>`.\n- One or more configured Add-on fields resolved to an invalid URL, header value, or request parameter after Twilio substituted the available data.\n- The installed Add-on configuration does not match the parameters required by that Listing or by the enabled extension for the Twilio product you are using.\n\n### Possible solutions\n\n- Review the Add-on's configuration in Console and confirm that every required parameter is present and formatted exactly as the Listing expects. Use the Listing's Documentation tab to verify the supported products and required configuration parameters.\n- If you invoke the Add-on through Lookup, include every required run-time field with `AddOns.<unique_name>.<parameter_name>` and verify that each value can resolve into a valid request field.\n- Check that the correct extension is enabled for the Twilio product flow where you expect the Add-on to run. Update the installed Add-on or extension settings if needed, then test the request again.\n- If the error continues, contact Twilio and include the `request_sid`, Installed Add-on SID, Add-on SID, and Add-on unique name from the API response or callback so Twilio can trace the failed Add-on request.\n\n#### Additional resources\n\n- [How to Use Marketplace Listings](/docs/marketplace/listings/usage)\n- [InstalledAddOns Resource](/docs/marketplace/api/installed-add-ons)\n- [Listings Overview](/docs/marketplace/listings)\n",
    "causes": "* A required Add-on value was missing from the data sent for that invocation. For Lookup Add-ons, run-time values must be passed with `AddOns.<unique_name>.<parameter_name>`.\n* One or more configured Add-on fields resolved to an invalid URL, header value, or request parameter after Twilio substituted the available data.\n* The installed Add-on configuration does not match the parameters required by that Listing or by the enabled extension for the Twilio product you are using.",
    "solutions": "* Review the Add-on's configuration in Console and confirm that every required parameter is present and formatted exactly as the Listing expects. Use the Listing's Documentation tab to verify the supported products and required configuration parameters.\n* If you invoke the Add-on through Lookup, include every required run-time field with `AddOns.<unique_name>.<parameter_name>` and verify that each value can resolve into a valid request field.\n* Check that the correct extension is enabled for the Twilio product flow where you expect the Add-on to run. Update the installed Add-on or extension settings if needed, then test the request again.\n* If the error continues, contact Twilio and include the `request_sid`, Installed Add-on SID, Add-on SID, and Add-on unique name from the API response or callback so Twilio can trace the failed Add-on request.",
    "description": "This error occurs when Twilio cannot build a valid outbound request for a Marketplace Add-on because one of the Add-on request fields could not be interpolated from the data available for that invocation. The resulting value is invalid for a URL, header, or another request parameter, so Twilio cannot execute the Add-on request.",
    "date_created": "2016-06-01T00:39:05Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 62000,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to write to the database.",
    "secondary_message": "An internal error occurred, and the service was unable to write data relevant to your request.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nAn internal error occurred, and the service was unable to write data relevant to your request.\n",
    "causes": null,
    "solutions": null,
    "description": "An internal error occurred, and the service was unable to write data relevant to your request.",
    "date_created": "2016-10-05T20:25:16Z",
    "last_updated": "2020-08-04T10:00:21.244Z"
  },
  {
    "code": 62001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid SID",
    "secondary_message": "A SID that was provided in the request was not valid. Ensure that any SIDs are complete and valid.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nA SID that was provided in the request was not valid. Ensure that any SIDs are complete and valid.\n",
    "causes": null,
    "solutions": null,
    "description": "A SID that was provided in the request was not valid. Ensure that any SIDs are complete and valid.",
    "date_created": "2016-10-05T20:26:23Z",
    "last_updated": "2020-08-04T10:00:21.218Z"
  },
  {
    "code": 62002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Exchange not found",
    "secondary_message": "The exchange SID in the request could not be found.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe exchange SID in the request could not be found.\n",
    "causes": null,
    "solutions": null,
    "description": "The exchange SID in the request could not be found.",
    "date_created": "2016-10-05T23:33:35Z",
    "last_updated": "2020-08-04T10:00:21.183Z"
  },
  {
    "code": 62003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "MPLS carrier not found.",
    "secondary_message": "The MPLS carrier SID in the request could not be found.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe MPLS carrier SID in the request could not be found.\n",
    "causes": null,
    "solutions": null,
    "description": "The MPLS carrier SID in the request could not be found.",
    "date_created": "2016-10-05T23:34:32Z",
    "last_updated": "2020-08-04T10:00:21.143Z"
  },
  {
    "code": 62004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Direct connect not found.",
    "secondary_message": "The direct connect SID in the request could not be found.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe direct connect SID in the request could not be found.\n",
    "causes": null,
    "solutions": null,
    "description": "The direct connect SID in the request could not be found.",
    "date_created": "2016-10-05T23:35:06Z",
    "last_updated": "2020-08-04T10:00:21.126Z"
  },
  {
    "code": 62005,
    "log_level": "ERROR",
    "log_type": null,
    "message": " Bandwidth reserve not found.",
    "secondary_message": "The bandwidth reserve SID in the request could not be found.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe bandwidth reserve SID in the request could not be found.\n",
    "causes": null,
    "solutions": null,
    "description": "The bandwidth reserve SID in the request could not be found.",
    "date_created": "2016-10-05T23:35:36Z",
    "last_updated": "2020-08-04T10:00:21.107Z"
  },
  {
    "code": 62006,
    "log_level": "ERROR",
    "log_type": null,
    "message": " MPLS carrier is not associated with the exchange.",
    "secondary_message": "The MPLS carrier SID in the request is not associated with the exchange SID in the request. Choose an MPLS carrier SID that is associated with the exchange SID, or choose an exchange SID that is associated with the MPLS carrier SID.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe MPLS carrier SID in the request is not associated with the exchange SID in the request. Choose an MPLS carrier SID that is associated with the exchange SID, or choose an exchange SID that is associated with the MPLS carrier SID.\n",
    "causes": null,
    "solutions": null,
    "description": "The MPLS carrier SID in the request is not associated with the exchange SID in the request. Choose an MPLS carrier SID that is associated with the exchange SID, or choose an exchange SID that is associated with the MPLS carrier SID.",
    "date_created": "2016-10-05T23:36:20Z",
    "last_updated": "2020-08-04T10:00:21.091Z"
  },
  {
    "code": 62007,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Direct connect is not associated with the exchange.",
    "secondary_message": "The direct connect SID in the request is not associated with the exchange SID in the request. Choose a direct connect SID that is associated with the exchange SID, or choose an exchange SID associated with the direct connect SID.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe direct connect SID in the request is not associated with the exchange SID in the request. Choose a direct connect SID that is associated with the exchange SID, or choose an exchange SID associated with the direct connect SID.\n",
    "causes": null,
    "solutions": null,
    "description": "The direct connect SID in the request is not associated with the exchange SID in the request. Choose a direct connect SID that is associated with the exchange SID, or choose an exchange SID associated with the direct connect SID.",
    "date_created": "2016-10-05T23:37:08Z",
    "last_updated": "2020-08-04T10:00:21.074Z"
  },
  {
    "code": 62008,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Bandwidth reserve is not associated with the exchange.",
    "secondary_message": "The bandwidth reserve SID in the request is not associated with the exchange SID in the request. Choose a bandwidth reserve that is associated with the exchange SID, or choose an exchange SID that is associated with the bandwidth reserve SID.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe bandwidth reserve SID in the request is not associated with the exchange SID in the request. Choose a bandwidth reserve that is associated with the exchange SID, or choose an exchange SID that is associated with the bandwidth reserve SID.\n",
    "causes": null,
    "solutions": null,
    "description": "The bandwidth reserve SID in the request is not associated with the exchange SID in the request. Choose a bandwidth reserve that is associated with the exchange SID, or choose an exchange SID that is associated with the bandwidth reserve SID.",
    "date_created": "2016-10-05T23:37:48Z",
    "last_updated": "2020-08-04T10:00:21.055Z"
  },
  {
    "code": 62009,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Account SID was not found.",
    "secondary_message": "The account SID in the request could not be found in the Twilio Interconnect directory. This does not mean that the account is not valid, only that it is not associated with any Twilio Interconnect entries.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe account SID in the request could not be found in the Twilio Interconnect directory. This does not mean that the account is not valid, only that it is not associated with any Twilio Interconnect entries.\n",
    "causes": null,
    "solutions": null,
    "description": "The account SID in the request could not be found in the Twilio Interconnect directory. This does not mean that the account is not valid, only that it is not associated with any Twilio Interconnect entries.",
    "date_created": "2016-10-05T23:38:28Z",
    "last_updated": "2020-08-04T10:00:21.036Z"
  },
  {
    "code": 62010,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No authentication was provided.",
    "secondary_message": "An attempt was made to access a restricted resource without proper authorization. Provide authentication details and try again.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nAn attempt was made to access a restricted resource without proper authorization. Provide authentication details and try again.\n",
    "causes": null,
    "solutions": null,
    "description": "An attempt was made to access a restricted resource without proper authorization. Provide authentication details and try again.",
    "date_created": "2016-10-05T23:39:06Z",
    "last_updated": "2020-08-04T10:00:21.017Z"
  },
  {
    "code": 62011,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unauthorized",
    "secondary_message": "The access credentials provided are not authorized to access this resource.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe access credentials provided are not authorized to access this resource.\n",
    "causes": null,
    "solutions": null,
    "description": "The access credentials provided are not authorized to access this resource.",
    "date_created": "2016-10-05T23:39:45Z",
    "last_updated": "2020-08-04T10:00:20.999Z"
  },
  {
    "code": 62012,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Connection not found.",
    "secondary_message": "The connection SID in the request could not be found.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe connection SID in the request could not be found.\n",
    "causes": null,
    "solutions": null,
    "description": "The connection SID in the request could not be found.",
    "date_created": "2016-10-05T23:40:17Z",
    "last_updated": "2020-08-04T10:00:20.98Z"
  },
  {
    "code": 62013,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unable to identify account owner of connection.",
    "secondary_message": "The connection SID in the request is orphaned, and the owner cannot be identified.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe connection SID in the request is orphaned, and the owner cannot be identified.\n",
    "causes": null,
    "solutions": null,
    "description": "The connection SID in the request is orphaned, and the owner cannot be identified.",
    "date_created": "2016-10-05T23:40:59Z",
    "last_updated": "2020-08-04T10:00:20.963Z"
  },
  {
    "code": 62014,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Connection not ready",
    "secondary_message": "The connection SID in the request is not fully configured. Please provide additional configuration info. For a VPN connection, please provide IP Gateway and at least one IP route.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe connection SID in the request is not fully configured. Please provide additional configuration info. For a VPN connection, please provide IP Gateway and at least one IP route.\n",
    "causes": null,
    "solutions": null,
    "description": "The connection SID in the request is not fully configured. Please provide additional configuration info. For a VPN connection, please provide IP Gateway and at least one IP route.",
    "date_created": "2016-10-05T23:41:28Z",
    "last_updated": "2020-08-04T10:00:20.946Z"
  },
  {
    "code": 62015,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Connection in transition",
    "secondary_message": "The connection SID in the request is currently in a state of transition. A connection cannot be transitioned from inactive to active unless if the connection is currently in an inactive state. To transition the connection to an active state, please wait for the connection to be inactive again.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe connection SID in the request is currently in a state of transition. A connection cannot be transitioned from inactive to active unless if the connection is currently in an inactive state. To transition the connection to an active state, please wait for the connection to be inactive again.\n",
    "causes": null,
    "solutions": null,
    "description": "The connection SID in the request is currently in a state of transition. A connection cannot be transitioned from inactive to active unless if the connection is currently in an inactive state. To transition the connection to an active state, please wait for the connection to be inactive again.",
    "date_created": "2016-10-05T23:42:03Z",
    "last_updated": "2020-08-04T10:00:20.915Z"
  },
  {
    "code": 62016,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Connection not active",
    "secondary_message": "The connection SID in the request is not currently active. To transition a connection from active to inactive, the connection must be in an active state.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe connection SID in the request is not currently active. To transition a connection from active to inactive, the connection must be in an active state.\n",
    "causes": null,
    "solutions": null,
    "description": "The connection SID in the request is not currently active. To transition a connection from active to inactive, the connection must be in an active state.",
    "date_created": "2016-10-05T23:42:34Z",
    "last_updated": "2020-08-04T10:00:20.897Z"
  },
  {
    "code": 62017,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No IP route specified",
    "secondary_message": "The request did not identify an IP route. This may indicate that the IP Route parameter was misspelled.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe request did not identify an IP route. This may indicate that the IP Route parameter was misspelled.\n",
    "causes": null,
    "solutions": null,
    "description": "The request did not identify an IP route. This may indicate that the IP Route parameter was misspelled.",
    "date_created": "2016-10-05T23:43:10Z",
    "last_updated": "2020-08-04T10:00:20.879Z"
  },
  {
    "code": 62018,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid IP route",
    "secondary_message": "The request provided an invalid IP route. The IP route must be a valid formed CIDR address that does not exist within the RFC 1918 address space.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe request provided an invalid IP route. The IP route must be a valid formed CIDR address that does not exist within the RFC 1918 address space.\n",
    "causes": null,
    "solutions": null,
    "description": "The request provided an invalid IP route. The IP route must be a valid formed CIDR address that does not exist within the RFC 1918 address space.",
    "date_created": "2016-10-05T23:43:42Z",
    "last_updated": "2020-08-04T10:00:20.863Z"
  },
  {
    "code": 62019,
    "log_level": "ERROR",
    "log_type": null,
    "message": "IP route exceeds permitted IP range",
    "secondary_message": "The request provided an IP route that would exceed permitted IP range. IP addresses are limited to the 256 address range.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe request provided an IP route that would exceed permitted IP range. IP addresses are limited to the 256 address range.\n",
    "causes": null,
    "solutions": null,
    "description": "The request provided an IP route that would exceed permitted IP range. IP addresses are limited to the 256 address range.",
    "date_created": "2016-10-05T23:44:37Z",
    "last_updated": "2020-08-04T10:00:20.845Z"
  },
  {
    "code": 62020,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Connection pending deletion.",
    "secondary_message": "The connection SID in the request is pending deletion. No changes can be made to it.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe connection SID in the request is pending deletion. No changes can be made to it.\n",
    "causes": null,
    "solutions": null,
    "description": "The connection SID in the request is pending deletion. No changes can be made to it.",
    "date_created": "2016-10-05T23:46:37Z",
    "last_updated": "2020-08-04T10:00:20.826Z"
  },
  {
    "code": 62021,
    "log_level": "ERROR",
    "log_type": null,
    "message": "IP Gateway Invalid",
    "secondary_message": "The request provided an invalid gateway IP address. Request must provide a valid IP address not in the RFC 1918 range.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe request provided an invalid gateway IP address. Request must provide a valid IP address not in the RFC 1918 range.\n",
    "causes": null,
    "solutions": null,
    "description": "The request provided an invalid gateway IP address. Request must provide a valid IP address not in the RFC 1918 range.",
    "date_created": "2016-10-05T23:47:11Z",
    "last_updated": "2020-08-04T10:00:20.808Z"
  },
  {
    "code": 62022,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Missing account SID",
    "secondary_message": "The request did not specify an account SID.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe request did not specify an account SID.\n",
    "causes": null,
    "solutions": null,
    "description": "The request did not specify an account SID.",
    "date_created": "2016-10-05T23:48:09Z",
    "last_updated": "2020-08-04T10:00:20.789Z"
  },
  {
    "code": 62023,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Missing exchange",
    "secondary_message": "The request did not specify an exchange SID.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe request did not specify an exchange SID.\n",
    "causes": null,
    "solutions": null,
    "description": "The request did not specify an exchange SID.",
    "date_created": "2016-10-05T23:48:43Z",
    "last_updated": "2020-08-04T10:00:20.771Z"
  },
  {
    "code": 62024,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Missing connection type",
    "secondary_message": "The request did not specify a connection type. Valid connection types are vpn, crossconnect, mpls.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe request did not specify a connection type. Valid connection types are vpn, crossconnect, mpls.\n",
    "causes": null,
    "solutions": null,
    "description": "The request did not specify a connection type. Valid connection types are vpn, crossconnect, mpls.",
    "date_created": "2016-10-05T23:49:15Z",
    "last_updated": "2020-08-04T10:00:20.752Z"
  },
  {
    "code": 62025,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Interconnect: Invalid connection type",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Interconnect request includes a `type` value that Twilio does not accept. Use a supported Interconnect connection type when you create or update the connection.\n\n### Possible causes\n\n- The request included an unsupported value for the `type` parameter.\n- The `type` value was misspelled.\n- The `type` value used the wrong format or casing.\n- The request used a connection type that does not match the Interconnect connection you want to provision.\n\n### Possible solutions\n\n- Set the `type` parameter to a supported value: `cloudconnect`, `crossconnect`, `mpls`, or `vpn`.\n- Review the request payload for typos in the `type` value.\n- Make sure the connection type matches the Interconnect option you are provisioning.\n- Review the Interconnect setup documentation before you resubmit the request.\n\n#### Additional resources\n\n- [Interconnect overview](/docs/interconnect)\n- [Cross Connect](/docs/interconnect/crossconnect)\n- [Third Party Exchange](/docs/interconnect/third-party-exchange)\n",
    "causes": "* The request included an unsupported value for the `type` parameter.\n* The `type` value was misspelled.\n* The `type` value used the wrong format or casing.\n* The request used a connection type that does not match the Interconnect connection you want to provision.",
    "solutions": "* Set the `type` parameter to a supported value: `cloudconnect`, `crossconnect`, `mpls`, or `vpn`.\n* Review the request payload for typos in the `type` value.\n* Make sure the connection type matches the Interconnect option you are provisioning.\n* Review the Interconnect setup documentation before you resubmit the request.",
    "description": "This error occurs when your Interconnect request includes a `type` value that Twilio does not accept. Use a supported Interconnect connection type when you create or update the connection.",
    "date_created": "2016-10-05T23:49:50Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 62026,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Interconnect: Missing MPLS carrier SID",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nTwilio could not process the Interconnect configuration request because the required MPLS carrier SID was not provided. Include a valid MPLS carrier SID in the request before you create or update the Interconnect resource.\n\n### Possible causes\n\n- The request to create or update an Interconnect resource omitted the MPLS carrier SID field.\n- The MPLS carrier SID value was passed as an empty or null value.\n- The request referenced an MPLS carrier that was not properly selected when the configuration was submitted.\n\n### Possible solutions\n\n- Add the MPLS carrier SID to your Interconnect API request.\n- Verify that the SID is present, correctly formatted, and belongs to the MPLS carrier you intend to use.\n- Review your application logic to confirm the MPLS carrier SID is not removed or overwritten before the request is sent.\n- If you build the request dynamically, validate required Interconnect parameters before submitting the API call.\n\n#### Additional resources\n\n- [Twilio Interconnect documentation](/docs/interconnect)\n- [Twilio API response and error dictionary](/docs/usage/twilios-response)\n",
    "causes": "* The request to create or update an Interconnect resource omitted the MPLS carrier SID field.\n* The MPLS carrier SID value was passed as an empty or null value.\n* The request referenced an MPLS carrier that was not properly selected when the configuration was submitted.",
    "solutions": "* Add the MPLS carrier SID to your Interconnect API request.\n* Verify that the SID is present, correctly formatted, and belongs to the MPLS carrier you intend to use.\n* Review your application logic to confirm the MPLS carrier SID is not removed or overwritten before the request is sent.\n* If you build the request dynamically, validate required Interconnect parameters before submitting the API call.",
    "description": "Twilio could not process the Interconnect configuration request because the required MPLS carrier SID was not provided. Include a valid MPLS carrier SID in the request before you create or update the Interconnect resource.",
    "date_created": "2016-10-05T23:50:17Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 62027,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Interconnect: Extra MPLS parameter",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThis error occurs when you include an MPLS carrier SID in an Interconnect request for a connection type that does not use MPLS. Include an MPLS carrier SID only when the connection type is `mpls`.\n\n### Possible causes\n\n- The request includes an MPLS carrier SID together with a non-`mpls` connection type.\n- The connection type in the request does not match the Interconnect connection you want to create or update.\n\n### Possible solutions\n\n- Remove the MPLS carrier SID if the request is not for an `mpls` connection.\n- If you intend to create an `mpls` connection, set the connection type to `mpls` and provide a valid MPLS carrier SID.\n- Review the connection type and MPLS carrier values in your request, then submit the request again.\n\n#### Additional resources\n\n- [Interconnect](/docs/interconnect)\n- [Cross Connect](/docs/interconnect/crossconnect)\n- [Virtual Private Network](/docs/interconnect/virtual-private-network)\n",
    "causes": "* The request includes an MPLS carrier SID together with a non-`mpls` connection type.\n* The connection type in the request does not match the Interconnect connection you want to create or update.",
    "solutions": "* Remove the MPLS carrier SID if the request is not for an `mpls` connection.\n* If you intend to create an `mpls` connection, set the connection type to `mpls` and provide a valid MPLS carrier SID.\n* Review the connection type and MPLS carrier values in your request, then submit the request again.",
    "description": "This error occurs when you include an MPLS carrier SID in an Interconnect request for a connection type that does not use MPLS. Include an MPLS carrier SID only when the connection type is `mpls`.",
    "date_created": "2016-10-05T23:50:56Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 62028,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Interconnect: Connection expired.",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a request with an Interconnect Connection SID that has expired. Connection resources use the `CN` SID prefix. After the connection expires, you cannot continue using that SID. Create a new Interconnect connection and update your request to use the new SID.\n\n### Possible causes\n\n- The request references an Interconnect connection SID that has expired.\n- Your application or configuration still uses an older `CN` SID instead of a newly provisioned connection.\n\n### Possible solutions\n\n- Create a new Interconnect connection in Console, then update the request to use the new connection SID.\n- If you are reprovisioning the connection, complete the setup steps for your Interconnect type before retrying the request.\n- For higher availability, provision a second Interconnect connection in another Edge location so your application can fail over if one connection is no longer usable.\n\n#### Additional resources\n\n- [Interconnect overview](/docs/interconnect)\n- [Third Party Exchange](/docs/interconnect/third-party-exchange)\n- [Setup Best Practices](/docs/interconnect/setup-best-practices)\n",
    "causes": "* The request references an Interconnect connection SID that has expired.\n* Your application or configuration still uses an older `CN` SID instead of a newly provisioned connection.",
    "solutions": "* Create a new Interconnect connection in Console, then update the request to use the new connection SID.\n* If you are reprovisioning the connection, complete the setup steps for your Interconnect type before retrying the request.\n* For higher availability, provision a second Interconnect connection in another Edge location so your application can fail over if one connection is no longer usable.",
    "description": "This error occurs when you send a request with an Interconnect Connection SID that has expired. Connection resources use the `CN` SID prefix. After the connection expires, you cannot continue using that SID. Create a new Interconnect connection and update your request to use the new SID.",
    "date_created": "2016-10-05T23:51:26Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 62034,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Interconnect: No useful parameters provided.",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Interconnect request expects at least one optional parameter, but the request does not include any recognized parameters. This usually happens when no optional fields are sent, or when the parameter names are misspelled and Twilio cannot use them.\n\n### Possible causes\n\n- You sent an Interconnect request that expected at least one optional parameter, but you did not include any optional fields.\n- One or more parameter names were misspelled, so Twilio did not recognize them as useful parameters.\n\n### Possible solutions\n\n- Add at least one valid optional parameter to the request before you retry it.\n- Review the parameters you send and correct any misspellings so Twilio can recognize them.\n- If you are submitting an Interconnect provisioning request in Console, provide the connection details required for your connection type. For example, Cross Connect requests require details such as the exchange location and desired bandwidth. VPN requests require details such as the VPN type, exchange location, bandwidth, and VPN Gateway IP.\n\n#### Additional resources\n\n- [Interconnect overview](/docs/interconnect)\n- [Cross Connect](/docs/interconnect/crossconnect)\n- [Virtual Private Network](/docs/interconnect/virtual-private-network)\n",
    "causes": "* You sent an Interconnect request that expected at least one optional parameter, but you did not include any optional fields.\n* One or more parameter names were misspelled, so Twilio did not recognize them as useful parameters.",
    "solutions": "* Add at least one valid optional parameter to the request before you retry it.\n* Review the parameters you send and correct any misspellings so Twilio can recognize them.\n* If you are submitting an Interconnect provisioning request in Console, provide the connection details required for your connection type. For example, Cross Connect requests require details such as the exchange location and desired bandwidth. VPN requests require details such as the VPN type, exchange location, bandwidth, and VPN Gateway IP.",
    "description": "Twilio returns this error when your Interconnect request expects at least one optional parameter, but the request does not include any recognized parameters. This usually happens when no optional fields are sent, or when the parameter names are misspelled and Twilio cannot use them.",
    "date_created": "2016-10-05T23:52:34Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 62035,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Interconnect: No bandwidth was specified in the request",
    "secondary_message": "The request did not specify bandwidth. Approved quantities are 10.0, 100.0, and 1000.0Mb.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- No bandwidth was specified in the request\n\n### Possible solutions\n\n- The request did not specify bandwidth. Please include an approved bandwidth option--those are 10.0Mb, 100.0mb, and 1000.0Mb\n",
    "causes": "* No bandwidth was specified in the request",
    "solutions": "* The request did not specify bandwidth. Please include an approved bandwidth option--those are 10.0Mb, 100.0mb, and 1000.0Mb",
    "description": "",
    "date_created": "2016-10-05T23:53:23Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 62052,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Interconnect: Account is not a subaccount of the Connection owner",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThis error occurs when the account making the request does not belong to the same account hierarchy as the Interconnect Connection identified by the `Connection SID`. To access the connection, authenticate with the parent account that owns the connection or with one of that parent account's subaccounts.\n\n### Possible causes\n\n- The request was authenticated with credentials from a different parent account than the one that owns the Interconnect Connection.\n- The request used a subaccount that is not under the connection owner's parent account. A subaccount can access only its own resources, while the parent account can access its subaccounts' resources.\n- The request included the wrong `Connection SID`, so Twilio looked up a connection owned by another account hierarchy. Twilio uses `CN`-prefixed SIDs to identify Connection resources.\n\n### Possible solutions\n\n- Verify the `Connection SID` in your request and confirm that it matches the Interconnect Connection you intend to manage. A valid Connection SID starts with `CN`.\n- Check the authenticated account's `OwnerAccountSid` and confirm that it matches the parent account that owns the connection. If it does not, retry the request with the correct parent account credentials or with a subaccount that belongs to that parent account.\n- If you work across multiple Twilio accounts or projects, switch to the correct account context in Console or update your API credentials before retrying the request. Parent account credentials can access subaccount resources, but subaccount credentials cannot access sibling or parent account resources.\n\n#### Additional resources\n\n- [Interconnect overview](/docs/interconnect)\n- [Subaccounts API](/docs/iam/api/subaccounts)\n- [Accounts API](/docs/iam/api/account)\n",
    "causes": "* The request was authenticated with credentials from a different parent account than the one that owns the Interconnect Connection.\n* The request used a subaccount that is not under the connection owner's parent account. A subaccount can access only its own resources, while the parent account can access its subaccounts' resources.\n* The request included the wrong `Connection SID`, so Twilio looked up a connection owned by another account hierarchy. Twilio uses `CN`-prefixed SIDs to identify Connection resources.",
    "solutions": "* Verify the `Connection SID` in your request and confirm that it matches the Interconnect Connection you intend to manage. A valid Connection SID starts with `CN`.\n* Check the authenticated account's `OwnerAccountSid` and confirm that it matches the parent account that owns the connection. If it does not, retry the request with the correct parent account credentials or with a subaccount that belongs to that parent account.\n* If you work across multiple Twilio accounts or projects, switch to the correct account context in Console or update your API credentials before retrying the request. Parent account credentials can access subaccount resources, but subaccount credentials cannot access sibling or parent account resources.",
    "description": "This error occurs when the account making the request does not belong to the same account hierarchy as the Interconnect Connection identified by the `Connection SID`. To access the connection, authenticate with the parent account that owns the connection or with one of that parent account's subaccounts.",
    "date_created": "2017-06-05T22:46:23Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 62053,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Interconnect: The subaccount is not authorized to access this connection.  ",
    "secondary_message": null,
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\n- The subaccount is not authorized to access this connection.\n\n### Possible solutions\n\n- Verify your Interconnect Connection permission settings.\n  - In the Twilio Console, go to [**Builder tools** > **Interconnect** > **Connections**](https://1console.twilio.com/go?to=/account/__account__/us1/interconnect/connections).\n  - In the legacy Console, go to [**Interconnect** > **Connections**](https://console.twilio.com/us1/develop/interconnect/connections).\n",
    "causes": "* The subaccount is not authorized to access this connection.",
    "solutions": "* Verify your Interconnect Connection permission settings.\n  * In the Twilio Console, go to [**Builder tools** > **Interconnect** > **Connections**](https://1console.twilio.com/go?to=/account/__account__/us1/interconnect/connections).\n  * In the legacy Console, go to [**Interconnect** > **Connections**](https://console.twilio.com/us1/develop/interconnect/connections).",
    "description": "",
    "date_created": "2017-06-05T22:47:22Z",
    "last_updated": "2026-09-25T13:35:58-04:00"
  },
  {
    "code": 62100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "IP address(es) already linked to another connection",
    "secondary_message": "An IP address can be associated to one Interconnect connection only.",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nThe IP address is already associated with another Interconnect connection.\n\n### Possible causes\n\nIP conflict\n\n### Possible solutions\n\nNew valid IP address\n",
    "causes": "IP conflict",
    "solutions": "New valid IP address",
    "description": "The IP address is already associated with another Interconnect connection.",
    "date_created": "2020-04-13T22:12:52Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 62200,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Provisioning failure - Network-API is unavailable!",
    "secondary_message": "Network API is not available to perform the provisioning task",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nNetwork provisioning calls are traced by network API which at the moment are not available.\n\n### Possible causes\n\nnetwork connectivity, or the NSO server down\n\n### Possible solutions\n\ncheck the status of the NSO if the network is fine.\n",
    "causes": "network connectivity, or the NSO server down",
    "solutions": "check the status of the NSO if the network is fine.",
    "description": "Network provisioning calls are traced by network API which at the moment are not available.",
    "date_created": "2020-04-13T22:21:52Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 62220,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Provisioning failure - Requested bandwidth not available on the network device.",
    "secondary_message": "Network device does not have the capacity available to perform the provisioning task",
    "product": "Interconnect",
    "products_used": [
      "interconnect"
    ],
    "docs": "\n## Description\n\nBandwidth is not available on the network device due to lack of capacity\n\n### Possible causes\n\nNetwork device is out of capacity\n\n### Possible solutions\n\nUpgrade the capacity on the network device.\n",
    "causes": "Network device is out of capacity",
    "solutions": "Upgrade the capacity on the network device.",
    "description": "Bandwidth is not available on the network device due to lack of capacity",
    "date_created": "2020-04-13T22:27:10Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 63001,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Channel authentication failed. See Channel-specific error for details",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a non-SMS messaging channel cannot authenticate your request with the underlying channel provider. Check the channel-specific failure details in `ChannelStatusMessage` or in your `StatusCallback` request to identify why the provider rejected authentication.\n\n### Possible causes\n\n- The channel authentication credentials are incorrect or no longer valid.\n- Facebook identified a potential security issue and rotated the token used for the sender.\n- The Facebook user who connected the Facebook Page to Twilio changed their password.\n- The user de-authorized the Twilio app.\n- Re-authentication can also fail if the account used for setup no longer has admin access to the Facebook Page.\n\n### Possible solutions\n\n- Review `ChannelStatusMessage` in your message status callback to see the error returned by the underlying channel.\n- Reconnect Facebook Messenger in Console and authorize the Facebook Page again. During setup, connect with Facebook and select the Facebook Pages you want to authorize as Senders.\n- Make sure the Facebook account you use to reconnect has admin access to the Facebook Page.\n- If Facebook rotated the token, the connected user changed their password, or the app was de-authorized, re-authenticate the sender. If the issue continues, delete the sender and add it again.\n- Review your Programmable Messaging logs for the affected Message SID while you troubleshoot.\n\n#### Additional resources\n\n- [Get started with Facebook Messenger (public beta)](/docs/messaging/channels/facebook-messenger)\n- [Send a message with Facebook Messenger (public beta)](/docs/messaging/tutorials/send-message-with-facebook-messenger)\n- [Debugging Tools for Programmable Messaging](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The channel authentication credentials are incorrect or no longer valid.\n* Facebook identified a potential security issue and rotated the token used for the sender.\n* The Facebook user who connected the Facebook Page to Twilio changed their password.\n* The user de-authorized the Twilio app.\n* Re-authentication can also fail if the account used for setup no longer has admin access to the Facebook Page.",
    "solutions": "* Review `ChannelStatusMessage` in your message status callback to see the error returned by the underlying channel.\n* Reconnect Facebook Messenger in Console and authorize the Facebook Page again. During setup, connect with Facebook and select the Facebook Pages you want to authorize as Senders.\n* Make sure the Facebook account you use to reconnect has admin access to the Facebook Page.\n* If Facebook rotated the token, the connected user changed their password, or the app was de-authorized, re-authenticate the sender. If the issue continues, delete the sender and add it again.\n* Review your Programmable Messaging logs for the affected Message SID while you troubleshoot.",
    "description": "Twilio returns this error when a non-SMS messaging channel cannot authenticate your request with the underlying channel provider. Check the channel-specific failure details in `ChannelStatusMessage` or in your `StatusCallback` request to identify why the provider rejected authentication.",
    "date_created": "2017-05-31T22:21:51Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Channel could not find the From address",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `From` address in a Programmable Messaging request does not map to a configured Channel endpoint address. This error applies to WhatsApp and other non-SMS messaging channels. For WhatsApp sandbox traffic, use the `whatsapp:<sandbox phone number>` format, and for live senders use the sender address assigned to that channel.\n\n### Possible causes\n\n- The `From` address in the request is incorrect or does not match the channel address exactly.\n- The sender address is not associated with the Channel or WhatsApp installation you are using.\n- You are sending from a WhatsApp sandbox or live sender without using the channel-specific `From` format Twilio expects.\n\n### Possible solutions\n\n- Use the exact Channel endpoint address shown on the Channel page, and make sure the `From` value matches that address for the channel you are sending through.\n- If you are sending via WhatsApp sandbox, set `From` to `whatsapp:<sandbox phone number>` and activate the sandbox before sending messages.\n- If you are sending via a live WhatsApp sender, use the `whatsapp:` sender address that is configured for your number.\n- Check Error Logs and Programmable Messaging Logs to review the request details, sender configuration, and the associated Message SID.\n\n#### Additional resources\n\n- [Programmable Messaging](/docs/messaging)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [The WhatsApp Business Platform with Twilio: Best Practices and FAQs](/docs/whatsapp/best-practices-and-faqs)\n",
    "causes": "* The `From` address in the request is incorrect or does not match the channel address exactly.\n* The sender address is not associated with the Channel or WhatsApp installation you are using.\n* You are sending from a WhatsApp sandbox or live sender without using the channel-specific `From` format Twilio expects.",
    "solutions": "* Use the exact Channel endpoint address shown on the Channel page, and make sure the `From` value matches that address for the channel you are sending through.\n* If you are sending via WhatsApp sandbox, set `From` to `whatsapp:<sandbox phone number>` and activate the sandbox before sending messages.\n* If you are sending via a live WhatsApp sender, use the `whatsapp:` sender address that is configured for your number.\n* Check Error Logs and Programmable Messaging Logs to review the request details, sender configuration, and the associated Message SID.",
    "description": "Twilio returns this error when the `From` address in a Programmable Messaging request does not map to a configured Channel endpoint address. This error applies to WhatsApp and other non-SMS messaging channels. For WhatsApp sandbox traffic, use the `whatsapp:<sandbox phone number>` format, and for live senders use the sender address assigned to that channel.",
    "date_created": "2018-03-17T00:16:07Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channel could not find To address",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when Twilio cannot validate the destination channel address in the `To` parameter for an outbound channel message. This usually means the address is incorrectly formatted, does not belong to an active user on the selected channel, or does not match the channel address you should use for the conversation.\n\n### Possible causes\n\n- The `To` value does not use the correct channel address format for the destination channel.\n- The destination address is invalid for the selected channel, such as an unregistered WhatsApp number or an invalid Facebook Messenger user identifier.\n- The `To` value was entered incorrectly.\n- You are responding to a different channel address than the one that sent the inbound message.\n- The destination user or device is inactive and cannot receive messages on that channel.\n\n### Possible solutions\n\n- Verify that the `To` value matches the required address format for the channel you are using. For example, use `whatsapp:+15558675310` for WhatsApp. Use `messenger:{messenger_user_id}` or `messenger:{messenger_page_id}` for Facebook Messenger.\n- If the channel address contains a phone number, confirm that the number is correct and formatted in `E.164`.\n- If you are replying to an inbound message, use the exact inbound `From` value as the outbound `To` value.\n- Confirm that the destination user is still active on the channel and can receive direct messages in the channel application.\n- Send a test message to another known-good recipient on the same channel to verify that your sender and channel configuration are working correctly.\n\n#### Additional resources\n- [Twilio Messaging Channels](/docs/messaging/channels)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [This error \"Channel could not find To address\" when Sending Programmable Messages to Channels](https://help.twilio.com/articles/360038159493-Error-63003-Channel-could-not-find-To-address-when-Sending-Programmable-Messages-to-Channels)\n",
    "causes": "* The `To` value does not use the correct channel address format for the destination channel.\n* The destination address is invalid for the selected channel, such as an unregistered WhatsApp number or an invalid Facebook Messenger user identifier.\n* The `To` value was entered incorrectly.\n* You are responding to a different channel address than the one that sent the inbound message.\n* The destination user or device is inactive and cannot receive messages on that channel.",
    "solutions": "* Verify that the `To` value matches the required address format for the channel you are using. For example, use `whatsapp:+15558675310` for WhatsApp. Use `messenger:{messenger_user_id}` or `messenger:{messenger_page_id}` for Facebook Messenger.\n* If the channel address contains a phone number, confirm that the number is correct and formatted in `E.164`.\n* If you are replying to an inbound message, use the exact inbound `From` value as the outbound `To` value.\n* Confirm that the destination user is still active on the channel and can receive direct messages in the channel application.\n* Send a test message to another known-good recipient on the same channel to verify that your sender and channel configuration are working correctly.",
    "description": "This error occurs when Twilio cannot validate the destination channel address in the `To` parameter for an outbound channel message. This usually means the address is incorrectly formatted, does not belong to an active user on the selected channel, or does not match the channel address you should use for the conversation.",
    "date_created": "2018-03-17T00:17:17Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Channel rejected content. See Channel-specific error for details",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when a messaging channel rejects your outbound content after Twilio accepts the request. Review the channel-specific error returned on the failed Message resource or in your `StatusCallback` request to identify the exact reason for the rejection.\n\n### Possible causes\n\n- The channel rejected the body, media, or other content in your outbound message.\n- For WhatsApp, the recipient is not a valid WhatsApp user.\n- For WhatsApp media messages, the media file is invalid, unsupported, too large, or otherwise does not meet WhatsApp media requirements. Silent MP4 files without an audio track can also fail on WhatsApp.\n- For WhatsApp, you sent content that is not allowed for the current session type. Out-of-session sends require approved templates for supported content types.\n- For WhatsApp media templates, the approved template header type does not match the media you sent.\n- Your business or the recipient's WhatsApp number is in a country or region where WhatsApp business messaging is restricted or unsupported.\n\n### Possible solutions\n\n- Check `ChannelStatusMessage` on the failed Message resource or in your `StatusCallback` webhook, then correct the channel-specific rejection reason before retrying.\n- Verify that the recipient can receive messages on the selected channel. For WhatsApp, confirm that the `To` number belongs to an active WhatsApp user and is not in a blocked country or region.\n- Validate each media file before sending. Use a supported MIME type, keep the file within WhatsApp size limits, host it at a publicly accessible URL, and send only one media object in a free-form WhatsApp message.\n- If an MP4 fails on WhatsApp, re-encode it with H.264 video and an AAC audio track, even if the audio track is silent. ([help.twilio.com](https://help.twilio.com/articles/360017961894-Sending-and-Receiving-Media-with-WhatsApp-Messaging-on-Twilio))\n- Follow WhatsApp session and template rules. If you are outside the 24-hour customer service window, send an approved template. If you use an approved media template, send the same media header type that was approved.\n- Review whether your business category and target country are eligible for WhatsApp messaging. If they are restricted, use a supported channel for that market. ([help.twilio.com](https://help.twilio.com/articles/360039737793))\n\n#### Additional resources\n\n- [Message resource](/docs/messaging/api/message-resource)\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n- [Session Definitions](/docs/content/session-definitions)\n",
    "causes": "* The channel rejected the body, media, or other content in your outbound message.\n* For WhatsApp, the recipient is not a valid WhatsApp user.\n* For WhatsApp media messages, the media file is invalid, unsupported, too large, or otherwise does not meet WhatsApp media requirements. Silent MP4 files without an audio track can also fail on WhatsApp.\n* For WhatsApp, you sent content that is not allowed for the current session type. Out-of-session sends require approved templates for supported content types.\n* For WhatsApp media templates, the approved template header type does not match the media you sent.\n* Your business or the recipient's WhatsApp number is in a country or region where WhatsApp business messaging is restricted or unsupported.",
    "solutions": "* Check `ChannelStatusMessage` on the failed Message resource or in your `StatusCallback` webhook, then correct the channel-specific rejection reason before retrying.\n* Verify that the recipient can receive messages on the selected channel. For WhatsApp, confirm that the `To` number belongs to an active WhatsApp user and is not in a blocked country or region.\n* Validate each media file before sending. Use a supported MIME type, keep the file within WhatsApp size limits, host it at a publicly accessible URL, and send only one media object in a free-form WhatsApp message.\n* If an MP4 fails on WhatsApp, re-encode it with H.264 video and an AAC audio track, even if the audio track is silent. ([help.twilio.com](https://help.twilio.com/articles/360017961894-Sending-and-Receiving-Media-with-WhatsApp-Messaging-on-Twilio))\n* Follow WhatsApp session and template rules. If you are outside the 24-hour customer service window, send an approved template. If you use an approved media template, send the same media header type that was approved.\n* Review whether your business category and target country are eligible for WhatsApp messaging. If they are restricted, use a supported channel for that market. ([help.twilio.com](https://help.twilio.com/articles/360039737793))",
    "description": "This error occurs when a messaging channel rejects your outbound content after Twilio accepts the request. Review the channel-specific error returned on the failed Message resource or in your `StatusCallback` request to identify the exact reason for the rejection.",
    "date_created": "2018-03-17T00:19:12Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63006,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Content could not be formatted for this channel. See Channel-specific error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns 63006 when it cannot format the content you sent for the selected channel. Review the channel-specific error message in the message logs to find the exact formatting issue, and compare your template against Twilio's channel support and content-template rules. Twilio sends the most complex translation supported by the chosen channel, and some content components can still be incompatible across channels.\n\n### Possible causes\n\n- The content template includes a type or component that the destination channel does not support.\n- The template includes multiple content types, and Twilio cannot translate the message into a format the selected channel supports.\n- Variable values, names, or URL samples do not follow Content Template rules, so Twilio cannot render the final message correctly.\n\n### Possible solutions\n\n- Check the channel support table and send a content type that the destination channel supports.\n- Remove or replace any unsupported components, then resend the message with a translation that matches the target channel.\n- Validate your variable names, counts, and values, and make sure any URL path samples resolve to publicly hosted media or URL samples.\n- Open the message error details in Twilio Console and use the channel-specific error message to pinpoint the formatting problem.\n\n#### Additional resources\n\n- [Content Types Overview](/docs/content/content-types-overview)\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The content template includes a type or component that the destination channel does not support.\n* The template includes multiple content types, and Twilio cannot translate the message into a format the selected channel supports.\n* Variable values, names, or URL samples do not follow Content Template rules, so Twilio cannot render the final message correctly.",
    "solutions": "* Check the channel support table and send a content type that the destination channel supports.\n* Remove or replace any unsupported components, then resend the message with a translation that matches the target channel.\n* Validate your variable names, counts, and values, and make sure any URL path samples resolve to publicly hosted media or URL samples.\n* Open the message error details in Twilio Console and use the channel-specific error message to pinpoint the formatting problem.",
    "description": "Twilio returns 63006 when it cannot format the content you sent for the selected channel. Review the channel-specific error message in the message logs to find the exact formatting issue, and compare your template against Twilio's channel support and content-template rules. Twilio sends the most complex translation supported by the chosen channel, and some content components can still be incompatible across channels.",
    "date_created": "2018-03-17T00:20:54Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Twilio could not find a Channel with the specified 'From' address",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `From` value in your Messaging API request does not map to a configured channel sender. Use the correct channel-specific address format for the sender you want to use. For WhatsApp, the required format is `whatsapp:{phone_number}` with the phone number in `E.164` format.\n\n### Possible causes\n\n- The `From` address is not associated with any configured channel sender or WhatsApp installation.\n- The `From` address is formatted incorrectly for the channel. For WhatsApp, use `whatsapp:{phone_number}`.\n- You are trying to send from the WhatsApp Sandbox, but the Sandbox is not activated for the account making the request.\n- The sender is still being registered or verified and is not ready to send traffic yet. After registration, retrieve the sender and confirm `status` is `ONLINE`.\n- The request uses credentials for a different account or subaccount than the one that owns the sender. Twilio requires the phone number and sender to belong to the same account or subaccount where you register and send from it.\n\n### Possible solutions\n\n- Verify that the `From` value matches the channel address format exactly. For WhatsApp, use `whatsapp:+15558675310`.\n- If you are using the WhatsApp Sandbox, send from `whatsapp:+14155238886` and activate the Sandbox in the same account before sending messages.\n- If you are using a live WhatsApp sender, confirm that the sender is registered to your account or subaccount and retrieve the sender to verify `status` is `ONLINE`.\n- If you send from a subaccount, authenticate with that subaccount's `Account SID` and `Auth Token` when you make the API request.\n\n#### Additional resources\n\n- [Twilio Messaging Channels](/docs/messaging/channels)\n- [Test WhatsApp messaging with the Sandbox](/docs/whatsapp/sandbox)\n- [Register WhatsApp senders using the Senders API](/docs/whatsapp/register-senders-using-api)\n",
    "causes": "* The `From` address is not associated with any configured channel sender or WhatsApp installation.\n* The `From` address is formatted incorrectly for the channel. For WhatsApp, use `whatsapp:{phone_number}`.\n* You are trying to send from the WhatsApp Sandbox, but the Sandbox is not activated for the account making the request.\n* The sender is still being registered or verified and is not ready to send traffic yet. After registration, retrieve the sender and confirm `status` is `ONLINE`.\n* The request uses credentials for a different account or subaccount than the one that owns the sender. Twilio requires the phone number and sender to belong to the same account or subaccount where you register and send from it.",
    "solutions": "* Verify that the `From` value matches the channel address format exactly. For WhatsApp, use `whatsapp:+15558675310`.\n* If you are using the WhatsApp Sandbox, send from `whatsapp:+14155238886` and activate the Sandbox in the same account before sending messages.\n* If you are using a live WhatsApp sender, confirm that the sender is registered to your account or subaccount and retrieve the sender to verify `status` is `ONLINE`.\n* If you send from a subaccount, authenticate with that subaccount's `Account SID` and `Auth Token` when you make the API request.",
    "description": "This error occurs when the `From` value in your Messaging API request does not map to a configured channel sender. Use the correct channel-specific address format for the sender you want to use. For WhatsApp, the required format is `whatsapp:{phone_number}` with the phone number in `E.164` format.",
    "date_created": "2018-03-17T01:22:43Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 63008,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Request failed: channel module misconfigured. Check Channel config in Twilio",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means Twilio could not execute the request because the channel module is misconfigured. Check the Channel configuration in Twilio and confirm that the sender and receiver use the correct channel-specific address format.\n\n### Possible causes\n\n- The Channel configuration in Twilio is incomplete or incorrect.\n- The `From` or `To` address does not match the channel-specific address format required for the messaging channel you are using.\n\n### Possible solutions\n\n- Open the Channel configuration in Twilio and correct the channel settings.\n- Verify that the `From` address maps to a configured Channel endpoint address.\n- Verify that the `To` address is valid for the channel and follows the required channel address format.\n- Review Programmable Messaging Logs and the individual message details view to inspect the error, request, and response for the failed message.\n\n#### Additional resources\n\n- [Twilio Messaging Channels](/docs/messaging/channels)\n- [Programmable Messaging Logs](/docs/messaging/features/messaging-logs)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The Channel configuration in Twilio is incomplete or incorrect.\n* The `From` or `To` address does not match the channel-specific address format required for the messaging channel you are using.",
    "solutions": "* Open the Channel configuration in Twilio and correct the channel settings.\n* Verify that the `From` address maps to a configured Channel endpoint address.\n* Verify that the `To` address is valid for the channel and follows the required channel address format.\n* Review Programmable Messaging Logs and the individual message details view to inspect the error, request, and response for the failed message.",
    "description": "This error means Twilio could not execute the request because the channel module is misconfigured. Check the Channel configuration in Twilio and confirm that the sender and receiver use the correct channel-specific address format.",
    "date_created": "2018-03-17T00:22:45Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63009,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Channel provider returned HTTP 5xx error. See Channel-specific error for details",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the underlying messaging channel provider responds with an HTTP 5xx error while processing your message. Check the channel-specific failure detail in `ChannelStatusMessage`, your `StatusCallback` payload, or the Message record to identify the provider response.\n\n### Possible causes\n\n- The underlying channel provider returned a server-side error while Twilio was submitting the message.\n- The failure occurred on WhatsApp, RCS, or another non-SMS messaging channel where Twilio surfaces channel-specific error details for failed deliveries.\n- The provider is experiencing a temporary service issue. This is an inference based on the HTTP 5xx response class and the error description.\n\n### Possible solutions\n\n- Review the channel-specific error detail for the failed message. Look for `ChannelStatusMessage` in your `StatusCallback` payload or inspect the Message record for the associated error information.\n- Open Programmable Messaging Logs in Console and inspect the Message Details page, Delivery Steps, and Request Inspector for the affected Message SID.\n- If the provider-specific detail indicates a transient service problem, retry the message after the provider recovers. This recommendation is based on the provider returning an HTTP 5xx internal service error.\n- If the issue continues, collect the affected Message SID values from the error logs and contact support so you can share the failed attempts and timestamps.\n\n#### Additional resources\n\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [Programmable Messaging Logs](/docs/messaging/features/messaging-logs)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n",
    "causes": "* The underlying channel provider returned a server-side error while Twilio was submitting the message.\n* The failure occurred on WhatsApp, RCS, or another non-SMS messaging channel where Twilio surfaces channel-specific error details for failed deliveries.\n* The provider is experiencing a temporary service issue. This is an inference based on the HTTP 5xx response class and the error description.",
    "solutions": "* Review the channel-specific error detail for the failed message. Look for `ChannelStatusMessage` in your `StatusCallback` payload or inspect the Message record for the associated error information.\n* Open Programmable Messaging Logs in Console and inspect the Message Details page, Delivery Steps, and Request Inspector for the affected Message SID.\n* If the provider-specific detail indicates a transient service problem, retry the message after the provider recovers. This recommendation is based on the provider returning an HTTP 5xx internal service error.\n* If the issue continues, collect the affected Message SID values from the error logs and contact support so you can share the failed attempts and timestamps.",
    "description": "Twilio returns this error when the underlying messaging channel provider responds with an HTTP 5xx error while processing your message. Check the channel-specific failure detail in `ChannelStatusMessage`, your `StatusCallback` payload, or the Message record to identify the provider response.",
    "date_created": "2018-03-17T00:23:54Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63010,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilio's platform encountered an internal error processing this message",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when Twilio cannot complete processing for a WhatsApp or other non-SMS channel message because of an internal platform issue. Check the affected Message SID in Messaging Logs or through the Message resource to confirm the final `status`, `error_code`, and any channel-specific failure details.\n\n### Possible causes\n\n- Twilio encountered an internal platform error while processing the message.\n- The message was accepted for asynchronous processing, then later updated to `failed` or `undelivered` with this error code.\n- For WhatsApp and other messaging channels, the failure can include additional channel-specific context when Twilio sends your `StatusCallback`.\n\n### Possible solutions\n\n- Open the message in Messaging Logs and review the Message Details page for the Message SID, status, and troubleshooting data.\n- Inspect your `StatusCallback` handling for `MessageStatus`, `ErrorCode`, and, for channel messages, `ChannelStatusMessage` so you capture the failure details automatically.\n- If you see a recurring pattern of internal errors, check the Twilio status page and contact support with the Message SID and request details.\n- Be careful about automatically retrying message-creating `POST` requests. When a request fails with an internal server error, retrying can create duplicate outbound sends.\n\n#### Additional resources\n\n- [Programmable Messaging Logs](/docs/messaging/features/messaging-logs)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Track the Message Status of Outbound Messages](/docs/messaging/guides/track-outbound-message-status)\n- [Troubleshooting Undelivered Twilio SMS Messages](https://help.twilio.com/hc/en-us/articles/223181868-Troubleshooting-Undelivered-Twilio-SMS-Messages)\n",
    "causes": "* Twilio encountered an internal platform error while processing the message.\n* The message was accepted for asynchronous processing, then later updated to `failed` or `undelivered` with this error code.\n* For WhatsApp and other messaging channels, the failure can include additional channel-specific context when Twilio sends your `StatusCallback`.",
    "solutions": "* Open the message in Messaging Logs and review the Message Details page for the Message SID, status, and troubleshooting data.\n* Inspect your `StatusCallback` handling for `MessageStatus`, `ErrorCode`, and, for channel messages, `ChannelStatusMessage` so you capture the failure details automatically.\n* If you see a recurring pattern of internal errors, check the Twilio status page and contact support with the Message SID and request details.\n* Be careful about automatically retrying message-creating `POST` requests. When a request fails with an internal server error, retrying can create duplicate outbound sends.",
    "description": "Twilio returns this error when Twilio cannot complete processing for a WhatsApp or other non-SMS channel message because of an internal platform issue. Check the affected Message SID in Messaging Logs or through the Message resource to confirm the final `status`, `error_code`, and any channel-specific failure details.",
    "date_created": "2018-03-19T23:27:15Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 63011,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Request: Twilio encountered an error while processing your request",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio was unable to complete the Messaging request because the channel provider didn't receive the necessary capabilities required for processing.\n\n### Possible causes\n\n- Twilio could not retrieve the channel capabilities required for the request.\n- The message may have been affected by a transient internal Twilio processing issue or an incident.\n\n### Possible solutions\n\n- Retry the request. If the issue was transient, the next attempt may succeed.\n- Check the Console Debugger and event logs for message delivery details and related error events.\n- If the error continues, contact support and include the affected Message SIDs and the error code.\n\n#### Additional resources\n\n- [Troubleshooting](/docs/comms/troubleshooting)\n- [Debugging Your Twilio Application](/docs/usage/troubleshooting/debugging-your-application)\n- [Messaging](/docs/messaging)\n",
    "causes": "* Twilio could not retrieve the channel capabilities required for the request.\n* The message may have been affected by a transient internal Twilio processing issue or an incident.",
    "solutions": "* Retry the request. If the issue was transient, the next attempt may succeed.\n* Check the Console Debugger and event logs for message delivery details and related error events.\n* If the error continues, contact support and include the affected Message SIDs and the error code.",
    "description": "Twilio was unable to complete the Messaging request because the channel provider didn't receive the necessary capabilities required for processing.",
    "date_created": "2019-03-28T17:33:55Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63012,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Channel provider returned an internal service error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error indicates that the channel provider returned an internal service error and Twilio could not complete the request. This usually corresponds to an HTTP 5xx response from the provider.\n\n### Possible causes\n\n- The channel provider returned an internal service error, including an HTTP 5xx response.\n\n### Possible solutions\n\n- Review the channel-specific error message for more information about the provider-side failure.\n- Open the message in Programmable Messaging Logs to inspect the `Message SID`, delivery steps, errors or warnings, and the Request Inspector.\n- If you still cannot determine the cause, contact Twilio Support and include the relevant `Message SID`.\n\n#### Additional resources\n\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [Programmable Messaging Logs](/docs/messaging/features/messaging-logs)\n- [Twilio Health Score for Messaging](/docs/messaging/features/twilio-health-score-for-messaging)\n",
    "causes": "* The channel provider returned an internal service error, including an HTTP 5xx response.",
    "solutions": "* Review the channel-specific error message for more information about the provider-side failure.\n* Open the message in Programmable Messaging Logs to inspect the `Message SID`, delivery steps, errors or warnings, and the Request Inspector.\n* If you still cannot determine the cause, contact Twilio Support and include the relevant `Message SID`.",
    "description": "This error indicates that the channel provider returned an internal service error and Twilio could not complete the request. This usually corresponds to an HTTP 5xx response from the provider.",
    "date_created": "2018-03-17T00:26:57Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63013,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Channel policy violation",
    "secondary_message": "This message send failed because it violates Channel provider's policy.",
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nThis message send failed because it violates the channel provider's policy. See the channel-specific error message for more information.\n\n- If more than 4 consecutive whitespaces replace a placeholder in a WhatsApp message body.\n- If an empty or null string is passed into an approved WhatsApp template variable.\n- When there are consecutive new lines where a channel does not support it.\n- When there is variable in a field that the channel provider does not support variables.\n- Unsupported media file type\n- When there are emojis in fields that do not support them or there are too many emojis in a field that only allows a limited number of emojis\n- When the customer attempts to send a WhatsApp message with an invalid or not publicly accessible URL on their Call-to-action template.\n\n### Possible solutions\n\nCheck content is in compliance with Channel providers policy.\n",
    "causes": "This message send failed because it violates the channel provider's policy. See the channel-specific error message for more information. - If more than 4 consecutive whitespaces replace a placeholder in a WhatsApp message body.\n- If an empty or null string is passed into an approved WhatsApp template variable.\n- When there are consecutive new lines where a channel does not support it.\n- When there is variable in a field that the channel provider does not support variables.\n- Unsupported media file type\n- When there are emojis in fields that do not support them or there are too many emojis in a field that only allows a limited number of emojis\n- When the customer attempts to send a WhatsApp message with an invalid or not publicly accessible URL on their Call-to-action template.",
    "solutions": "Check content is in compliance with Channel providers policy.",
    "description": "",
    "date_created": "2018-03-17T00:28:00Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 63014,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Channel message blocked by user action",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a message is blocked because the recipient took an action that prevents delivery. Check the channel-specific error details to identify the exact block reason and review the failed message in Messaging Logs.\n\n### Possible causes\n\n- The recipient blocked the sender in the channel they are using, such as WhatsApp, so the message cannot be delivered.\n- The recipient opted out or otherwise removed consent for future messages, which blocks later outgoing messages from that sender.\n\n### Possible solutions\n\n- Open the Messaging Logs entry for the failed message and use the `MessageSid` and error details to confirm the channel-specific block reason.\n- Stop sending additional messages to that recipient until they re-engage or restore consent for the channel. If you use SMS opt-out handling, accept the relevant opt-in keyword again before resuming delivery.\n- If you use WhatsApp, collect explicit opt-ins and respect opt-out requests so recipients do not block your business.\n\n#### Additional resources\n\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [Advanced Opt-Out](/docs/messaging/tutorials/advanced-opt-out)\n- [WhatsApp API](/docs/whatsapp/api)\n",
    "causes": "* The recipient blocked the sender in the channel they are using, such as WhatsApp, so the message cannot be delivered.\n* The recipient opted out or otherwise removed consent for future messages, which blocks later outgoing messages from that sender.",
    "solutions": "* Open the Messaging Logs entry for the failed message and use the `MessageSid` and error details to confirm the channel-specific block reason.\n* Stop sending additional messages to that recipient until they re-engage or restore consent for the channel. If you use SMS opt-out handling, accept the relevant opt-in keyword again before resuming delivery.\n* If you use WhatsApp, collect explicit opt-ins and respect opt-out requests so recipients do not block your business.",
    "description": "Twilio returns this error when a message is blocked because the recipient took an action that prevents delivery. Check the channel-specific error details to identify the exact block reason and review the failed message in Messaging Logs.",
    "date_created": "2018-03-17T00:28:57Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63015,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channel Sandbox can only send messages to phone numbers that have joined the Sandbox",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a message from a channel sandbox to a recipient who has not joined that sandbox. In the WhatsApp Sandbox, you can send messages only to end users who have joined your specific sandbox. If the recipient joined more than three days ago, they must join again before you can send another sandbox message.\n\n### Possible causes\n\n- The destination number has not joined your sandbox by sending `join <your sandbox code>` to the sandbox number.\n- The recipient joined a different sandbox. End users receive messages only from the sandbox they joined.\n- The recipient joined previously, but the sandbox session expired after three days and they need to rejoin.\n- You are trying to use the sandbox to message a user who has not completed sandbox enrollment. Sandbox messaging is limited to testing participants only.\n\n### Possible solutions\n\n- Ask the recipient to send `join <your sandbox code>` to the sandbox number shown on your Sandbox page in Console. They can also scan the QR code and send the pre-populated message to join.\n- Confirm that the recipient joined your sandbox, not another sandbox. If they switched sandboxes, have them send your current join code again.\n- If more than three days have passed since the recipient joined, have them rejoin the sandbox before you send the next message.\n- If you need to message users who have not joined a sandbox, move from the Sandbox to a WhatsApp-enabled sender for production messaging.\n\n#### Additional resources\n\n- [Test WhatsApp messaging with the Sandbox](/docs/whatsapp/sandbox)\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n",
    "causes": "* The destination number has not joined your sandbox by sending `join <your sandbox code>` to the sandbox number.\n* The recipient joined a different sandbox. End users receive messages only from the sandbox they joined.\n* The recipient joined previously, but the sandbox session expired after three days and they need to rejoin.\n* You are trying to use the sandbox to message a user who has not completed sandbox enrollment. Sandbox messaging is limited to testing participants only.",
    "solutions": "* Ask the recipient to send `join <your sandbox code>` to the sandbox number shown on your Sandbox page in Console. They can also scan the QR code and send the pre-populated message to join.\n* Confirm that the recipient joined your sandbox, not another sandbox. If they switched sandboxes, have them send your current join code again.\n* If more than three days have passed since the recipient joined, have them rejoin the sandbox before you send the next message.\n* If you need to message users who have not joined a sandbox, move from the Sandbox to a WhatsApp-enabled sender for production messaging.",
    "description": "This error occurs when you send a message from a channel sandbox to a recipient who has not joined that sandbox. In the WhatsApp Sandbox, you can send messages only to end users who have joined your specific sandbox. If the recipient joined more than three days ago, they must join again before you can send another sandbox message.",
    "date_created": "2018-06-25T18:44:31Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63016,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Outside messaging window. For WhatsApp, use a Message Template instead",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a free-form message after the channel's allowed session window has closed. For WhatsApp, business-initiated messages sent outside the 24-hour customer service window must use an approved template. Send that template with `ContentSid` and, if needed, `ContentVariables`. Since April 1, 2025, sending a WhatsApp template in `Body` outside the customer service window fails with this error.\n\n### Possible causes\n\n- You sent a free-form WhatsApp message more than 24 hours after the user's last inbound message.\n- You tried to send a WhatsApp template outside the customer service window using `Body` instead of `ContentSid` and `ContentVariables`.\n- You used a content type that cannot start a business-initiated WhatsApp conversation, such as `twilio/list-picker` or `twilio/location`.\n- You tried to send a Facebook Messenger message outside its user-initiated 24-hour response window.\n\n### Possible solutions\n\n- Wait for the user to send a new inbound message if you need to continue a free-form WhatsApp conversation.\n- If you need to message the user outside the 24-hour window, create or use an approved WhatsApp template and send it with `ContentSid`.\n- Remove `Body` and `MediaUrl` when you send a content template. Pass placeholder values in `ContentVariables`.\n- Use a content type supported for business-initiated WhatsApp messages. Do not use `twilio/list-picker` or `twilio/location` for out-of-session sends.\n- For Facebook Messenger, only respond after the user has messaged your page and send your reply within the 24-hour window.\n\n#### Additional resources\n\n- [Send WhatsApp notification messages with templates](/docs/whatsapp/tutorial/send-whatsapp-notification-messages-templates)\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Session Definitions](/docs/content/session-definitions)\n",
    "causes": "* You sent a free-form WhatsApp message more than 24 hours after the user's last inbound message.\n* You tried to send a WhatsApp template outside the customer service window using `Body` instead of `ContentSid` and `ContentVariables`.\n* You used a content type that cannot start a business-initiated WhatsApp conversation, such as `twilio/list-picker` or `twilio/location`.\n* You tried to send a Facebook Messenger message outside its user-initiated 24-hour response window.",
    "solutions": "* Wait for the user to send a new inbound message if you need to continue a free-form WhatsApp conversation.\n* If you need to message the user outside the 24-hour window, create or use an approved WhatsApp template and send it with `ContentSid`.\n* Remove `Body` and `MediaUrl` when you send a content template. Pass placeholder values in `ContentVariables`.\n* Use a content type supported for business-initiated WhatsApp messages. Do not use `twilio/list-picker` or `twilio/location` for out-of-session sends.\n* For Facebook Messenger, only respond after the user has messaged your page and send your reply within the 24-hour window.",
    "description": "This error occurs when you send a free-form message after the channel's allowed session window has closed. For WhatsApp, business-initiated messages sent outside the 24-hour customer service window must use an approved template. Send that template with `ContentSid` and, if needed, `ContentVariables`. Since April 1, 2025, sending a WhatsApp template in `Body` outside the customer service window fails with this error.",
    "date_created": "2019-01-30T19:26:43Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63017,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Rate limit exceeded",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your account or subaccounts send messages at a combined rate higher than 2000 messages per second.\n\n### Possible causes\n\n- Your account or subaccounts are sending messages faster than the combined 2000 messages-per-second limit.\n- Your traffic burst exceeds the throughput available for your sender or Messaging Service configuration. Twilio measures throughput per phone number, per second, and queues messages when requests exceed the prescribed rate limit.\n\n### Possible solutions\n\n- Slow down message submission so combined account and subaccount traffic stays below 2000 messages per second.\n- Queue large sends and use Messaging Services when you need to enqueue a large number of messages. Twilio queues messages at your prescribed rate limit and executes excess requests as capacity becomes available.\n- Plan your senders and traffic timing around the MPS you need, then build in extra buffer for carrier capacity changes.\n- If you have a large emergency or sustained high-volume use case, reach out to Twilio to discuss adjusting the limits applied to your account, senders, or Messaging Services.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Account Based Throughput Overview](/docs/messaging/guides/account-based-throughput-overview)\n- [Build to scale: queueing and latency on Twilio](/docs/messaging/guides/scaling-queueing-latency)\n",
    "causes": "* Your account or subaccounts are sending messages faster than the combined 2000 messages-per-second limit.\n* Your traffic burst exceeds the throughput available for your sender or Messaging Service configuration. Twilio measures throughput per phone number, per second, and queues messages when requests exceed the prescribed rate limit.",
    "solutions": "* Slow down message submission so combined account and subaccount traffic stays below 2000 messages per second.\n* Queue large sends and use Messaging Services when you need to enqueue a large number of messages. Twilio queues messages at your prescribed rate limit and executes excess requests as capacity becomes available.\n* Plan your senders and traffic timing around the MPS you need, then build in extra buffer for carrier capacity changes.\n* If you have a large emergency or sustained high-volume use case, reach out to Twilio to discuss adjusting the limits applied to your account, senders, or Messaging Services.",
    "description": "Twilio returns this error when your account or subaccounts send messages at a combined rate higher than 2000 messages per second.",
    "date_created": "2019-02-13T23:08:34Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63018,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Rate limit exceeded for Channel",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send messages faster than the channel, sender, or account can process them. \n\n### Possible causes\n\n- Your account is sending messages faster than its available throughput. When you exceed your account-based messages-per-second (MPS) rate, Twilio begins queuing messages.\n- Your RCS sender exceeded the rate supported for that sender. RCS senders support 100 messages per second by default.\n- Your WhatsApp sender exceeded the sender throughput configured for outbound traffic. By default, each WhatsApp sender supports 80 messages per second for text or media.\n- Your WhatsApp business portfolio reached its messaging limit for business-initiated conversations that are outside the customer-service window. That limit is shared across senders in the same business portfolio.\n- Your account is sending too many messages from a single phone number to the same WhatsApp recipient.\n\n### Possible solutions\n\n- Throttle your application so that it does not submit messages faster than the throughput available to your account or sender.\n- For RCS traffic, spread requests over a longer period so that the sender stays within its default 100 MPS limit and messages do not need to be queued.\n- For WhatsApp traffic, wait until capacity becomes available again before starting more business-initiated conversations. If your business portfolio messaging limit was reached, new conversations can start again as active conversations end.\n- If you need higher sustained volume, distribute traffic across multiple approved senders by using a Sender Pool or a Messaging Service sender pool where your use case supports it.\n- For WhatsApp text-only traffic, request higher sender throughput if your use case requires it. Media throughput cannot be increased beyond 80 MPS.\n- For WhatsApp, reduce how frequently you send to the same recipient to avoid triggering this error.\n\n#### Additional resources\n\n- [The WhatsApp Business Platform with Twilio: Best Practices and FAQs](/docs/whatsapp/best-practices-and-faqs)\n- [Sender Pools](/docs/bulk-messaging/sender-pools)\n- [What are WhatsApp sender message limits and quality rating?](https://help.twilio.com/articles/360024008153)\n",
    "causes": "* Your account is sending messages faster than its available throughput. When you exceed your account-based messages-per-second (MPS) rate, Twilio begins queuing messages.\n* Your RCS sender exceeded the rate supported for that sender. RCS senders support 100 messages per second by default.\n* Your WhatsApp sender exceeded the sender throughput configured for outbound traffic. By default, each WhatsApp sender supports 80 messages per second for text or media.\n* Your WhatsApp business portfolio reached its messaging limit for business-initiated conversations that are outside the customer-service window. That limit is shared across senders in the same business portfolio.\n* Your account is sending too many messages from a single phone number to the same WhatsApp recipient.",
    "solutions": "* Throttle your application so that it does not submit messages faster than the throughput available to your account or sender.\n* For RCS traffic, spread requests over a longer period so that the sender stays within its default 100 MPS limit and messages do not need to be queued.\n* For WhatsApp traffic, wait until capacity becomes available again before starting more business-initiated conversations. If your business portfolio messaging limit was reached, new conversations can start again as active conversations end.\n* If you need higher sustained volume, distribute traffic across multiple approved senders by using a Sender Pool or a Messaging Service sender pool where your use case supports it.\n* For WhatsApp text-only traffic, request higher sender throughput if your use case requires it. Media throughput cannot be increased beyond 80 MPS.\n* For WhatsApp, reduce how frequently you send to the same recipient to avoid triggering this error.",
    "description": "This error occurs when you send messages faster than the channel, sender, or account can process them.",
    "date_created": "2019-02-20T07:24:45Z",
    "last_updated": "2026-06-18T13:28:15-06:00"
  },
  {
    "code": 63019,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media failed to download",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio can't download media associated with a message. When this happens, the media retrieval returns 0 bytes.\n\n### Possible causes\n\n- The media attached by the sender could not be downloaded successfully.\n- The media request succeeded but returned an empty file with 0 bytes.\n- If you send outbound media with `MediaUrl`, the URL may not be serving the expected file or the `Content-Type` header may not match the actual media type. Twilio validates media URLs with `GET` and `HEAD` requests.\n- The media may not meet channel requirements, such as supported MIME types or size limits. For example, outbound MMS media must stay within 5 MB total and outbound WhatsApp media must stay within 16 MB, with WhatsApp images limited to 5 MB.\n\n### Possible solutions\n\n- Check that the media file has content before retrying. If the file contains 0 bytes, upload a new copy or ask the sender to resend the attachment.\n- Review the failed Message record or your `StatusCallback` payload to confirm the message `status`, `error_code`, and `error_message`.\n- If you provide a `MediaUrl`, make sure the URL is publicly reachable by Twilio, serves the correct file, and returns a `Content-Type` header that matches the media you intend to send.\n- Ensure media meets the supported file types and channel size limits before retrying.\n\n#### Additional resources\n\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n- [Twilio's request to your incoming message webhook URL](/docs/messaging/guides/webhook-request)\n- [Guidance on WhatsApp media messages](/docs/whatsapp/guidance-whatsapp-media-messages)\n",
    "causes": "* The media attached by the sender could not be downloaded successfully.\n* The media request succeeded but returned an empty file with 0 bytes.\n* If you send outbound media with `MediaUrl`, the URL may not be serving the expected file or the `Content-Type` header may not match the actual media type. Twilio validates media URLs with `GET` and `HEAD` requests.\n* The media may not meet channel requirements, such as supported MIME types or size limits. For example, outbound MMS media must stay within 5 MB total and outbound WhatsApp media must stay within 16 MB, with WhatsApp images limited to 5 MB.",
    "solutions": "* Check that the media file has content before retrying. If the file contains 0 bytes, upload a new copy or ask the sender to resend the attachment.\n* Review the failed Message record or your `StatusCallback` payload to confirm the message `status`, `error_code`, and `error_message`.\n* If you provide a `MediaUrl`, make sure the URL is publicly reachable by Twilio, serves the correct file, and returns a `Content-Type` header that matches the media you intend to send.\n* Ensure media meets the supported file types and channel size limits before retrying.",
    "description": "This error occurs when Twilio can't download media associated with a message. When this happens, the media retrieval returns 0 bytes.",
    "date_created": "2019-02-25T19:24:34Z",
    "last_updated": "2026-06-05T13:50:14+02:00"
  },
  {
    "code": 63020,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Twilio encountered a Business Manager account error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio cannot send messages for your business because the linked Meta Business Manager account has not accepted Twilio's invitation. Verify the WhatsApp billing account associated with your business before you try again.\n\n### Possible causes\n\n- You have not accepted Twilio's invitation in Meta Business Manager to send messages on your behalf.\n- The WhatsApp billing account associated with your business is not verified.\n\n### Possible solutions\n\n- Open Meta Business Manager and accept the invitation from Twilio to send messages on your behalf.\n- Verify the WhatsApp billing account associated with your business.\n- Retry the message after the business account and billing setup are complete.\n\n#### Additional resources\n\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [The WhatsApp Business Platform with Twilio: Best Practices and FAQs](/docs/whatsapp/best-practices-and-faqs)\n",
    "causes": "* You have not accepted Twilio's invitation in Meta Business Manager to send messages on your behalf.\n* The WhatsApp billing account associated with your business is not verified.",
    "solutions": "* Open Meta Business Manager and accept the invitation from Twilio to send messages on your behalf.\n* Verify the WhatsApp billing account associated with your business.\n* Retry the message after the business account and billing setup are complete.",
    "description": "This error occurs when Twilio cannot send messages for your business because the linked Meta Business Manager account has not accepted Twilio's invitation. Verify the WhatsApp billing account associated with your business before you try again.",
    "date_created": "2019-02-25T19:26:54Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channel invalid content error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when the content you send does not match the validation rules or supported capabilities of the selected messaging channel. Check the content type, media requirements, and channel-specific component limits before you send the message.\n\n### Possible causes\n\n- The message uses a content type or component that the selected channel does not support. Twilio supports different content types across SMS, MMS, RCS, WhatsApp, and Messenger, and not every channel supports every template type.\n- The media at `MediaUrl` is not accepted for the target channel, the `Content-Type` header does not match the actual file type, or the media exceeds the channel size limit.\n- A `twilio/quick-reply` template exceeds the WhatsApp body limit of 1,024 characters, or the template violates WhatsApp variable rules for approval.\n- A button label or card field exceeds the allowed limit for the component you are sending. For example, `QUICK_REPLY` titles are limited to 20 characters, while `URL`, `PHONE_NUMBER`, and `VOICE_CALL` titles on `twilio/card` are limited to 25 characters. WhatsApp `twilio/card` title text is limited to 1,024 characters.\n\n### Possible solutions\n\n- Confirm that the content type you send is supported on the destination channel. If you send to a mix of channels, add a simpler fallback such as `twilio/text` so Twilio can deliver a supported translation for each channel.\n- Check every media URL before sending. Make sure the file is publicly reachable, the `Content-Type` header matches the actual file, the MIME type is accepted, and the total media size stays within the channel limit.\n- Reduce text and button labels to the documented limits for the template type you are using. For example, keep `twilio/quick-reply` body text within 1,024 characters, keep `twilio/call-to-action` body text within 640 characters, and keep button titles within the documented 20-character or 25-character limits.\n- For WhatsApp templates that use variables, avoid starting or ending the body with a variable and avoid placing two variables next to each other. Include sample values for variables when approval is required.\n\n#### Additional resources\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n- [Content Types Overview](/docs/content/content-types-overview)\n- [Using Buttons in WhatsApp](/docs/whatsapp/buttons)\n",
    "causes": "* The message uses a content type or component that the selected channel does not support. Twilio supports different content types across SMS, MMS, RCS, WhatsApp, and Messenger, and not every channel supports every template type.\n* The media at `MediaUrl` is not accepted for the target channel, the `Content-Type` header does not match the actual file type, or the media exceeds the channel size limit.\n* A `twilio/quick-reply` template exceeds the WhatsApp body limit of 1,024 characters, or the template violates WhatsApp variable rules for approval.\n* A button label or card field exceeds the allowed limit for the component you are sending. For example, `QUICK_REPLY` titles are limited to 20 characters, while `URL`, `PHONE_NUMBER`, and `VOICE_CALL` titles on `twilio/card` are limited to 25 characters. WhatsApp `twilio/card` title text is limited to 1,024 characters.",
    "solutions": "* Confirm that the content type you send is supported on the destination channel. If you send to a mix of channels, add a simpler fallback such as `twilio/text` so Twilio can deliver a supported translation for each channel.\n* Check every media URL before sending. Make sure the file is publicly reachable, the `Content-Type` header matches the actual file, the MIME type is accepted, and the total media size stays within the channel limit.\n* Reduce text and button labels to the documented limits for the template type you are using. For example, keep `twilio/quick-reply` body text within 1,024 characters, keep `twilio/call-to-action` body text within 640 characters, and keep button titles within the documented 20-character or 25-character limits.\n* For WhatsApp templates that use variables, avoid starting or ending the body with a variable and avoid placing two variables next to each other. Include sample values for variables when approval is required.",
    "description": "This error occurs when the content you send does not match the validation rules or supported capabilities of the selected messaging channel. Check the content type, media requirements, and channel-specific component limits before you send the message.",
    "date_created": "2019-02-25T19:28:04Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63022,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid vname certificate",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the vname certificate attached to your business account is invalid. If you send with WhatsApp, verify that the sender is registered in a verified Meta Business Portfolio and WABA before you retry.\n\n### Possible causes\n\n- The vname certificate attached to your business account is invalid.\n- The WhatsApp sender was created in a different Meta Business Portfolio or WABA than the one you are using now. Twilio requires you to use the same Meta Business Portfolio and WABA for each sender in an account.\n\n### Possible solutions\n\n- Verify your Meta Business Manager or Business Portfolio, then confirm that the WhatsApp sender is registered in the matching WABA. Twilio requires a Meta Business Manager account to create a WABA and register WhatsApp senders.\n- If you are adding more WhatsApp senders, use the same Meta Business Portfolio and WABA that you used for the first sender. Choosing a different portfolio or WABA results in an error.\n- Contact Twilio Support and ask them to verify the certificate for your business account.\n\n#### Additional resources\n\n- [Using WhatsApp Business Accounts with Twilio](/docs/whatsapp/tutorial/whatsapp-business-account)\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n",
    "causes": "* The vname certificate attached to your business account is invalid.\n* The WhatsApp sender was created in a different Meta Business Portfolio or WABA than the one you are using now. Twilio requires you to use the same Meta Business Portfolio and WABA for each sender in an account.",
    "solutions": "* Verify your Meta Business Manager or Business Portfolio, then confirm that the WhatsApp sender is registered in the matching WABA. Twilio requires a Meta Business Manager account to create a WABA and register WhatsApp senders.\n* If you are adding more WhatsApp senders, use the same Meta Business Portfolio and WABA that you used for the first sender. Choosing a different portfolio or WABA results in an error.\n* Contact Twilio Support and ask them to verify the certificate for your business account.",
    "description": "Twilio returns this error when the vname certificate attached to your business account is invalid. If you send with WhatsApp, verify that the sender is registered in a verified Meta Business Portfolio and WABA before you retry.",
    "date_created": "2019-02-25T19:29:14Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63023,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Channel generic error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the messaging channel encounters a generic failure while processing your message. When delivery fails, the Message resource's `StatusCallback` can include `ChannelStatusMessage` with the channel's returned error detail.\n\n### Possible causes\n\n- The underlying channel returned a generic error instead of a more specific failure code.\n\n### Possible solutions\n\n- Check the Console Error Logs to review the error code, impacted product, timestamp, and request context.\n- Review the Message resource or status callback for `ErrorCode` and `ChannelStatusMessage` when delivery fails.\n- Use Programmable Messaging Logs to investigate the delivery attempt, and contact Twilio Support with the Message SID if you still cannot determine the cause.\n\n#### Additional resources\n\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Troubleshooting](/docs/comms/troubleshooting)\n",
    "causes": "* The underlying channel returned a generic error instead of a more specific failure code.",
    "solutions": "* Check the Console Error Logs to review the error code, impacted product, timestamp, and request context.\n* Review the Message resource or status callback for `ErrorCode` and `ChannelStatusMessage` when delivery fails.\n* Use Programmable Messaging Logs to investigate the delivery attempt, and contact Twilio Support with the Message SID if you still cannot determine the cause.",
    "description": "Twilio returns this error when the messaging channel encounters a generic failure while processing your message. When delivery fails, the Message resource's `StatusCallback` can include `ChannelStatusMessage` with the channel's returned error detail.",
    "date_created": "2019-02-25T19:30:40Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63024,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid message recipient",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when a WhatsApp message cannot be delivered because Meta identifies the recipient as an invalid WhatsApp user or applies another recipient-side restriction.\n\n### Possible causes\n\n- The recipient phone number is not enabled for WhatsApp.\n- The recipient has not accepted WhatsApp's Terms of Service and Privacy Policy.\n- The recipient is using an old or unsupported version of the WhatsApp client on their phone.\n\n### Possible solutions\n\n- Confirm that the recipient's phone number is an active WhatsApp number and that the recipient can receive messages in WhatsApp.\n- Ask the recipient to open WhatsApp and accept the latest Terms of Service and Privacy Policy, then retry the message.\n- Ask the recipient to update WhatsApp to a supported version on their device, then retry delivery.\n\n#### Additional resources\n- [WhatsApp Business Platform with Twilio](/docs/whatsapp)\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [The WhatsApp Business Platform with Twilio: Best Practices and FAQs](/docs/whatsapp/best-practices-and-faqs)\n",
    "causes": "* The recipient phone number is not enabled for WhatsApp.\n* The recipient has not accepted WhatsApp's Terms of Service and Privacy Policy.\n* The recipient is using an old or unsupported version of the WhatsApp client on their phone.",
    "solutions": "* Confirm that the recipient's phone number is an active WhatsApp number and that the recipient can receive messages in WhatsApp.\n* Ask the recipient to open WhatsApp and accept the latest Terms of Service and Privacy Policy, then retry the message.\n* Ask the recipient to update WhatsApp to a supported version on their device, then retry delivery.",
    "description": "This error occurs when a WhatsApp message cannot be delivered because Meta identifies the recipient as an invalid WhatsApp user or applies another recipient-side restriction.",
    "date_created": "2019-02-25T19:31:58Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63025,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Media already exists",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nMedia is a subresource of Messages. Twilio creates and stores it when you send MMS or WhatsApp images, or when you receive media. If a request tries to upload media that already exists, Twilio returns a conflict error.\n\n### Possible causes\n\n- The media content already exists. Conflict in uploading the media.\n\n### Possible solutions\n\n- Delete the related Media subresource if you need to replace the stored file. Twilio retains stored media until you delete it.\n- If you need the existing file, fetch or list the Media subresource through the API instead of uploading another copy.\n- If the media comes from a URL, make sure the URL is publicly accessible and does not require authentication. Twilio must be able to reach the file.\n\n#### Additional resources\n\n- [Send SMS and MMS messages](/docs/messaging/tutorials/how-to-send-sms-messages)\n- [Media subresource](/docs/messaging/api/media-resource)\n",
    "causes": "* The media content already exists. Conflict in uploading the media.",
    "solutions": "* Delete the related Media subresource if you need to replace the stored file. Twilio retains stored media until you delete it.\n* If you need the existing file, fetch or list the Media subresource through the API instead of uploading another copy.\n* If the media comes from a URL, make sure the URL is publicly accessible and does not require authentication. Twilio must be able to reach the file.",
    "description": "Media is a subresource of Messages. Twilio creates and stores it when you send MMS or WhatsApp images, or when you receive media. If a request tries to upload media that already exists, Twilio returns a conflict error.",
    "date_created": "2019-02-25T19:33:21Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63026,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Channel sender content flagged as spam",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error indicates that Twilio flagged the sender content in a channel message as spam. Review the message body, consent history, and applicable messaging rules before you send again.\n\n### Possible causes\n\n- The message contains spam-like language, excessive capitalization, or repeated punctuation that can trigger filtering.\n- The content is illegal, harmful, unwanted, inappropriate, objectionable, or otherwise prohibited by Twilio Messaging Policy.\n- The recipient has not explicitly opted in, or you have not retained proof of consent.\n- The message does not follow the applicable country-specific messaging guidelines.\n- The message is designed to evade unwanted messaging detection and prevention mechanisms.\n\n### Possible solutions\n\n- Rewrite the message to remove spam triggers and keep the content clear, specific, and relevant.\n- Send messages only to recipients who have explicitly opted in, and keep a record of that consent.\n- Make sure each message clearly identifies the sender and includes standard opt-out language such as `STOP` when required.\n- Review Twilio Messaging Policy and the country-specific rules for the destination before you resend the message.\n- If the message is part of an ongoing campaign, use Messaging Insights recommendations to review spam complaints and delivery signals.\n\n#### Additional resources\n\n- [Twilio Messaging Policy](https://twilio.com/en-us/legal/messaging-policy)\n- [Personalized Recommendations for Twilio Messaging](/docs/messaging/features/recommendations)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The message contains spam-like language, excessive capitalization, or repeated punctuation that can trigger filtering.\n* The content is illegal, harmful, unwanted, inappropriate, objectionable, or otherwise prohibited by Twilio Messaging Policy.\n* The recipient has not explicitly opted in, or you have not retained proof of consent.\n* The message does not follow the applicable country-specific messaging guidelines.\n* The message is designed to evade unwanted messaging detection and prevention mechanisms.",
    "solutions": "* Rewrite the message to remove spam triggers and keep the content clear, specific, and relevant.\n* Send messages only to recipients who have explicitly opted in, and keep a record of that consent.\n* Make sure each message clearly identifies the sender and includes standard opt-out language such as `STOP` when required.\n* Review Twilio Messaging Policy and the country-specific rules for the destination before you resend the message.\n* If the message is part of an ongoing campaign, use Messaging Insights recommendations to review spam complaints and delivery signals.",
    "description": "This error indicates that Twilio flagged the sender content in a channel message as spam. Review the message body, consent history, and applicable messaging rules before you send again.",
    "date_created": "2019-02-25T19:34:31Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63027,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Template does not exist for a language and locale",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp, Content",
    "products_used": [
      "messaging",
      "whatsapp",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a channel message with a template language or locale that is not available for the template you referenced, or when you send the template with parameters that do not match the content template sending flow. Create or select a template in the correct language, then send it with `ContentSid` and, if needed, `ContentVariables`.\n\n### Possible causes\n\n- The template you are trying to send was not created for the language or locale in your request.\n- The template exists, but the template `language` does not match the one your application expects.\n- You sent the template with the wrong API parameters instead of the content template parameters used by the Messaging API.\n\n### Possible solutions\n\n- Open the template in Console or fetch it with the Content API and confirm the template `language` before you send it.\n- If you need a different language, create a template for that language. After a template is submitted for WhatsApp approval, you cannot change its language.\n- Send the message with `ContentSid` and, if your template uses placeholders, `ContentVariables`.\n- Do not include `Body` or `MediaUrl` when you send a content template with `ContentSid`.\n\n#### Additional resources\n\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Create templates with the Content Template Builder in Console](/docs/content/create-templates-with-the-content-template-builder)\n- [Content API public endpoints](/docs/content/content-api-resources)\n",
    "causes": "* The template you are trying to send was not created for the language or locale in your request.\n* The template exists, but the template `language` does not match the one your application expects.\n* You sent the template with the wrong API parameters instead of the content template parameters used by the Messaging API.",
    "solutions": "* Open the template in Console or fetch it with the Content API and confirm the template `language` before you send it.\n* If you need a different language, create a template for that language. After a template is submitted for WhatsApp approval, you cannot change its language.\n* Send the message with `ContentSid` and, if your template uses placeholders, `ContentVariables`.\n* Do not include `Body` or `MediaUrl` when you send a content template with `ContentSid`.",
    "description": "This error occurs when you send a channel message with a template language or locale that is not available for the template you referenced, or when you send the template with parameters that do not match the content template sending flow. Create or select a template in the correct language, then send it with `ContentSid` and, if needed, `ContentVariables`.",
    "date_created": "2019-05-16T19:07:17Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 63028,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Number of parameters provided does not match the expected number of parameters",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou received this error because the values you passed in `ContentVariables` do not match the variables defined by the template referenced by `ContentSid`. When you send a templated message, `ContentVariables` must map template variables to substitution values. If you do not send a value for a variable, Twilio can use the template's default placeholder value.\n\n### Possible causes\n\n- The number of values or keys you provided in `ContentVariables` does not align with the placeholder variables defined in the selected template.\n- The template referenced by `ContentSid` was changed, but your send request still uses an older set of variables, because send-time variables must match the template definition.\n- For WhatsApp templates, variable definitions skip integers or otherwise break WhatsApp variable rules, which can cause the approved template and your send payload to fall out of alignment.\n\n### Possible solutions\n\n- Fetch the template and review its `variables` definition before you send the message. Make sure every placeholder expected by the template has a corresponding substitution value in `ContentVariables`.\n- Send `ContentVariables` as a valid JSON string of key-value pairs that map template variable numbers to substitution values.\n- If you want Twilio to substitute fallback values, define default placeholder values in the template before you send the message.\n- For WhatsApp templates, define variables in sequential order without skipping integers.\n\n#### Additional resources\n\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Content API Public Endpoints](/docs/content/content-api-resources)\n",
    "causes": "* The number of values or keys you provided in `ContentVariables` does not align with the placeholder variables defined in the selected template.\n* The template referenced by `ContentSid` was changed, but your send request still uses an older set of variables, because send-time variables must match the template definition.\n* For WhatsApp templates, variable definitions skip integers or otherwise break WhatsApp variable rules, which can cause the approved template and your send payload to fall out of alignment.",
    "solutions": "* Fetch the template and review its `variables` definition before you send the message. Make sure every placeholder expected by the template has a corresponding substitution value in `ContentVariables`.\n* Send `ContentVariables` as a valid JSON string of key-value pairs that map template variable numbers to substitution values.\n* If you want Twilio to substitute fallback values, define default placeholder values in the template before you send the message.\n* For WhatsApp templates, define variables in sequential order without skipping integers.",
    "description": "You received this error because the values you passed in `ContentVariables` do not match the variables defined by the template referenced by `ContentSid`. When you send a templated message, `ContentVariables` must map template variables to substitution values. If you do not send a value for a variable, Twilio can use the template's default placeholder value.",
    "date_created": "2019-05-16T19:08:26Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63029,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "The receiver failed to download the template",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp, Content",
    "products_used": [
      "messaging",
      "whatsapp",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when the recipient cannot download a WhatsApp template. For WhatsApp messaging, this condition corresponds to WhatsApp error 2002. If your template includes media or URL-based actions, verify that each referenced resource is public and reachable before you retry the message.\n\n### Possible causes\n\n- The recipient's device or WhatsApp client could not download the template.\n- A media template references a file that is not publicly hosted, does not resolve correctly, or uses a file type that is not supported for WhatsApp templates.\n- A template button URL does not resolve to a publicly accessible website.\n- The destination number or handset could not receive the template successfully at the time of delivery.\n\n### Possible solutions\n\n- Check the destination number and handset, then retry the message.\n- If the template includes media, host the file at a public URL, confirm the URL resolves successfully, and use a supported WhatsApp template media type such as JPG, JPEG, PNG, PDF, or MP4.\n- If the template includes a URL button, make sure the URL resolves to a publicly accessible website. If the URL uses variables, provide a valid sample path in the template.\n- Send templated WhatsApp messages with `ContentSid` and `ContentVariables`. Confirm the template is approved and configured correctly before you send it.\n- If you need a delivery fallback after a failed WhatsApp attempt, configure channel fallback to SMS and include both the recipient's phone number and WhatsApp address.\n\n#### Additional resources\n\n- [Send WhatsApp notification messages with templates](/docs/whatsapp/tutorial/send-whatsapp-notification-messages-templates)\n- [twilio/media](/docs/content/twilio-media)\n- [Channel Fallback](/docs/bulk-messaging/channel-fallback)\n",
    "causes": "* The recipient's device or WhatsApp client could not download the template.\n* A media template references a file that is not publicly hosted, does not resolve correctly, or uses a file type that is not supported for WhatsApp templates.\n* A template button URL does not resolve to a publicly accessible website.\n* The destination number or handset could not receive the template successfully at the time of delivery.",
    "solutions": "* Check the destination number and handset, then retry the message.\n* If the template includes media, host the file at a public URL, confirm the URL resolves successfully, and use a supported WhatsApp template media type such as JPG, JPEG, PNG, PDF, or MP4.\n* If the template includes a URL button, make sure the URL resolves to a publicly accessible website. If the URL uses variables, provide a valid sample path in the template.\n* Send templated WhatsApp messages with `ContentSid` and `ContentVariables`. Confirm the template is approved and configured correctly before you send it.\n* If you need a delivery fallback after a failed WhatsApp attempt, configure channel fallback to SMS and include both the recipient's phone number and WhatsApp address.",
    "description": "This error occurs when the recipient cannot download a WhatsApp template. For WhatsApp messaging, this condition corresponds to WhatsApp error 2002. If your template includes media or URL-based actions, verify that each referenced resource is public and reachable before you retry the message.",
    "date_created": "2019-05-16T19:09:54Z",
    "last_updated": "2026-04-29T18:23:52+01:00"
  },
  {
    "code": 63030,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Unsupported parameter for type of channels message",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when your request includes a parameter that the selected channels message type does not support. Common cases include sending a content template with `MediaUrl` even though `ContentSid` replaces `Body` and `MediaUrl`, or supplying a URL field that does not resolve to a valid public website.\n\n### Possible causes\n\n- You sent `MediaUrl` with a content template request. Content template messages should be sent with `ContentSid` and optional `ContentVariables` instead.\n- You tried to send media with a structured template that does not support that media configuration, or you attempted to send a different WhatsApp media header type than the template was approved for. Approved variable WhatsApp templates can send only the media type that was submitted for approval.\n- A URL field in the message is malformed, not publicly accessible, or a variable in the URL does not resolve to a valid public path.\n\n### Possible solutions\n\n- If you are sending a content template, remove `Body` and `MediaUrl` from the API request. Send the message with `ContentSid` and include `ContentVariables` only when you need variable substitution.\n- If the message needs media, use a content template that supports media and make sure the media URL resolves to a publicly hosted file. For WhatsApp-approved media templates, send only the approved header type.\n- Verify any URL field or URL button value is complete, publicly accessible, and resolves correctly after variable substitution. Include a valid sample path when the URL uses variables.\n\n#### Additional resources\n\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [twilio/media](/docs/content/twilio-media)\n- [twilio/call-to-action](/docs/content/twilio-call-to-action)\n",
    "causes": "* You sent `MediaUrl` with a content template request. Content template messages should be sent with `ContentSid` and optional `ContentVariables` instead.\n* You tried to send media with a structured template that does not support that media configuration, or you attempted to send a different WhatsApp media header type than the template was approved for. Approved variable WhatsApp templates can send only the media type that was submitted for approval.\n* A URL field in the message is malformed, not publicly accessible, or a variable in the URL does not resolve to a valid public path.",
    "solutions": "* If you are sending a content template, remove `Body` and `MediaUrl` from the API request. Send the message with `ContentSid` and include `ContentVariables` only when you need variable substitution.\n* If the message needs media, use a content template that supports media and make sure the media URL resolves to a publicly hosted file. For WhatsApp-approved media templates, send only the approved header type.\n* Verify any URL field or URL button value is complete, publicly accessible, and resolves correctly after variable substitution. Include a valid sample path when the URL uses variables.",
    "description": "This error occurs when your request includes a parameter that the selected channels message type does not support. Common cases include sending a content template with `MediaUrl` even though `ContentSid` replaces `Body` and `MediaUrl`, or supplying a URL field that does not resolve to a valid public website.",
    "date_created": "2019-06-27T18:49:50Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63031,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channels message cannot have same 'From' and 'To'",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your channel message request uses the same address for `From` and `To`. Use a sender address for `From` and a recipient address for `To`. For channel messaging, Twilio expects channel-specific addresses such as `whatsapp:{phone_number}`, `messenger:{messenger_page_id}`, `messenger:{messenger_user_id}`, or `rcs:{unique_id}`.\n\n### Possible causes\n\n- Your API request sent the same channel address in both `From` and `To`.\n- Your application copied a recipient address into `From` instead of using your Twilio-hosted channel sender.\n- For WhatsApp, your request used the same `whatsapp:` address for both parameters instead of using your approved WhatsApp sender in `From` and the recipient in `To`.\n- You passed a specific `From` value while sending with a Messaging Service, and that sender value matched the destination address.\n\n### Possible solutions\n\n- Update your request so `From` and `To` contain different values.\n- Set `From` to a sender that belongs to your Twilio account and is hosted within Twilio.\n- Set `To` to the destination user's channel address in the correct channel format.\n- For WhatsApp, use your approved sender address in `From` and the recipient's WhatsApp address in `To`.\n- If you send with a Messaging Service, provide `MessagingServiceSid` and omit `From` so Twilio can select a sender from your Sender Pool.\n- Verify that each channel address uses the correct prefix and format before you send the request.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Twilio Messaging Channels](/docs/messaging/channels)\n- [Test WhatsApp messaging with the Sandbox](/docs/whatsapp/sandbox)\n",
    "causes": "* Your API request sent the same channel address in both `From` and `To`.\n* Your application copied a recipient address into `From` instead of using your Twilio-hosted channel sender.\n* For WhatsApp, your request used the same `whatsapp:` address for both parameters instead of using your approved WhatsApp sender in `From` and the recipient in `To`.\n* You passed a specific `From` value while sending with a Messaging Service, and that sender value matched the destination address.",
    "solutions": "* Update your request so `From` and `To` contain different values.\n* Set `From` to a sender that belongs to your Twilio account and is hosted within Twilio.\n* Set `To` to the destination user's channel address in the correct channel format.\n* For WhatsApp, use your approved sender address in `From` and the recipient's WhatsApp address in `To`.\n* If you send with a Messaging Service, provide `MessagingServiceSid` and omit `From` so Twilio can select a sender from your Sender Pool.\n* Verify that each channel address uses the correct prefix and format before you send the request.",
    "description": "Twilio returns this error when your channel message request uses the same address for `From` and `To`. Use a sender address for `From` and a recipient address for `To`. For channel messaging, Twilio expects channel-specific addresses such as `whatsapp:{phone_number}`, `messenger:{messenger_page_id}`, `messenger:{messenger_user_id}`, or `rcs:{unique_id}`.",
    "date_created": "2019-07-12T21:33:41Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63032,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "We cannot send this message to this user because of a WhatsApp limitation. ",
    "secondary_message": "User's number is part of an experiment.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to send a WhatsApp message to a user whose number is part of an experiment. Twilio can't send the message in that case.\n\n### Possible causes\n\n- The destination user's phone number is part of an experiment, so Twilio can't deliver the WhatsApp message.\n\n### Possible solutions\n\n- Skip sending messages to this user.\n\n#### Additional resources\n\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [The WhatsApp Business Platform with Twilio: Best Practices and FAQs](/docs/whatsapp/best-practices-and-faqs)\n",
    "causes": "* The destination user's phone number is part of an experiment, so Twilio can't deliver the WhatsApp message.",
    "solutions": "* Skip sending messages to this user.",
    "description": "This error occurs when you try to send a WhatsApp message to a user whose number is part of an experiment. Twilio can't send the message in that case.",
    "date_created": "2019-07-25T22:52:16Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 63033,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Recipient opted out to receive message",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a WhatsApp template that is categorized as Marketing to a recipient who has opted out of receiving your marketing messages. WhatsApp requires explicit user opt-in for outbound messaging and requires you to honor opt-out requests.\n\n### Possible causes\n\n- The recipient has opted out of receiving WhatsApp marketing messages from your business, and you attempted to send a Marketing category template to that user.\n- The template you sent was approved or reclassified as Marketing, even if you intended it for another use case. When you submit a template for WhatsApp approval, you select a category, and WhatsApp can recategorize templates based on their content.\n- Your application continued sending marketing traffic without checking the recipient's current consent status. Advanced Opt-Out can help you track opt-in and opt-out events on Messaging Services, including WhatsApp senders in the service.\n\n### Possible solutions\n\n- Do not resend the same Marketing template until the user has explicitly opted back in to receive WhatsApp marketing messages from your business.\n- If the message content is not promotional, send a template in the correct category instead. WhatsApp requires approved templates for business-initiated messages, and Twilio sends those templates with `ContentSid`.\n- Review the template's approved category in the Content Template Builder. If the template was categorized or reclassified as Marketing, create a new template whose content clearly fits the intended category before sending again.\n- Track consent in your application and stop sending marketing templates to users who opt out. If you use a Messaging Service, enable Advanced Opt-Out so you can manage opt-in and opt-out keywords and store those events in your own workflow.\n\n#### Additional resources\n\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [Send WhatsApp notification messages with templates](/docs/whatsapp/tutorial/send-whatsapp-notification-messages-templates)\n- [Customize users' opt-in and opt-out experience with Advanced Opt-Out](/docs/messaging/tutorials/advanced-opt-out)\n",
    "causes": "* The recipient has opted out of receiving WhatsApp marketing messages from your business, and you attempted to send a Marketing category template to that user.\n* The template you sent was approved or reclassified as Marketing, even if you intended it for another use case. When you submit a template for WhatsApp approval, you select a category, and WhatsApp can recategorize templates based on their content.\n* Your application continued sending marketing traffic without checking the recipient's current consent status. Advanced Opt-Out can help you track opt-in and opt-out events on Messaging Services, including WhatsApp senders in the service.",
    "solutions": "* Do not resend the same Marketing template until the user has explicitly opted back in to receive WhatsApp marketing messages from your business.\n* If the message content is not promotional, send a template in the correct category instead. WhatsApp requires approved templates for business-initiated messages, and Twilio sends those templates with `ContentSid`.\n* Review the template's approved category in the Content Template Builder. If the template was categorized or reclassified as Marketing, create a new template whose content clearly fits the intended category before sending again.\n* Track consent in your application and stop sending marketing templates to users who opt out. If you use a Messaging Service, enable Advanced Opt-Out so you can manage opt-in and opt-out keywords and store those events in your own workflow.",
    "description": "This error occurs when you send a WhatsApp template that is categorized as Marketing to a recipient who has opted out of receiving your marketing messages. WhatsApp requires explicit user opt-in for outbound messaging and requires you to honor opt-out requests.",
    "date_created": "2019-07-25T22:53:29Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63034,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media exceeds size limit",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the media attached to an outbound message exceeds the channel's maximum size limit. For MMS, keep the total message and media size at 5 MB or less. Twilio accepts different maximum sizes for MMS, RCS, and WhatsApp.\n\n### Possible causes\n\n- The media file is larger than the 5 MB MMS limit.\n- The combined size of the message and its media exceeds the channel's maximum limit.\n\n### Possible solutions\n\n- Reduce the media file size to 5 MB or less before sending the message again.\n- Check the media limit for the channel you are using before retrying. Twilio applies different size limits to MMS, RCS, and WhatsApp.\n\n#### Additional resources\n\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n- [Programmable Messaging](/docs/messaging)\n",
    "causes": "* The media file is larger than the 5 MB MMS limit.\n* The combined size of the message and its media exceeds the channel's maximum limit.",
    "solutions": "* Reduce the media file size to 5 MB or less before sending the message again.\n* Check the media limit for the channel you are using before retrying. Twilio applies different size limits to MMS, RCS, and WhatsApp.",
    "description": "Twilio returns this error when the media attached to an outbound message exceeds the channel's maximum size limit. For MMS, keep the total message and media size at 5 MB or less. Twilio accepts different maximum sizes for MMS, RCS, and WhatsApp.",
    "date_created": "2019-08-19T22:20:28Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63035,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The RCS sender does not have permission to send to this recipient.",
    "secondary_message": null,
    "product": "Branded Comms, Rcs",
    "products_used": [
      "messaging",
      "rcs"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to send an RCS message to a recipient that your RCS sender is not authorized to reach. It usually means the sender is not approved for the recipient's carrier, country, or region, or that you are testing with a recipient who has not accepted the tester invitation.\n\n### Possible causes\n\n- The RCS sender is not approved to send messages to the recipient's region or carrier.\n- The recipient has not accepted the invitation to become an RCS tester.\n- You are sending through a Messaging Service that selected an RCS sender which is not approved for the recipient's country. Supported countries for an RCS sender depend on where that sender has been approved.\n\n### Possible solutions\n\n- If you are testing, add the recipient as a test device and make sure they accept the invitation by tapping Make me a tester.\n- If you plan to send production traffic, request carrier approval for the RCS sender and wait until the sender is approved for the destination country or carrier before sending.\n- Confirm that the destination country is supported for RCS and that your sender is approved for that market.\n- If you use a Messaging Service and your RCS sender was approved for an additional country after you added it to the sender pool, remove and re-add the sender to update country mappings.\n\n#### Additional resources\n\n- [Get started with branded RCS messaging](/docs/rcs/onboarding)\n- [Send and receive RCS messages](/docs/rcs/send-an-rcs-message)\n- [Programmable Messaging RCS regional availability](/docs/rcs/regional)\n",
    "causes": "* The RCS sender is not approved to send messages to the recipient's region or carrier.\n* The recipient has not accepted the invitation to become an RCS tester.\n* You are sending through a Messaging Service that selected an RCS sender which is not approved for the recipient's country. Supported countries for an RCS sender depend on where that sender has been approved.",
    "solutions": "* If you are testing, add the recipient as a test device and make sure they accept the invitation by tapping Make me a tester.\n* If you plan to send production traffic, request carrier approval for the RCS sender and wait until the sender is approved for the destination country or carrier before sending.\n* Confirm that the destination country is supported for RCS and that your sender is approved for that market.\n* If you use a Messaging Service and your RCS sender was approved for an additional country after you added it to the sender pool, remove and re-add the sender to update country mappings.",
    "description": "This error occurs when you try to send an RCS message to a recipient that your RCS sender is not authorized to reach. It usually means the sender is not approved for the recipient's carrier, country, or region, or that you are testing with a recipient who has not accepted the tester invitation.",
    "date_created": "2019-10-10T20:30:35Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63036,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The specified phone number cannot be reached using RCS at this time.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe specified phone number cannot be reached using RCS at this time.\n\n### Possible causes\n\n- Device is switched off\n- Device does not have an internet connection\n- Device is not RCS Business Messaging capable\n\n### Possible solutions\n\nTurn on the device, connect to internet, and enable RCS and RCS Business Messaging if the device is running iOS ([more details](https://help.twilio.com/articles/29076535334043-RCS-Messaging-Best-Practices-and-FAQ))\n",
    "causes": "* Device is switched off\n* Device does not have an internet connection\n* Device is not RCS Business Messaging capable",
    "solutions": "Turn on the device, connect to internet, and enable RCS and RCS Business Messaging if the device is running iOS ([more details](https://help.twilio.com/articles/29076535334043-RCS-Messaging-Best-Practices-and-FAQ))",
    "description": "The specified phone number cannot be reached using RCS at this time.",
    "date_created": "2019-10-10T20:34:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 63037,
    "log_level": "WARNING",
    "log_type": "CARRIER",
    "message": "Channel Media Upload Error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nUse this warning when Twilio cannot upload media to the channel provider. Twilio retries the upload automatically.\n\n### Possible causes\n\n- The channel provider returned a transient upload failure.\n- The `MediaUrl` does not point to a file Twilio can fetch and validate.\n- The media file does not meet the channel's supported MIME type or size limits.\n\n### Possible solutions\n\n- Let Twilio retry the upload. If you resend the message, try again after the provider recovers.\n- Confirm that the `MediaUrl` returns the expected file and that the `Content-Type` header matches the file contents.\n- Keep the media within the channel's size limits and use a supported MIME type for that channel.\n\n#### Additional resources\n\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n- [Media subresource](/docs/messaging/api/media-resource)\n",
    "causes": "* The channel provider returned a transient upload failure.\n* The `MediaUrl` does not point to a file Twilio can fetch and validate.\n* The media file does not meet the channel's supported MIME type or size limits.",
    "solutions": "* Let Twilio retry the upload. If you resend the message, try again after the provider recovers.\n* Confirm that the `MediaUrl` returns the expected file and that the `Content-Type` header matches the file contents.\n* Keep the media within the channel's size limits and use a supported MIME type for that channel.",
    "description": "Use this warning when Twilio cannot upload media to the channel provider. Twilio retries the upload automatically.",
    "date_created": "2020-02-19T22:25:22Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 63038,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Account exceeded the daily messages limit",
    "secondary_message": "Account exceeded the maximum amount of messages per 24 hours",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou see this error when your account exceeds the number of messages allowed within a rolling 24-hour window. Trial accounts are limited to 50 messages per day, and additional daily restrictions can be applied based on observed sending patterns.\n\n### Possible causes\n\n- Your trial account reached the daily cap of 50 messages. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))\n- Your account is subject to an additional daily messaging restriction based on observed sending patterns. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))\n- Your application sent more messages across the account than the daily allowance permits within the rolling 24-hour window.\n- Your Twilio account has been upgraded, but you have not yet created a Business [Primary Compliance Profile](/docs/trust-hub/profiles/primary-compliance-profiles) (PCP).\\\n  Until you add a Business PCP, the account can send a maximum of 20,000 messages per day.\n\n### Possible solutions\n\n- Pause outbound traffic and send again after the rolling 24-hour window resets.\n- If you are using a trial account, upgrade to a paid account to send a higher daily volume. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))\n- If you need a higher limit, contact Support and review any outreach sent to your email, including your spam folder, for steps to remove or raise the limit.\n- Use Messaging Insights to identify volume spikes, delivery issues, and the senders or campaigns that contributed to the limit.\n- If your newly upgraded Twilio account is hitting the 20,000 messages / day limit, get an approved Business [Primary Compliance Profile](/docs/trust-hub/profiles/primary-compliance-profiles) to have the limit lifted.\n\n#### Additional resources\n\n- [Twilio Free Trial Limitations](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations)\n- [Messaging Insights](/docs/messaging/features/messaging-insights)\n- [Account Based Throughput Overview](/docs/messaging/guides/account-based-throughput-overview)\n",
    "causes": "* Your trial account reached the daily cap of 50 messages. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))\n* Your account is subject to an additional daily messaging restriction based on observed sending patterns. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))\n* Your application sent more messages across the account than the daily allowance permits within the rolling 24-hour window.\n* Your Twilio account has been upgraded, but you have not yet created a Business [Primary Compliance Profile](/docs/trust-hub/profiles/primary-compliance-profiles) (PCP).\\\n  Until you add a Business PCP, the account can send a maximum of 20,000 messages per day.",
    "solutions": "* Pause outbound traffic and send again after the rolling 24-hour window resets.\n* If you are using a trial account, upgrade to a paid account to send a higher daily volume. ([help.twilio.com](https://help.twilio.com/articles/360036052753-Twilio-Free-Trial-Limitations))\n* If you need a higher limit, contact Support and review any outreach sent to your email, including your spam folder, for steps to remove or raise the limit.\n* Use Messaging Insights to identify volume spikes, delivery issues, and the senders or campaigns that contributed to the limit.\n* If your newly upgraded Twilio account is hitting the 20,000 messages / day limit, get an approved Business [Primary Compliance Profile](/docs/trust-hub/profiles/primary-compliance-profiles) to have the limit lifted.",
    "description": "You see this error when your account exceeds the number of messages allowed within a rolling 24-hour window. Trial accounts are limited to 50 messages per day, and additional daily restrictions can be applied based on observed sending patterns.",
    "date_created": "2020-07-24T10:53:29Z",
    "last_updated": "2026-10-06T22:21:12-07:00"
  },
  {
    "code": 63039,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Facebook warning: reduce message rate outside 24-hour window to avoid restrictions",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when Facebook warns that your Page is sending messages outside the 24-hour window at a rate that may be considered bothersome or abusive. Facebook Messenger on Twilio is a user-initiated channel, so a user must message your business before you respond and you can reply within 24 hours of that inbound message.\n\n### Possible causes\n\n- Your application sent messages to a Facebook Messenger user after the 24-hour response window had closed.\n- The content, frequency, or rate of your messages caused Facebook or the recipient to treat them as spam, abusive, unpleasant, or otherwise bothersome.\n- Users reported messages from your Page, which can lead Facebook to place restrictions on Messenger activity for that Page.\n\n### Possible solutions\n\n- Immediately reduce or pause messages to the affected user outside the 24-hour window.\n- Limit Facebook Messenger traffic to replies that follow an inbound user message and keep those replies within the 24-hour response window.\n- Review your message copy and sending cadence. Remove repetitive, irrelevant, or promotional content that users may view as bothersome.\n- Recheck your audience and consent flow so you only message users who recently engaged with your Page and expect a reply.\n\n#### Additional resources\n\n- [Get started with Facebook Messenger (public beta)](/docs/messaging/channels/facebook-messenger)\n- [Using Facebook Messenger with Content Templates](/docs/content/using-facebook-messenger-with-content-editor)\n- [Personalized Recommendations for Twilio Messaging](/docs/messaging/features/recommendations)\n",
    "causes": "* Your application sent messages to a Facebook Messenger user after the 24-hour response window had closed.\n* The content, frequency, or rate of your messages caused Facebook or the recipient to treat them as spam, abusive, unpleasant, or otherwise bothersome.\n* Users reported messages from your Page, which can lead Facebook to place restrictions on Messenger activity for that Page.",
    "solutions": "* Immediately reduce or pause messages to the affected user outside the 24-hour window.\n* Limit Facebook Messenger traffic to replies that follow an inbound user message and keep those replies within the 24-hour response window.\n* Review your message copy and sending cadence. Remove repetitive, irrelevant, or promotional content that users may view as bothersome.\n* Recheck your audience and consent flow so you only message users who recently engaged with your Page and expect a reply.",
    "description": "Twilio returns this error when Facebook warns that your Page is sending messages outside the 24-hour window at a rate that may be considered bothersome or abusive. Facebook Messenger on Twilio is a user-initiated channel, so a user must message your business before you respond and you can reply within 24 hours of that inbound message.",
    "date_created": "2021-08-20T22:22:14Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63040,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Template Rejected",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis message matches a template that was rejected by WhatsApp or failed to be submitted. For the most updated guidelines, please view WhatsApp's documentation: https://developers.facebook.com/docs/whatsapp/message-templates/guidelines.\n\n### Possible causes\n\n- Template purpose is not clear, concise, or well-written. For example, \"Hi, \\{\\{1 2 Thank you.}}\" is vague and not clear how it would be used or what the placeholder values represent.\n- Template placeholders are not sequential in order. For example, \"\\{\\{1 and 2 and 4 }}\" are included but the placeholder \\{\\{3}} does not exist in the template.\n- Template placeholders cannot be right next to each other like \"\\{}\\{\\{1 2\\{}}}\".\n- Template content is identical to the content of another existing template.\n- Template body cannot start or end with a placeholder.\n- Template body cannot have the \\n newline character.\n- Template footer cannot have emojis or the \\n newline character.\n- Templates with Text headers cannot have emojis, asterisks, formatting markup, or the \\n newline character.\n- Templates with Media headers (video, image, document) must include a sample with their submission.\n- Template is abusive or threatening in nature, such as containing content threatening to take legal action against a user.\n\nFor the most updated guidelines, please view WhatsApp's documentation: https://developers.facebook.com/docs/whatsapp/message-templates/guidelines.\n\nThis error may also occur if you have an approved template that has similar body to a rejected template.\n\n### Possible solutions\n\nSubmit a new template that doesn't violate the above causes. We also recommend the follow best practices when creating templates:\n\n- Templates should be as short as possible to get the necessary information across.\n- Templates must not have any grammatical or spelling mistakes.\n- Templates that include major spelling or grammatical mistakes are likely to be rejected. Templates with minor punctuation errors or grammatical inconsistencies may be approved, but should be avoided.\n- When submitting your Template in Console, ensure you select the appropriate message type and language.\n- Get feedback from your teammates or coworkers to ensure the template you've written is clear and free of errors.\n- Think about a template message as a conversation starter, with the goal to convert this into a 2-way message by having the user reply. The two-way use case will keep your spend lower, as WhatsApp does not charge the Template message fee for two-way messages.\n- Make sure your customers understand why they received your message – you can remind them of the reason why they originally gave you permission to send them messages.\n- Avoid sending surveys or using the word \"survey\". Instead, you may ask the customer for their feedback.\n\nIf you believe you have an approved template that matches the message you are attempting to send, then we recommend deleting any rejected templates that are similar to the approved template. You may also use the Twilio Content API, which lets you send templates by referencing a template Sid. To learn more, please see: https://www.twilio.com/docs/content-api\n",
    "causes": "* Template purpose is not clear, concise, or well-written. For example, \"Hi, {{1 2 Thank you.}}\" is vague and not clear how it would be used or what the placeholder values represent.\n* Template placeholders are not sequential in order. For example, \"{{1 and 2 and 4 }}\" are included but the placeholder {{3}} does not exist in the template.\n* Template placeholders cannot be right next to each other like \"{}{{1 2{}}}\".\n* Template content is identical to the content of another existing template.\n* Template body cannot start or end with a placeholder.\n* Template body cannot have the \\n newline character.\n* Template footer cannot have emojis or the \\n newline character.\n* Templates with Text headers cannot have emojis, asterisks, formatting markup, or the \\n newline character.\n* Templates with Media headers (video, image, document) must include a sample with their submission.\n* Template is abusive or threatening in nature, such as containing content threatening to take legal action against a user. For the most updated guidelines, please view WhatsApp's documentation: https://developers.facebook.com/docs/whatsapp/message-templates/guidelines. This error may also occur if you have an approved template that has similar body to a rejected template.",
    "solutions": "Submit a new template that doesn't violate the above causes. We also recommend the follow best practices when creating templates: - Templates should be as short as possible to get the necessary information across.\n- Templates must not have any grammatical or spelling mistakes.\n- Templates that include major spelling or grammatical mistakes are likely to be rejected. Templates with minor punctuation errors or grammatical inconsistencies may be approved, but should be avoided.\n- When submitting your Template in Console, ensure you select the appropriate message type and language.\n- Get feedback from your teammates or coworkers to ensure the template you've written is clear and free of errors.\n- Think about a template message as a conversation starter, with the goal to convert this into a 2-way message by having the user reply. The two-way use case will keep your spend lower, as WhatsApp does not charge the Template message fee for two-way messages.\n- Make sure your customers understand why they received your message – you can remind them of the reason why they originally gave you permission to send them messages.\n- Avoid sending surveys or using the word \"survey\". Instead, you may ask the customer for their feedback. If you believe you have an approved template that matches the message you are attempting to send, then we recommend deleting any rejected templates that are similar to the approved template. You may also use the Twilio Content API, which lets you send templates by referencing a template Sid. To learn more, please see: https://www.twilio.com/docs/content-api",
    "description": "This message matches a template that was rejected by WhatsApp or failed to be submitted. For the most updated guidelines, please view WhatsApp's documentation: https://developers.facebook.com/docs/whatsapp/message-templates/guidelines.",
    "date_created": "2022-10-05T19:19:15Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 63041,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Template paused",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nWhatsApp has reported that the template has been temporarily paused due to recurring negative feedback from customers. Message templates with this status cannot be sent to customers. For the most updated guidelines, please view [WhatsApp's documentation](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#template-pausing).\n\n### Possible causes\n\n- Negative customer feedback (i.e. multiple customers reporting messages or blocking number)\n\n### Possible solutions\n\n- Use a different template\n- Edit this template and re-submit for review\n- If the template uses [Direct Send](/docs/whatsapp/direct-send), switch to another wording variation of the same message for that language. Do not continue to send this template.\n",
    "causes": "* Negative customer feedback (i.e. multiple customers reporting messages or blocking number)",
    "solutions": "* Use a different template\n* Edit this template and re-submit for review\n* If the template uses [Direct Send](/docs/whatsapp/direct-send), switch to another wording variation of the same message for that language. Do not continue to send this template.",
    "description": "WhatsApp has reported that the template has been temporarily paused due to recurring negative feedback from customers. Message templates with this status cannot be sent to customers. For the most updated guidelines, please view [WhatsApp's documentation](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#template-pausing).",
    "date_created": "2022-10-25T20:54:18Z",
    "last_updated": "2026-10-20T09:53:16-07:00"
  },
  {
    "code": 63042,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Template disabled",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means WhatsApp has disabled the template. You cannot send messages with a template in the `disabled` state. WhatsApp disables templates after repeated negative feedback from end users or for a policy violation.\n\n### Possible causes\n\n- End users repeatedly blocked your business or reported messages that used this template as spam.\n- The template was paused multiple times because of negative feedback and was then permanently deactivated.\n- The template content violated one or more WhatsApp policies.\n\n### Possible solutions\n\n- Stop sending with this template. Use a different approved template for outbound WhatsApp messages.\n- Create a new template with revised content and submit it for approval. Submitted templates cannot be edited, so create another template with the desired changes.\n- Revise the template to reduce negative feedback. Add clear context, avoid vague or spam-like wording, and reference the previous conversation when you need to reopen the 24-hour customer service window.\n- Monitor future template status changes by creating Twilio Alerts for 63042, 63041, and 63040.\n\n#### Additional resources\n\n- [Message template approvals and statuses](/docs/whatsapp/tutorial/message-template-approvals-statuses)\n- [Send WhatsApp notification messages with templates](/docs/whatsapp/tutorial/send-whatsapp-notification-messages-templates)\n- [Content Types Overview](/docs/content/content-types-overview)\n",
    "causes": "* End users repeatedly blocked your business or reported messages that used this template as spam.\n* The template was paused multiple times because of negative feedback and was then permanently deactivated.\n* The template content violated one or more WhatsApp policies.",
    "solutions": "* Stop sending with this template. Use a different approved template for outbound WhatsApp messages.\n* Create a new template with revised content and submit it for approval. Submitted templates cannot be edited, so create another template with the desired changes.\n* Revise the template to reduce negative feedback. Add clear context, avoid vague or spam-like wording, and reference the previous conversation when you need to reopen the 24-hour customer service window.\n* Monitor future template status changes by creating Twilio Alerts for 63042, 63041, and 63040.",
    "description": "This error means WhatsApp has disabled the template. You cannot send messages with a template in the `disabled` state. WhatsApp disables templates after repeated negative feedback from end users or for a policy violation.",
    "date_created": "2022-11-22T15:11:24Z",
    "last_updated": "2026-04-21T12:20:09-05:00"
  },
  {
    "code": 63043,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Link to a sample media file returns 403 Forbidden",
    "secondary_message": null,
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when the sample media URL returns `403 Forbidden`, which prevents Twilio from retrieving the file.\n\n### Possible causes\n\n- The media server requires authorization, so Twilio cannot access the file without credentials or a valid token.\n\n### Possible solutions\n\n- Host the sample file at a publicly accessible URL that Twilio can fetch without authentication.\n- If you must protect the file, use a URL that includes a valid access token or another authorization mechanism that allows Twilio to retrieve the media.\n\n#### Additional resources\n\n- [twilio/media](/docs/content/twilio-media)\n- [Protect media access with HTTP basic authentication](/docs/usage/security#protect-media-access-with-http-basic-authentication)\n- [Media subresource](/docs/messaging/api/media-resource)\n",
    "causes": "* The media server requires authorization, so Twilio cannot access the file without credentials or a valid token.",
    "solutions": "* Host the sample file at a publicly accessible URL that Twilio can fetch without authentication.\n* If you must protect the file, use a URL that includes a valid access token or another authorization mechanism that allows Twilio to retrieve the media.",
    "description": "This error occurs when the sample media URL returns `403 Forbidden`, which prevents Twilio from retrieving the file.",
    "date_created": "2023-03-24T15:47:37Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63044,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Link to a sample media file returns 404 Not Found",
    "secondary_message": null,
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when the sample media URL returns `404 Not Found`, so Twilio can't retrieve the file. For media and content templates, the sample URL must resolve to a publicly hosted file.\n\n### Possible causes\n\n- The media file does not exist at the URL you provided.\n- The URL path is incorrect, including the file name, directory, or file suffix.\n- If you use a variable in the media URL, the sample path does not resolve to a publicly hosted file.\n\n### Possible solutions\n\n- Update the URL so it points to the correct file path and the file is available.\n- Confirm the link opens in your browser and resolves to a publicly accessible file.\n- If the URL uses variables, provide a valid sample path so the combined URL resolves to a publicly hosted file.\n\n#### Additional resources\n\n- [twilio/card](/docs/content/twiliocard)\n- [twilio/media](/docs/content/twilio-media)\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n",
    "causes": "* The media file does not exist at the URL you provided.\n* The URL path is incorrect, including the file name, directory, or file suffix.\n* If you use a variable in the media URL, the sample path does not resolve to a publicly hosted file.",
    "solutions": "* Update the URL so it points to the correct file path and the file is available.\n* Confirm the link opens in your browser and resolves to a publicly accessible file.\n* If the URL uses variables, provide a valid sample path so the combined URL resolves to a publicly hosted file.",
    "description": "This error occurs when the sample media URL returns `404 Not Found`, so Twilio can't retrieve the file. For media and content templates, the sample URL must resolve to a publicly hosted file.",
    "date_created": "2023-03-24T16:33:58Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63045,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Link to a sample media file returned an unexpected error status",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when Twilio tries to download the sample media file and the URL returns an unexpected HTTP status code, so Twilio cannot retrieve the file. For media templates that you submit for WhatsApp approval, the sample media URL must resolve to a publicly hosted media file. If you use a variable in the media URL, the sample value must complete the path and include a valid file suffix.\n\n### Possible causes\n\n- The sample media URL is incorrect or contains whitespace characters.\n- The file is not publicly accessible, or the hosting server is not returning the media file successfully.\n- The URL resolves to a preview page or another intermediate page instead of the media file itself. Google Drive links are not supported for sample media because they do not resolve directly to the file.\n- The sample value for a variable media URL does not complete the full path after the domain or does not include the file type suffix.\n- The host does not respond correctly to the validation requests Twilio sends to inspect media resources. Twilio uses `GET` and `HEAD` requests to validate media.\n\n### Possible solutions\n\n- Confirm that the sample media URL is correct and does not contain whitespace.\n- Open the URL in your browser and verify that it returns the media file itself, not a preview page or redirect landing page.\n- Host the file at a publicly accessible URL that Twilio can download during sample submission.\n- If you use a variable in the media URL, provide a sample value that completes the full path and includes a valid file extension such as `.png` or `.pdf`.\n- If the file is hosted on Google Drive or a similar service, move it to a host that returns the media file directly.\n- Check that your host responds successfully to `GET` and `HEAD` requests and returns the correct `Content-Type` for the file.\n\n#### Additional resources\n- [twilio/media](/docs/content/twilio-media)\n- [FAQs and Troubleshooting](/docs/content/faqs-and-troubleshooting)\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n",
    "causes": "* The sample media URL is incorrect or contains whitespace characters.\n* The file is not publicly accessible, or the hosting server is not returning the media file successfully.\n* The URL resolves to a preview page or another intermediate page instead of the media file itself. Google Drive links are not supported for sample media because they do not resolve directly to the file.\n* The sample value for a variable media URL does not complete the full path after the domain or does not include the file type suffix.\n* The host does not respond correctly to the validation requests Twilio sends to inspect media resources. Twilio uses `GET` and `HEAD` requests to validate media.",
    "solutions": "* Confirm that the sample media URL is correct and does not contain whitespace.\n* Open the URL in your browser and verify that it returns the media file itself, not a preview page or redirect landing page.\n* Host the file at a publicly accessible URL that Twilio can download during sample submission.\n* If you use a variable in the media URL, provide a sample value that completes the full path and includes a valid file extension such as `.png` or `.pdf`.\n* If the file is hosted on Google Drive or a similar service, move it to a host that returns the media file directly.\n* Check that your host responds successfully to `GET` and `HEAD` requests and returns the correct `Content-Type` for the file.",
    "description": "This error occurs when Twilio tries to download the sample media file and the URL returns an unexpected HTTP status code, so Twilio cannot retrieve the file. For media templates that you submit for WhatsApp approval, the sample media URL must resolve to a publicly hosted media file. If you use a variable in the media URL, the sample value must complete the path and include a valid file suffix.",
    "date_created": "2023-03-24T16:35:10Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63046,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Template approved",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nWhatsApp template approval status has changed to approved. Approved templates can be sent to customers, and the approval status is visible in the Template Details page in the Content Template Builder.\n\n### Possible causes\n\n- WhatsApp has reported that the template is now approved.\n\n### Possible solutions\n\n- No further action is needed once the template is approved.\n- If you want to monitor approval changes, create a Twilio Alarm for approved templates using This error. Twilio supports approved-template alerts alongside rejected and paused template alerts.\n- Review the template status in the Template Details page in the Content Template Builder to confirm approval before sending.\n\n#### Additional resources\n\n- [Manage your Templates with the Content Template Builder](/docs/content/manage-your-templates-with-the-content-template-builder)\n- [Message template approvals and statuses](/docs/whatsapp/tutorial/message-template-approvals-statuses)\n",
    "causes": "* WhatsApp has reported that the template is now approved.",
    "solutions": "* No further action is needed once the template is approved.\n* If you want to monitor approval changes, create a Twilio Alarm for approved templates using This error. Twilio supports approved-template alerts alongside rejected and paused template alerts.\n* Review the template status in the Template Details page in the Content Template Builder to confirm approval before sending.",
    "description": "WhatsApp template approval status has changed to approved. Approved templates can be sent to customers, and the approval status is visible in the Template Details page in the Content Template Builder.",
    "date_created": "2023-03-24T16:36:49Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 63047,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Link to a sample media file returned an invalid Content-Type",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nTwilio could not create the content template because the sample media URL did not return an accepted MIME type in the `Content-Type` header. For media templates, the sample URL must resolve to a publicly hosted file, and Twilio validates the media response before creating the template.\n\n### Possible causes\n\n- The server hosting the media file did not send a `Content-Type` header.\n- The server returned a `Content-Type` header that is not accepted for the sample media file. For this error, accepted sample types are `image/jpeg`, `image/png`, `application/pdf`, or `video/mp4`.\n- The sample URL did not resolve to a publicly hosted media file.\n- The `Content-Type` header did not match the actual file type returned by the URL.\n\n### Possible solutions\n\n- Configure the host serving the sample file to return a valid `Content-Type` header for the file you provide.\n- Use a sample media URL that resolves directly to a publicly hosted file.\n- Replace the sample with a supported type for template creation: `image/jpeg`, `image/png`, `application/pdf`, or `video/mp4`.\n- If the media URL includes variables, provide a sample path that includes a valid file type and resolves to a publicly hosted file.\n\n#### Additional resources\n- [twilio/media](/docs/content/twilio-media)\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n- [Create templates with the Content Template Builder in Console](/docs/content/create-templates-with-the-content-template-builder)\n",
    "causes": "* The server hosting the media file did not send a `Content-Type` header.\n* The server returned a `Content-Type` header that is not accepted for the sample media file. For this error, accepted sample types are `image/jpeg`, `image/png`, `application/pdf`, or `video/mp4`.\n* The sample URL did not resolve to a publicly hosted media file.\n* The `Content-Type` header did not match the actual file type returned by the URL.",
    "solutions": "* Configure the host serving the sample file to return a valid `Content-Type` header for the file you provide.\n* Use a sample media URL that resolves directly to a publicly hosted file.\n* Replace the sample with a supported type for template creation: `image/jpeg`, `image/png`, `application/pdf`, or `video/mp4`.\n* If the media URL includes variables, provide a sample path that includes a valid file type and resolves to a publicly hosted file.",
    "description": "Twilio could not create the content template because the sample media URL did not return an accepted MIME type in the `Content-Type` header. For media templates, the sample URL must resolve to a publicly hosted file, and Twilio validates the media response before creating the template.",
    "date_created": "2023-04-03T17:12:35Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63049,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Meta chose not to deliver this WhatsApp marketing message",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when Meta blocks delivery of a WhatsApp message that uses a Marketing template. Starting April 1, 2025, recipients in the U.S. cannot receive WhatsApp marketing template messages. Outside the U.S., Meta can temporarily limit marketing template delivery for recipients who are less likely to engage. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n\n### Possible causes\n\n- Your application sent a WhatsApp template categorized as Marketing to a recipient in the U.S. after April 1, 2025. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n- Your application sent a Marketing template to a recipient outside the U.S. who is temporarily limited from receiving more marketing template messages. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n- The template was categorized as Marketing by Meta, even though the use case should be Utility or Authentication. Meta classifies any template that does not meet the Utility or Authentication definitions as Marketing.\n\n### Possible solutions\n\n- For recipients in the U.S., do not retry the same WhatsApp marketing template message. Use another channel such as SMS or MMS for that marketing use case. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n- For recipients outside the U.S., do not immediately resend the same Marketing template. Retry later with progressively larger delays so you avoid repeated failures while the limit is still in effect. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n- Review the template category before sending. If the message is transactional, user-requested, or otherwise fits Utility or Authentication, update the template in the Content Editor or Content API and resubmit it with the correct category.\n- Enable Marketing Messages API on your WhatsApp Business Account to improve marketing delivery rates and help reduce 63049.\n\n#### Additional resources\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [Send WhatsApp notification messages with templates](/docs/whatsapp/tutorial/send-whatsapp-notification-messages-templates)\n- [Message template approvals and statuses](/docs/whatsapp/tutorial/message-template-approvals-statuses)\n",
    "causes": "* Your application sent a WhatsApp template categorized as Marketing to a recipient in the U.S. after April 1, 2025. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n* Your application sent a Marketing template to a recipient outside the U.S. who is temporarily limited from receiving more marketing template messages. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n* The template was categorized as Marketing by Meta, even though the use case should be Utility or Authentication. Meta classifies any template that does not meet the Utility or Authentication definitions as Marketing.",
    "solutions": "* For recipients in the U.S., do not retry the same WhatsApp marketing template message. Use another channel such as SMS or MMS for that marketing use case. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n* For recipients outside the U.S., do not immediately resend the same Marketing template. Retry later with progressively larger delays so you avoid repeated failures while the limit is still in effect. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))\n* Review the template category before sending. If the message is transactional, user-requested, or otherwise fits Utility or Authentication, update the template in the Content Editor or Content API and resubmit it with the correct category.\n* Enable Marketing Messages API on your WhatsApp Business Account to improve marketing delivery rates and help reduce 63049.",
    "description": "This error occurs when Meta blocks delivery of a WhatsApp message that uses a Marketing template. Starting April 1, 2025, recipients in the U.S. cannot receive WhatsApp marketing template messages. Outside the U.S., Meta can temporarily limit marketing template delivery for recipients who are less likely to engage. ([help.twilio.com](https://help.twilio.com/articles/34591224178331))",
    "date_created": "2024-09-23T00:59:19Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63050,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp User Opted Out of Receiving Marketing Messages",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nMeta did not deliver this WhatsApp marketing message because the recipient opted out of receiving marketing messages from your business. Do not retry the same marketing message. WhatsApp requires explicit user opt-ins and requires you to respect opt-out requests from end users.\n\n### Possible causes\n\n- The recipient opted out of receiving marketing messages from your business on WhatsApp.\n- You attempted to send a business-initiated WhatsApp notification to that recipient after the opt-out. Business-initiated WhatsApp notifications must use approved templates.\n\n### Possible solutions\n\n- Stop retrying this marketing message to the same recipient. It will not be delivered until the recipient opts in again.\n- Ask the recipient to opt in again before sending future marketing messages on WhatsApp. Make sure the opt-in is explicit and triggered by a user action.\n- Review how your application records consent so you can store and honor current `opt-in`, `opt-out`, and re-opt-in states before sending marketing traffic.\n\n#### Additional resources\n\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [Send WhatsApp notification messages with templates](/docs/whatsapp/tutorial/send-whatsapp-notification-messages-templates)\n- [Consent Management API](/docs/messaging/features/consent-api)\n",
    "causes": "* The recipient opted out of receiving marketing messages from your business on WhatsApp.\n* You attempted to send a business-initiated WhatsApp notification to that recipient after the opt-out. Business-initiated WhatsApp notifications must use approved templates.",
    "solutions": "* Stop retrying this marketing message to the same recipient. It will not be delivered until the recipient opts in again.\n* Ask the recipient to opt in again before sending future marketing messages on WhatsApp. Make sure the opt-in is explicit and triggered by a user action.\n* Review how your application records consent so you can store and honor current `opt-in`, `opt-out`, and re-opt-in states before sending marketing traffic.",
    "description": "Meta did not deliver this WhatsApp marketing message because the recipient opted out of receiving marketing messages from your business. Do not retry the same marketing message. WhatsApp requires explicit user opt-ins and requires you to respect opt-out requests from end users.",
    "date_created": "2025-06-03T00:12:23.414Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63051,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WhatsApp Sender or Account is Locked",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error appears when Meta restricts either a WhatsApp sender or its associated WhatsApp Business Account (WABA). Meta can apply a restriction for policy violations, security issues, or inactivity. While a sender or WABA is restricted, all messaging traffic and sender-management actions (such as updates or new registrations) are blocked.\n\n### Possible causes\n\n- **30-day inactivity (most common):** Meta locks a sender if it detects no traffic during a rolling 30-day period.\n- **Policy or account violations:** The sender or WABA violates one or more of the following:\n  - [WhatsApp Business Terms of Service](https://www.whatsapp.com/legal/business-terms)\n  - [WhatsApp Business Messaging Policy](https://business.whatsapp.com/policy)\n  - [Meta Commerce Policy](https://www.facebook.com/policies_center/commerce)\n- **Verification mismatch:** Meta cannot verify the request data (for example, an incorrect two-step verification PIN).\n\n### Possible solutions\n\n- **Inactivity lock**\n\n  - Re-register the sender in the Twilio Console through [Self Sign-up](/docs/whatsapp/self-sign-up) or by using the [Senders API](/docs/whatsapp/api/senders).\n  - Prevent future locks by sending at least one message every 30 days. If possible, wait to register the sender until you are ready to send traffic.\n- **Policy or account violation**\n\n  1. Attempt to re-register the sender.\n  2. If re-registration fails and you believe the restriction is in error, contact [Twilio Support](https://help.twilio.com). Twilio Support can appeal the restriction to Meta on your behalf.\n- **Verification mismatch**\n\n  1. Confirm that the two-step verification PIN and any other requested data match the values configured in WhatsApp Manager.\n  2. After correcting the data, re-register the sender.\n",
    "causes": "* **30-day inactivity (most common):** Meta locks a sender if it detects no traffic during a rolling 30-day period.\n* **Policy or account violations:** The sender or WABA violates one or more of the following:\n  * [WhatsApp Business Terms of Service](https://www.whatsapp.com/legal/business-terms)\n  * [WhatsApp Business Messaging Policy](https://business.whatsapp.com/policy)\n  * [Meta Commerce Policy](https://www.facebook.com/policies_center/commerce)\n* **Verification mismatch:** Meta cannot verify the request data (for example, an incorrect two-step verification PIN).",
    "solutions": "* **Inactivity lock**\n\n  * Re-register the sender in the Twilio Console through [Self Sign-up](/docs/whatsapp/self-sign-up) or by using the [Senders API](/docs/whatsapp/api/senders).\n  * Prevent future locks by sending at least one message every 30 days. If possible, wait to register the sender until you are ready to send traffic.\n* **Policy or account violation**\n\n  1. Attempt to re-register the sender.\n  2. If re-registration fails and you believe the restriction is in error, contact [Twilio Support](https://help.twilio.com). Twilio Support can appeal the restriction to Meta on your behalf.\n* **Verification mismatch**\n\n  1. Confirm that the two-step verification PIN and any other requested data match the values configured in WhatsApp Manager.\n  2. After correcting the data, re-register the sender.",
    "description": "This error appears when Meta restricts either a WhatsApp sender or its associated WhatsApp Business Account (WABA). Meta can apply a restriction for policy violations, security issues, or inactivity. While a sender or WABA is restricted, all messaging traffic and sender-management actions (such as updates or new registrations) are blocked.",
    "date_created": "2022-11-29T00:57:33Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63052,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Legacy WhatsApp Template Used",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio detected that this WhatsApp message was sent using the legacy WhatsApp templates system. This system is end-of-life. Send WhatsApp templates with the Content Template Builder or the Content API, and use `ContentSid` and `Content Variables` when you send the message.\n\n### Possible causes\n\n- You sent a WhatsApp template with the legacy WhatsApp Templates product instead of a Content Template.\n- You used the `body` field to match or send a template that now must be sent with `ContentSid` and `Content Variables`.\n\n### Possible solutions\n\n- Create and manage the template in the Content Template Builder or the Content API.\n- Send the template with `ContentSid` and `Content Variables` instead of the legacy `body`-based template flow.\n- If you need to change an existing template, duplicate it in the Content Template Builder, update the copy, and submit it again for WhatsApp approval if required.\n\n#### Additional resources\n\n- [Twilio Content Template Builder](/docs/content)\n- [WhatsApp legacy template migration help article](https://help.twilio.com/articles/19816296822299)\n",
    "causes": "* You sent a WhatsApp template with the legacy WhatsApp Templates product instead of a Content Template.\n* You used the `body` field to match or send a template that now must be sent with `ContentSid` and `Content Variables`.",
    "solutions": "* Create and manage the template in the Content Template Builder or the Content API.\n* Send the template with `ContentSid` and `Content Variables` instead of the legacy `body`-based template flow.\n* If you need to change an existing template, duplicate it in the Content Template Builder, update the copy, and submit it again for WhatsApp approval if required.",
    "description": "Twilio detected that this WhatsApp message was sent using the legacy WhatsApp templates system. This system is end-of-life. Send WhatsApp templates with the Content Template Builder or the Content API, and use `ContentSid` and `Content Variables` when you send the message.",
    "date_created": "2025-01-24T19:50:12Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 63053,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Template sync can take up to 10 minutes. Wait, then retry sending your message.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when you try to send a template message before the template sync has finished. Wait for the sync to complete, then send the message again. Twilio's Content Template Builder and Content API mirror templates across products, so newly created or updated templates may not be ready to use immediately.\n\n### Possible causes\n\n- You sent the message before the template finished syncing in Twilio.\n- You recently created or updated the template, and the mirrored template data has not finished propagating yet.\n\n### Possible solutions\n\n- Wait a few minutes, then retry the message send. Twilio indicates the sync can take up to 10 minutes.\n- Send the message again only after the template is available in your template workflow and ready to use.\n\n#### Additional resources\n\n- [Content Templates overview](/docs/content/overview)\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n",
    "causes": "* You sent the message before the template finished syncing in Twilio.\n* You recently created or updated the template, and the mirrored template data has not finished propagating yet.",
    "solutions": "* Wait a few minutes, then retry the message send. Twilio indicates the sync can take up to 10 minutes.\n* Send the message again only after the template is available in your template workflow and ready to use.",
    "description": "This error appears when you try to send a template message before the template sync has finished. Wait for the sync to complete, then send the message again. Twilio's Content Template Builder and Content API mirror templates across products, so newly created or updated templates may not be ready to use immediately.",
    "date_created": "2025-07-16T14:29:52.28Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63054,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Template unavailable for use",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp, Content",
    "products_used": [
      "messaging",
      "whatsapp",
      "content"
    ],
    "docs": "\n## Description\n\nThis error appears when Twilio cannot use the selected template for the current WhatsApp Business account. Confirm that the account is eligible for MM Lite and that onboarding is complete before you try again.\n\n### Possible causes\n\n- The template is currently unavailable for use on the sending account.\n- The WhatsApp Business account is not eligible for MM Lite or has not completed onboarding.\n\n### Possible solutions\n\n- Check the account's MM Lite eligibility and complete onboarding in Meta Business Manager before sending the template again.\n- If the template is still unavailable after onboarding, contact Meta customer support to review access.\n- Review the template status in the Content Template Builder and make sure it is approved and ready to send.\n\n#### Additional resources\n\n- [Message template approvals and statuses](/docs/whatsapp/tutorial/message-template-approvals-statuses)\n- [Send WhatsApp Notification Messages with Templates](/docs/whatsapp/tutorial/send-whatsapp-notification-messages-templates)\n- [Eligibility Badge Legend](/docs/content/eligibility-badge-legend)\n",
    "causes": "* The template is currently unavailable for use on the sending account.\n* The WhatsApp Business account is not eligible for MM Lite or has not completed onboarding.",
    "solutions": "* Check the account's MM Lite eligibility and complete onboarding in Meta Business Manager before sending the template again.\n* If the template is still unavailable after onboarding, contact Meta customer support to review access.\n* Review the template status in the Content Template Builder and make sure it is approved and ready to send.",
    "description": "This error appears when Twilio cannot use the selected template for the current WhatsApp Business account. Confirm that the account is eligible for MM Lite and that onboarding is complete before you try again.",
    "date_created": "2025-07-16T14:34:02.499Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63055,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Only marketing messages supported on MM Lite API",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to send a non-marketing WhatsApp message through MM Lite API. MM Lite API is designed for WhatsApp marketing messages, so route non-marketing messages through Cloud API instead.\n\n### Possible causes\n\n- Your application sent a non-marketing message to MM Lite API.\n- You routed WhatsApp traffic to MM Lite API when that traffic should have used Cloud API.\n\n### Possible solutions\n\n- Send only marketing messages through MM Lite API. If the message is not marketing, use Cloud API instead.\n- Review your message routing so non-marketing WhatsApp messages do not reach MM Lite API.\n\n#### Additional resources\n\n- [WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [Beta products and features](/en-us/products/beta)\n",
    "causes": "* Your application sent a non-marketing message to MM Lite API.\n* You routed WhatsApp traffic to MM Lite API when that traffic should have used Cloud API.",
    "solutions": "* Send only marketing messages through MM Lite API. If the message is not marketing, use Cloud API instead.\n* Review your message routing so non-marketing WhatsApp messages do not reach MM Lite API.",
    "description": "This error occurs when you try to send a non-marketing WhatsApp message through MM Lite API. MM Lite API is designed for WhatsApp marketing messages, so route non-marketing messages through Cloud API instead.",
    "date_created": "2025-07-16T14:17:09.928Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 63056,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Ineligible account type",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error means the WhatsApp Business Account connected to your request is not eligible to send messages through the Marketing Messages Lite API. It can also appear when the WABA uses the On-Behalf-Of model or when direct send messaging is not available for that WABA.\n\n### Possible causes\n\n- The WhatsApp Business Account you are using is not eligible for MM Lite API.\n- The WhatsApp Business Account uses the On-Behalf-Of model.\n- Direct send messaging is not available for this WABA right now.\n\n### Possible solutions\n\n- Onboard MM Lite for your account.\n- Accept the Marketing Messages API Terms of Service in Meta Business Manager. Open the WhatsApp Business Account in Console, go to Alerts, and have an admin approve the terms.\n- If you are using an On-Behalf-Of WABA, use a different WABA or transfer ownership of the WABA to the business customer.\n- If direct send access is not available, appeal the use case and try again after activation is restored.\n\n#### Additional resources\n\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [The WhatsApp Business Platform with Twilio: Best Practices and FAQs](/docs/whatsapp/best-practices-and-faqs)\n",
    "causes": "* The WhatsApp Business Account you are using is not eligible for MM Lite API.\n* The WhatsApp Business Account uses the On-Behalf-Of model.\n* Direct send messaging is not available for this WABA right now.",
    "solutions": "* Onboard MM Lite for your account.\n* Accept the Marketing Messages API Terms of Service in Meta Business Manager. Open the WhatsApp Business Account in Console, go to Alerts, and have an admin approve the terms.\n* If you are using an On-Behalf-Of WABA, use a different WABA or transfer ownership of the WABA to the business customer.\n* If direct send access is not available, appeal the use case and try again after activation is restored.",
    "description": "This error means the WhatsApp Business Account connected to your request is not eligible to send messages through the Marketing Messages Lite API. It can also appear when the WABA uses the On-Behalf-Of model or when direct send messaging is not available for that WABA.",
    "date_created": "2025-07-16T14:37:10.639Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 63057,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Template Submission Rate Limit Exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTemplates should only be submitted to WhatsApp 1 time. Multiple submissions within a short period of time can cause the approval to fail.\n\n### Possible causes\n\n- Submitting a single template multiple times\n\n### Possible solutions\n\n- Only submit a template for approval 1 time.\n",
    "causes": "* Submitting a single template multiple times",
    "solutions": "* Only submit a template for approval 1 time.",
    "description": "Templates should only be submitted to WhatsApp 1 time. Multiple submissions within a short period of time can cause the approval to fail.",
    "date_created": "2025-08-11T22:02:18.843Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 63058,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Business is restricted from messaging users in this country",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when you attempt to send a WhatsApp message to a recipient in a country or region where the WhatsApp Business Platform is not supported, or where Twilio blocks delivery due to sanctions or regulatory restrictions.\n\n### Possible causes\n\n- The `To` number is in a country or region where the WhatsApp Business Platform isn't supported (for example, Cuba, Iran, North Korea, Syria, and the Crimea/Donetsk/Luhansk regions).\n- Twilio blocks message delivery to recipients in certain countries and regions for compliance reasons (for WhatsApp and RCS, this includes all `To` numbers beginning with `+98` for Iran. Twilio also stopped delivering voice, messaging, and email traffic to recipients in Iran, Syria and Cuba).\n- Your business or use case falls under WhatsApp restrictions that prohibit usage in specific countries, preventing WhatsApp messaging for those markets.\n\n### Possible solutions\n\n- Confirm that the recipient's `To` country or region is supported by the WhatsApp Business Platform and isn't subject to Twilio delivery blocks. If it's unsupported or blocked, don't send WhatsApp messages to that number.\n- If your business is in a forbidden country or otherwise restricted by WhatsApp policy, evaluate compliant alternatives for that market (for example, select another supported channel where permissible and aligned with local rules).\n\n#### Additional resources\n\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [The WhatsApp Business Platform with Twilio: Best Practices and FAQs](/docs/whatsapp/best-practices-and-faqs)\n- [List of Blocked Countries](https://help.twilio.com/articles/360051177134)\n",
    "causes": "* The `To` number is in a country or region where the WhatsApp Business Platform isn't supported (for example, Cuba, Iran, North Korea, Syria, and the Crimea/Donetsk/Luhansk regions).\n* Twilio blocks message delivery to recipients in certain countries and regions for compliance reasons (for WhatsApp and RCS, this includes all `To` numbers beginning with `+98` for Iran. Twilio also stopped delivering voice, messaging, and email traffic to recipients in Iran, Syria and Cuba).\n* Your business or use case falls under WhatsApp restrictions that prohibit usage in specific countries, preventing WhatsApp messaging for those markets.",
    "solutions": "* Confirm that the recipient's `To` country or region is supported by the WhatsApp Business Platform and isn't subject to Twilio delivery blocks. If it's unsupported or blocked, don't send WhatsApp messages to that number.\n* If your business is in a forbidden country or otherwise restricted by WhatsApp policy, evaluate compliant alternatives for that market (for example, select another supported channel where permissible and aligned with local rules).",
    "description": "This error occurs when you attempt to send a WhatsApp message to a recipient in a country or region where the WhatsApp Business Platform is not supported, or where Twilio blocks delivery due to sanctions or regulatory restrictions.",
    "date_created": "2025-10-06T15:18:36.802Z",
    "last_updated": "2026-03-30T13:33:22+01:00"
  },
  {
    "code": 63059,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Phone number migrated to a different WhatsApp Business Account",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when the WhatsApp phone number in your request is associated with a different WhatsApp Business Account than the one you are using. Twilio uses `configuration.wabaId` to identify the WhatsApp Business Account for a sender.\n\n### Possible causes\n\n- The phone number is linked to a different WhatsApp Business Account than the one in your request.\n- The phone number was migrated or re-registered under a different WhatsApp Business Account, but your request still uses the previous WABA ID.\n- The `configuration.wabaId` value in your Sender request does not match the WhatsApp Business Account currently associated with the phone number.\n- The phone number is being registered or managed from the wrong Twilio account or subaccount. The phone number must belong to the account or subaccount where you register the WhatsApp sender.\n\n### Possible solutions\n\n- In your Meta Business Portfolio, find the phone number and confirm the WhatsApp Business Account currently associated with it. Use that WABA ID in every request for this sender.\n- If you recently migrated the number, make sure you selected the existing Meta Business Portfolio and completed registration in the correct WhatsApp Business Account. Selecting a different Meta Business Portfolio or WABA during registration results in an error.\n- If you are creating or updating the sender through the Senders API, verify that `configuration.wabaId` matches the sender's current WhatsApp Business Account.\n- Confirm that the phone number belongs to the same Twilio account or subaccount where you are registering the WhatsApp sender.\n- If you still cannot identify the correct WABA ID or complete the migration, contact Twilio Support.\n\n#### Additional resources\n- [Migrate phone numbers and WhatsApp senders](/docs/whatsapp/migrate-numbers-and-senders)\n- [Senders API for WhatsApp](/docs/whatsapp/api/senders)\n- [Register WhatsApp senders using the Senders API](/docs/whatsapp/register-senders-using-api)\n",
    "causes": "* The phone number is linked to a different WhatsApp Business Account than the one in your request.\n* The phone number was migrated or re-registered under a different WhatsApp Business Account, but your request still uses the previous WABA ID.\n* The `configuration.wabaId` value in your Sender request does not match the WhatsApp Business Account currently associated with the phone number.\n* The phone number is being registered or managed from the wrong Twilio account or subaccount. The phone number must belong to the account or subaccount where you register the WhatsApp sender.",
    "solutions": "* In your Meta Business Portfolio, find the phone number and confirm the WhatsApp Business Account currently associated with it. Use that WABA ID in every request for this sender.\n* If you recently migrated the number, make sure you selected the existing Meta Business Portfolio and completed registration in the correct WhatsApp Business Account. Selecting a different Meta Business Portfolio or WABA during registration results in an error.\n* If you are creating or updating the sender through the Senders API, verify that `configuration.wabaId` matches the sender's current WhatsApp Business Account.\n* Confirm that the phone number belongs to the same Twilio account or subaccount where you are registering the WhatsApp sender.\n* If you still cannot identify the correct WABA ID or complete the migration, contact Twilio Support.",
    "description": "This error occurs when the WhatsApp phone number in your request is associated with a different WhatsApp Business Account than the one you are using. Twilio uses `configuration.wabaId` to identify the WhatsApp Business Account for a sender.",
    "date_created": "2026-03-09T20:25:20-05:00",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63060,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "WhatsApp Display Name Rejected",
    "secondary_message": null,
    "product": "Whatsapp",
    "products_used": [
      "whatsapp"
    ],
    "docs": "\n## Description\n\nWhatsApp rejected the display name associated with your WhatsApp sender.\n\n### Possible causes\n\n- The proposed display name doesn't follow the Meta [display name guidelines](https://www.facebook.com/business/help/757569725593362).\n- The display name includes a person's name or employee identifier.\n- The display name contains the name of an unrelated business.\n- The display name uses an unacceptable format (for example, excessive capitalization or special characters).\n- The display name is inconsistent with your business's branding.\n\n### Possible solutions\n\n- Use the Meta workflow to determine the exact rejection reason, then update the display name accordingly. Twilio can't retrieve or display the rejection reason from Meta.\n- Compare your proposed display name to the Meta guidelines and confirm that it meets all requirements.\n- After updating the display name, resubmit it for review.\n\n#### Additional resources\n\n- [Meta rejection reasons for display names](https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/reference/phone_number_name_update#parameters)\n- [Meta display name guidelines](https://www.facebook.com/business/help/757569725593362)\n",
    "causes": "* The proposed display name doesn't follow the Meta [display name guidelines](https://www.facebook.com/business/help/757569725593362).\n* The display name includes a person's name or employee identifier.\n* The display name contains the name of an unrelated business.\n* The display name uses an unacceptable format (for example, excessive capitalization or special characters).\n* The display name is inconsistent with your business's branding.",
    "solutions": "* Use the Meta workflow to determine the exact rejection reason, then update the display name accordingly. Twilio can't retrieve or display the rejection reason from Meta.\n* Compare your proposed display name to the Meta guidelines and confirm that it meets all requirements.\n* After updating the display name, resubmit it for review.",
    "description": "WhatsApp rejected the display name associated with your WhatsApp sender.",
    "date_created": "2026-10-06T11:50:11-06:00",
    "last_updated": "2026-10-06T11:50:11-06:00"
  },
  {
    "code": 63061,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Apple Invitations is not enabled for this account",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nApple Invitations is not enabled for this account. Apple must manually enable the use of invitations and the use of custom invite templates.\n\n### Possible causes\n\n- The business isn't eligible to send invitation messages.\n- The template ID isn't allowed for the business.\n\n### Possible solutions\n\n- Confirm that Apple has approved invitations and the invite template you're using for your account.\n",
    "causes": "* The business isn't eligible to send invitation messages.\n* The template ID isn't allowed for the business.",
    "solutions": "* Confirm that Apple has approved invitations and the invite template you're using for your account.",
    "description": "Apple Invitations is not enabled for this account. Apple must manually enable the use of invitations and the use of custom invite templates.",
    "date_created": "2026-10-08T12:09:40-05:00",
    "last_updated": "2026-10-16T10:37:12-05:00"
  },
  {
    "code": 63100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Validation Error",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when a WhatsApp Sender request body is empty, contains invalid JSON, or includes one or more fields that do not meet the Senders API validation requirements. Review the response `message` value or the Error Log entry in Console to identify the field that failed validation.\n\n### Possible causes\n\n- The request body was empty.\n- The request body was not valid JSON for a request sent as `application/json`.\n- `senderId` was missing or was not provided in `whatsapp:<E.164_PHONE_NUMBER>` format.\n- `profile.name` was missing for a WhatsApp sender or did not meet Meta display name requirements.\n- A field used an unsupported value or format, such as `verificationMethod`, `callbackMethod`, `fallbackMethod`, `accountType`, `privacyUrl`, `accentColor`, or `vertical`.\n\n### Possible solutions\n\n- Send a non-empty JSON request body and correct any malformed JSON before retrying the request.\n- Set `senderId` in `whatsapp:<E.164_PHONE_NUMBER>` format, for example `whatsapp:+15017122661`.\n- Include `profile.name` and make sure it follows Meta display name requirements before you register the sender.\n- Use only documented enum values. Set `verificationMethod` to `sms` or `voice`. Set `callbackMethod` and `fallbackMethod` to `POST` or `PUT`. Set `accountType` to `ISV` or `ISVSubAccount` only when you need that setting.\n- Make sure `privacyUrl` is a publicly accessible HTTP or HTTPS URI associated with the sender.\n- Provide `accentColor` as a valid hex color and use one of the documented values for `vertical`.\n- Review the response `message` value and the Error Log entry for the exact validation failure, then correct that field and submit the request again.\n\n#### Additional resources\n\n- [Senders API for WhatsApp](/docs/whatsapp/api/senders)\n- [Register WhatsApp senders using the Senders API](/docs/whatsapp/register-senders-using-api)\n- [Error Logs event type](/docs/events/event-types/errors/error-logs)\n",
    "causes": "* The request body was empty.\n* The request body was not valid JSON for a request sent as `application/json`.\n* `senderId` was missing or was not provided in `whatsapp:<E.164_PHONE_NUMBER>` format.\n* `profile.name` was missing for a WhatsApp sender or did not meet Meta display name requirements.\n* A field used an unsupported value or format, such as `verificationMethod`, `callbackMethod`, `fallbackMethod`, `accountType`, `privacyUrl`, `accentColor`, or `vertical`.",
    "solutions": "* Send a non-empty JSON request body and correct any malformed JSON before retrying the request.\n* Set `senderId` in `whatsapp:<E.164_PHONE_NUMBER>` format, for example `whatsapp:+15017122661`.\n* Include `profile.name` and make sure it follows Meta display name requirements before you register the sender.\n* Use only documented enum values. Set `verificationMethod` to `sms` or `voice`. Set `callbackMethod` and `fallbackMethod` to `POST` or `PUT`. Set `accountType` to `ISV` or `ISVSubAccount` only when you need that setting.\n* Make sure `privacyUrl` is a publicly accessible HTTP or HTTPS URI associated with the sender.\n* Provide `accentColor` as a valid hex color and use one of the documented values for `vertical`.\n* Review the response `message` value and the Error Log entry for the exact validation failure, then correct that field and submit the request again.",
    "description": "This error occurs when a WhatsApp Sender request body is empty, contains invalid JSON, or includes one or more fields that do not meet the Senders API validation requirements. Review the response `message` value or the Error Log entry in Console to identify the field that failed validation.",
    "date_created": "2024-02-09T22:22:49Z",
    "last_updated": "2026-04-16T22:35:24+01:00"
  },
  {
    "code": 63101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "WABA ID provided is not valid or unable to be used",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nTwilio returns this error when the WhatsApp Business Account identified by `waba_id` can't be accessed or can't be used for the current account during WhatsApp sender onboarding. This can happen during WhatsApp Self Sign-up or when you register senders through Embedded Signup and the Senders API.\n\n### Possible causes\n\n- The WABA was deleted or the ID provided is incorrect.\n- The WABA was not shared with Twilio, or Twilio was not granted permission to manage it during signup.\n- The WABA was created outside of Twilio or is already associated with another provider.\n- The WABA is already linked to another Twilio account.\n- In an Embedded Signup integration, the Twilio Partner `solutionID` is missing or incorrect, so the signup flow does not complete WABA sharing as expected.\n\n### Possible solutions\n\n- Confirm that you are passing the correct `waba_id` to the Senders API. If this is the first sender for the account, use the WABA ID returned by Embedded Signup.\n- During Self Sign-up, review the permissions prompt and allow Twilio to manage your WABA. Complete the flow in the same browser and keep the signup window and Console open until registration finishes.\n- If you are registering your first WhatsApp sender in a Twilio account or subaccount, create a new WABA for Twilio. If you are adding another sender in the same account or subaccount, select the same WABA that is already connected to that account.\n- Do not select a WABA that was created outside of Twilio or already approved with another provider. Create a new WABA to use specifically with Twilio instead.\n- If you use Embedded Signup as a Tech Provider, verify that your Partner `solutionID` is configured correctly and that the flow shows that your company is working with Twilio to enable WhatsApp.\n- If the WABA is already linked to another Twilio account you own, use that account for registration. A mapped WABA remains connected to that subaccount unless all WhatsApp senders have been deleted from it.\n\n#### Additional resources\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [WhatsApp Tech Provider program integration guide](/docs/whatsapp/isv/tech-provider-program/integration-guide)\n- [Using WhatsApp Business Accounts with Twilio](/docs/whatsapp/tutorial/whatsapp-business-account)\n",
    "causes": "* The WABA was deleted or the ID provided is incorrect.\n* The WABA was not shared with Twilio, or Twilio was not granted permission to manage it during signup.\n* The WABA was created outside of Twilio or is already associated with another provider.\n* The WABA is already linked to another Twilio account.\n* In an Embedded Signup integration, the Twilio Partner `solutionID` is missing or incorrect, so the signup flow does not complete WABA sharing as expected.",
    "solutions": "* Confirm that you are passing the correct `waba_id` to the Senders API. If this is the first sender for the account, use the WABA ID returned by Embedded Signup.\n* During Self Sign-up, review the permissions prompt and allow Twilio to manage your WABA. Complete the flow in the same browser and keep the signup window and Console open until registration finishes.\n* If you are registering your first WhatsApp sender in a Twilio account or subaccount, create a new WABA for Twilio. If you are adding another sender in the same account or subaccount, select the same WABA that is already connected to that account.\n* Do not select a WABA that was created outside of Twilio or already approved with another provider. Create a new WABA to use specifically with Twilio instead.\n* If you use Embedded Signup as a Tech Provider, verify that your Partner `solutionID` is configured correctly and that the flow shows that your company is working with Twilio to enable WhatsApp.\n* If the WABA is already linked to another Twilio account you own, use that account for registration. A mapped WABA remains connected to that subaccount unless all WhatsApp senders have been deleted from it.",
    "description": "Twilio returns this error when the WhatsApp Business Account identified by `waba_id` can't be accessed or can't be used for the current account during WhatsApp sender onboarding. This can happen during WhatsApp Self Sign-up or when you register senders through Embedded Signup and the Senders API.",
    "date_created": "2024-02-09T22:24:40Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account already linked to another WABA ID",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when your Twilio account already has WhatsApp Senders linked to a WhatsApp Business Account (WABA) and you try to register or link a sender with a different WABA ID. Use one WABA for all WhatsApp senders in the same Twilio account or subaccount.\n\n### Possible causes\n\n- You selected a different WABA ID than the one already linked to the Twilio account.\n- You are registering an additional WhatsApp sender in the same Twilio account or subaccount and selected a different Meta Business Portfolio or WABA than the one used for the first sender.\n\n### Possible solutions\n\n- Use the same WABA ID that is already linked to the account when you register another WhatsApp sender.\n- If you need to move this account to a different WABA, delete all existing WhatsApp senders from the account first. The WABA mapping stays connected to the account until all WhatsApp senders have been deleted.\n- If you need to use a different WABA without removing existing senders, create a different Twilio subaccount and connect the new WABA there.\n\n#### Additional resources\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [Senders API - WhatsApp](/docs/whatsapp/api/senders)\n- [REST API: Subaccounts](/docs/iam/api/subaccounts)\n",
    "causes": "* You selected a different WABA ID than the one already linked to the Twilio account.\n* You are registering an additional WhatsApp sender in the same Twilio account or subaccount and selected a different Meta Business Portfolio or WABA than the one used for the first sender.",
    "solutions": "* Use the same WABA ID that is already linked to the account when you register another WhatsApp sender.\n* If you need to move this account to a different WABA, delete all existing WhatsApp senders from the account first. The WABA mapping stays connected to the account until all WhatsApp senders have been deleted.\n* If you need to use a different WABA without removing existing senders, create a different Twilio subaccount and connect the new WABA there.",
    "description": "This error occurs when your Twilio account already has WhatsApp Senders linked to a WhatsApp Business Account (WABA) and you try to register or link a sender with a different WABA ID. Use one WABA for all WhatsApp senders in the same Twilio account or subaccount.",
    "date_created": "2024-02-09T22:25:29Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Cannot assign payment method to WABA provided",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when Twilio cannot assign your WhatsApp Business Account (WABA) to Twilio's credit line during sender registration. Meta only allows a payment method on a WABA to be revoked, not fully removed. If you already use WhatsApp with another provider, create a new WABA to use with Twilio instead of selecting a WABA that was created outside of Twilio.\n\n### Possible causes\n\n- You selected a WABA that is already assigned to another payment method.\n- You selected a WABA that has been used with another provider or was created outside of Twilio.\n- You selected a different Meta Business Portfolio or a different WABA than the one already connected to this Twilio account when adding another sender. Twilio requires all WhatsApp senders in one account to use the same WABA.\n- Meta's credit line assignment service is temporarily unavailable.\n\n### Possible solutions\n\n- If you are registering your first sender or moving from another provider, select your existing Meta Business Portfolio and create a new WABA in Twilio during Self Sign-up or Embedded Signup.\n- If you are adding another sender to the same Twilio account, select the same WABA that you used for your first WhatsApp sender.\n- Wait a few minutes and retry the request if the failure appears temporary.\n- If the error continues, contact Twilio Support.\n\n#### Additional resources\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [Migrate phone numbers and WhatsApp senders](/docs/whatsapp/migrate-numbers-and-senders)\n- [Using WhatsApp Business Accounts with Twilio](/docs/whatsapp/tutorial/whatsapp-business-account)\n",
    "causes": "* You selected a WABA that is already assigned to another payment method.\n* You selected a WABA that has been used with another provider or was created outside of Twilio.\n* You selected a different Meta Business Portfolio or a different WABA than the one already connected to this Twilio account when adding another sender. Twilio requires all WhatsApp senders in one account to use the same WABA.\n* Meta's credit line assignment service is temporarily unavailable.",
    "solutions": "* If you are registering your first sender or moving from another provider, select your existing Meta Business Portfolio and create a new WABA in Twilio during Self Sign-up or Embedded Signup.\n* If you are adding another sender to the same Twilio account, select the same WABA that you used for your first WhatsApp sender.\n* Wait a few minutes and retry the request if the failure appears temporary.\n* If the error continues, contact Twilio Support.",
    "description": "This error occurs when Twilio cannot assign your WhatsApp Business Account (WABA) to Twilio's credit line during sender registration. Meta only allows a payment method on a WABA to be revoked, not fully removed. If you already use WhatsApp with another provider, create a new WABA to use with Twilio instead of selecting a WABA that was created outside of Twilio.",
    "date_created": "2024-02-09T22:26:13Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63104,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Maximum number of phone numbers reached for your WABA",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe maximum number of phone numbers allowed by Meta has been reached for your WABA and no additional WhatsApp Senders can be onboarded in this account. See [Meta's documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/phone-numbers/#registered-number-limits) for more information.\n\n### Possible causes\n\n- Your Meta Business Portfolio is not yet verified. Meta restricts unverified businesses to 2 phone numbers across all WABAs.\n- You have not sent enough WhatsApp messages with your existing WhatsApp Senders or your existing WhatsApp Senders are not high quality.\n- You have reached the maximum number of phone numbers that Meta allows without a support ticket.\n\n### Possible solutions\n\n- Use Meta's [WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager) to delete unused phone numbers and their corresponding WhatsApp Senders.\n- If you have created multiple WhatsApp Senders at once, send messages on existing WhatsApp Senders before creating additional ones to allow Meta's systems to automatically increase your phone number limit.\n- Use a different Twilio account or subaccount with a different WABA to create your WhatsApp Sender.\n- If you have access to Meta's [Direct Support](https://developers.facebook.com/documentation/business-messaging/whatsapp/support#enterprise-developer-support) system, open a ticket directly with Meta to increase your phone number limit. Otherwise, [open a ticket](http://help.twilio.com) with Twilio.\n",
    "causes": "* Your Meta Business Portfolio is not yet verified. Meta restricts unverified businesses to 2 phone numbers across all WABAs.\n* You have not sent enough WhatsApp messages with your existing WhatsApp Senders or your existing WhatsApp Senders are not high quality.\n* You have reached the maximum number of phone numbers that Meta allows without a support ticket.",
    "solutions": "* Use Meta's [WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager) to delete unused phone numbers and their corresponding WhatsApp Senders.\n* If you have created multiple WhatsApp Senders at once, send messages on existing WhatsApp Senders before creating additional ones to allow Meta's systems to automatically increase your phone number limit.\n* Use a different Twilio account or subaccount with a different WABA to create your WhatsApp Sender.\n* If you have access to Meta's [Direct Support](https://developers.facebook.com/documentation/business-messaging/whatsapp/support#enterprise-developer-support) system, open a ticket directly with Meta to increase your phone number limit. Otherwise, [open a ticket](http://help.twilio.com) with Twilio.",
    "description": "The maximum number of phone numbers allowed by Meta has been reached for your WABA and no additional WhatsApp Senders can be onboarded in this account. See [Meta's documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/phone-numbers/#registered-number-limits) for more information.",
    "date_created": "2025-03-01T00:01:00Z",
    "last_updated": "2026-10-08T08:58:55-07:00"
  },
  {
    "code": 63105,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Channel does not support this action",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when your API request asks a messaging channel to perform an action that the selected channel does not support. Review the channel you are using, the feature you requested, and any content or Message resource parameters included in the request.\n\n### Possible causes\n\n- You tried to use a feature that is available only on specific channels. For example, scheduled messaging is supported for SMS, MMS, RCS, and WhatsApp.\n- You submitted content or media that the selected channel does not support.\n- You used a product and channel combination that is not supported. For example, Conversations and Flex do not support RCS.\n\n### Possible solutions\n\n- Send the request through a channel that supports the action you need.\n- If you are sending rich content, choose a content type and media type that the destination channel supports.\n- If you are scheduling a message, use a supported channel and include the required `MessagingServiceSid`, `ScheduleType`, and `SendAt` parameters.\n- If the selected channel does not support the requested feature, remove the unsupported action from the request or redesign the flow for a supported channel.\n\n#### Additional resources\n- [Twilio Messaging Channels](/docs/messaging/channels)\n- [Content Types Overview](/docs/content/content-types-overview)\n- [Message Scheduling](/docs/messaging/features/message-scheduling)\n",
    "causes": "* You tried to use a feature that is available only on specific channels. For example, scheduled messaging is supported for SMS, MMS, RCS, and WhatsApp.\n* You submitted content or media that the selected channel does not support.\n* You used a product and channel combination that is not supported. For example, Conversations and Flex do not support RCS.",
    "solutions": "* Send the request through a channel that supports the action you need.\n* If you are sending rich content, choose a content type and media type that the destination channel supports.\n* If you are scheduling a message, use a supported channel and include the required `MessagingServiceSid`, `ScheduleType`, and `SendAt` parameters.\n* If the selected channel does not support the requested feature, remove the unsupported action from the request or redesign the flow for a supported channel.",
    "description": "This error occurs when your API request asks a messaging channel to perform an action that the selected channel does not support. Review the channel you are using, the feature you requested, and any content or Message resource parameters included in the request.",
    "date_created": "2024-07-01T17:34:57Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63106,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "phone_number is not a RCS capable number",
    "secondary_message": null,
    "product": "Branded Comms, Rcs",
    "products_used": [
      "messaging",
      "rcs"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when the `phone_number` you supplied is not RCS capable. RCS Business Messaging uses a branded sender profile rather than a traditional phone number, and RCS is compatible with Android devices and iOS devices running iOS 18 or later.\n\n### Possible causes\n\n- The recipient device or carrier does not support RCS, so Twilio cannot use that number for an RCS delivery. Twilio attempts RCS first only when the destination is RCS-capable, and it falls back to SMS when RCS is unavailable.\n- You are trying to use a Twilio number as an RCS test device. Twilio numbers cannot be used as RCS test devices.\n- The RCS sender has not been approved for messaging to that number yet. Before you message phone numbers that are not added as test devices, carrier approval is required.\n\n### Possible solutions\n\n- Send to a number tied to an RCS-capable device. Twilio supports RCS on Android devices and iOS\n  devices running iOS 18 or later.\n- Add the destination as a test device during RCS onboarding, or test with an Android device that you allowlist for onboarding.\n- Configure RCS plus SMS fallback with a Sender Pool when you want Twilio to deliver via RCS first and switch to SMS when RCS is unavailable.\n\n#### Additional resources\n\n- [RCS Business Messaging](/docs/rcs)\n- [Get started with branded RCS messaging](/docs/rcs/onboarding)\n- [Channel Fallback](/docs/bulk-messaging/channel-fallback)\n",
    "causes": "* The recipient device or carrier does not support RCS, so Twilio cannot use that number for an RCS delivery. Twilio attempts RCS first only when the destination is RCS-capable, and it falls back to SMS when RCS is unavailable.\n* You are trying to use a Twilio number as an RCS test device. Twilio numbers cannot be used as RCS test devices.\n* The RCS sender has not been approved for messaging to that number yet. Before you message phone numbers that are not added as test devices, carrier approval is required.",
    "solutions": "* Send to a number tied to an RCS-capable device. Twilio supports RCS on Android devices and iOS\n  devices running iOS 18 or later.\n* Add the destination as a test device during RCS onboarding, or test with an Android device that you allowlist for onboarding.\n* Configure RCS plus SMS fallback with a Sender Pool when you want Twilio to deliver via RCS first and switch to SMS when RCS is unavailable.",
    "description": "Twilio returns this error when the `phone_number` you supplied is not RCS capable. RCS Business Messaging uses a branded sender profile rather than a traditional phone number, and RCS is compatible with Android devices and iOS devices running iOS 18 or later.",
    "date_created": "2024-07-24T23:57:10Z",
    "last_updated": "2026-04-29T18:23:52+01:00"
  },
  {
    "code": 63107,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "phone_number must be a valid E.164 formatted phone number",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nYou provided a `phone_number` value that Twilio could not parse as a valid `E.164` phone number. Use a leading `+`, include the country code, and limit the number to a maximum of 15 digits.\n\n### Possible causes\n\n- The `phone_number` value does not start with `+` and a country code.\n- The `phone_number` value includes spaces, parentheses, hyphens, or other punctuation.\n- The `phone_number` value is too short, too long, or uses an invalid country code.\n- You passed a locally formatted number without converting it to `E.164`.\n\n### Possible solutions\n\n- Reformat `phone_number` as `E.164`, for example `+14155552671`.\n- Remove formatting characters so the value contains only the leading `+`, country code, and subscriber number.\n- If you collect numbers in local format, collect the country and normalize the number before sending the request.\n- Validate the number with Twilio Lookup before sending the request. A regular expression alone cannot confirm that a phone number is valid.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [What is E.164?](/docs/glossary/what-e164)\n- [Formatting and Validation with Lookup](/docs/lookup/v2-api/formatting-validation)\n",
    "causes": "* The `phone_number` value does not start with `+` and a country code.\n* The `phone_number` value includes spaces, parentheses, hyphens, or other punctuation.\n* The `phone_number` value is too short, too long, or uses an invalid country code.\n* You passed a locally formatted number without converting it to `E.164`.",
    "solutions": "* Reformat `phone_number` as `E.164`, for example `+14155552671`.\n* Remove formatting characters so the value contains only the leading `+`, country code, and subscriber number.\n* If you collect numbers in local format, collect the country and normalize the number before sending the request.\n* Validate the number with Twilio Lookup before sending the request. A regular expression alone cannot confirm that a phone number is valid.",
    "description": "You provided a `phone_number` value that Twilio could not parse as a valid `E.164` phone number. Use a leading `+`, include the country code, and limit the number to a maximum of 15 digits.",
    "date_created": "2024-07-24T23:59:17Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63108,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "Sender is not ready to add test device",
    "secondary_message": null,
    "product": "Branded Comms, Rcs",
    "products_used": [
      "messaging",
      "rcs"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when you try to add a test device to an RCS sender before the sender finishes getting ready in the Twilio Console. In the RCS onboarding flow, create the sender first, then use Add device to test this sender to invite a number in `E.164` format.\n\n### Possible causes\n\n- Twilio is still preparing the sender after creation or a recent update. The error tells you to wait briefly and try again, which points to a temporary readiness state.\n- The sender setup is not complete yet. Twilio requires you to finish the RCS sender setup before you can test it.\n\n### Possible solutions\n\n- Wait briefly, then try the action again.\n- Complete the RCS sender setup in the Console before you add a test device.\n- When you add the test device, enter a phone number in `E.164` format and accept the tester invitation on the device. Use a device and carrier that support RCS.\n\n#### Additional resources\n\n- [Get started with branded RCS messaging](/docs/rcs/onboarding)\n- [Send and receive RCS messages](/docs/rcs/send-an-rcs-message)\n- [Use RCS messaging with Studio](/docs/studio/tutorials/use-rcs-with-studio)\n",
    "causes": "* Twilio is still preparing the sender after creation or a recent update. The error tells you to wait briefly and try again, which points to a temporary readiness state.\n* The sender setup is not complete yet. Twilio requires you to finish the RCS sender setup before you can test it.",
    "solutions": "* Wait briefly, then try the action again.\n* Complete the RCS sender setup in the Console before you add a test device.\n* When you add the test device, enter a phone number in `E.164` format and accept the tester invitation on the device. Use a device and carrier that support RCS.",
    "description": "Twilio returns this error when you try to add a test device to an RCS sender before the sender finishes getting ready in the Twilio Console. In the RCS onboarding flow, create the sender first, then use Add device to test this sender to invite a number in `E.164` format.",
    "date_created": "2024-08-16T19:10:17Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63109,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "This Sender has been migrated into a different account",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to use or manage a Sender from a Twilio account that no longer owns it. The Sender was already onboarded or migrated to a different account.\n\n### Possible causes\n\n- The Sender was onboarded to a different account.\n- The Sender was migrated from one Twilio account to another.\n- You are still creating, retrieving, or updating the Sender from the original account after the migration completed. Twilio creates and returns Senders within the account that owns them.\n\n### Possible solutions\n\n- Confirm which Twilio account now owns the Sender. Use that account for sender management and related configuration.\n- If you need to move a WhatsApp sender between Twilio accounts, contact Twilio Support to request the migration.\n- Include the phone number, the source `Account SID` and associated `WABA ID`, and the destination `Account SID` and associated `WABA ID` in your support request.\n- Before you request the migration, make sure your business is verified on Meta. If the destination account already has a `WABA` associated with it, make sure both the source and destination accounts have WhatsApp senders.\n- If the Sender creation request succeeded but registration did not complete, review the Error Log in Console for the `Sender SID` and the recommended next steps. You can also monitor these failures with Alarms or Event Streams.\n\n#### Additional resources\n\n- [Migrate phone numbers and WhatsApp senders](/docs/whatsapp/migrate-numbers-and-senders)\n- [Senders API](/docs/whatsapp/api/senders)\n- [Twilio Support Center](https://help.twilio.com/)\n",
    "causes": "* The Sender was onboarded to a different account.\n* The Sender was migrated from one Twilio account to another.\n* You are still creating, retrieving, or updating the Sender from the original account after the migration completed. Twilio creates and returns Senders within the account that owns them.",
    "solutions": "* Confirm which Twilio account now owns the Sender. Use that account for sender management and related configuration.\n* If you need to move a WhatsApp sender between Twilio accounts, contact Twilio Support to request the migration.\n* Include the phone number, the source `Account SID` and associated `WABA ID`, and the destination `Account SID` and associated `WABA ID` in your support request.\n* Before you request the migration, make sure your business is verified on Meta. If the destination account already has a `WABA` associated with it, make sure both the source and destination accounts have WhatsApp senders.\n* If the Sender creation request succeeded but registration did not complete, review the Error Log in Console for the `Sender SID` and the recommended next steps. You can also monitor these failures with Alarms or Event Streams.",
    "description": "This error occurs when you try to use or manage a Sender from a Twilio account that no longer owns it. The Sender was already onboarded or migrated to a different account.",
    "date_created": "2024-11-07T19:26:19Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 63110,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The phone number registration error",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when Twilio cannot finish registering a WhatsApp sender because the phone number is already registered with WhatsApp. It can also appear when Meta does not complete the request code step during registration.\n\n### Possible causes\n\n- The phone number is already registered on WhatsApp.\n- Meta request code failed during registration.\n\n### Possible solutions\n\n- Check that the phone number is not already registered for the account or any subaccounts.\n- If the number is registered with WhatsApp or the WhatsApp Business app, delete that WhatsApp account before trying again.\n- If the number is registered with another WhatsApp Business Platform, turn off Two-Factor Authentication in WhatsApp Manager and register the number again.\n- If Meta request code failed, wait 5 minutes before trying again.\n- If the number was registered with WhatsApp separately from Twilio, remove the number from that registration before retrying.\n\n#### Additional resources\n\n- [Register WhatsApp senders using the Senders API](/docs/whatsapp/register-senders-using-api)\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [Migrate phone numbers and WhatsApp senders](/docs/whatsapp/migrate-numbers-and-senders)\n",
    "causes": "* The phone number is already registered on WhatsApp.\n* Meta request code failed during registration.",
    "solutions": "* Check that the phone number is not already registered for the account or any subaccounts.\n* If the number is registered with WhatsApp or the WhatsApp Business app, delete that WhatsApp account before trying again.\n* If the number is registered with another WhatsApp Business Platform, turn off Two-Factor Authentication in WhatsApp Manager and register the number again.\n* If Meta request code failed, wait 5 minutes before trying again.\n* If the number was registered with WhatsApp separately from Twilio, remove the number from that registration before retrying.",
    "description": "This error appears when Twilio cannot finish registering a WhatsApp sender because the phone number is already registered with WhatsApp. It can also appear when Meta does not complete the request code step during registration.",
    "date_created": "2025-03-01T00:02:57Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 63111,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sender's phone number or WABA returned \"not found\"",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when Meta cannot find the sender phone number or the WhatsApp Business Account (WABA) linked to your Twilio account during WhatsApp sender registration or management. A WABA is required to register a WhatsApp sender, and each Twilio account or subaccount can be connected to only one WABA.\n\n### Possible causes\n\n- The phone number was deleted from the WABA linked to this account.\n- The WABA linked to this account was deleted in Meta.\n- The WABA is no longer shared with Twilio.\n- You tried to register the sender with a different WABA than the one already linked to this Twilio account. Twilio supports one WABA per account or subaccount, and selecting a different WABA for another sender in the same account results in an error.\n\n### Possible solutions\n\n- Confirm that the phone number still exists in the WABA linked to this Twilio account.\n- Confirm that the WABA still exists and is the same WABA already connected to this account. If you are adding another sender in the same account or subaccount, select the same WABA you used for your first WhatsApp sender.\n- If the sender record no longer matches the phone number or WABA in Meta, delete the sender and register it again.\n- If you re-register the same number after deleting the sender, turn off Two-Factor Authentication in WhatsApp Manager for that number before you try again.\n\n#### Additional resources\n\n- [Senders API for WhatsApp](/docs/whatsapp/api/senders)\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [Migrate phone numbers and WhatsApp senders](/docs/whatsapp/migrate-numbers-and-senders)\n",
    "causes": "* The phone number was deleted from the WABA linked to this account.\n* The WABA linked to this account was deleted in Meta.\n* The WABA is no longer shared with Twilio.\n* You tried to register the sender with a different WABA than the one already linked to this Twilio account. Twilio supports one WABA per account or subaccount, and selecting a different WABA for another sender in the same account results in an error.",
    "solutions": "* Confirm that the phone number still exists in the WABA linked to this Twilio account.\n* Confirm that the WABA still exists and is the same WABA already connected to this account. If you are adding another sender in the same account or subaccount, select the same WABA you used for your first WhatsApp sender.\n* If the sender record no longer matches the phone number or WABA in Meta, delete the sender and register it again.\n* If you re-register the same number after deleting the sender, turn off Two-Factor Authentication in WhatsApp Manager for that number before you try again.",
    "description": "This error occurs when Meta cannot find the sender phone number or the WhatsApp Business Account (WABA) linked to your Twilio account during WhatsApp sender registration or management. A WABA is required to register a WhatsApp sender, and each Twilio account or subaccount can be connected to only one WABA.",
    "date_created": "2024-11-07T19:28:21Z",
    "last_updated": "2026-04-21T16:43:17-05:00"
  },
  {
    "code": 63112,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Meta disabled the WhatsApp Business Account connected to this Sender",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nThis error occurs when Meta disables the Meta Business Portfolio or WhatsApp Business Account (WABA) linked to your WhatsApp sender, or when Meta business verification for that business is still pending. If you deleted a sender and are registering the same number again, leaving Two-Factor Authentication enabled in WhatsApp Manager can also prevent the sender from being registered.\n\n### Possible causes\n\n- Meta disabled the connected business account because of policy violations, spam or unsolicited messaging, inappropriate content, or repeated user reports.\n- Meta business verification is incomplete or still pending, which prevents you from moving into production with WhatsApp Business API features.\n- Required information or documents were not fully submitted during business verification.\n- You deleted a WhatsApp sender and tried to re-register the same number without turning off Two-Factor Authentication in WhatsApp Manager.\n\n### Possible solutions\n\n- In Meta's Security Center, check your business verification status and complete any pending verification steps before you retry registration or move the sender into production.\n- In Meta Business settings, review the notifications for the connected WABA and resolve the issue Meta identified before you retry onboarding or sending.\n- Update your messaging program so it complies with WhatsApp business policies and approved use cases before you submit an appeal or try again.\n- If you are re-registering a number after deleting a sender, open WhatsApp Manager and turn off Two-Factor Authentication for that number first.\n- If the sender still cannot be registered after you complete verification and remove Two-Factor Authentication, contact Support for help with the remaining registration issue.\n\n#### Additional resources\n\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [Senders API for WhatsApp](/docs/whatsapp/api/senders)\n- [What use cases and businesses are allowed to use WhatsApp on Twilio?](https://help.twilio.com/articles/360039737793)\n",
    "causes": "* Meta disabled the connected business account because of policy violations, spam or unsolicited messaging, inappropriate content, or repeated user reports.\n* Meta business verification is incomplete or still pending, which prevents you from moving into production with WhatsApp Business API features.\n* Required information or documents were not fully submitted during business verification.\n* You deleted a WhatsApp sender and tried to re-register the same number without turning off Two-Factor Authentication in WhatsApp Manager.",
    "solutions": "* In Meta's Security Center, check your business verification status and complete any pending verification steps before you retry registration or move the sender into production.\n* In Meta Business settings, review the notifications for the connected WABA and resolve the issue Meta identified before you retry onboarding or sending.\n* Update your messaging program so it complies with WhatsApp business policies and approved use cases before you submit an appeal or try again.\n* If you are re-registering a number after deleting a sender, open WhatsApp Manager and turn off Two-Factor Authentication for that number first.\n* If the sender still cannot be registered after you complete verification and remove Two-Factor Authentication, contact Support for help with the remaining registration issue.",
    "description": "This error occurs when Meta disables the Meta Business Portfolio or WhatsApp Business Account (WABA) linked to your WhatsApp sender, or when Meta business verification for that business is still pending. If you deleted a sender and are registering the same number again, leaving Two-Factor Authentication enabled in WhatsApp Manager can also prevent the sender from being registered.",
    "date_created": "2024-11-07T19:35:01Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63113,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sender Cannot Be Verified",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n\n## Description\n\nThis error occurs during WhatsApp sender registration when the verification code cannot verify ownership of the sender. Request a new verification code and complete verification again through the Senders API.\n\n### Possible causes\n\n- The verification code submitted in `configuration.verification_code` is incorrect.\n- Too many verification attempts were made in a short period, which can prevent the sender from being verified with the current code.\n- OTP delivery was delayed or the phone number could not receive the SMS or voice verification needed to complete registration.\n\n### Possible solutions\n\n- Wait a few minutes, then request a new verification code by making another `POST /v2/Channels/Senders` request.\n- Submit the new code with the correct `configuration.verification_method` and `configuration.verification_code` in `POST /v2/Channels/Senders/{Sid}`.\n- If SMS verification does not work, try the `voice` verification method when the phone number can receive voice OTPs.\n- Confirm the phone number can receive inbound OTPs. Numbers behind IVR or computer-operated systems, or numbers that only support outbound traffic, cannot complete manual OTP verification.\n- Fetch the sender and confirm that `status` changes to `ONLINE` after registration completes. If it does not, review the sender error logs and follow the recommended actions.\n\n#### Additional resources\n- [Register WhatsApp senders using the Senders API](/docs/whatsapp/register-senders-using-api)\n- [Senders API - WhatsApp](/docs/whatsapp/api/senders)\n- [Migrate phone numbers and WhatsApp senders](/docs/whatsapp/migrate-numbers-and-senders)\n",
    "causes": "* The verification code submitted in `configuration.verification_code` is incorrect.\n* Too many verification attempts were made in a short period, which can prevent the sender from being verified with the current code.\n* OTP delivery was delayed or the phone number could not receive the SMS or voice verification needed to complete registration.",
    "solutions": "* Wait a few minutes, then request a new verification code by making another `POST /v2/Channels/Senders` request.\n* Submit the new code with the correct `configuration.verification_method` and `configuration.verification_code` in `POST /v2/Channels/Senders/{Sid}`.\n* If SMS verification does not work, try the `voice` verification method when the phone number can receive voice OTPs.\n* Confirm the phone number can receive inbound OTPs. Numbers behind IVR or computer-operated systems, or numbers that only support outbound traffic, cannot complete manual OTP verification.\n* Fetch the sender and confirm that `status` changes to `ONLINE` after registration completes. If it does not, review the sender error logs and follow the recommended actions.",
    "description": "This error occurs during WhatsApp sender registration when the verification code cannot verify ownership of the sender. Request a new verification code and complete verification again through the Senders API.",
    "date_created": "2025-03-01T00:05:01Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 63114,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Too Many Verification Codes",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when a WhatsApp sender verification flow has reached a verification code limit. During WhatsApp sender registration, the verification code can be shown in the Twilio Console or delivered by SMS, voice call, or email, depending on the phone number type and verification method.\n\n### Possible causes\n\n- You requested or entered verification codes too many times during the same WhatsApp sender registration flow.\n- You are trying to complete verification with a code from a previous attempt instead of the current registration flow. This is an inference based on the WhatsApp sender registration flow.\n\n### Possible solutions\n\n- Wait and try again.\n- Restart the WhatsApp sender registration flow and use the current verification code shown in the Twilio Console or delivered to your number by SMS, voice call, or email.\n- If the error continues, check the Sender error log in the Twilio Console and monitor the registration with Alarms or Event Streams.\n\n#### Additional resources\n\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [Senders API - WhatsApp](/docs/whatsapp/api/senders)\n",
    "causes": "* You requested or entered verification codes too many times during the same WhatsApp sender registration flow.\n* You are trying to complete verification with a code from a previous attempt instead of the current registration flow. This is an inference based on the WhatsApp sender registration flow.",
    "solutions": "* Wait and try again.\n* Restart the WhatsApp sender registration flow and use the current verification code shown in the Twilio Console or delivered to your number by SMS, voice call, or email.\n* If the error continues, check the Sender error log in the Twilio Console and monitor the registration with Alarms or Event Streams.",
    "description": "Twilio returns this error when a WhatsApp sender verification flow has reached a verification code limit. During WhatsApp sender registration, the verification code can be shown in the Twilio Console or delivered by SMS, voice call, or email, depending on the phone number type and verification method.",
    "date_created": "2025-03-01T00:06:30Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63115,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Could not update Whatsapp business profile on the WhatsApp Sender",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nWhatsApp rejects the business profile update when the sender is not ready for profile changes. You update WhatsApp business profile details from the Messaging section of Twilio Console after the sender is available.\n\n### Possible causes\n\n- The WhatsApp sender is `OFFLINE`, so WhatsApp does not accept the profile update yet.\n\n### Possible solutions\n\n- Verify the phone number status in WhatsApp Manager and make sure the sender is `ONLINE` before you update the business profile.\n- If you just registered the sender, wait a few minutes for the status to change from `OFFLINE` to `ONLINE`.\n- Check the Error logs for sender registration issues and follow the recommended actions. If the sender still shows `OFFLINE`, contact Twilio Support.\n\n#### Additional resources\n\n- [Editing your WhatsApp Business Profile](/docs/whatsapp/editing-your-whatsapp-business-profile)\n- [Senders API - WhatsApp](/docs/whatsapp/api/senders)\n- [Register WhatsApp senders using the Senders API](/docs/whatsapp/register-senders-using-api)\n",
    "causes": "* The WhatsApp sender is `OFFLINE`, so WhatsApp does not accept the profile update yet.",
    "solutions": "* Verify the phone number status in WhatsApp Manager and make sure the sender is `ONLINE` before you update the business profile.\n* If you just registered the sender, wait a few minutes for the status to change from `OFFLINE` to `ONLINE`.\n* Check the Error logs for sender registration issues and follow the recommended actions. If the sender still shows `OFFLINE`, contact Twilio Support.",
    "description": "WhatsApp rejects the business profile update when the sender is not ready for profile changes. You update WhatsApp business profile details from the Messaging section of Twilio Console after the sender is available.",
    "date_created": "2025-07-22T18:01:54.246Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 63116,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "WhatsApp Sender failed to be automatically registered as OTP was not received",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nOTP required to automatically verify and register WhatsApp Sender was not received by Twilio despite a successful request to Meta\n\n### Possible causes\n\n- An internal error at Meta is preventing the OTP from being sent.\n- SMS deliverability issues between Meta and Twilio are causing the code to be lost before reaching Twilio.\n\n### Possible solutions\n\n- Retry your request later.\n- Request the OTP to be sent via a voice call and manually verify it using the [Senders API](/docs/whatsapp/api/senders#verify-a-whatsapp-sender).\n- Submit a support ticket to Twilio for further investigation. Twilio can escalate the issue to Meta if necessary, as they can adjust how the OTP is sent, potentially improving deliverability.\n",
    "causes": "* An internal error at Meta is preventing the OTP from being sent.\n* SMS deliverability issues between Meta and Twilio are causing the code to be lost before reaching Twilio.",
    "solutions": "* Retry your request later.\n* Request the OTP to be sent via a voice call and manually verify it using the [Senders API](/docs/whatsapp/api/senders#verify-a-whatsapp-sender).\n* Submit a support ticket to Twilio for further investigation. Twilio can escalate the issue to Meta if necessary, as they can adjust how the OTP is sent, potentially improving deliverability.",
    "description": "OTP required to automatically verify and register WhatsApp Sender was not received by Twilio despite a successful request to Meta",
    "date_created": "2025-06-30T18:10:27.165Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 63117,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Downstream Service Unavailable at the moment",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means Twilio could not complete the request because one or more downstream services were unavailable and the request returned a 503 response. A 503 response indicates the service is temporarily unavailable.\n\n### Possible causes\n\n- A downstream dependency was down or experiencing a transient issue when Twilio processed the request.\n- A temporary Twilio service unavailability prevented the request from completing.\n\n### Possible solutions\n\n- Retry the request after a short delay. Twilio treats 503 as a temporary service unavailability and recommends trying again later.\n- Check the `Error Logs` in the Twilio Console for the affected request, timestamp, and resource SID so you can confirm where the failure occurred.\n- If this happens during WhatsApp sender creation or registration, set up an `Alarm` or `Event Stream` to track repeat failures and capture the error log details.\n\n#### Additional resources\n\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n- [Senders API - WhatsApp](/docs/whatsapp/api/senders)\n",
    "causes": "* A downstream dependency was down or experiencing a transient issue when Twilio processed the request.\n* A temporary Twilio service unavailability prevented the request from completing.",
    "solutions": "* Retry the request after a short delay. Twilio treats 503 as a temporary service unavailability and recommends trying again later.\n* Check the `Error Logs` in the Twilio Console for the affected request, timestamp, and resource SID so you can confirm where the failure occurred.\n* If this happens during WhatsApp sender creation or registration, set up an `Alarm` or `Event Stream` to track repeat failures and capture the error log details.",
    "description": "This error means Twilio could not complete the request because one or more downstream services were unavailable and the request returned a 503 response. A 503 response indicates the service is temporarily unavailable.",
    "date_created": "2025-07-22T17:44:22.995Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 63118,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "PIN not retrieved due to sender configuration not being found",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp",
    "products_used": [
      "messaging",
      "whatsapp"
    ],
    "docs": "\n## Description\n\nTwilio couldn't retrieve the WhatsApp two-step PIN because the sender configuration tied to your Verify WhatsApp request was not found. Verify WhatsApp requires you to provide a WhatsApp Sender, and you must connect that sender through a Messaging Service in the Verify Service configuration.\n\n### Possible causes\n\n- The Verify WhatsApp Sender or its connected Messaging Service was not configured.\n- The WhatsApp Sender was not created or was not associated with a WhatsApp Business Account.\n- The WhatsApp Business Account does not meet Meta's commerce policy, so Twilio Verify cannot use it for WhatsApp OTP delivery.\n\n### Possible solutions\n\n- Create or select a WhatsApp Sender, then add its `Messaging Service SID` in the WhatsApp tab of your Verify Service configuration.\n- Confirm the sender is listed under Messaging > Senders > WhatsApp Senders and is linked to a WhatsApp Business Account.\n- If your WhatsApp Business Account does not meet Meta's commerce policy, use another verification channel such as Verify SMS.\n- If the sender configuration still cannot be found, contact Twilio Support.\n\n#### Additional resources\n\n- [Verify WhatsApp Overview](/docs/verify/whatsapp)\n- [Bring Your Own WhatsApp Sender](/docs/verify/whatsapp/byo)\n- [Senders API - WhatsApp](/docs/whatsapp/api/senders)\n",
    "causes": "* The Verify WhatsApp Sender or its connected Messaging Service was not configured.\n* The WhatsApp Sender was not created or was not associated with a WhatsApp Business Account.\n* The WhatsApp Business Account does not meet Meta's commerce policy, so Twilio Verify cannot use it for WhatsApp OTP delivery.",
    "solutions": "* Create or select a WhatsApp Sender, then add its `Messaging Service SID` in the WhatsApp tab of your Verify Service configuration.\n* Confirm the sender is listed under Messaging > Senders > WhatsApp Senders and is linked to a WhatsApp Business Account.\n* If your WhatsApp Business Account does not meet Meta's commerce policy, use another verification channel such as Verify SMS.\n* If the sender configuration still cannot be found, contact Twilio Support.",
    "description": "Twilio couldn't retrieve the WhatsApp two-step PIN because the sender configuration tied to your Verify WhatsApp request was not found. Verify WhatsApp requires you to provide a WhatsApp Sender, and you must connect that sender through a Messaging Service in the Verify Service configuration.",
    "date_created": "2025-10-14T19:04:27.579Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 63119,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Meta rate limit exceeded",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when Meta rate limits requests for the same WABA.\n\n### Possible causes\n\n- Multiple requests for the same WABA.\n\n### Possible solutions\n\n- Wait a bit and try again.\n\n#### Additional resources\n\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n",
    "causes": "* Multiple requests for the same WABA.",
    "solutions": "* Wait a bit and try again.",
    "description": "Twilio returns this error when Meta rate limits requests for the same WABA.",
    "date_created": "2025-12-03T15:27:09.285Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 63120,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Meta Business Account locked. Contact Meta Business Support to unlock",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when you try to register or update a WhatsApp sender and the associated Meta Business Account or WABA has been locked or restricted by Meta. While the restriction is in place, sender registration, updates, and other management operations cannot continue.\n\n### Possible causes\n\n- The Meta Business Account or WABA is locked or restricted by Meta.\n\n### Possible solutions\n\n- Contact Meta Business Support to unlock your account before you continue.\n- Retry the registration or update after Meta removes the restriction.\n\n#### Additional resources\n\n- [Register WhatsApp senders - ISVs](/docs/whatsapp/isv/register-senders)\n- [Register WhatsApp senders using Self Sign-up](/docs/whatsapp/self-sign-up)\n- [Overview of the WhatsApp Business Platform with Twilio](/docs/whatsapp/api)\n",
    "causes": "* The Meta Business Account or WABA is locked or restricted by Meta.",
    "solutions": "* Contact Meta Business Support to unlock your account before you continue.\n* Retry the registration or update after Meta removes the restriction.",
    "description": "This error appears when you try to register or update a WhatsApp sender and the associated Meta Business Account or WABA has been locked or restricted by Meta. While the restriction is in place, sender registration, updates, and other management operations cannot continue.",
    "date_created": "2026-01-20T22:50:41.145Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 63121,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Error for Message sent with Utility Direct Send",
    "secondary_message": null,
    "product": "Branded Comms, Whatsapp, Content",
    "products_used": [
      "messaging",
      "whatsapp",
      "content"
    ],
    "docs": "\n## Description\n\nTwilio couldn't send your WhatsApp Utility Direct Send message because the provider-side template name generated from the Content Template is already in use by a WhatsApp template that Utility Direct Send doesn't manage. Twilio can't reuse the existing template because it can't verify that the content or lifecycle matches the Utility Direct Send template.\n\n### Possible causes\n\n- A template with the same provider-side name was created directly in WhatsApp Manager.\n- Another application or integration created the WhatsApp template before Utility Direct Send attempted to create and manage it.\n\n### Possible solutions\n\n- In WhatsApp Manager, search for the conflicting provider-side template name and identify which system created it. Don't delete templates that production messaging uses.\n- If you need to keep the existing WhatsApp template, duplicate the source Content Template in either console:\n  - In the [Twilio Console](https://1console.twilio.com/), go to **Communications** > **Messaging** > **Templates**. Find the template, open its **Actions** menu, and select **Duplicate template**.\r\n  - In the [legacy Twilio Console](https://console.twilio.com/us1/develop/sms/content-template-builder), go to **Messaging** > **Content Template Builder**. Find the template, open its actions menu (⋮), and select **Duplicate**.\n- Give the duplicate a distinct template name. The duplicate receives a new Template SID, which Utility Direct Send uses when it generates the provider-side template name.\n- Copy the duplicate's Template SID and use it as the message request's `ContentSid`, then retry the send.\n- If you can't identify the conflicting template or the error continues with the new `ContentSid`, [contact Twilio Support](https://help.twilio.com/) and include the Account SID, WhatsApp sender, Message SID, and Content SID.\n\n### Additional resources\n\n- [Manage templates with the Content Template Builder](/docs/content/manage-your-templates-with-the-content-template-builder)\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Content API FAQs and troubleshooting](/docs/content/faqs-and-troubleshooting)\n",
    "causes": "* A template with the same provider-side name was created directly in WhatsApp Manager.\n* Another application or integration created the WhatsApp template before Utility Direct Send attempted to create and manage it.",
    "solutions": "* In WhatsApp Manager, search for the conflicting provider-side template name and identify which system created it. Don't delete templates that production messaging uses.\n* If you need to keep the existing WhatsApp template, duplicate the source Content Template in either console:\n  * In the [Twilio Console](https://1console.twilio.com/), go to **Communications** > **Messaging** > **Templates**. Find the template, open its **Actions** menu, and select **Duplicate template**.\n  * In the [legacy Twilio Console](https://console.twilio.com/us1/develop/sms/content-template-builder), go to **Messaging** > **Content Template Builder**. Find the template, open its actions menu (⋮), and select **Duplicate**.\n* Give the duplicate a distinct template name. The duplicate receives a new Template SID, which Utility Direct Send uses when it generates the provider-side template name.\n* Copy the duplicate's Template SID and use it as the message request's `ContentSid`, then retry the send.\n* If you can't identify the conflicting template or the error continues with the new `ContentSid`, [contact Twilio Support](https://help.twilio.com/) and include the Account SID, WhatsApp sender, Message SID, and Content SID.",
    "description": "Twilio couldn't send your WhatsApp Utility Direct Send message because the provider-side template name generated from the Content Template is already in use by a WhatsApp template that Utility Direct Send doesn't manage. Twilio can't reuse the existing template because it can't verify that the content or lifecycle matches the Utility Direct Send template.",
    "date_created": "2026-08-20T07:05:09-07:00",
    "last_updated": "2026-09-25T13:35:58-04:00"
  },
  {
    "code": 64001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Configuration Error",
    "secondary_message": "Failed to retrieve connector configuration.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Pay: Configuration Error\n\nA 64001 Error is an indication there is something wrong with the `<Pay>` connector configuration.\n\n### Possible causes\n\n- Credentials were removed from configuration.\n- Credentials were modified and are not matching the Connector Type.\n- Configuration is missing Credentials.\n- Configuration contains invalid attributes.\n\n### Possible solutions\n\n- Recreate your `<Pay>` connector configuration.\n",
    "causes": "* Credentials were removed from configuration.\n* Credentials were modified and are not matching the Connector Type.\n* Configuration is missing Credentials.\n* Configuration contains invalid attributes.",
    "solutions": "* Recreate your `<Pay>` connector configuration.",
    "description": "",
    "date_created": "2019-02-26T21:51:39Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Pay: Service unavailable.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Pay: Service unavailable.\n\nA 64002 Error is an indication that there is an internal server error and some internal services failed.\n\n### Possible causes\n\n- Some internal services in Twilio were not available.\n- Payment provider not available.\n\n### Possible solutions\n\n- Try to retry the request.\n- If the error persists, please [contact us](/help/contact) and we can help you resolve the issue.\n- Note the time of the error and what you were trying to do when it occurred.\n",
    "causes": "* Some internal services in Twilio were not available.\n* Payment provider not available.",
    "solutions": "* Try to retry the request.\n* If the error persists, please [contact us](/help/contact) and we can help you resolve the issue.\n* Note the time of the error and what you were trying to do when it occurred.",
    "description": "",
    "date_created": "2019-02-26T21:53:28Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Invalid charge amount.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Pay: Invalid charge amount.\n\nA 64003 Error is an indication that the charge amount is invalid.\n\n### Possible causes\n\n- The chargeAmount attribute has a number of decimals that does not conform to the currency type. For example, more than 2 decimals were provided for US Dollars .\n- chargeAmount attribute is negative.\n\n### Possible solutions\n\n- Make sure the charge amount has correct number of decimal values.\n- Make sure the charge amount is a positive value.\n",
    "causes": "* The chargeAmount attribute has a number of decimals that does not conform to the currency type. For example, more than 2 decimals were provided for US Dollars .\n* chargeAmount attribute is negative.",
    "solutions": "* Make sure the charge amount has correct number of decimal values.\n* Make sure the charge amount is a positive value.",
    "description": "",
    "date_created": "2019-02-26T21:54:09Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Pay: Invalid paymentConnector attribute in TwiML.",
    "secondary_message": "paymentConnector attribute provided does not reference a connector configuration.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64004 Error is an indication that the value provided with paymentConnector attribute of Pay verb does not match to a Pay Connector configuration. See the [Pay Verb](/docs/voice/twiml/pay#paymentconnector) API Reference.\n\n### Possible solutions\n\n- Make sure that the paymentConnector matches a Unique Name in the `<Pay>` Connector. Go to [this page](/console/voice/pay-connectors) for a list of your Connectors.\n",
    "causes": null,
    "solutions": "* Make sure that the paymentConnector matches a Unique Name in the `<Pay>` Connector. Go to [this page](/console/voice/pay-connectors) for a list of your Connectors.",
    "description": "A 64004 Error is an indication that the value provided with paymentConnector attribute of Pay verb does not match to a Pay Connector configuration. See the [Pay Verb](/docs/voice/twiml/pay#paymentconnector) API Reference.",
    "date_created": "2019-02-26T21:55:41Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Connector does not support tokenization.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Pay: Connector does not support tokenization.\n\nA 64005 Error is an indication that the request to tokenize credit card failed because the connector does not support tokenization.\n\n### Possible causes\n\n- The paymentConnector attribute points to Connector that does not support tokenization.\n- The chargeAmount attribute in the Pay Verb TwiML was 0 (or omitted) and you intended to charge.\n\n### Possible solutions\n\n- Make sure that the paymentConnector matches a `<Pay>` Connector that supports tokenization.\n- If a charge was intended, please change the chargeAmount attribute and provided a positive value. Please see [this API documentation](/docs/voice/twiml/pay#chargeamount) for more details.\n",
    "causes": "* The paymentConnector attribute points to Connector that does not support tokenization.\n* The chargeAmount attribute in the Pay Verb TwiML was 0 (or omitted) and you intended to charge.",
    "solutions": "* Make sure that the paymentConnector matches a `<Pay>` Connector that supports tokenization.\n* If a charge was intended, please change the chargeAmount attribute and provided a positive value. Please see [this API documentation](/docs/voice/twiml/pay#chargeamount) for more details.",
    "description": "",
    "date_created": "2019-02-26T21:56:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Connector does not support token type.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Pay: Connector does not support token type.\n\nError is an indication that the request to tokenize credit card failed because the connector does not support tokenization.\n\nA 64006 Error is an indication that the request to tokenize of a particular type is not supported by the `<Pay>` connector. For instance, tokenType=\"one-time\" was used but only tokenType=\"reusable\" is supported.\n\n### Possible causes\n\n- The paymentConnector attribute points to a Connector that does not support the requested type of tokenization.\n\n### Possible solutions\n\n- Make sure that the paymentConnector matches a `<Pay>` Connector that supports the tokenization type you want.\n- Make sure you specify the tokenType that matches what you want to perform.\n",
    "causes": "* The paymentConnector attribute points to a Connector that does not support the requested type of tokenization.",
    "solutions": "* Make sure that the paymentConnector matches a `<Pay>` Connector that supports the tokenization type you want.\n* Make sure you specify the tokenType that matches what you want to perform.",
    "description": "",
    "date_created": "2019-02-26T21:57:11Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Connector does not support creating charge.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Pay: Connector does not support creating charge.\n\nError is an indication that the request to tokenize credit card failed because the connector does not support tokenization.\n\nA 64007 Error is an indication that the request to create a charge on the credit card failed because the connector does not support making charges.\n\n### Possible causes\n\n- The paymentConnector attribute points to a Connector that does not support charging.\n\n### Possible solutions\n\n- Make sure that the paymentConnector matches a `<Pay>` Connector that supports charging.\n- If tokenization was intended, please change the chargeAmount attribute. Please see [this API documentation](/docs/voice/twiml/pay#chargeamount) for more details.\n",
    "causes": "* The paymentConnector attribute points to a Connector that does not support charging.",
    "solutions": "* Make sure that the paymentConnector matches a `<Pay>` Connector that supports charging.\n* If tokenization was intended, please change the chargeAmount attribute. Please see [this API documentation](/docs/voice/twiml/pay#chargeamount) for more details.",
    "description": "",
    "date_created": "2019-02-26T21:59:00Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64008,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Pay: Payment Gateway rejected charge creation.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64008 Error is an indication that the request attempted to perform a charge of a credit card but the attempt failed because the connector returned an error.\n\n### Possible causes\n\n- The `<Pay>` Connector returned an error.\n\n### Possible solutions\n\n- Please see the data returned in the with webhook to action url for more details.\n- Reach out to your Payment Gateway support for more assistance.\n",
    "causes": "* The `<Pay>` Connector returned an error.",
    "solutions": "* Please see the data returned in the with webhook to action url for more details.\n* Reach out to your Payment Gateway support for more assistance.",
    "description": "A 64008 Error is an indication that the request attempted to perform a charge of a credit card but the attempt failed because the connector returned an error.",
    "date_created": "2019-02-26T22:02:35Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Twilio is no longer authorized to initiate transactions on your behalf.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Pay: Twilio is no longer authorized to initiate transactions on your behalf.\n\nA 64009 Error is an indication that the credentials provided in connector configuration no longer allow Twilio to perform requests on behalf of your account.\n\n### Possible causes\n\n- The Twilio application had its privileges revoked from your account.\n\n### Possible solutions\n\n- Create a new connector configuration and run through the scenario where you authorize Twilio to make requests on your behalf again.\n",
    "causes": "* The Twilio application had its privileges revoked from your account.",
    "solutions": "* Create a new connector configuration and run through the scenario where you authorize Twilio to make requests on your behalf again.",
    "description": "",
    "date_created": "2019-02-26T22:03:48Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64010,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Pay: Payment Gateway rejected token creation.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64010 Error is an indication that the request to create token was rejected by the Payment Gateway.\n\n### Possible solutions\n\n- Please see the data returned in the with webhook to action url for more details.\n- Reach out to your Payment Gateway support for more assistance.\n",
    "causes": null,
    "solutions": "* Please see the data returned in the with webhook to action url for more details.\n* Reach out to your Payment Gateway support for more assistance.",
    "description": "A 64010 Error is an indication that the request to create token was rejected by the Payment Gateway.",
    "date_created": "2019-02-26T22:04:37Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64011,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Pay: Connector does not support the requested currency.",
    "secondary_message": "The currency attribute had a value that the Connector did not support.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64011 Error is an indication that the value provided in the currency attribute is not supported by this `<Pay>` Connector.\n\n### Possible causes\n\n- currency is an invalid currency code.\n- currency is not supported by the `<Pay>` Connector.\n",
    "causes": "* currency is an invalid currency code.\n* currency is not supported by the `<Pay>` Connector.",
    "solutions": null,
    "description": "A 64011 Error is an indication that the value provided in the currency attribute is not supported by this `<Pay>` Connector.",
    "date_created": "2019-02-26T22:05:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64012,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Payment Gateway rejected the card.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when `<Pay>` submits a card to your configured payment gateway or processor and the gateway rejects the card. Twilio sends the outcome to your `action` URL or `statusCallback` URL with fields such as `Result`, `PaymentError`, and `ConnectorError` so you can inspect the processor response and decide how to continue the call.\n\n### Possible causes\n\n- The underlying payment gateway or processor declined the card after `<Pay>` collected and submitted the caller's payment details.\n- The gateway returned a processor-level failure in `PaymentError`, for example `card is declined`.\n- If you are testing with a Generic Pay Connector in TEST mode, unsupported card numbers are blocked and your `action` URL receives an error response.\n\n### Possible solutions\n\n- Inspect `PaymentError` for the payment failure reason and `ConnectorError` for the underlying gateway error code or message.\n- Review the `Result` value sent to your `action` URL or `statusCallback` URL and handle `payment-connector-error` in your call flow.\n- Prompt the caller to enter the card details again or use a different card if the gateway reports a decline.\n- If you are testing a Generic Pay Connector in TEST mode, retry with one of the supported test card numbers.\n\n#### Additional resources\n\n- [TwiML Voice: `<Pay>`](/docs/voice/twiml/pay)\n- [Payments subresource](/docs/voice/api/payment-resource)\n- [How to capture your first payment using `<Pay>`](/docs/voice/tutorials/how-capture-your-first-payment-using-pay)\n",
    "causes": "* The underlying payment gateway or processor declined the card after `<Pay>` collected and submitted the caller's payment details.\n* The gateway returned a processor-level failure in `PaymentError`, for example `card is declined`.\n* If you are testing with a Generic Pay Connector in TEST mode, unsupported card numbers are blocked and your `action` URL receives an error response.",
    "solutions": "* Inspect `PaymentError` for the payment failure reason and `ConnectorError` for the underlying gateway error code or message.\n* Review the `Result` value sent to your `action` URL or `statusCallback` URL and handle `payment-connector-error` in your call flow.\n* Prompt the caller to enter the card details again or use a different card if the gateway reports a decline.\n* If you are testing a Generic Pay Connector in TEST mode, retry with one of the supported test card numbers.",
    "description": "This error occurs when `<Pay>` submits a card to your configured payment gateway or processor and the gateway rejects the card. Twilio sends the outcome to your `action` URL or `statusCallback` URL with fields such as `Result`, `PaymentError`, and `ConnectorError` so you can inspect the processor response and decide how to continue the call.",
    "date_created": "2019-02-26T22:07:25Z",
    "last_updated": "2026-09-11T18:12:45+01:00"
  },
  {
    "code": 64013,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Connector does not support supplied paymentMethod attribute.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64013 Error is an indication that the provided paymentMethod attribute was not supported by the Connector.\n\n### Possible causes\n\nThe targeted Payment Connector did not support the paymentMethod. For instance, a credit card might have been supplied but the Connector did not support Credit Cards.\n\n### Possible solutions\n\nMake sure the Connector supports the defined paymentMethod attribute.\n",
    "causes": "The targeted Payment Connector did not support the paymentMethod. For instance, a credit card might have been supplied but the Connector did not support Credit Cards.",
    "solutions": "Make sure the Connector supports the defined paymentMethod attribute.",
    "description": "A 64013 Error is an indication that the provided paymentMethod attribute was not supported by the Connector.",
    "date_created": "2019-07-26T17:32:32Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64014,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: ECP/ACH requires AVSName Parameter in the <Pay> verb.",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64014 Error is an indication that the provided paymentMethod attribute \"ach-debit\" was used, but the AVSName Parameter was not found inside the `<Pay>` verb.\n\n### Possible causes\n\nElectronic Check Processing requires a name.\n\n### Possible solutions\n\nMake sure a \"AVSName\" Parameter element exists inside the `<Pay>` verb.\n\nExample:\n\n```bash\n<Pay paymentMethod=\"ach-debit\" ...>\r\n  <Parameter name=\"AVSName\" value=\"john smith\" />\r\n</Pay\n```\n",
    "causes": "Electronic Check Processing requires a name.",
    "solutions": "Make sure a \"AVSName\" Parameter element exists inside the `<Pay>` verb. Example: ```bash\n<Pay paymentMethod=\"ach-debit\" ...>\r\n  <Parameter name=\"AVSName\" value=\"john smith\" />\r\n</Pay\n```",
    "description": "A 64014 Error is an indication that the provided paymentMethod attribute \"ach-debit\" was used, but the AVSName Parameter was not found inside the `<Pay>` verb.",
    "date_created": "2019-08-23T03:55:11Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64015,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: `<Pay>` verb is missing a needed Parameter",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64015 Error is an indication that the configured connector for the payment method is missing one of the Parameter needed in the `<Pay>` verb.\n\n### Possible causes\n\nThe connector needs a specific Parameter in the `<Pay>` verb\n\n### Possible solutions\n\nThe required parameters for the connector are listed in the \"Description\" section of the connector. The parameters should be passed inside the `<Pay>` verb.\n\nExample:\n\n```bash\n<Pay>\r\n  <Parameter name=\"Parameter Name\" value=\"Parameter Value\" />\r\n</Pay\n```\n\n### Connector Specific Reasons for Error\n\n#### Braintree\n\n- `MerchantAccountId` is required to be passed via a `<Parameter>` noun for all Braintree `<Pay>` executions. This value can be found in the Braintree console by navigating to Settings (gear icon) -> Business.\n- If passing a `description` as a parameter in `<Pay>`, you must also pass the following fields via separate `<Parameter>` nouns: `name`, `kind`, `quantity`, `totalAmount`, `unitAmount`. If you received this error you either left one of these fields out, or passed an invalid value for one of them. See [Braintree Documentation](https://developer.paypal.com/braintree/docs/reference/request/transaction/sale#line_items.description) for more information.\n",
    "causes": "The connector needs a specific Parameter in the `<Pay>` verb",
    "solutions": "The required parameters for the connector are listed in the \"Description\" section of the connector. The parameters should be passed inside the `<Pay>` verb. Example: ```bash\n<Pay>\r\n  <Parameter name=\"Parameter Name\" value=\"Parameter Value\" />\r\n</Pay\n```",
    "description": "A 64015 Error is an indication that the configured connector for the payment method is missing one of the Parameter needed in the `<Pay>` verb.",
    "date_created": "2020-01-07T20:48:23Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64016,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Invalid Action URL",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64016 Error is an indication there is something wrong with the value provided for the action parameter.\n\n### Possible causes\n\n- Action URL does not use https://\n\n### Possible solutions\n\n- Start your action URL with \"https://\"\n",
    "causes": "* Action URL does not use https://",
    "solutions": "* Start your action URL with \"https://\"",
    "description": "A 64016 Error is an indication there is something wrong with the value provided for the action parameter.",
    "date_created": "2020-05-05T22:54:08Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64017,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: BankAccountType Parameter not supported with PaymentMethod = \"credit-card\"",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64017 Error is an indication there is an unexpected value for the BankAccountNumber parameter.\n\n### Possible causes\n\n- PaymentMethod selected is \"credit-card\" and a value is provided for BankAccountNumber Parameter\n\n### Possible solutions\n\n- Have PaymentMethod as \"ach-debit\" when capturing ACH payments which require a BankAccountNumber\n- Do not provide BankAccountNumber when collecting a credit card payment\n",
    "causes": "* PaymentMethod selected is \"credit-card\" and a value is provided for BankAccountNumber Parameter",
    "solutions": "* Have PaymentMethod as \"ach-debit\" when capturing ACH payments which require a BankAccountNumber\n* Do not provide BankAccountNumber when collecting a credit card payment",
    "description": "A 64017 Error is an indication there is an unexpected value for the BankAccountNumber parameter.",
    "date_created": "2020-05-05T22:58:17Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64018,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Value needed for either Capture or Status parameters",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64018 Error is an indication that it is not clear whether to capture a piece of payment information or to complete/cancel the transaction.\n\n### Possible causes\n\n- Parameter value not provided for both Capture and Status\n- Parameter value provided for both Capture and Status\n\n### Possible solutions\n\n- Ensure either Capture or Status parameters have a value but not both\n",
    "causes": "* Parameter value not provided for both Capture and Status\n* Parameter value provided for both Capture and Status",
    "solutions": "* Ensure either Capture or Status parameters have a value but not both",
    "description": "A 64018 Error is an indication that it is not clear whether to capture a piece of payment information or to complete/cancel the transaction.",
    "date_created": "2020-05-05T23:00:24Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64019,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Required payment information incomplete",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64019 Error is an indication that the pieces of payment information indicated as required were not captured.\n\n### Possible causes\n\n- Postal code and Security code were marked as required but not captured during the payment flow\n- BankAccountNumber and BankRoutingNumber were not captured\n- Credit Card Number and Expiration Date were not captured\n- Status parameter value was set to \"complete\" before all payment information was captured\n\n### Possible solutions\n\n- Set Status parameter to \"complete\" only after all payment information is received via the Capture parameter\n",
    "causes": "* Postal code and Security code were marked as required but not captured during the payment flow\n* BankAccountNumber and BankRoutingNumber were not captured\n* Credit Card Number and Expiration Date were not captured\n* Status parameter value was set to \"complete\" before all payment information was captured",
    "solutions": "* Set Status parameter to \"complete\" only after all payment information is received via the Capture parameter",
    "description": "A 64019 Error is an indication that the pieces of payment information indicated as required were not captured.",
    "date_created": "2020-05-05T23:05:11Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64020,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Invalid Parameter Value",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64020 Error is an indication that one or more of the values provided for an attribute or parameter are invalid.\n\n### Possible causes\n\n- Misspelled parameter values\n- Incorrect format for parameter values\n- Unexpcted value for one or more parameters\n\n### Possible solutions\n\n- Ensure that values match what is expected by refering to the API and TwiML docs\n",
    "causes": "* Misspelled parameter values\n* Incorrect format for parameter values\n* Unexpcted value for one or more parameters",
    "solutions": "* Ensure that values match what is expected by refering to the API and TwiML docs",
    "description": "A 64020 Error is an indication that one or more of the values provided for an attribute or parameter are invalid.",
    "date_created": "2020-05-05T23:06:41Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Invalid Operation",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64021 Error is an indication invalid operation was provided.\n\n### Possible causes\n\n- Start operation on already started Pay session\n\n### Possible solutions\n\n- Make sure to use a valid operation\n",
    "causes": "* Start operation on already started Pay session",
    "solutions": "* Make sure to use a valid operation",
    "description": "A 64021 Error is an indication invalid operation was provided.",
    "date_created": "2020-07-02T16:04:08Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64022,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Invalid Test Card Number",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64022 error is an indication that your Pay Connector is in TEST mode, but you did not provide a valid test card number when testing a payment.\n\n### Possible causes\n\n- Your pay connector is in TEST mode and you provided an invalid test card number when testing a payment. For compliance reasons, we can only allow certain test card numbers in TEST mode.\n\n### Possible solutions\n\n- Check the documentation for the pay connector in the Twilio Console or in our Twilio docs for valid test card numbers that can be used when in TEST mode.\n",
    "causes": "* Your pay connector is in TEST mode and you provided an invalid test card number when testing a payment. For compliance reasons, we can only allow certain test card numbers in TEST mode.",
    "solutions": "* Check the documentation for the pay connector in the Twilio Console or in our Twilio docs for valid test card numbers that can be used when in TEST mode.",
    "description": "A 64022 error is an indication that your Pay Connector is in TEST mode, but you did not provide a valid test card number when testing a payment.",
    "date_created": "2023-04-12T16:26:59Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Invalid Test Bank Account Number",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64023 error is an indication that your Pay Connector is in TEST mode, but you did not provide a valid test bank account number when testing an ACH payment.\n\n### Possible causes\n\n- Your pay connector is in TEST mode and you provided an invalid test bank account number when testing an ACH payment. For compliance reasons, we can only allow certain test bank account numbers in TEST mode.\n\n### Possible solutions\n\n- Check the documentation for the pay connector in the Twilio Console or in our Twilio docs for valid bank account numbers that can be used when in TEST mode.\n",
    "causes": "* Your pay connector is in TEST mode and you provided an invalid test bank account number when testing an ACH payment. For compliance reasons, we can only allow certain test bank account numbers in TEST mode.",
    "solutions": "* Check the documentation for the pay connector in the Twilio Console or in our Twilio docs for valid bank account numbers that can be used when in TEST mode.",
    "description": "A 64023 error is an indication that your Pay Connector is in TEST mode, but you did not provide a valid test bank account number when testing an ACH payment.",
    "date_created": "2023-04-12T16:27:48Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64024,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Pay: Connector Instance Not Approved",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis connector instance has not been approved by Twilio. Please contact Twilio support to gain approval for LIVE transactions.\n\n### Possible causes\n\nThis is caused by your connector instance not having been approved by Twilio for LIVE transactions. You must go through a PCI review in order to gain approval for LIVE transactions.\n\n### Possible solutions\n\nContact Twilio Support in order to gain approval for LIVE transactions for the specific connector instance.\n",
    "causes": "This is caused by your connector instance not having been approved by Twilio for LIVE transactions. You must go through a PCI review in order to gain approval for LIVE transactions.",
    "solutions": "Contact Twilio Support in order to gain approval for LIVE transactions for the specific connector instance.",
    "description": "This connector instance has not been approved by Twilio. Please contact Twilio support to gain approval for LIVE transactions.",
    "date_created": "2023-04-12T16:28:32Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: Invalid Parameter",
    "secondary_message": "Invalid parameter provided to the TwiML.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64101 Error is an indication there is something wrong with the `<ConversationRelay>` parameters.\n\n### Possible causes\n\n- One of the submitted attributes to the TwiML is invalid.\n\n### Possible solutions\n\n- Validate that parameters provided are corrected.\n",
    "causes": "* One of the submitted attributes to the TwiML is invalid.",
    "solutions": "* Validate that parameters provided are corrected.",
    "description": "A 64101 Error is an indication there is something wrong with the `<ConversationRelay>` parameters.",
    "date_created": "2024-10-30T16:13:05Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: Unable to Connect to Websocket URL",
    "secondary_message": "Failed to connect to websocket URL.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64102 Error is an indication there is something wrong with the Conversation Relay url parameter when Twilio attempted to connect to it.\n\n### Possible causes\n\n- The url parameter was incorrectly entered\n- There is not a websocket server available at the url\n- The websocket server at the url is not responding correctly\n\n### Possible solutions\n\n- Make sure the url parameter was entered correctly\n- Make sure the websocket server is running at said url\n- Make sure the websocket server is healthy and able to respond properly\n",
    "causes": "* The url parameter was incorrectly entered\n* There is not a websocket server available at the url\n* The websocket server at the url is not responding correctly",
    "solutions": "* Make sure the url parameter was entered correctly\n* Make sure the websocket server is running at said url\n* Make sure the websocket server is healthy and able to respond properly",
    "description": "A 64102 Error is an indication there is something wrong with the Conversation Relay url parameter when Twilio attempted to connect to it.",
    "date_created": "2024-10-30T16:23:48Z",
    "last_updated": "2026-04-22T01:50:49-07:00"
  },
  {
    "code": 64103,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "ConversationRelay: Internal Server Error",
    "secondary_message": "An Internal Server Error happened when executing Conversation Relay logic.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA 64103 Error is an indication there something happened internal in Twilio that affected your call.\n\n### Possible causes\n\n- Network issues\n- Other unknown issues\n\n### Possible solutions\n\n- Retry\n- Contact Twilio with identifying information about this call\n",
    "causes": "* Network issues\n* Other unknown issues",
    "solutions": "* Retry\n* Contact Twilio with identifying information about this call",
    "description": "A 64103 Error is an indication there something happened internal in Twilio that affected your call.",
    "date_created": "2024-10-30T16:26:27Z",
    "last_updated": "2026-04-22T01:50:49-07:00"
  },
  {
    "code": 64104,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: Max call duration reached",
    "secondary_message": "The maximum call duration was reached and the call was terminated",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio Voice has a hard limit to the length of a call, once that is reached the call is terminated.\n\n### Possible causes\n\n- This call reached the maximum duration.\n\n### Possible solutions\n\n- None at this moment.\n",
    "causes": "* This call reached the maximum duration.",
    "solutions": "* None at this moment.",
    "description": "Twilio Voice has a hard limit to the length of a call, once that is reached the call is terminated.",
    "date_created": "2024-10-30T16:28:41Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64105,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: Websocket ended",
    "secondary_message": "Websocket was disconnected during an ongoing call",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe websocket disconnected from the server side during an ongoing call\n\n### Possible causes\n\n- The websocket server at the url is no longer healthy\n- Possible software problem in the websocket server (not Twilio)\n- Network issues\n\n### Possible solutions\n\n- Make sure the websocket server at the url is healthy\n- Investigate logs on the websocket server to see why the disconnect happened\n",
    "causes": "* The websocket server at the url is no longer healthy\n* Possible software problem in the websocket server (not Twilio)\n* Network issues",
    "solutions": "* Make sure the websocket server at the url is healthy\n* Investigate logs on the websocket server to see why the disconnect happened",
    "description": "The websocket disconnected from the server side during an ongoing call",
    "date_created": "2024-10-30T16:31:19Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64106,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: Invalid argument",
    "secondary_message": "During media setup an error was encountered due to invalid argument",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nDuring media setup an error was encountered due to invalid argument.\n\n### Possible causes\n\n- One of the parameters in to Conversation Relay is not supported by the chosen provider See message for more details\n\n### Possible solutions\n\n- Make sure the language and voice combinations are supported from the chosen provider.\n",
    "causes": "* One of the parameters in to Conversation Relay is not supported by the chosen provider See message for more details",
    "solutions": "* Make sure the language and voice combinations are supported from the chosen provider.",
    "description": "During media setup an error was encountered due to invalid argument.",
    "date_created": "2024-10-30T16:34:01Z",
    "last_updated": "2026-04-22T01:50:49-07:00"
  },
  {
    "code": 64107,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: Invalid Message Received",
    "secondary_message": "Conversation Relay received a message from websocket server that it could not process",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nA message was received on the websocket that did not match any of the supported messages that Conversation Relay can act upon.\n\n### Possible causes\n\n- The websocket server is sending Conversation Relay a message that is not supported\n- A component in front of the websocket server (API Gateway or Load Balancer) is sending Conversation Relay a message it cannot process\n\n### Possible solutions\n\n- Make sure all messages sent are conforming to the Conversation Relay websocket specification\n- Make sure error handling is not sending back errors over the websocket to Conversation Relay\n- Make sure API Gateways and Load Balancers are configured to not send errors to the Conversation Relay\n\nLooking at the message can give an insight into why this might happen.\n",
    "causes": "* The websocket server is sending Conversation Relay a message that is not supported\n* A component in front of the websocket server (API Gateway or Load Balancer) is sending Conversation Relay a message it cannot process",
    "solutions": "* Make sure all messages sent are conforming to the Conversation Relay websocket specification\n* Make sure error handling is not sending back errors over the websocket to Conversation Relay\n* Make sure API Gateways and Load Balancers are configured to not send errors to the Conversation Relay Looking at the message can give an insight into why this might happen.",
    "description": "A message was received on the websocket that did not match any of the supported messages that Conversation Relay can act upon.",
    "date_created": "2024-10-30T16:36:05Z",
    "last_updated": "2026-04-22T01:50:49-07:00"
  },
  {
    "code": 64108,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "ConversationRelay: RTP Timeout",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nAn RTP timeout is detected, meaning that audio stopped flowing.\n\n### Possible causes\n\n- Phone call finished\n- Carrier stopped sending audio to Twilio\n\n### Possible solutions\n\n- Contact Twilio support\n",
    "causes": "* Phone call finished\n* Carrier stopped sending audio to Twilio",
    "solutions": "* Contact Twilio support",
    "description": "An RTP timeout is detected, meaning that audio stopped flowing.",
    "date_created": "2024-10-30T16:42:43Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64109,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: Concurrency limit reached",
    "secondary_message": "The concurrency limit for Conversation Relay was reached for this account",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe call was rejected because the maximum number of concurrent sessions was temporarily reached.\n\n### Possible causes\n\nA sudden surge in call volume temporarily exceeded available system capacity.\n\n### Possible solutions\n\n- Retry the connection after a brief delay if your application supports automated retries.\n- If you experience frequent or sustained 64109 errors during normal traffic, please contact Twilio Support.\n",
    "causes": "A sudden surge in call volume temporarily exceeded available system capacity.",
    "solutions": "* Retry the connection after a brief delay if your application supports automated retries.\n* If you experience frequent or sustained 64109 errors during normal traffic, please contact Twilio Support.",
    "description": "The call was rejected because the maximum number of concurrent sessions was temporarily reached.",
    "date_created": "2024-10-30T16:47:10Z",
    "last_updated": "2026-09-30T11:26:57-06:00"
  },
  {
    "code": 64110,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: Account has been opted out",
    "secondary_message": "The account has been opted out of Conversation Relay.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe call was rejected because your account has been opted out of Conversation Relay.\n\n### Possible causes\n\nAccount opted out of Conversation Relay.\n\n### Possible solutions\n\nReach out to Twilio to enable Conversation Relay for your account.\n",
    "causes": "Account opted out of Conversation Relay.",
    "solutions": "Reach out to Twilio to enable Conversation Relay for your account.",
    "description": "The call was rejected because your account has been opted out of Conversation Relay.",
    "date_created": "2024-11-21T22:12:00Z",
    "last_updated": "2026-04-22T01:50:49-07:00"
  },
  {
    "code": 64111,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: TTS provider service error",
    "secondary_message": "Error encountered while requesting TTS provider to convert tokens to speech",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTokens could not be converted to speech and played because there was an error in the service of the TTS provider.\n\n### Possible causes\n\nOperational abnormality in the service of TTS provider\n\n### Possible solutions\n\nMonitor the situation and/or switch over to use a different TTS provider temporarily\n",
    "causes": "Operational abnormality in the service of TTS provider",
    "solutions": "Monitor the situation and/or switch over to use a different TTS provider temporarily",
    "description": "Tokens could not be converted to speech and played because there was an error in the service of the TTS provider.",
    "date_created": "2025-09-03T18:57:12.911Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64112,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: TTS conversion error",
    "secondary_message": "Error encountered while tokens were converted to speech by the TTS provider",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTokens could not be converted to speech and played because there was an error in conversion parameters\n\n### Possible causes\n\nWrong voice, model or other parameters\n\n### Possible solutions\n\nCorrect the choice of voice, model or other parameters\n",
    "causes": "Wrong voice, model or other parameters",
    "solutions": "Correct the choice of voice, model or other parameters",
    "description": "Tokens could not be converted to speech and played because there was an error in conversion parameters",
    "date_created": "2025-09-03T19:00:12.812Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 64114,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ConversationRelay: ASR provider connection error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nConversationRelay fails to transcribe speech when it can't connect to the automatic speech recognition (ASR) provider, or when the connection is lost.\n\n### Possible causes\n\n- Operational issue with the ASR provider service\n- Connection timeout\n- Dropped connection to the provider\n\n### Possible solutions\n\n- Monitor the situation.\n- Temporarily switch to a different ASR provider.\n",
    "causes": "* Operational issue with the ASR provider service\n* Connection timeout\n* Dropped connection to the provider",
    "solutions": "* Monitor the situation.\n* Temporarily switch to a different ASR provider.",
    "description": "ConversationRelay fails to transcribe speech when it can't connect to the automatic speech recognition (ASR) provider, or when the connection is lost.",
    "date_created": "2026-08-17T01:08:11-07:00",
    "last_updated": "2026-08-19T10:00:38-07:00"
  },
  {
    "code": 68001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Network Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n\n## Description\nVerify returned this error because it could not complete the network communication required to process your API request. This can happen while you start or check a verification and is typically a transient failure.\n\n### Possible causes\n- A temporary network interruption prevented Verify from completing the request.\n- A temporary Twilio service degradation or outage affected Verify API connectivity.\n- The request was retried without first confirming the required Verify inputs, so the same failing request continued to be sent.\n\n### Possible solutions\n- Retry the request. If you retry automatically, use exponential backoff instead of sending repeated immediate requests.\n- Before retrying, confirm that your Verify request is valid. Use a valid `ServiceSid`, send the destination in `E.164` format when verifying a phone number, and choose a supported `channel`.\n- Review the Verification details page in Twilio Console to inspect the verification lifecycle and any related error codes.\n- If you need to investigate recent traffic in bulk, use the Verification Attempts API to review attempts generated by your Verify service.\n- Check the Twilio status page for any active incidents or degraded service affecting API requests.\n\n#### Additional resources\n- [Verify API: Verifications](/docs/verify/api/verification)\n- [View Verify logs in Twilio Console](/docs/verify/viewing-logs-with-twilio-console)\n- [Check Twilio Service and API Status](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page)\n",
    "causes": "* A temporary network interruption prevented Verify from completing the request.\n* A temporary Twilio service degradation or outage affected Verify API connectivity.\n* The request was retried without first confirming the required Verify inputs, so the same failing request continued to be sent.",
    "solutions": "* Retry the request. If you retry automatically, use exponential backoff instead of sending repeated immediate requests.\n* Before retrying, confirm that your Verify request is valid. Use a valid `ServiceSid`, send the destination in `E.164` format when verifying a phone number, and choose a supported `channel`.\n* Review the Verification details page in Twilio Console to inspect the verification lifecycle and any related error codes.\n* If you need to investigate recent traffic in bulk, use the Verification Attempts API to review attempts generated by your Verify service.\n* Check the Twilio status page for any active incidents or degraded service affecting API requests.",
    "description": "Verify returned this error because it could not complete the network communication required to process your API request. This can happen while you start or check a verification and is typically a transient failure.",
    "date_created": "2020-09-15T18:11:22Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 68002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Mapper Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Verify cannot map the entity data in your request. In Verify, an `Entity` represents the user or other identity being verified, and each `Entity` can contain one or more `Factors`.\n\n### Possible causes\n\n- The request includes entity data in an unexpected format. For Verify `Entity` resources, `identity` must be immutable, 8 to 64 characters long, and contain only dash-separated alphanumeric characters.\n- The request uses an `Entity` and `Factor` that do not belong to the same Verify resource path. Verify Factor and Challenge endpoints are scoped under `/Services/{ServiceSid}/Entities/{Identity}/...` and expect the correct `identity` for the factor you are using.\n- You are trying to continue with a factor that should be recreated. Verify deletes unverified factors after 1 to 24 hours, which can leave the existing enrollment unusable for later steps.\n\n### Possible solutions\n\n- Create a new factor for the user and continue with the new Factor SID. If the `Entity` does not already exist, creating the factor creates the `Entity` automatically.\n- Check the `identity` value in your request path and use the same stable user identifier across your Entity, Factor, and Challenge requests. Make sure the value matches Verify's formatting requirements.\n- If you are creating a Push factor, send a complete and valid factor payload, including the required binding and device configuration values.\n- If you are using TOTP and the existing enrollment is no longer valid, register the user again by creating a new TOTP factor and completing verification with the new factor.\n\n#### Additional resources\n\n- [Verify overview](/docs/verify)\n- [Entity Resource API](/docs/verify/api/entity)\n- [Factor Resource API](/docs/verify/api/factor)\n",
    "causes": "* The request includes entity data in an unexpected format. For Verify `Entity` resources, `identity` must be immutable, 8 to 64 characters long, and contain only dash-separated alphanumeric characters.\n* The request uses an `Entity` and `Factor` that do not belong to the same Verify resource path. Verify Factor and Challenge endpoints are scoped under `/Services/{ServiceSid}/Entities/{Identity}/...` and expect the correct `identity` for the factor you are using.\n* You are trying to continue with a factor that should be recreated. Verify deletes unverified factors after 1 to 24 hours, which can leave the existing enrollment unusable for later steps.",
    "solutions": "* Create a new factor for the user and continue with the new Factor SID. If the `Entity` does not already exist, creating the factor creates the `Entity` automatically.\n* Check the `identity` value in your request path and use the same stable user identifier across your Entity, Factor, and Challenge requests. Make sure the value matches Verify's formatting requirements.\n* If you are creating a Push factor, send a complete and valid factor payload, including the required binding and device configuration values.\n* If you are using TOTP and the existing enrollment is no longer valid, register the user again by creating a new TOTP factor and completing verification with the new factor.",
    "description": "This error occurs when Verify cannot map the entity data in your request. In Verify, an `Entity` represents the user or other identity being verified, and each `Entity` can contain one or more `Factors`.",
    "date_created": "2020-09-15T18:12:09Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 68003,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Storage Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAn error occurred while storing/loading an entity.\n\n### Possible causes\n\n- Storage may be corrupted.\n- Factor not found.\n\n### Possible solutions\n\nCreate a new factor.\n",
    "causes": "* Storage may be corrupted.\n* Factor not found.",
    "solutions": "Create a new factor.",
    "description": "An error occurred while storing/loading an entity.",
    "date_created": "2020-09-15T18:12:57Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 68004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Input Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nYou may see this error when Verify rejects malformed or incomplete input while starting a verification or submitting a verification check. Review the parameters you send and confirm they match the required formats, required fields, and SID patterns for the Verify endpoint you are calling.\n\n### Possible causes\n\n- The `to` value is missing, or the destination phone number is not in `E.164` format when you start or check a phone verification.\n- The `channel` value is missing or not one of the supported Verify channels for starting a verification, such as `sms`, `call`, `whatsapp`, `email`, `sna`, or `auto`.\n- The request uses an invalid `serviceSid` value that does not match the required `VA` SID format.\n- A verification check request does not include either `to` or `verificationSid`, or the `verificationSid` value does not match the required `VE` SID format.\n- A code-based request sends a `code` or `customCode` value outside Verify's supported 4 to 10 character range.\n- An SNA verification check omits `snaClientToken` or sends a value that does not match the token returned by the SNA URL invocation.\n\n### Possible solutions\n\n- Send the request in `application/x-www-form-urlencoded` format and include all required parameters for the endpoint you are using. A new verification requires `to` and `channel`. A verification check requires either `to` or `verificationSid`.\n- Format destination phone numbers in `E.164`, for example `+14155552671`, before sending the request.\n- Validate `serviceSid` and `verificationSid` before you submit the request. Verify Service SIDs start with `VA`. Verification SIDs start with `VE`.\n- If you start a verification, use only a supported `channel` value for Verify.\n- If you use `customCode` or submit a `code` in a verification check, keep the value between 4 and 10 characters.\n- If you use Silent Network Auth, pass the `snaClientToken` from the SNA URL invocation into the verification check request.\n\n#### Additional resources\n\n- [Start a verification](/docs/verify/api/verification)\n- [Check a verification](/docs/verify/api/verification-check)\n- [What is E.164?](/docs/glossary/what-e164)\n",
    "causes": "* The `to` value is missing, or the destination phone number is not in `E.164` format when you start or check a phone verification.\n* The `channel` value is missing or not one of the supported Verify channels for starting a verification, such as `sms`, `call`, `whatsapp`, `email`, `sna`, or `auto`.\n* The request uses an invalid `serviceSid` value that does not match the required `VA` SID format.\n* A verification check request does not include either `to` or `verificationSid`, or the `verificationSid` value does not match the required `VE` SID format.\n* A code-based request sends a `code` or `customCode` value outside Verify's supported 4 to 10 character range.\n* An SNA verification check omits `snaClientToken` or sends a value that does not match the token returned by the SNA URL invocation.",
    "solutions": "* Send the request in `application/x-www-form-urlencoded` format and include all required parameters for the endpoint you are using. A new verification requires `to` and `channel`. A verification check requires either `to` or `verificationSid`.\n* Format destination phone numbers in `E.164`, for example `+14155552671`, before sending the request.\n* Validate `serviceSid` and `verificationSid` before you submit the request. Verify Service SIDs start with `VA`. Verification SIDs start with `VE`.\n* If you start a verification, use only a supported `channel` value for Verify.\n* If you use `customCode` or submit a `code` in a verification check, keep the value between 4 and 10 characters.\n* If you use Silent Network Auth, pass the `snaClientToken` from the SNA URL invocation into the verification check request.",
    "description": "You may see this error when Verify rejects malformed or incomplete input while starting a verification or submitting a verification check. Review the parameters you send and confirm they match the required formats, required fields, and SID patterns for the Verify endpoint you are calling.",
    "date_created": "2020-09-15T18:13:46Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 68005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Key Storage Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nAn error occurred while storing/loading keypairs.\n\n### Possible causes\n\n- Keypair not set.\n- Keypair could not be created.\n- Signature failed.\n\n### Possible solutions\n\nCreate a new factor.\n",
    "causes": "* Keypair not set.\n* Keypair could not be created.\n* Signature failed.",
    "solutions": "Create a new factor.",
    "description": "An error occurred while storing/loading keypairs.",
    "date_created": "2020-09-15T18:14:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 68006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Initialization Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Verify integration tries to initialize a class or start a verification flow without all required arguments. Make sure you pass every required value for the SDK or API flow you are using before retrying.\n\n### Possible causes\n\n- Your app is creating a Verify class or SDK object without all required constructor arguments.\n- Your app is starting verification without the required initialization values for that flow.\n- For the Android Verification SDK flow, your app did not provide the required `Context`, or it called `startVerification` without a valid signed JWT and delivery channel such as `Via.SMS` or `Via.CALL`.\n- For Verify Push, your backend did not provide the client with the required enrollment values. The app needs an Access Token, `identity`, and Verify Service SID to continue.\n- For Verify Push factor creation, your app is building the factor payload without required values such as `verifyServiceSid`, `identity`, `pushToken`, or `accessToken`.\n- Your backend is creating a Verify Push Access Token request without required fields such as `identity` and `factorType`.\n- Your Verify Push factor request is missing required push configuration fields such as `binding.publicKey`, `config.appId`, `config.notificationPlatform`, `config.notificationToken`, or `config.sdkVersion`.\n\n### Possible solutions\n\n- Review the constructor or initialization call that fails and supply every required argument for that class before retrying.\n- If you use the Android Verification SDK, initialize `TwilioVerification` with a valid Android `Context`.\n- When starting a phone verification, pass a valid signed JWT and a supported delivery channel to `startVerification`.\n- If you use Verify Push, have your backend create the Access Token with the required `identity` and `factorType`, then return the Access Token, `identity`, and Verify Service SID to the client app.\n- When creating a Verify Push factor in the client, make sure the payload includes the factor name, Verify Service SID, `identity`, push notification token, and Access Token.\n- Validate that your push factor configuration includes all required push fields, including the public key, app ID, notification platform, notification token, and SDK version.\n- Verify that `identity` is present and follows Verify guidance. Use an immutable identifier from your system, such as a UUID, GUID, or SID, instead of PII.\n- If your app obtains configuration values from your backend, confirm that the backend response is complete and that no required values are null, empty, or dropped during parsing.\n\n#### Additional resources\n\n- [Verify Push Android Client Library Quickstart](/docs/verify/quickstarts/push-android)\n- [Access Token Resource](/docs/verify/api/access-token)\n- [Factor Resource](/docs/verify/api/factor)\n",
    "causes": "* Your app is creating a Verify class or SDK object without all required constructor arguments.\n* Your app is starting verification without the required initialization values for that flow.\n* For the Android Verification SDK flow, your app did not provide the required `Context`, or it called `startVerification` without a valid signed JWT and delivery channel such as `Via.SMS` or `Via.CALL`.\n* For Verify Push, your backend did not provide the client with the required enrollment values. The app needs an Access Token, `identity`, and Verify Service SID to continue.\n* For Verify Push factor creation, your app is building the factor payload without required values such as `verifyServiceSid`, `identity`, `pushToken`, or `accessToken`.\n* Your backend is creating a Verify Push Access Token request without required fields such as `identity` and `factorType`.\n* Your Verify Push factor request is missing required push configuration fields such as `binding.publicKey`, `config.appId`, `config.notificationPlatform`, `config.notificationToken`, or `config.sdkVersion`.",
    "solutions": "* Review the constructor or initialization call that fails and supply every required argument for that class before retrying.\n* If you use the Android Verification SDK, initialize `TwilioVerification` with a valid Android `Context`.\n* When starting a phone verification, pass a valid signed JWT and a supported delivery channel to `startVerification`.\n* If you use Verify Push, have your backend create the Access Token with the required `identity` and `factorType`, then return the Access Token, `identity`, and Verify Service SID to the client app.\n* When creating a Verify Push factor in the client, make sure the payload includes the factor name, Verify Service SID, `identity`, push notification token, and Access Token.\n* Validate that your push factor configuration includes all required push fields, including the public key, app ID, notification platform, notification token, and SDK version.\n* Verify that `identity` is present and follows Verify guidance. Use an immutable identifier from your system, such as a UUID, GUID, or SID, instead of PII.\n* If your app obtains configuration values from your backend, confirm that the backend response is complete and that no required values are null, empty, or dropped during parsing.",
    "description": "This error occurs when your Verify integration tries to initialize a class or start a verification flow without all required arguments. Make sure you pass every required value for the SDK or API flow you are using before retrying.",
    "date_created": "2020-09-15T18:15:32Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 68007,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Authentication Token Error",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio cannot generate a Verify Push `AccessToken` for your request. The `AccessToken` resource authenticates client-side requests that enroll or register a Verify Push `Entity` or `Factor`, and the required `factorType` value currently supports only `push`.\n\n### Possible causes\n\n- Your request to `POST /v2/Services/{ServiceSid}/AccessTokens` included a `factorType` value other than `push`.\n- Your application attempted to use the Verify Push `AccessToken` flow for a factor that is not part of the Push enrollment flow. The `AccessToken` resource is for Verify Push, while other Verify factors use their own `Factor` and `Challenge` resources.\n- The request parameters do not match the supported Verify Push enrollment pattern, which requires a valid `identity` and a supported `factorType`.\n\n### Possible solutions\n\n- Set `factorType` to `push` when you create the `AccessToken`.\n- Use the `AccessToken` resource only for Verify Push enrollment or registration in your client application.\n- If you are building a non-Push Verify flow such as TOTP, switch to the factor-specific Verify API for that flow instead of the Push `AccessToken` flow. This follows from Twilio's Verify resource model, where `AccessToken` is documented for Push and `Factor` and `Challenge` are documented for Push and TOTP operations.\n- Confirm that `identity` is an immutable identifier from your system and that you are creating the token under the correct Verify `ServiceSid`, then retry the request.\n\n#### Additional resources\n\n- [Access Token Resource](/docs/verify/api/access-token)\n- [Verify Push Client Library Technical Overview](/docs/verify/push/technical-overview)\n- [Factor Resource](/docs/verify/api/factor)\n",
    "causes": "* Your request to `POST /v2/Services/{ServiceSid}/AccessTokens` included a `factorType` value other than `push`.\n* Your application attempted to use the Verify Push `AccessToken` flow for a factor that is not part of the Push enrollment flow. The `AccessToken` resource is for Verify Push, while other Verify factors use their own `Factor` and `Challenge` resources.\n* The request parameters do not match the supported Verify Push enrollment pattern, which requires a valid `identity` and a supported `factorType`.",
    "solutions": "* Set `factorType` to `push` when you create the `AccessToken`.\n* Use the `AccessToken` resource only for Verify Push enrollment or registration in your client application.\n* If you are building a non-Push Verify flow such as TOTP, switch to the factor-specific Verify API for that flow instead of the Push `AccessToken` flow. This follows from Twilio's Verify resource model, where `AccessToken` is documented for Push and `Factor` and `Challenge` are documented for Push and TOTP operations.\n* Confirm that `identity` is an immutable identifier from your system and that you are creating the token under the correct Verify `ServiceSid`, then retry the request.",
    "description": "This error occurs when Twilio cannot generate a Verify Push `AccessToken` for your request. The `AccessToken` resource authenticates client-side requests that enroll or register a Verify Push `Entity` or `Factor`, and the required `factorType` value currently supports only `push`.",
    "date_created": "2020-09-15T18:16:22Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 68008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verify WhatsApp channel not configured",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nVerify WhatsApp channel not configured.\n\n### Possible causes\n\n- Your WhatsApp Business Account (WABA) does not meet Meta's [commerce policy](https://business.whatsapp.com/policy).\n- Your verification creation request failed due to a missing Messaging Service / Verify WhatsApp Sender.\n- Missing or misconfigured WhatsApp Authentication templates.\n\n### Possible solutions\n\n- Correctly set up your WABA to [bring your own WhatsApp Sender](/docs/verify/whatsapp/byo).\n- Contact our support team for Authentication template issues.\n- Enable SMS channel as a [fallback](/docs/verify/fallback-scenarios) for Verify.\n",
    "causes": "* Your WhatsApp Business Account (WABA) does not meet Meta's [commerce policy](https://business.whatsapp.com/policy).\n* Your verification creation request failed due to a missing Messaging Service / Verify WhatsApp Sender.\n* Missing or misconfigured WhatsApp Authentication templates.",
    "solutions": "* Correctly set up your WABA to [bring your own WhatsApp Sender](/docs/verify/whatsapp/byo).\n* Contact our support team for Authentication template issues.\n* Enable SMS channel as a [fallback](/docs/verify/fallback-scenarios) for Verify.",
    "description": "Verify WhatsApp channel not configured.",
    "date_created": "2025-03-14T22:16:48Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70001,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Validation Failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request body is syntactically correct, the body was successfully parsed, but the data in the body violates the constraints.\n\n### Possible causes\n\n- Performing an update to the \"FriendlyName\" with a string longer than the allowed 64 characters.\n- Updating a field that cannot have a null value to a null.\n",
    "causes": "* Performing an update to the \"FriendlyName\" with a string longer than the allowed 64 characters.\n* Updating a field that cannot have a null value to a null.",
    "solutions": null,
    "description": "The Request body is syntactically correct, the body was successfully parsed, but the data in the body violates the constraints.",
    "date_created": "2017-04-14T20:28:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70002,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Bad request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not parse the request because the request body or parameters are not in the expected format. This error usually occurs when you send malformed JSON, provide a value with the wrong data type, or submit a request that does not match the API's expected schema.\n\n### Possible causes\n\n- The request body contains invalid JSON\n- A parameter value uses the wrong data type, such as sending a string where an integer is required\n- The request includes malformed or unsupported parameter formatting\n- The request body does not match the expected structure for the API endpoint\n- The `Content-Type` header does not match the payload format you sent\n\n### Possible solutions\n\n- Validate the request body before you send it and make sure the JSON is well formed\n- Confirm that every parameter uses the expected type and format for the endpoint you are calling\n- Review the endpoint documentation and make sure the request body matches the required schema\n- Verify that the `Content-Type` header matches the payload format, such as `application/json` for JSON requests\n- Log the outgoing request in your application so you can inspect the exact payload and headers being sent\n- If you build the request manually, use an official Twilio helper library when possible to reduce formatting errors\n\n#### Additional resources\n\n- [/docs/usage/requests-to-twilio](/docs/usage/requests-to-twilio)\n- [/docs/libraries](/docs/libraries)\n- [Twilio API response and error dictionary](/docs/usage/twilios-response)\n",
    "causes": "* The request body contains invalid JSON\n* A parameter value uses the wrong data type, such as sending a string where an integer is required\n* The request includes malformed or unsupported parameter formatting\n* The request body does not match the expected structure for the API endpoint\n* The `Content-Type` header does not match the payload format you sent",
    "solutions": "* Validate the request body before you send it and make sure the JSON is well formed\n* Confirm that every parameter uses the expected type and format for the endpoint you are calling\n* Review the endpoint documentation and make sure the request body matches the required schema\n* Verify that the `Content-Type` header matches the payload format, such as `application/json` for JSON requests\n* Log the outgoing request in your application so you can inspect the exact payload and headers being sent\n* If you build the request manually, use an official Twilio helper library when possible to reduce formatting errors",
    "description": "Twilio could not parse the request because the request body or parameters are not in the expected format. This error usually occurs when you send malformed JSON, provide a value with the wrong data type, or submit a request that does not match the API's expected schema.",
    "date_created": "2017-04-14T20:35:35Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 70003,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Outdated Entity",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request tries to update a resource that has been already updated (by someone else). Only applies if the resource uses a version field.\n\n### Possible causes\n\n- When sending an update request that contains field: \"version: 1\" and the server recognizes that the actual version of the resource is already 2.\n\n### Possible Solution:\n\n- Reload the resource with a `GET` request to get the latest version.\n",
    "causes": "* When sending an update request that contains field: \"version: 1\" and the server recognizes that the actual version of the resource is already 2.",
    "solutions": null,
    "description": "The request tries to update a resource that has been already updated (by someone else). Only applies if the resource uses a version field.",
    "date_created": "2017-04-14T20:37:58Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unauthorized",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request does not contain any authorization information (most cases: credentials) or the credentials and the resource have no relation.\n\n### Possible causes\n\n- When omitting the Auth header from HTTP request\n- Passing an Auth header to access a resource that belongs to some other account.\n",
    "causes": "* When omitting the Auth header from HTTP request\n* Passing an Auth header to access a resource that belongs to some other account.",
    "solutions": null,
    "description": "The Request does not contain any authorization information (most cases: credentials) or the credentials and the resource have no relation.",
    "date_created": "2017-04-14T20:39:48Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70005,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failure Threshold Exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nToo many unsuccessful requests against Twilio API.\n\n### Possible causes\n\n- The requests try to repeatedly access a deleted resource\n- The requests try to repeatedly access an invalid resource\n\n### Possible Solution:\n\n- Slow down the requests\n- Validate whether the given resource exists\n",
    "causes": "* The requests try to repeatedly access a deleted resource\n* The requests try to repeatedly access an invalid resource",
    "solutions": null,
    "description": "Too many unsuccessful requests against Twilio API.",
    "date_created": "2017-05-05T16:16:52Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70051,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Authorization Failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not authorize the given request.\n\n### Possible causes\n\n- The Account is not found or is suspended\n- The API key is not found or is suspended\n- The Credentials used for authorization do not belong to the given account\n- If using a Restricted API Key - the key may be missing a permission to access the resource\n- If using a Restricted API Key - permission to access the resource may not be supported\n- If using an OAuth app - the Client ID may be missing a scope/permission to access the resource\n- If using an OAuth app - permission to access the resource may not be supported\n\n### Possible solutions\n\n- Make sure the account or the API key are valid and active\n- If using a Restricted API Key - add the missing permission to the key\n- If using a Restricted API Key - use a Main/Standard type API key\n- If using an OAuth app - add the missing scope/permission to the OAuth app.\n- If using an OAuth app - use a Main/Standard type API key\n",
    "causes": "* The Account is not found or is suspended\n* The API key is not found or is suspended\n* The Credentials used for authorization do not belong to the given account\n* If using a Restricted API Key - the key may be missing a permission to access the resource\n* If using a Restricted API Key - permission to access the resource may not be supported\n* If using an OAuth app - the Client ID may be missing a scope/permission to access the resource\n* If using an OAuth app - permission to access the resource may not be supported",
    "solutions": "* Make sure the account or the API key are valid and active\n* If using a Restricted API Key - add the missing permission to the key\n* If using a Restricted API Key - use a Main/Standard type API key\n* If using an OAuth app - add the missing scope/permission to the OAuth app.\n* If using an OAuth app - use a Main/Standard type API key",
    "description": "Twilio could not authorize the given request.",
    "date_created": "2017-05-05T16:17:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70052,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Public Key Client Validation Required For Account",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe account is only allowed to perform Public Key Client Validation requests at Twilio. All other types of authentication are disabled for the account.\n\n### Possible causes\n\n- The Twilio-Client-Validation is not present in the request.\n\n### Possible Solution:\n\n- Ensure the Twilio-Client-Validation header is present in the request and valid.\n- Disable forcing Client Validation feature at the Console if not needed.\n",
    "causes": "* The Twilio-Client-Validation is not present in the request.",
    "solutions": null,
    "description": "The account is only allowed to perform Public Key Client Validation requests at Twilio. All other types of authentication are disabled for the account.",
    "date_created": "2017-05-05T16:19:33Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70053,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Public Key Client Validation Not Enabled For Account",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request attempted to use the Public Key Client Validation but the functionality is not enabled for this account.\n\n### Possible Solution:\n\n- Ensure your Account is enabled for this feature.\n- Remove the Twilio-Client-Validation header from your request\n",
    "causes": null,
    "solutions": null,
    "description": "The request attempted to use the Public Key Client Validation but the functionality is not enabled for this account.",
    "date_created": "2017-05-05T16:20:36Z",
    "last_updated": "2020-08-04T10:00:18.837Z"
  },
  {
    "code": 70101,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unsupported Public Key Algorithm",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request tries to store a Public Key in Twilio. This public key can be parsed, but the request fails, because the key uses an unsupported algorithm.\n\n### Possible causes\n\n- Wrong public key algorithm. Only supported algorithm is RSA.\n\n### Possible Solution\n\n- Regenerate a new keypair with RSA encryption and retry.\n",
    "causes": "* Wrong public key algorithm. Only supported algorithm is RSA.",
    "solutions": null,
    "description": "The Request tries to store a Public Key in Twilio. This public key can be parsed, but the request fails, because the key uses an unsupported algorithm.",
    "date_created": "2017-04-14T20:43:57Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70102,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unsupported Public Key Length",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request tries to store a Public Key in Twilio. This public key can be parsed, has a correct encryption algorithm, but the request fails because the key has an invalid length.\n\n### Possible causes\n\n- Public key lenght different than 2048.\n\n### Possible Solution\n\n- Regenerate a new keypair with length 2048 and retry.\n",
    "causes": "* Public key lenght different than 2048.",
    "solutions": null,
    "description": "The Request tries to store a Public Key in Twilio. This public key can be parsed, has a correct encryption algorithm, but the request fails because the key has an invalid length.",
    "date_created": "2017-04-14T20:50:40Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70103,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unsupported Public Key Exponent",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request tries to store a Public Key in Twilio. This public key can be parsed, has a correct encryption algorithm, but the request fails because the key exponent has an invalid length.\n\n### Possible causes\n\n- Public key key exponent different than 65537.\n\n### Possible Solution\n\n- Regenerate a new keypair with exponent 65537 and retry.\n",
    "causes": "* Public key key exponent different than 65537.",
    "solutions": null,
    "description": "The Request tries to store a Public Key in Twilio. This public key can be parsed, has a correct encryption algorithm, but the request fails because the key exponent has an invalid length.",
    "date_created": "2017-04-14T20:53:22Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70104,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Public Key",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request tries to store a Public Key in Twilio. This public key cannot be parsed. Only supported key format is X.509 PEM. The prefix and suffix (-----BEGIN PUBLIC KEY-----) of the key can be present (but not mandatory).\n\n### Possible Solution:\n\nMake sure the public key is correct in the request:\n\n- The key is in X.509 PEM format\n- There are no copy paste errors\n- All the parts of the key are present in the request.\n",
    "causes": null,
    "solutions": null,
    "description": "The Request tries to store a Public Key in Twilio. This public key cannot be parsed. Only supported key format is X.509 PEM. The prefix and suffix (-----BEGIN PUBLIC KEY-----) of the key can be present (but not mandatory).",
    "date_created": "2017-04-14T20:57:56Z",
    "last_updated": "2020-08-04T10:00:19.8Z"
  },
  {
    "code": 70105,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid Type Specified in the Request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nWhen using a Twilio Resource that supports working with different types of Twilio Credentials (Public Key Credentials, Push Credentials) the request must contain type(s) that is recognized by the resource.\n\n### Possible Solution:\n\n- Check the API documents to verify the correct credential type(s) were used in the request.\n",
    "causes": null,
    "solutions": null,
    "description": "When using a Twilio Resource that supports working with different types of Twilio Credentials (Public Key Credentials, Push Credentials) the request must contain type(s) that is recognized by the resource.",
    "date_created": "2017-04-14T20:59:28Z",
    "last_updated": "2020-08-04T10:00:19.782Z"
  },
  {
    "code": 70106,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid AWS credentials",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nWhen uploading AWS credentials to Twilio make sure:\n\n- AWS key matches the regex: (?\\<!\\[A-Z0-9])\\[A-Z0-9]\\{20}(?!\\[A-Z0-9])\n- AWS secret matches the regex: (?\\<!\\[A-Za-z0-9/+=])\\[A-Za-z0-9/+=]\\{40}(?!\\[A-Za-z0-9/+=])\n\n### Possible Solution:\n\n- Validate the credentials and upload them again.\n",
    "causes": null,
    "solutions": null,
    "description": "When uploading AWS credentials to Twilio make sure: - AWS key matches the regex: (?\\<!\\[A-Z0-9])\\[A-Z0-9]{20}(?!\\[A-Z0-9])\n- AWS secret matches the regex: (?\\<!\\[A-Za-z0-9/+=])\\[A-Za-z0-9/+=]{40}(?!\\[A-Za-z0-9/+=])",
    "date_created": "2017-08-03T11:53:37Z",
    "last_updated": "2020-08-04T10:00:17.979Z"
  },
  {
    "code": 70151,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Maximum Number Of API Keys Exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe account reached the maximum limit of API Keys allowed.\n\n### Possible Solution:\n\n- Delete unused API Keys before creating additional ones.\n",
    "causes": null,
    "solutions": null,
    "description": "The account reached the maximum limit of API Keys allowed.",
    "date_created": "2017-05-05T16:25:00Z",
    "last_updated": "2020-08-04T10:00:18.809Z"
  },
  {
    "code": 70152,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Request Contains Invalid Flags",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne or more of the provided flags in the API key request are invalid in the given context.\n\n### Possible causes\n\n- An API key is attempting to create a new key with greater permissions than what it is assigned.\n\n### Possible Solution:\n\n- Remove the invalid flag(s) that would expand permissions.\n",
    "causes": "* An API key is attempting to create a new key with greater permissions than what it is assigned.",
    "solutions": null,
    "description": "One or more of the provided flags in the API key request are invalid in the given context.",
    "date_created": "2017-05-05T16:31:59Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70153,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Public Key Specified Does Not Exist",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Public Key with the SID provided in the JWT header does exist. This is a Public Key Client Validation Error.\n\n### Possible Solution:\n\n- Update the kid value provided in the JWT header.\n- For the details on JWTs used as part of Public Key Client Validation, see [the documentation](/docs/iam/pkcv/quickstart)\n",
    "causes": null,
    "solutions": null,
    "description": "The Public Key with the SID provided in the JWT header does exist. This is a Public Key Client Validation Error.",
    "date_created": "2017-05-05T16:33:26Z",
    "last_updated": "2020-08-04T10:00:18.742Z"
  },
  {
    "code": 70154,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Public Key Is Invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Public Key provided to Twilio is invalid. This is a Public Key Client Validation Error.\n\n### Possible Solution:\n\n- Upload a new, valid Public Key.\n- For details on the Credentials Endpoint, see [the documentation](/docs/iam/pkcv)\n",
    "causes": null,
    "solutions": null,
    "description": "The Public Key provided to Twilio is invalid. This is a Public Key Client Validation Error.",
    "date_created": "2017-05-05T16:39:08Z",
    "last_updated": "2020-08-04T10:00:18.722Z"
  },
  {
    "code": 70155,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Request Is Missing Required HTTP Headers",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe JWT received by Twilio along with the request has defined a set of HTTP headers that must be validated. The actual request is missing at least one of those headers. This is a Public Key Client Validation Error.\n\n### Possible Solution:\n\n- Make sure you are using the latest Twilio helper library.\n- Make sure the JWT does not declare unnecessary headers.\n- For the details on JWTs used as part of Public Key Client Validation, see [the documentation](/docs/iam/pkcv/quickstart)\n",
    "causes": null,
    "solutions": null,
    "description": "The JWT received by Twilio along with the request has defined a set of HTTP headers that must be validated. The actual request is missing at least one of those headers. This is a Public Key Client Validation Error.",
    "date_created": "2017-05-05T16:40:23Z",
    "last_updated": "2020-08-04T10:00:18.667Z"
  },
  {
    "code": 70156,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Request Hash Is Invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request hash that is declared in the JWT does not match the given request's hash calculated by Twilio. This is a Public Key Client Validation Error.\n\n### Possible Solution:\n\n- Make sure you are using the latest Twilio helper library. If not using the library, make sure the request hash is calculated on the canonicalized HTTP request and the same canonicalization is used.\n- For the details on JWTs used as part of Public Key Client Validation, see [the documentation](/docs/iam/pkcv/quickstart)\n",
    "causes": null,
    "solutions": null,
    "description": "The request hash that is declared in the JWT does not match the given request's hash calculated by Twilio. This is a Public Key Client Validation Error.",
    "date_created": "2017-05-05T16:39:55Z",
    "last_updated": "2020-08-04T10:00:18.701Z"
  },
  {
    "code": 70251,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Bad SSO Settings",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request tries to authenticate through SSO. The request is well-formed, but the configured settings for the SSO is not valid.\n\n### Possible causes\n\n- Malformed urls\n- Missing certificates\n\n### Possible Solution\n\n- Reconfigure the SSO settings and retry.\n",
    "causes": "* Malformed urls\n* Missing certificates",
    "solutions": null,
    "description": "The Request tries to authenticate through SSO. The request is well-formed, but the configured settings for the SSO is not valid.",
    "date_created": "2018-07-26T21:18:48Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70252,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Bad Saml Response",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request tries to authenticate through SSO. The request is well-formed, but the response from the Identity Provider is missing necessary attributes.\n\n### Possible causes\n\n- Misconfigured Identity Provider settings\n\n### Possible Solution\n\n- Reconfigure the Identity Provider settings and retry.\n",
    "causes": "* Misconfigured Identity Provider settings",
    "solutions": null,
    "description": "The Request tries to authenticate through SSO. The request is well-formed, but the response from the Identity Provider is missing necessary attributes.",
    "date_created": "2018-07-26T21:27:33Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 70253,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Invalid User Grants",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Request tries to authenticate through SSO. The request is well-formed, but the user grants stored is not a valid grants form.\n\n### Possible causes\n\n- Invalid User Grants.\n\n### Possible Solution\n\n- Reconfigure the user grants and retry.\n",
    "causes": "* Invalid User Grants.",
    "solutions": null,
    "description": "The Request tries to authenticate through SSO. The request is well-formed, but the user grants stored is not a valid grants form.",
    "date_created": "2018-07-26T21:31:58Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 71001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Usage API version not eligible",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Billing Group or Account where the request originated isn't able to use the specified Usage API version.\n\n### Possible causes\n\n- The Billing Group isn't eligible to use the current version of the Usage API.\n- The Account isn't eligible to use the current version of the Usage API.\n\n### Possible solutions\n\n- Review the Billing Group or the Account eligibility requirements for the current Usage API version. You might need to use a previous version of the Usage API.\n\n#### Additional resources\n\n- [Usage API v1: Usage Records](/docs/usage/api/usage-record)\n",
    "causes": "* The Billing Group isn't eligible to use the current version of the Usage API.\n* The Account isn't eligible to use the current version of the Usage API.",
    "solutions": "* Review the Billing Group or the Account eligibility requirements for the current Usage API version. You might need to use a previous version of the Usage API.",
    "description": "The Billing Group or Account where the request originated isn't able to use the specified Usage API version.",
    "date_created": "2026-06-17T19:07:37+02:00",
    "last_updated": "2026-06-17T19:07:37+02:00"
  },
  {
    "code": 71002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Subject not eligible for the usage export functionality",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe subject that made the request can't use the usage export functionality.\n\n### Possible causes\n\n- The requested Account isn't enabled for usage exports.\n\n### Possible solutions\n\n- Confirm that you're authenticating with the credentials of the Account enabled for usage exports. Twilio uses the authenticating Account to decide eligibility.\n- Contact Twilio Support to request access to usage exports for your Account.\n",
    "causes": "* The requested Account isn't enabled for usage exports.",
    "solutions": "* Confirm that you're authenticating with the credentials of the Account enabled for usage exports. Twilio uses the authenticating Account to decide eligibility.\n* Contact Twilio Support to request access to usage exports for your Account.",
    "description": "The subject that made the request can't use the usage export functionality.",
    "date_created": "2026-09-25T10:10:24+02:00",
    "last_updated": "2026-09-25T10:10:24+02:00"
  },
  {
    "code": 71003,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Usage export not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio couldn't find a usage export that matches the request parameters.\n\n### Possible causes\n\n- The usage export for the requested time period hasn't been generated yet.\n- The requested time period is outside the range of available usage exports.\n- The Account had no usage export generated for the requested time period.\n\n### Possible solutions\n\n- Check that time period refers to a completed period, in UTC.\n- If you requested a recent time period, wait and try again later.\n- Confirm that you're authenticating with the credentials of the Account you want the usage export for. Twilio uses the authenticating Account to find the export.\n",
    "causes": "* The usage export for the requested time period hasn't been generated yet.\n* The requested time period is outside the range of available usage exports.\n* The Account had no usage export generated for the requested time period.",
    "solutions": "* Check that time period refers to a completed period, in UTC.\n* If you requested a recent time period, wait and try again later.\n* Confirm that you're authenticating with the credentials of the Account you want the usage export for. Twilio uses the authenticating Account to find the export.",
    "description": "Twilio couldn't find a usage export that matches the request parameters.",
    "date_created": "2026-09-25T10:10:24+02:00",
    "last_updated": "2026-09-25T10:10:24+02:00"
  },
  {
    "code": 77701,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Account Not Ready",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error may occur during your first attempt to use the API.\nIt indicates that your account is not yet ready to perform the requested operation.\nWait for the number of seconds specified in the `Retry-After` HTTP response header before retrying your request.\n\n### Possible causes\n\n- This is your first time using the API. It can take a few minutes for your account to be fully provisioned.\n\n### Possible solutions\n\n- Please try again according to the `Retry-After` header in the API response.\n",
    "causes": "* This is your first time using the API. It can take a few minutes for your account to be fully provisioned.",
    "solutions": "* Please try again according to the `Retry-After` header in the API response.",
    "description": "This error may occur during your first attempt to use the API.\nIt indicates that your account is not yet ready to perform the requested operation.\nWait for the number of seconds specified in the `Retry-After` HTTP response header before retrying your request.",
    "date_created": "2026-04-15T14:39:10-07:00",
    "last_updated": "2026-04-16T00:47:20-07:00"
  },
  {
    "code": 80101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Number Already Added to Another Service",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nA phone number can be added in one service at a time.\n\n### Possible causes\n\nPhone Number has already been added to another Service.\n\n### Possible solutions\n\nAdd a different phone number or remove the number from the relevant Proxy Service.\n",
    "causes": "Phone Number has already been added to another Service.",
    "solutions": "Add a different phone number or remove the number from the relevant Proxy Service.",
    "description": "A phone number can be added in one service at a time.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80102,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Participant Already In Interaction",
    "secondary_message": "Participant has already been added to Interaction",
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning appears when you try to add a participant to an interaction and that participant has already been added. For SMS and WhatsApp participants, the `address` and `proxy_address` binding can exist in only one non-closed conversation, so trying to add the same participant to another interaction can fail.\n\n### Possible causes\n\n- The participant is already part of the interaction.\n- For SMS or WhatsApp, the same `address` and `proxy_address` pair is already bound to another non-closed conversation in the `active` or `inactive` state.\n- You created an outbound interaction for a customer who already has an ongoing conversation, so the participant was not added to the new interaction.\n\n### Possible solutions\n\n- Check whether the participant is already in a non-closed conversation before you create the interaction. Use the Participant Conversation Resource to look up existing conversations for that participant.\n- If the participant is already in an existing conversation, continue that conversation instead of creating a new interaction for the same binding.\n- Create the conversation first and then create the interaction. If the participant add fails, the response returns the conversation SID for the conversation that already contains that participant.\n\n#### Additional resources\n\n- [Interactions API](/docs/flex/developer/conversations/interactions-api)\n- [Best Practices for Flex Conversations](/docs/flex/developer/conversations/best-practices)\n- [Participant Conversation Resource](/docs/conversations-classic/api/participant-conversation-resource)\n",
    "causes": "* The participant is already part of the interaction.\n* For SMS or WhatsApp, the same `address` and `proxy_address` pair is already bound to another non-closed conversation in the `active` or `inactive` state.\n* You created an outbound interaction for a customer who already has an ongoing conversation, so the participant was not added to the new interaction.",
    "solutions": "* Check whether the participant is already in a non-closed conversation before you create the interaction. Use the Participant Conversation Resource to look up existing conversations for that participant.\n* If the participant is already in an existing conversation, continue that conversation instead of creating a new interaction for the same binding.\n* Create the conversation first and then create the interaction. If the participant add fails, the response returns the conversation SID for the conversation that already contains that participant.",
    "description": "This warning appears when you try to add a participant to an interaction and that participant has already been added. For SMS and WhatsApp participants, the `address` and `proxy_address` binding can exist in only one non-closed conversation, so trying to add the same participant to another interaction can fail.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant Already In Session",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThe identifier is already a participant in the Session\n\n### Possible causes\n\nParticipant has already been added to the Session\n\n### Possible solutions\n\nCreate a new Session to add this participant, or add a new participant in the Session.\n",
    "causes": "Participant has already been added to the Session",
    "solutions": "Create a new Session to add this participant, or add a new participant in the Session.",
    "description": "The identifier is already a participant in the Session",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80104,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Phone Number Already In Service",
    "secondary_message": "PhoneNumber has already been added to Service",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning occurs when you try to add a phone number to a Proxy Service, but that phone number is already associated with that same Service. In Proxy, phone numbers are attached directly to a Service and become part of that Service's phone number pool.\n\n### Possible causes\n\n- The phone number you submitted is already associated with the Proxy Service's phone number pool.\n- Your application may have retried an earlier add request after the phone number was already added to the Service.\n- You attempted to create another Proxy PhoneNumber resource for a number that already exists in the same Service.\n\n### Possible solutions\n\n- List the phone numbers for the Proxy Service to confirm whether the number is already present before sending another add request.\n- If the phone number is already attached to the correct Service, reuse the existing configuration instead of creating it again.\n- If you need to recreate the association, remove the phone number from the Proxy Service and then add it again.\n\n#### Additional resources\n\n- [Proxy PhoneNumber resource](/docs/proxy/api/phone-number)\n- [Phone Number Management](/docs/proxy/understanding-phone-number-management)\n- [Proxy API Overview](/docs/proxy/api)\n",
    "causes": "* The phone number you submitted is already associated with the Proxy Service's phone number pool.\n* Your application may have retried an earlier add request after the phone number was already added to the Service.\n* You attempted to create another Proxy PhoneNumber resource for a number that already exists in the same Service.",
    "solutions": "* List the phone numbers for the Proxy Service to confirm whether the number is already present before sending another add request.\n* If the phone number is already attached to the correct Service, reuse the existing configuration instead of creating it again.\n* If you need to recreate the association, remove the phone number from the Proxy Service and then add it again.",
    "description": "This warning occurs when you try to add a phone number to a Proxy Service, but that phone number is already associated with that same Service. In Proxy, phone numbers are attached directly to a Service and become part of that Service's phone number pool.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80105,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Short Code Already In Service",
    "secondary_message": "ShortCode has already been added to Service",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning occurs when you try to add a short code that is already associated with the same Messaging Service sender pool. Use the ShortCodes subresource to manage short codes on a Messaging Service.\n\n### Possible causes\n\n- You sent multiple requests to add the same short code to the Messaging Service.\n- The short code was already added to the Messaging Service at an earlier time.\n- Your application retried a previous add request after the short code was already associated with the Service.\n\n### Possible solutions\n\n- If the short code is already associated with the correct Messaging Service, no action is required.\n- Check the Messaging Service sender pool before retrying the request. Review the Service in the Twilio Console or list the Service's short codes with the ShortCodes subresource.\n- If you need to recreate the association, remove the existing short code from the Messaging Service and then add it again. Removing a short code from a Messaging Service does not cancel the short code from your account.\n- Update your application logic to avoid duplicate create requests for the same short code.\n\n#### Additional resources\n\n- [ShortCodes subresource](/docs/messaging/api/services-shortcode-resource)\n- [Messaging Services](/docs/messaging/services)\n- [Get started with Messaging Services](/docs/messaging/tutorials/send-messages-with-messaging-services)\n",
    "causes": "* You sent multiple requests to add the same short code to the Messaging Service.\n* The short code was already added to the Messaging Service at an earlier time.\n* Your application retried a previous add request after the short code was already associated with the Service.",
    "solutions": "* If the short code is already associated with the correct Messaging Service, no action is required.\n* Check the Messaging Service sender pool before retrying the request. Review the Service in the Twilio Console or list the Service's short codes with the ShortCodes subresource.\n* If you need to recreate the association, remove the existing short code from the Messaging Service and then add it again. Removing a short code from a Messaging Service does not cancel the short code from your account.\n* Update your application logic to avoid duplicate create requests for the same short code.",
    "description": "This warning occurs when you try to add a short code that is already associated with the same Messaging Service sender pool. Use the ShortCodes subresource to manage short codes on a Messaging Service.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80201,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "No Available Voice Proxy",
    "secondary_message": "This Service has no compatible Proxy numbers for this Participant. This Service has no available Proxy numbers having voice capabilities. This can happen if you attempted to create a participant in a session for which you did not specify a Mode in a country that does not support combined voice and sms capabilities.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning means your Proxy Service could not automatically assign a proxy number with voice capability to the Participant. It usually occurs when the Session `mode` includes voice, but the Service's phone number pool does not contain an available number that supports voice. If you do not set `mode`, this can also happen in countries where the same number cannot support both voice and SMS.\n\n### Possible causes\n\n- Your Service does not have any phone numbers in its pool with voice capability.\n- The Session `mode` requires voice, such as `voice-only` or `voice-and-message`, but the available proxy numbers only support messaging.\n- You did not set `mode`, and the Participant is in a country where combined voice and SMS capability is not available on the same number.\n- The only voice-capable numbers in the pool are marked as reserved, so Proxy will not choose them automatically.\n\n### Possible solutions\n\n- Add one or more Twilio phone numbers with voice capability to the Proxy Service's phone number pool. Check the number's capabilities before you add it.\n- Set the Session `mode` explicitly to match the communication you need. Use `voice-only` for calls, `message-only` for SMS, or `voice-and-message` only when your pool supports both channels.\n- In countries where one number does not support both voice and SMS, add separate voice-capable and messaging-capable numbers to the pool so Proxy can assign the right number for each Session.\n- If you need to use a reserved voice-capable number, create the Participant with `proxyIdentifier` or `proxyIdentifierSid` instead of relying on automatic selection.\n\n#### Additional resources\n\n- [Proxy Quickstart for SMS and Voice](/docs/proxy/quickstart)\n- [Phone Number Management](/docs/proxy/understanding-phone-number-management)\n- [Participant resource](/docs/proxy/api/participant)\n",
    "causes": "* Your Service does not have any phone numbers in its pool with voice capability.\n* The Session `mode` requires voice, such as `voice-only` or `voice-and-message`, but the available proxy numbers only support messaging.\n* You did not set `mode`, and the Participant is in a country where combined voice and SMS capability is not available on the same number.\n* The only voice-capable numbers in the pool are marked as reserved, so Proxy will not choose them automatically.",
    "solutions": "* Add one or more Twilio phone numbers with voice capability to the Proxy Service's phone number pool. Check the number's capabilities before you add it.\n* Set the Session `mode` explicitly to match the communication you need. Use `voice-only` for calls, `message-only` for SMS, or `voice-and-message` only when your pool supports both channels.\n* In countries where one number does not support both voice and SMS, add separate voice-capable and messaging-capable numbers to the pool so Proxy can assign the right number for each Session.\n* If you need to use a reserved voice-capable number, create the Participant with `proxyIdentifier` or `proxyIdentifierSid` instead of relying on automatic selection.",
    "description": "This warning means your Proxy Service could not automatically assign a proxy number with voice capability to the Participant. It usually occurs when the Session `mode` includes voice, but the Service's phone number pool does not contain an available number that supports voice. If you do not set `mode`, this can also happen in countries where the same number cannot support both voice and SMS.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80202,
    "log_level": "WARNING",
    "log_type": null,
    "message": "No Available Message Proxy",
    "secondary_message": "This Service has no compatible Proxy numbers for this Participant. This Service has no available Proxy numbers having sms capabilities. This can happen if you attempted to create a participant in a session for which you did not specify a Mode in a country that does not support combined voice and sms capabilities, or if your only available proxy numbers do not have messaging capabilities.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when Proxy cannot assign an SMS-capable proxy number to a Participant. This usually means your Service does not have an available proxy number with messaging capability for the Session you created, or you did not set the Session `mode` in a country where a single number cannot support both voice and messaging.\n\n### Possible causes\n\n- You tried to add a Participant to a Session that needs messaging, but your Proxy phone number pool does not include any SMS-capable numbers.\n- You created a Session without setting `mode`, and Proxy could not find a compatible number in a country where numbers do not support both voice and messaging on the same number.\n- The only proxy numbers currently available in your Service are voice-only or otherwise do not support messaging for this Participant.\n- You expected Proxy to choose a number automatically, but your Service does not contain a compatible SMS-capable number for the Participant you are adding.\n\n### Possible solutions\n\n- Add one or more Twilio numbers with SMS capability to the Proxy Service phone number pool.\n- Set the Session `mode` explicitly. Use `message-only` when the Session only needs messaging. Use `voice-and-message` only when your pool includes numbers that support both capabilities.\n- If you already have a compatible SMS-capable number in the pool, pass `proxyIdentifier` or `proxyIdentifierSid` when you create the Participant so Proxy can use that specific number.\n- Review the capabilities of the numbers in your pool for each country where you operate. In many countries, numbers support only voice or only SMS, so you may need separate numbers to support both channels.\n\n#### Additional resources\n\n- [Proxy Quickstart](/docs/proxy/quickstart)\n- [Session Resource](/docs/proxy/api/session)\n- [Participant Resource](/docs/proxy/api/participant)\n",
    "causes": "* You tried to add a Participant to a Session that needs messaging, but your Proxy phone number pool does not include any SMS-capable numbers.\n* You created a Session without setting `mode`, and Proxy could not find a compatible number in a country where numbers do not support both voice and messaging on the same number.\n* The only proxy numbers currently available in your Service are voice-only or otherwise do not support messaging for this Participant.\n* You expected Proxy to choose a number automatically, but your Service does not contain a compatible SMS-capable number for the Participant you are adding.",
    "solutions": "* Add one or more Twilio numbers with SMS capability to the Proxy Service phone number pool.\n* Set the Session `mode` explicitly. Use `message-only` when the Session only needs messaging. Use `voice-and-message` only when your pool includes numbers that support both capabilities.\n* If you already have a compatible SMS-capable number in the pool, pass `proxyIdentifier` or `proxyIdentifierSid` when you create the Participant so Proxy can use that specific number.\n* Review the capabilities of the numbers in your pool for each country where you operate. In many countries, numbers support only voice or only SMS, so you may need separate numbers to support both channels.",
    "description": "Twilio returns this warning when Proxy cannot assign an SMS-capable proxy number to a Participant. This usually means your Service does not have an available proxy number with messaging capability for the Session you created, or you did not set the Session `mode` in a country where a single number cannot support both voice and messaging.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80203,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "No Available Proxy For Country",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis Service has no compatible Proxy numbers for this Participant.\n\nThis Service has no available Proxy numbers for the participant's number country code `<country>`.\n\n### Possible causes\n\nThere are no numbers in the Service that can be assigned to this participant's identifier.\n\n### Possible solutions\n\nAdd a Twilio number from your account to the Service that matches the participant's country code. Alternatively, pass the proxyIdentifier's optional property when creating the participant. Please note that international tolls may apply.\n",
    "causes": "There are no numbers in the Service that can be assigned to this participant's identifier.",
    "solutions": "Add a Twilio number from your account to the Service that matches the participant's country code. Alternatively, pass the proxyIdentifier's optional property when creating the participant. Please note that international tolls may apply.",
    "description": "This Service has no compatible Proxy numbers for this Participant. This Service has no available Proxy numbers for the participant's number country code `<country>`.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80205,
    "log_level": "WARNING",
    "log_type": null,
    "message": "No Proxies For Service",
    "secondary_message": "This Service has no compatible Proxy numbers for this Participant. This Service has no Proxy numbers configured.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when you try to add a Participant to a Proxy Service that does not have any Proxy phone numbers configured. Proxy assigns phone numbers from the Service's phone number pool, and a Service must have numbers associated with it before Proxy can assign one to a Participant.\n\n### Possible causes\n\n- You have not added any Twilio phone numbers to the Service's Proxy phone number pool.\n- The numbers you expected to use are associated with a different Proxy Service. A Twilio phone number can only be associated with one Proxy Service in the same account.\n- You created the Service but did not finish configuring the number pool before creating Sessions or Participants. Proxy selects numbers from the Service pool when it creates Participants.\n\n### Possible solutions\n\n- Add one or more Twilio phone numbers to the Service before you create Participants.\n- Confirm that the phone numbers are attached to this Service and not to another Proxy Service in your account.\n- When you add numbers to the pool, choose numbers that support the Session `mode` you plan to use. Sessions can be `message-only`, `voice-only`, or `voice-and-message`, and number capabilities vary by country.\n- If you use geographic matching, add numbers that match your participants' countries or required area codes so Proxy can assign compatible numbers after the pool is configured.\n- If the same participant can appear in concurrent active Sessions, add enough numbers to the pool to support that concurrency. A participant cannot be assigned the same Proxy number in concurrent active Sessions.\n\n#### Additional resources\n\n- [Service resource](/docs/proxy/api/service)\n- [Phone Number Management](/docs/proxy/understanding-phone-number-management)\n- [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed)\n",
    "causes": "* You have not added any Twilio phone numbers to the Service's Proxy phone number pool.\n* The numbers you expected to use are associated with a different Proxy Service. A Twilio phone number can only be associated with one Proxy Service in the same account.\n* You created the Service but did not finish configuring the number pool before creating Sessions or Participants. Proxy selects numbers from the Service pool when it creates Participants.",
    "solutions": "* Add one or more Twilio phone numbers to the Service before you create Participants.\n* Confirm that the phone numbers are attached to this Service and not to another Proxy Service in your account.\n* When you add numbers to the pool, choose numbers that support the Session `mode` you plan to use. Sessions can be `message-only`, `voice-only`, or `voice-and-message`, and number capabilities vary by country.\n* If you use geographic matching, add numbers that match your participants' countries or required area codes so Proxy can assign compatible numbers after the pool is configured.\n* If the same participant can appear in concurrent active Sessions, add enough numbers to the pool to support that concurrency. A participant cannot be assigned the same Proxy number in concurrent active Sessions.",
    "description": "Twilio returns this warning when you try to add a Participant to a Proxy Service that does not have any Proxy phone numbers configured. Proxy assigns phone numbers from the Service's phone number pool, and a Service must have numbers associated with it before Proxy can assign one to a Participant.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80206,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "No Available Proxy",
    "secondary_message": "This Service has no compatible Proxy numbers for this Participant. Failed to find a proxy number for +1415555XXXX. Either you have no numbers meeting your service's GeoMatchLevel for the target number, or the numbers you do have are already in use by the participant in other Sessions.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning means Proxy could not assign a compatible phone number from your Service's number pool to the participant. Proxy matches numbers by country by default, can require `area-code` or `extended-area-code` matching when `geoMatchLevel` is set, and can also run out of compatible numbers when the same participant already has those numbers in use in other active Sessions.\n\n### Possible causes\n\n- Your Service does not have any phone numbers that match the participant's country or the stricter location rules configured by `geoMatchLevel`.\n- The participant is already part of one or more active Sessions and has used all compatible proxy numbers available in the pool. A participant cannot be assigned the same proxy number in concurrent active Sessions.\n- Your pool does not contain numbers with the capabilities required for the interaction, such as messaging, voice, or both.\n\n### Possible solutions\n\n- Add more Twilio phone numbers to the Service so the pool includes numbers that match the participant's country or local area requirements and support the interaction type you need.\n- If you do not need strict local matching, update `geoMatchLevel` to a less restrictive setting so Proxy can choose from a larger set of numbers.\n- Close any active Session that no longer needs to stay open so its assigned number can be used again for that participant.\n- Set a Session `ttl` or `dateExpiry` so unused Sessions expire automatically and numbers return to the pool.\n- Size your pool for your expected concurrency. If the same participant may be active in multiple Sessions at the same time, provide enough distinct proxy numbers to cover those overlapping Sessions.\n\n#### Additional resources\n\n- [Phone Number Management](/docs/proxy/understanding-phone-number-management)\n- [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed)\n- [Proxy Service API reference](/docs/proxy/api/service)\n",
    "causes": "* Your Service does not have any phone numbers that match the participant's country or the stricter location rules configured by `geoMatchLevel`.\n* The participant is already part of one or more active Sessions and has used all compatible proxy numbers available in the pool. A participant cannot be assigned the same proxy number in concurrent active Sessions.\n* Your pool does not contain numbers with the capabilities required for the interaction, such as messaging, voice, or both.",
    "solutions": "* Add more Twilio phone numbers to the Service so the pool includes numbers that match the participant's country or local area requirements and support the interaction type you need.\n* If you do not need strict local matching, update `geoMatchLevel` to a less restrictive setting so Proxy can choose from a larger set of numbers.\n* Close any active Session that no longer needs to stay open so its assigned number can be used again for that participant.\n* Set a Session `ttl` or `dateExpiry` so unused Sessions expire automatically and numbers return to the pool.\n* Size your pool for your expected concurrency. If the same participant may be active in multiple Sessions at the same time, provide enough distinct proxy numbers to cover those overlapping Sessions.",
    "description": "This warning means Proxy could not assign a compatible phone number from your Service's number pool to the participant. Proxy matches numbers by country by default, can require `area-code` or `extended-area-code` matching when `geoMatchLevel` is set, and can also run out of compatible numbers when the same participant already has those numbers in use in other active Sessions.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80207,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": " No unreserved numbers in proxy pool.",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error occurs when Proxy needs to automatically assign a proxy number to a participant, but no unreserved number in the Service's pool matches that request. Proxy excludes reserved numbers from automatic selection. If you do not provide `proxyIdentifier`, Proxy selects a number from the pool for you.\n\n### Possible causes\n\n- Every candidate number in the Proxy pool that matches the participant is reserved, so Proxy has nothing it can auto-assign.\n- Your Service configuration narrows the set of eligible numbers. Proxy matches participants to numbers in the same country by default, and `GeoMatchLevel` can require a more specific area match in North America.\n- You expected Proxy to use a reserved number automatically. Reserved numbers are excluded from automatic selection unless you assign them explicitly to a participant.\n\n### Possible solutions\n\n- Unreserve at least one phone number in the Service that matches the participant you are adding. Proxy can only auto-assign numbers that are not reserved.\n- Add an unreserved phone number in the required geography to the Proxy pool. Review `GeoMatchLevel` and make sure the pool contains an eligible number for that participant's country or area.\n- If you want to use a reserved number for a specific participant, provide `proxyIdentifier` or `proxyIdentifierSid` when you create the Participant so Proxy uses that number explicitly instead of auto-selecting from the pool.\n\n#### Additional resources\n\n- [Reserved Phone Numbers](/docs/proxy/reserved-phone-numbers)\n- [Understanding Phone Number Management](/docs/proxy/understanding-phone-number-management)\n- [Participant resource](/docs/proxy/api/participant)\n",
    "causes": "* Every candidate number in the Proxy pool that matches the participant is reserved, so Proxy has nothing it can auto-assign.\n* Your Service configuration narrows the set of eligible numbers. Proxy matches participants to numbers in the same country by default, and `GeoMatchLevel` can require a more specific area match in North America.\n* You expected Proxy to use a reserved number automatically. Reserved numbers are excluded from automatic selection unless you assign them explicitly to a participant.",
    "solutions": "* Unreserve at least one phone number in the Service that matches the participant you are adding. Proxy can only auto-assign numbers that are not reserved.\n* Add an unreserved phone number in the required geography to the Proxy pool. Review `GeoMatchLevel` and make sure the pool contains an eligible number for that participant's country or area.\n* If you want to use a reserved number for a specific participant, provide `proxyIdentifier` or `proxyIdentifierSid` when you create the Participant so Proxy uses that number explicitly instead of auto-selecting from the pool.",
    "description": "This error occurs when Proxy needs to automatically assign a proxy number to a participant, but no unreserved number in the Service's pool matches that request. Proxy excludes reserved numbers from automatic selection. If you do not provide `proxyIdentifier`, Proxy selects a number from the pool for you.",
    "date_created": "2020-03-10T20:49:33Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80208,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No Available Unused Proxy",
    "secondary_message": "This Service has no compatible Proxy numbers for this Participant. Failed to find a proxy number for \\{identifier}. All matching proxies for this Participant are already in use in other Sessions.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error occurs when Proxy cannot assign a compatible masked number to the participant from the Service phone number pool. Proxy does not assign the same proxy number to the same participant across concurrent open or in-progress Sessions, and it selects numbers based on routing rules such as country matching, `GeoMatchLevel`, and the capabilities required for the conversation type.\n\n### Possible causes\n\n- The Service does not have enough available proxy numbers for the number of concurrent Sessions that include the same participant. If one participant is active in overlapping Sessions, that participant needs different proxy numbers for those concurrent assignments.\n- All compatible proxy numbers for this participant are already in use in other open or in-progress Sessions, so Proxy cannot safely reuse one without risking conversation collisions.\n- The phone number pool does not contain a number that matches the participant's country or the Service `GeoMatchLevel` requirements. Proxy matches participants to same-country numbers by default, and stricter `GeoMatchLevel` settings can reduce the set of eligible numbers further.\n- The phone number pool does not contain a number with the required capabilities for the interaction. Proxy selects numbers appropriate to the conversation type, and number capabilities vary by country.\n\n### Possible solutions\n\n- Add more unreserved Twilio phone numbers to the Proxy Service so Proxy has more eligible numbers to assign. Add the numbers to the Service phone number pool before creating more participant assignments.\n- Size your pool for concurrency. If the same participant can be active in multiple concurrent Sessions, add at least one additional proxy number for each overlapping Session that participant must support.\n- Review your Service `GeoMatchLevel` and make sure your pool includes numbers in the countries or area codes your participants require. If your current matching rules are stricter than your use case needs, relax them so more numbers qualify.\n- Verify that your pool includes numbers with the capabilities your workflow needs, such as Voice, SMS, or both. In countries where capabilities differ by number type, add numbers that match the communication channels you support.\n- Close Sessions as soon as they are no longer needed. Because this error occurs when compatible numbers are already in use in other Sessions, shorter overlap windows can reduce allocation failures.\n\n#### Additional resources\n\n- [Phone Number Management](/docs/proxy/understanding-phone-number-management)\n- [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed)\n- [Proxy Quickstart](/docs/proxy/quickstart)\n",
    "causes": "* The Service does not have enough available proxy numbers for the number of concurrent Sessions that include the same participant. If one participant is active in overlapping Sessions, that participant needs different proxy numbers for those concurrent assignments.\n* All compatible proxy numbers for this participant are already in use in other open or in-progress Sessions, so Proxy cannot safely reuse one without risking conversation collisions.\n* The phone number pool does not contain a number that matches the participant's country or the Service `GeoMatchLevel` requirements. Proxy matches participants to same-country numbers by default, and stricter `GeoMatchLevel` settings can reduce the set of eligible numbers further.\n* The phone number pool does not contain a number with the required capabilities for the interaction. Proxy selects numbers appropriate to the conversation type, and number capabilities vary by country.",
    "solutions": "* Add more unreserved Twilio phone numbers to the Proxy Service so Proxy has more eligible numbers to assign. Add the numbers to the Service phone number pool before creating more participant assignments.\n* Size your pool for concurrency. If the same participant can be active in multiple concurrent Sessions, add at least one additional proxy number for each overlapping Session that participant must support.\n* Review your Service `GeoMatchLevel` and make sure your pool includes numbers in the countries or area codes your participants require. If your current matching rules are stricter than your use case needs, relax them so more numbers qualify.\n* Verify that your pool includes numbers with the capabilities your workflow needs, such as Voice, SMS, or both. In countries where capabilities differ by number type, add numbers that match the communication channels you support.\n* Close Sessions as soon as they are no longer needed. Because this error occurs when compatible numbers are already in use in other Sessions, shorter overlap windows can reduce allocation failures.",
    "description": "This error occurs when Proxy cannot assign a compatible masked number to the participant from the Service phone number pool. Proxy does not assign the same proxy number to the same participant across concurrent open or in-progress Sessions, and it selects numbers based on routing rules such as country matching, `GeoMatchLevel`, and the capabilities required for the conversation type.",
    "date_created": "2018-11-22T05:06:25Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80301,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Found Phone Number SID",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nPhone Number SID is not associated with the Account SID.\n\n### Possible causes\n\nThe Account SID doesn't own the Phone Number SID.\n\n### Possible solutions\n\nThe Phone Number SID should be owned by the Account SID.\n",
    "causes": "The Account SID doesn't own the Phone Number SID.",
    "solutions": "The Phone Number SID should be owned by the Account SID.",
    "description": "Phone Number SID is not associated with the Account SID.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80303,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Not Found Short Code Sid",
    "secondary_message": "Short Code Sid is not associated with your Account.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis warning indicates that the `ShortCodeSid` or short code resource `Sid` in your request could not be found for the account making the request. Short code resources use the `SC` SID prefix, and Messaging Services manage them through the `/Services/{ServiceSid}/ShortCodes` subresource.\n\n### Possible causes\n\n- The `ShortCodeSid` value is incorrect, malformed, or does not reference an existing short code resource on your account. Short code SIDs use the `SC` prefix.\n- The short code exists, but it belongs to a different Account SID or subaccount than the credentials used for the request. Twilio short code resources are tied to the account that created them.\n- You are trying to fetch or remove a short code from a Messaging Service by using a `Sid` that is not associated with that service. Twilio uses the `/Services/{ServiceSid}/ShortCodes/{Sid}` subresource for those operations.\n\n### Possible solutions\n\n- Verify that the short code resource exists on the same account as the API credentials you are using. If needed, list or fetch your short code resources first and confirm the `SC` SID before retrying the request.\n- If you are adding a short code to a Messaging Service, pass the correct `ShortCodeSid` in the request to `POST /Services/{ServiceSid}/ShortCodes`.\n- If you are retrieving or deleting a short code from a Messaging Service, confirm both the `ServiceSid` and the short code `Sid` so the request targets the correct subresource.\n- Manage active short codes from the Short Codes section of Numbers and Senders or through Trust Hub if you need to confirm registration and account ownership before associating the short code with a Messaging Service.\n\n#### Additional resources\n\n- [Messaging Services](/docs/messaging/services)\n- [ShortCodes subresource](/docs/messaging/api/services-shortcode-resource)\n- [Short Code Numbers](/docs/numbers-and-senders/short-codes)\n",
    "causes": "* The `ShortCodeSid` value is incorrect, malformed, or does not reference an existing short code resource on your account. Short code SIDs use the `SC` prefix.\n* The short code exists, but it belongs to a different Account SID or subaccount than the credentials used for the request. Twilio short code resources are tied to the account that created them.\n* You are trying to fetch or remove a short code from a Messaging Service by using a `Sid` that is not associated with that service. Twilio uses the `/Services/{ServiceSid}/ShortCodes/{Sid}` subresource for those operations.",
    "solutions": "* Verify that the short code resource exists on the same account as the API credentials you are using. If needed, list or fetch your short code resources first and confirm the `SC` SID before retrying the request.\n* If you are adding a short code to a Messaging Service, pass the correct `ShortCodeSid` in the request to `POST /Services/{ServiceSid}/ShortCodes`.\n* If you are retrieving or deleting a short code from a Messaging Service, confirm both the `ServiceSid` and the short code `Sid` so the request targets the correct subresource.\n* Manage active short codes from the Short Codes section of Numbers and Senders or through Trust Hub if you need to confirm registration and account ownership before associating the short code with a Messaging Service.",
    "description": "This warning indicates that the `ShortCodeSid` or short code resource `Sid` in your request could not be found for the account making the request. Short code resources use the `SC` SID prefix, and Messaging Services manage them through the `/Services/{ServiceSid}/ShortCodes` subresource.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80304,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Not Found Unmanaged Identifier",
    "secondary_message": "Unmanaged Proxy Identifier not found. Unmanaged identifiers include non-phone number identifiers (e.g., a facebook messenger page id). Possibly you tried to add a participant with a proxy identifier for a channel that is not managed by Twilio or by your Proxy Service.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when Proxy cannot find the unmanaged `proxyIdentifier` you supplied for a Participant. In Proxy, a Participant `identifier` can be a phone number or a channel identifier. If you set `proxyIdentifier` yourself, it must be a valid proxy address for that Service. For phone-based flows, that means a Twilio phone number already available to the Service. For channel-based flows, that means a configured channel sender managed through your Proxy channel setup.\n\n### Possible causes\n\n- You supplied a non-phone `proxyIdentifier` for a channel that is not installed or configured for Proxy. Proxy channel integrations must be installed in Console before you use a channel sender as a proxy identifier.\n- The channel `Callback Url` is not set to your Proxy Service webhook, so Proxy is not managing that channel sender for the Service.\n- The `identifier` or `proxyIdentifier` does not use the expected channel address format. For channel-based Proxy sessions, the Participant `identifier` is the end user's channel ID and the `proxyIdentifier` is your channel sender ID.\n- You specified a phone number as `proxyIdentifier`, but that Twilio phone number is not already added to the Proxy Service number pool. When you provide a phone-based `proxyIdentifier`, Proxy only accepts a Twilio phone number that is already associated with the Service.\n\n### Possible solutions\n\n- If you are creating a phone-based Participant, add the Twilio number to the Proxy Service number pool before you set it as `proxyIdentifier`. You can also omit `proxyIdentifier` and let Proxy select an appropriate number from the pool.\n- If you are creating a channel-based Participant, install the channel in Console and set the channel `Callback Url` to your Proxy Service webhook.\n- Use the correct values when you create the Participant. Set `identifier` to the end user's channel ID, such as `messenger:+1415XXXXXXX`. Set `proxyIdentifier` to your channel sender ID, such as `messenger:{page-id}`.\n- Verify that you are using the correct `ServiceSid`. Proxy number pools and channel management are configured at the Service level.\n\n#### Additional resources\n\n- [Using Proxy with Channels](/docs/proxy/channels)\n- [Participant resource](/docs/proxy/api/participant)\n- [Service resource](/docs/proxy/api/service)\n",
    "causes": "* You supplied a non-phone `proxyIdentifier` for a channel that is not installed or configured for Proxy. Proxy channel integrations must be installed in Console before you use a channel sender as a proxy identifier.\n* The channel `Callback Url` is not set to your Proxy Service webhook, so Proxy is not managing that channel sender for the Service.\n* The `identifier` or `proxyIdentifier` does not use the expected channel address format. For channel-based Proxy sessions, the Participant `identifier` is the end user's channel ID and the `proxyIdentifier` is your channel sender ID.\n* You specified a phone number as `proxyIdentifier`, but that Twilio phone number is not already added to the Proxy Service number pool. When you provide a phone-based `proxyIdentifier`, Proxy only accepts a Twilio phone number that is already associated with the Service.",
    "solutions": "* If you are creating a phone-based Participant, add the Twilio number to the Proxy Service number pool before you set it as `proxyIdentifier`. You can also omit `proxyIdentifier` and let Proxy select an appropriate number from the pool.\n* If you are creating a channel-based Participant, install the channel in Console and set the channel `Callback Url` to your Proxy Service webhook.\n* Use the correct values when you create the Participant. Set `identifier` to the end user's channel ID, such as `messenger:+1415XXXXXXX`. Set `proxyIdentifier` to your channel sender ID, such as `messenger:{page-id}`.\n* Verify that you are using the correct `ServiceSid`. Proxy number pools and channel management are configured at the Service level.",
    "description": "Twilio returns this warning when Proxy cannot find the unmanaged `proxyIdentifier` you supplied for a Participant. In Proxy, a Participant `identifier` can be a phone number or a channel identifier. If you set `proxyIdentifier` yourself, it must be a valid proxy address for that Service. For phone-based flows, that means a Twilio phone number already available to the Service. For channel-based flows, that means a configured channel sender managed through your Proxy channel setup.",
    "date_created": "2018-09-18T19:55:29Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80305,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Not Found Unmanaged Identifier Sid",
    "secondary_message": "Unmanaged Proxy Identifier not found. Unmanaged identifiers include non-phone number identifiers (e.g., a facebook messenger page id). If you want to include channels such as Facebook Messenger, WhatsApp, etc. as Proxy participants, you must configure the channel integration callback url to point to your proxy service.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\n### Not Found Unmanaged Identifier Sid\n\nExample Message: Unmanaged Proxy Identifier not found. Unmanaged identifiers include non-phone number identifiers (e.g., a facebook messenger page id). If you want to include channels such as Facebook Messenger, WhatsApp, etc. as Proxy participants, you must configure the channel integration callback URL to point to your proxy service.\n\n### Possible causes\n\n- The unmanaged identifier SID does not exist in the target Proxy Service.\n- The identifier exists, but it belongs to a different Proxy Service or Account.\n- The request payload uses an identifier format that is not valid for your configured channel integration.\n\n### Possible solutions\n\n- Verify the identifier SID and confirm it exists in the same Proxy Service you are targeting.\n- Confirm your Account SID and Proxy Service SID are correct for the environment where the request is made.\n- If you are adding channel participants, verify your channel integration callback settings and identifier mapping.\n",
    "causes": "* The unmanaged identifier SID does not exist in the target Proxy Service.\n* The identifier exists, but it belongs to a different Proxy Service or Account.\n* The request payload uses an identifier format that is not valid for your configured channel integration.",
    "solutions": "* Verify the identifier SID and confirm it exists in the same Proxy Service you are targeting.\n* Confirm your Account SID and Proxy Service SID are correct for the environment where the request is made.\n* If you are adding channel participants, verify your channel integration callback settings and identifier mapping.",
    "description": "",
    "date_created": "2018-09-18T20:08:16Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 80306,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Not Found Chat Service",
    "secondary_message": "Found no chat instance associated with service \\{ProxyServiceSid}",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Proxy Service identified by `{ProxyServiceSid}` does not have a Chat Service associated with it. Configure the Service resource with `ChatInstanceSid` before you use Proxy to forward SMS or channel messages to Chat. A Proxy Service maps to one Chat Service instance.\n\n### Possible causes\n\n- The Proxy Service was created or updated without a `ChatInstanceSid`. Twilio lists this property as optional on the Service resource, so workflows that rely on Chat can fail if you leave it unset.\n- The `ChatInstanceSid` on the Service does not point to an existing Chat Service instance. Twilio expects this property to contain a valid Chat Service SID with the `IS` prefix.\n\n### Possible solutions\n\n- Update the Proxy Service and set `ChatInstanceSid` to the correct Chat Service SID for your application. Use a valid Chat Service SID that starts with `IS`.\n- If the Chat Service was deleted or replaced, select the current Chat Service instance and update the Proxy Service so the one-to-one mapping is restored.\n- If you use Proxy with channels, complete that setup against the same Proxy Service after the Chat Service association is configured.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Service resource](/docs/proxy/api/service)\n- [Using Proxy with Channels](/docs/proxy/channels)\n",
    "causes": "* The Proxy Service was created or updated without a `ChatInstanceSid`. Twilio lists this property as optional on the Service resource, so workflows that rely on Chat can fail if you leave it unset.\n* The `ChatInstanceSid` on the Service does not point to an existing Chat Service instance. Twilio expects this property to contain a valid Chat Service SID with the `IS` prefix.",
    "solutions": "* Update the Proxy Service and set `ChatInstanceSid` to the correct Chat Service SID for your application. Use a valid Chat Service SID that starts with `IS`.\n* If the Chat Service was deleted or replaced, select the current Chat Service instance and update the Proxy Service so the one-to-one mapping is restored.\n* If you use Proxy with channels, complete that setup against the same Proxy Service after the Chat Service association is configured.",
    "description": "This error occurs when the Proxy Service identified by `{ProxyServiceSid}` does not have a Chat Service associated with it. Configure the Service resource with `ChatInstanceSid` before you use Proxy to forward SMS or channel messages to Chat. A Proxy Service maps to one Chat Service instance.",
    "date_created": "2018-09-25T20:45:28Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80307,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Record to be updated was not found in database.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRecord to be updated was not found in database.\n\n### Possible causes\n\nRecord to be updated is already deleted.\n\n### Possible solutions\n\nNo action required.\n",
    "causes": "Record to be updated is already deleted.",
    "solutions": "No action required.",
    "description": "Record to be updated was not found in database.",
    "date_created": "2020-03-31T18:20:23Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80308,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Session with the unique name not found.",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nSession with the given unique name not found in database.\n\n### Possible causes\n\nWrong unique name.\n\n### Possible solutions\n\nRetry operation with the correct unique name.\n",
    "causes": "Wrong unique name.",
    "solutions": "Retry operation with the correct unique name.",
    "description": "Session with the given unique name not found in database.",
    "date_created": "2020-03-10T20:51:41Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80401,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Account Sid Invalid",
    "secondary_message": "Invalid Account Sid",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning indicates that a Proxy API request included an Account SID that Twilio could not validate as an Account resource SID. Account SIDs use the `AC` prefix and contain 32 hexadecimal characters after the prefix. Twilio Proxy requests must also be authenticated with valid credentials, using either an API Key SID and secret or an Account SID and Auth Token.\n\n### Possible causes\n\n- The Account SID does not start with `AC` or is not 34 characters long.\n- The Account SID contains characters outside the hexadecimal range expected for Twilio SIDs.\n- The request used a different SID type or another credential value in place of the Account SID. Twilio identifies resource types by SID prefix.\n- The Account SID was copied incorrectly from the Twilio Console or from the environment variables used to authenticate the Proxy request.\n\n### Possible solutions\n\n- Copy the Account SID directly from the Twilio Console and confirm that it matches `^AC[0-9a-fA-F]{32}$`.\n- Check your application configuration and environment variables so `TWILIO_ACCOUNT_SID` contains your Account SID and not another SID type.\n- If you authenticate with API keys, use the API Key SID as the username and the API Key secret as the password. If you authenticate with an Account SID, pair it with the correct Auth Token.\n- Retry the Proxy request after replacing any truncated or malformed Account SID values in the request or authentication settings.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Proxy Quickstart](/docs/proxy/quickstart)\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* The Account SID does not start with `AC` or is not 34 characters long.\n* The Account SID contains characters outside the hexadecimal range expected for Twilio SIDs.\n* The request used a different SID type or another credential value in place of the Account SID. Twilio identifies resource types by SID prefix.\n* The Account SID was copied incorrectly from the Twilio Console or from the environment variables used to authenticate the Proxy request.",
    "solutions": "* Copy the Account SID directly from the Twilio Console and confirm that it matches `^AC[0-9a-fA-F]{32}$`.\n* Check your application configuration and environment variables so `TWILIO_ACCOUNT_SID` contains your Account SID and not another SID type.\n* If you authenticate with API keys, use the API Key SID as the username and the API Key secret as the password. If you authenticate with an Account SID, pair it with the correct Auth Token.\n* Retry the Proxy request after replacing any truncated or malformed Account SID values in the request or authentication settings.",
    "description": "This warning indicates that a Proxy API request included an Account SID that Twilio could not validate as an Account resource SID. Account SIDs use the `AC` prefix and contain 32 hexadecimal characters after the prefix. Twilio Proxy requests must also be authenticated with valid credentials, using either an API Key SID and secret or an Account SID and Auth Token.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80402,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Identifier Proxy Pair Invalid",
    "secondary_message": "Invalid Identifier and Proxy Identifier pair",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning indicates that Proxy could not accept the requested `identifier` and `proxyIdentifier` combination. Proxy uses the participant's Identifier and assigned Proxy Identifier to route calls and messages, and the same participant cannot be assigned the same Proxy number in concurrent active Sessions. If you provide a `proxyIdentifier` when you create a Participant, that Twilio number must already be in the Service's Proxy number pool.\n\n### Possible causes\n\n- You tried to use the same participant in more than one active Session with the same `proxyIdentifier`. Proxy requires a unique Proxy number for a participant in each concurrent active Session to avoid routing calls or messages to the wrong recipient.\n- You sent multiple Participant create requests for the same `identifier` at the same time or very close together. That can create a conflicting Identifier and Proxy Identifier pairing across Sessions.\n- Your Service does not have enough Proxy numbers for the number of overlapping Sessions your participants need to handle. A single participant cannot reuse the same Proxy number across concurrent active Sessions.\n- You manually set `proxyIdentifier` instead of letting Proxy choose a number, and the requested pairing could not be used safely for the Session.\n\n### Possible solutions\n\n- Omit `proxyIdentifier` when you create the Participant and let Proxy select an available number from the Service pool.\n- Add more Twilio numbers to the Proxy Service so each participant can receive a unique Proxy number for every concurrent active Session they join.\n- Send requests sequentially when you need to add the same person to multiple Sessions. This helps prevent simultaneous assignment conflicts.\n- Include `FailOnParticipantConflict=True` in Participant create requests, or in Session create requests that include participant parameters, so Proxy rejects conflicting requests before they create an ambiguous pairing.\n\n#### Additional resources\n\n- [Participant resource](/docs/proxy/api/participant)\n- [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed)\n- [Phone Number Management](/docs/proxy/understanding-phone-number-management)\n",
    "causes": "* You tried to use the same participant in more than one active Session with the same `proxyIdentifier`. Proxy requires a unique Proxy number for a participant in each concurrent active Session to avoid routing calls or messages to the wrong recipient.\n* You sent multiple Participant create requests for the same `identifier` at the same time or very close together. That can create a conflicting Identifier and Proxy Identifier pairing across Sessions.\n* Your Service does not have enough Proxy numbers for the number of overlapping Sessions your participants need to handle. A single participant cannot reuse the same Proxy number across concurrent active Sessions.\n* You manually set `proxyIdentifier` instead of letting Proxy choose a number, and the requested pairing could not be used safely for the Session.",
    "solutions": "* Omit `proxyIdentifier` when you create the Participant and let Proxy select an available number from the Service pool.\n* Add more Twilio numbers to the Proxy Service so each participant can receive a unique Proxy number for every concurrent active Session they join.\n* Send requests sequentially when you need to add the same person to multiple Sessions. This helps prevent simultaneous assignment conflicts.\n* Include `FailOnParticipantConflict=True` in Participant create requests, or in Session create requests that include participant parameters, so Proxy rejects conflicting requests before they create an ambiguous pairing.",
    "description": "This warning indicates that Proxy could not accept the requested `identifier` and `proxyIdentifier` combination. Proxy uses the participant's Identifier and assigned Proxy Identifier to route calls and messages, and the same participant cannot be assigned the same Proxy number in concurrent active Sessions. If you provide a `proxyIdentifier` when you create a Participant, that Twilio number must already be in the Service's Proxy number pool.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80403,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Interaction Sid Invalid",
    "secondary_message": "Invalid Interaction Sid",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when you send a Proxy request with an invalid Interaction SID. In Proxy, Interactions are read-only communication logs within a Session, and each Interaction SID must be a Twilio-generated value that matches the `KI` SID pattern.\n\n### Possible causes\n\n- The `Sid` value in your request is not a valid Interaction SID format. Proxy Interaction SIDs must match the `KI` pattern and be 34 characters long.\n- You used a different Proxy SID type in place of an Interaction SID, such as a Service SID with the `KS` prefix, a Session SID with the `KC` prefix, or a Participant SID with the `KP` prefix.\n- The Interaction SID was copied incorrectly, truncated, or includes extra characters, which makes it fail Proxy SID validation.\n- You are trying to fetch or delete an Interaction without using the correct Proxy resource path for `ServiceSid`, `SessionSid`, and `Sid`.\n\n### Possible solutions\n\n- Use the Interaction `sid` returned by Proxy instead of constructing the value yourself. Twilio creates the unique SID for each Interaction resource.\n- Validate that the Interaction SID starts with `KI` and matches the expected 34-character format before sending the request.\n- For fetch or delete requests, send the Interaction SID in the `/Services/{ServiceSid}/Sessions/{SessionSid}/Interactions/{Sid}` path and confirm that the parent `ServiceSid` and `SessionSid` are valid Proxy SIDs for the same resource hierarchy.\n- If you are not sure which Interaction SID to use, list the Session's Interactions first and then retry the request with the returned `sid` value.\n\n#### Additional resources\n\n- [Interaction resource](/docs/proxy/api/interaction)\n- [The Proxy API Overview](/docs/proxy/api)\n- [Proxy Quickstart](/docs/proxy/quickstart)\n",
    "causes": "* The `Sid` value in your request is not a valid Interaction SID format. Proxy Interaction SIDs must match the `KI` pattern and be 34 characters long.\n* You used a different Proxy SID type in place of an Interaction SID, such as a Service SID with the `KS` prefix, a Session SID with the `KC` prefix, or a Participant SID with the `KP` prefix.\n* The Interaction SID was copied incorrectly, truncated, or includes extra characters, which makes it fail Proxy SID validation.\n* You are trying to fetch or delete an Interaction without using the correct Proxy resource path for `ServiceSid`, `SessionSid`, and `Sid`.",
    "solutions": "* Use the Interaction `sid` returned by Proxy instead of constructing the value yourself. Twilio creates the unique SID for each Interaction resource.\n* Validate that the Interaction SID starts with `KI` and matches the expected 34-character format before sending the request.\n* For fetch or delete requests, send the Interaction SID in the `/Services/{ServiceSid}/Sessions/{SessionSid}/Interactions/{Sid}` path and confirm that the parent `ServiceSid` and `SessionSid` are valid Proxy SIDs for the same resource hierarchy.\n* If you are not sure which Interaction SID to use, list the Session's Interactions first and then retry the request with the returned `sid` value.",
    "description": "This warning appears when you send a Proxy request with an invalid Interaction SID. In Proxy, Interactions are read-only communication logs within a Session, and each Interaction SID must be a Twilio-generated value that matches the `KI` SID pattern.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80404,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Participant Identifier Invalid",
    "secondary_message": "Participant identifier provided does not appear to be a valid, reachable phone number.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nParticipant identifier provided does not appear to be a valid, reachable phone number.\n\n### Possible causes\n\nThe participant's number passed in the participant creation is incorrect.\n\n### Possible solutions\n\nPass a valid participant's number in [E.164 format](/docs/glossary/what-e164).\n",
    "causes": "The participant's number passed in the participant creation is incorrect.",
    "solutions": "Pass a valid participant's number in [E.164 format](/docs/glossary/what-e164).",
    "description": "Participant identifier provided does not appear to be a valid, reachable phone number.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80405,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Participant Sid Invalid",
    "secondary_message": "Invalid Participant Sid",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when you pass an invalid Participant SID to a Proxy request. Proxy Participant resources use SIDs with the `KP` prefix, and Twilio SIDs are 34-character identifiers made up of a two-letter prefix followed by 32 hexadecimal characters.\n\n### Possible causes\n\n- The `Sid` or `ParticipantSid` value does not use the required `KP` prefix.\n- The Participant SID is not 34 characters long.\n- The value contains invalid characters, such as non-hexadecimal characters or extra whitespace.\n- You passed a different resource SID, such as a `KS` Service SID, `KC` Session SID, or `KI` Interaction SID, where a Participant SID is required.\n- You are not using the Participant SID returned when you created or fetched the Proxy Participant resource.\n\n### Possible solutions\n\n- Use the Participant SID returned by the Proxy Participant resource before making follow-up requests.\n- Validate the Participant SID format before sending the request. Use the pattern `^KP[0-9a-fA-F]{32}$`.\n- Confirm that you pass the Participant SID only in endpoints that require a participant resource, such as `/Participants/{Sid}` or `/Participants/{ParticipantSid}/MessageInteractions`.\n- Keep `ServiceSid`, `SessionSid`, and `ParticipantSid` in separate parameters and do not substitute one resource SID for another.\n- If you are sending a message through Proxy, create or list the session participants first, then use the correct `ParticipantSid` for the target participant.\n\n#### Additional resources\n\n- [Proxy Participant API reference](/docs/proxy/api/participant)\n- [Sending Messages with Proxy](/docs/proxy/api/sending-messages)\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* The `Sid` or `ParticipantSid` value does not use the required `KP` prefix.\n* The Participant SID is not 34 characters long.\n* The value contains invalid characters, such as non-hexadecimal characters or extra whitespace.\n* You passed a different resource SID, such as a `KS` Service SID, `KC` Session SID, or `KI` Interaction SID, where a Participant SID is required.\n* You are not using the Participant SID returned when you created or fetched the Proxy Participant resource.",
    "solutions": "* Use the Participant SID returned by the Proxy Participant resource before making follow-up requests.\n* Validate the Participant SID format before sending the request. Use the pattern `^KP[0-9a-fA-F]{32}$`.\n* Confirm that you pass the Participant SID only in endpoints that require a participant resource, such as `/Participants/{Sid}` or `/Participants/{ParticipantSid}/MessageInteractions`.\n* Keep `ServiceSid`, `SessionSid`, and `ParticipantSid` in separate parameters and do not substitute one resource SID for another.\n* If you are sending a message through Proxy, create or list the session participants first, then use the correct `ParticipantSid` for the target participant.",
    "description": "This warning appears when you pass an invalid Participant SID to a Proxy request. Proxy Participant resources use SIDs with the `KP` prefix, and Twilio SIDs are 34-character identifiers made up of a two-letter prefix followed by 32 hexadecimal characters.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80406,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Phone Number Did Invalid",
    "secondary_message": "Invalid Phone Number Did",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning occurs when your Proxy request includes an invalid phone number value for a Proxy phone number. When you add a phone number to a Proxy Service, send either `PhoneNumber` in `E.164` format or `Sid` for the Twilio IncomingPhoneNumber resource on your account.\n\n### Possible causes\n\n- The `PhoneNumber` value is not formatted in `E.164`, which requires a leading `+`, country code, and subscriber number.\n- The phone number contains invalid characters or is incomplete.\n- The request uses a phone number value that does not match the Twilio number you intended to add to the Proxy Service. Proxy phone number pools use Twilio phone numbers associated with the service.\n\n### Possible solutions\n\n- Update the `PhoneNumber` value to valid `E.164` format, for example `+14155551234`.\n- If you already know the Twilio number resource SID, use `Sid` instead of `PhoneNumber` when you add the number to the Proxy Service.\n- Confirm that the number you are adding is a Twilio phone number on your account and that you are adding it to the correct Proxy Service.\n\n#### Additional resources\n\n- [Proxy PhoneNumber resource](/docs/proxy/api/phone-number)\n- [Proxy Quickstart](/docs/proxy/quickstart)\n- [What is E.164?](/docs/glossary/what-e164)\n",
    "causes": "* The `PhoneNumber` value is not formatted in `E.164`, which requires a leading `+`, country code, and subscriber number.\n* The phone number contains invalid characters or is incomplete.\n* The request uses a phone number value that does not match the Twilio number you intended to add to the Proxy Service. Proxy phone number pools use Twilio phone numbers associated with the service.",
    "solutions": "* Update the `PhoneNumber` value to valid `E.164` format, for example `+14155551234`.\n* If you already know the Twilio number resource SID, use `Sid` instead of `PhoneNumber` when you add the number to the Proxy Service.\n* Confirm that the number you are adding is a Twilio phone number on your account and that you are adding it to the correct Proxy Service.",
    "description": "This warning occurs when your Proxy request includes an invalid phone number value for a Proxy phone number. When you add a phone number to a Proxy Service, send either `PhoneNumber` in `E.164` format or `Sid` for the Twilio IncomingPhoneNumber resource on your account.",
    "date_created": "2017-12-05T22:32:03Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80407,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Phone Number Sid Invalid",
    "secondary_message": "Invalid Phone Number Sid",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when you send an invalid `Sid` value in a Proxy Phone Number request. When you add a phone number to a Proxy Service, use either `Sid` or `PhoneNumber`. If you use `Sid`, provide the SID of an IncomingPhoneNumber resource, which must match the `PN` format `^PN[0-9a-fA-F]{32}$`.\n\n### Possible causes\n\n- The `Sid` value is malformed, truncated, or includes extra characters, so it does not match the required `PN` SID format.\n- The request uses `Sid` for a value that is not the SID of an IncomingPhoneNumber resource on your account. Proxy expects `Sid` to identify a phone number on your account.\n- The request sends a literal phone number in `Sid` instead of using the `PhoneNumber` parameter. Proxy accepts a phone number value through `PhoneNumber`, not `Sid`.\n- The request passes both `PhoneNumber` and `Sid`. Only one of these values is allowed in the request.\n\n### Possible solutions\n\n- Retrieve the correct PN SID for the phone number from your account, then send that value in `Sid`. You can list your IncomingPhoneNumber resources or fetch a specific IncomingPhoneNumber resource to confirm the SID you should use.\n- Validate the `Sid` before you send the request. A valid IncomingPhoneNumber SID matches `^PN[0-9a-fA-F]{32}$`.\n- If you want to add the number by its phone number value instead of its SID, send `PhoneNumber` in `E.164` format and omit `Sid`.\n- Confirm that the phone number is already provisioned, ported, or hosted in your Twilio account before you reference it as an IncomingPhoneNumber resource.\n\n#### Additional resources\n\n- [Proxy Phone Number resource](/docs/proxy/api/phone-number)\n- [Phone Number Management](/docs/proxy/understanding-phone-number-management)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n",
    "causes": "* The `Sid` value is malformed, truncated, or includes extra characters, so it does not match the required `PN` SID format.\n* The request uses `Sid` for a value that is not the SID of an IncomingPhoneNumber resource on your account. Proxy expects `Sid` to identify a phone number on your account.\n* The request sends a literal phone number in `Sid` instead of using the `PhoneNumber` parameter. Proxy accepts a phone number value through `PhoneNumber`, not `Sid`.\n* The request passes both `PhoneNumber` and `Sid`. Only one of these values is allowed in the request.",
    "solutions": "* Retrieve the correct PN SID for the phone number from your account, then send that value in `Sid`. You can list your IncomingPhoneNumber resources or fetch a specific IncomingPhoneNumber resource to confirm the SID you should use.\n* Validate the `Sid` before you send the request. A valid IncomingPhoneNumber SID matches `^PN[0-9a-fA-F]{32}$`.\n* If you want to add the number by its phone number value instead of its SID, send `PhoneNumber` in `E.164` format and omit `Sid`.\n* Confirm that the phone number is already provisioned, ported, or hosted in your Twilio account before you reference it as an IncomingPhoneNumber resource.",
    "description": "This warning appears when you send an invalid `Sid` value in a Proxy Phone Number request. When you add a phone number to a Proxy Service, use either `Sid` or `PhoneNumber`. If you use `Sid`, provide the SID of an IncomingPhoneNumber resource, which must match the `PN` format `^PN[0-9a-fA-F]{32}$`.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80408,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Service Sid Invalid",
    "secondary_message": "Invalid Service Sid",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when a Proxy request includes a `ServiceSid` value that Twilio cannot validate as a Proxy Service identifier. Proxy Service resources use SIDs with the `KS` prefix, and Proxy endpoints use that value as the parent Service identifier.\n\n### Possible causes\n\n- The request did not include the required `ServiceSid` value for a Proxy endpoint that expects a parent Service resource.\n- The `ServiceSid` value does not match the Proxy Service SID format. Proxy Service SIDs use the `KS` prefix and are 34 characters long.\n- You may have used a different resource SID, such as a `PN` phone number SID, instead of a Proxy Service SID.\n\n### Possible solutions\n\n- Copy the Service SID from your Proxy Service resource and confirm that it starts with `KS` and matches the documented SID format before you send the request.\n- Pass that value in the required `ServiceSid` path parameter for the Proxy resource you are calling, such as `/Services/{ServiceSid}/PhoneNumbers`.\n- If you need to confirm the value, fetch the Service directly with `GET /v1/Services/{Sid}` or list your Services and use the returned Service SID in the next request.\n\n#### Additional resources\n\n- [Proxy API Overview](/docs/proxy/api)\n- [Proxy Service resource](/docs/proxy/api/service)\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* The request did not include the required `ServiceSid` value for a Proxy endpoint that expects a parent Service resource.\n* The `ServiceSid` value does not match the Proxy Service SID format. Proxy Service SIDs use the `KS` prefix and are 34 characters long.\n* You may have used a different resource SID, such as a `PN` phone number SID, instead of a Proxy Service SID.",
    "solutions": "* Copy the Service SID from your Proxy Service resource and confirm that it starts with `KS` and matches the documented SID format before you send the request.\n* Pass that value in the required `ServiceSid` path parameter for the Proxy resource you are calling, such as `/Services/{ServiceSid}/PhoneNumbers`.\n* If you need to confirm the value, fetch the Service directly with `GET /v1/Services/{Sid}` or list your Services and use the returned Service SID in the next request.",
    "description": "This warning appears when a Proxy request includes a `ServiceSid` value that Twilio cannot validate as a Proxy Service identifier. Proxy Service resources use SIDs with the `KS` prefix, and Proxy endpoints use that value as the parent Service identifier.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80409,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Session Sid Invalid",
    "secondary_message": "Invalid Session Sid",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nYou provided an invalid Proxy Session SID. Use a valid Session SID when you fetch, update, delete, or nest requests under a Proxy Session. A Proxy Session SID identifies a Session resource and uses the `KC` prefix with 32 hexadecimal characters.\n\n### Possible causes\n\n- The Session SID value does not match the required `KC` SID format or length for a Proxy Session resource.\n- You used a different resource SID where a Session SID is required, such as a Service SID with the `KS` prefix or a Participant SID with the `KP` prefix.\n- The `sid` or `SessionSid` request parameter for a Proxy endpoint was populated with a value that does not identify a Session resource.\n- The Session SID was copied, stored, or passed incorrectly in your application and no longer matches the required Session SID pattern.\n\n### Possible solutions\n\n- Use the `sid` returned when you create or fetch the Proxy Session. A valid Session SID begins with `KC`.\n- Validate the Session SID in your application before sending the request. Ensure it matches `^KC[0-9a-fA-F]{32}$`.\n- Keep the Service SID and Session SID in the correct path parameters. Use the Service SID for `/Services/{ServiceSid}` and the Session SID for `/Sessions/{Sid}` or `/Sessions/{SessionSid}`.\n- If you are calling a Participant endpoint, pass the Session SID in `SessionSid` and the Participant SID in `Sid`. Do not swap those values.\n\n#### Additional resources\n\n- [Proxy Session resource](/docs/proxy/api/session)\n- [Proxy Participant resource](/docs/proxy/api/participant)\n- [Proxy quickstart](/docs/proxy/quickstart)\n",
    "causes": "* The Session SID value does not match the required `KC` SID format or length for a Proxy Session resource.\n* You used a different resource SID where a Session SID is required, such as a Service SID with the `KS` prefix or a Participant SID with the `KP` prefix.\n* The `sid` or `SessionSid` request parameter for a Proxy endpoint was populated with a value that does not identify a Session resource.\n* The Session SID was copied, stored, or passed incorrectly in your application and no longer matches the required Session SID pattern.",
    "solutions": "* Use the `sid` returned when you create or fetch the Proxy Session. A valid Session SID begins with `KC`.\n* Validate the Session SID in your application before sending the request. Ensure it matches `^KC[0-9a-fA-F]{32}$`.\n* Keep the Service SID and Session SID in the correct path parameters. Use the Service SID for `/Services/{ServiceSid}` and the Session SID for `/Sessions/{Sid}` or `/Sessions/{SessionSid}`.\n* If you are calling a Participant endpoint, pass the Session SID in `SessionSid` and the Participant SID in `Sid`. Do not swap those values.",
    "description": "You provided an invalid Proxy Session SID. Use a valid Session SID when you fetch, update, delete, or nest requests under a Proxy Session. A Proxy Session SID identifies a Session resource and uses the `KC` prefix with 32 hexadecimal characters.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80501,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Storage Operation Failed",
    "secondary_message": "An internal server error has occurred during a storage operation",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error indicates that Proxy encountered an internal server error while performing a storage operation. It points to a server-side failure in Twilio's service rather than an invalid request from your application.\n\n### Possible causes\n\n- Twilio encountered an internal error or timeout while handling the storage operation.\n- The request was affected by a temporary service incident or degradation.\n- A one-off unrecoverable anomaly occurred while processing the request.\n\n### Possible solutions\n\n- Retry the request if it is safe to retry.\n- Retry `GET` and `DELETE` requests directly because they are idempotent. Review `POST` retries carefully because non-idempotent requests can create duplicate side effects.\n- If you see a recurring pattern, check the Twilio status page for active or recent incidents.\n- If the error continues and the status page does not show an incident, contact support with details about the failing requests so the issue can be investigated.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Twilio API responses](/docs/usage/twilios-response)\n- [Checking Twilio Service and API Status with the Status Page](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page)\n",
    "causes": "* Twilio encountered an internal error or timeout while handling the storage operation.\n* The request was affected by a temporary service incident or degradation.\n* A one-off unrecoverable anomaly occurred while processing the request.",
    "solutions": "* Retry the request if it is safe to retry.\n* Retry `GET` and `DELETE` requests directly because they are idempotent. Review `POST` retries carefully because non-idempotent requests can create duplicate side effects.\n* If you see a recurring pattern, check the Twilio status page for active or recent incidents.\n* If the error continues and the status page does not show an incident, contact support with details about the failing requests so the issue can be investigated.",
    "description": "This error indicates that Proxy encountered an internal server error while performing a storage operation. It points to a server-side failure in Twilio's service rather than an invalid request from your application.",
    "date_created": "2018-10-03T23:24:30Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80502,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Internal Server Error from Downstream",
    "secondary_message": "A downstream server failed or refused to process a request.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when Proxy sends a request to a downstream service and that service fails or refuses to process it. Review the matching Debugger event to confirm which Proxy request failed and whether related notifications provide more detail.\n\n### Possible causes\n\n- A downstream service returned an internal server error while Proxy was processing your request.\n- A downstream service refused the request that Proxy sent on your behalf.\n- The root cause was emitted by a related downstream system and is only visible in associated Debugger events.\n\n### Possible solutions\n\n- Open the Twilio Console Debugger and review the 80502 event, including the Log Properties and any related notifications for the same request.\n- Identify which Proxy operation failed, such as a request involving a Service, Session, Participant, or Interaction resource, then retry only after you have confirmed the failure details.\n- If the error continues, capture the `Twilio-Request-Id` response header, note the timestamp and affected resource SID, and contact Twilio Support.\n- If your application retries failed API requests, use exponential backoff to avoid adding more load while you investigate.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n- [API best practices](/docs/usage/rest-api-best-practices)\n",
    "causes": "* A downstream service returned an internal server error while Proxy was processing your request.\n* A downstream service refused the request that Proxy sent on your behalf.\n* The root cause was emitted by a related downstream system and is only visible in associated Debugger events.",
    "solutions": "* Open the Twilio Console Debugger and review the 80502 event, including the Log Properties and any related notifications for the same request.\n* Identify which Proxy operation failed, such as a request involving a Service, Session, Participant, or Interaction resource, then retry only after you have confirmed the failure details.\n* If the error continues, capture the `Twilio-Request-Id` response header, note the timestamp and affected resource SID, and contact Twilio Support.\n* If your application retries failed API requests, use exponential backoff to avoid adding more load while you investigate.",
    "description": "Twilio returns this error when Proxy sends a request to a downstream service and that service fails or refuses to process it. Review the matching Debugger event to confirm which Proxy request failed and whether related notifications provide more detail.",
    "date_created": "2018-10-05T03:12:52Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80503,
    "log_level": "WARNING",
    "log_type": null,
    "message": "No Records Updated",
    "secondary_message": "Record to be updated was not found. It may have been deleted.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when an update request in Proxy does not modify any records because the target record cannot be found. This usually means the resource you tried to update no longer exists, was already removed, or does not match the parent `ServiceSid` or `SessionSid` in the request path.\n\n### Possible causes\n\n- The `Sid` in the request does not identify an existing Proxy resource.\n- The resource was deleted before the update request ran.\n- The request used the wrong parent `ServiceSid` or `SessionSid`, so Twilio could not find the record under that parent resource.\n- You tried to update a Participant after it had been removed from the Session.\n- The Session was deleted. Deleting a Session permanently removes the Session and its related Participants and Interactions.\n\n### Possible solutions\n\n- Fetch the resource before updating it to confirm that it still exists and that you are using the correct SID.\n- List the current resources in the parent Service or Session and retry the update with the active resource SID.\n- Verify that the request path uses the correct parent `ServiceSid`, `SessionSid`, and resource `Sid`.\n- If the resource was deleted, create a new resource instead of retrying the update against the deleted one.\n- If you need to replace a Participant in a Session, remove the existing Participant and add a new one to the Session.\n\n#### Additional resources\n\n- [Proxy REST API overview](/docs/proxy/api)\n- [Session resource](/docs/proxy/api/session)\n- [Participant](/docs/proxy/api/participant)\n",
    "causes": "* The `Sid` in the request does not identify an existing Proxy resource.\n* The resource was deleted before the update request ran.\n* The request used the wrong parent `ServiceSid` or `SessionSid`, so Twilio could not find the record under that parent resource.\n* You tried to update a Participant after it had been removed from the Session.\n* The Session was deleted. Deleting a Session permanently removes the Session and its related Participants and Interactions.",
    "solutions": "* Fetch the resource before updating it to confirm that it still exists and that you are using the correct SID.\n* List the current resources in the parent Service or Session and retry the update with the active resource SID.\n* Verify that the request path uses the correct parent `ServiceSid`, `SessionSid`, and resource `Sid`.\n* If the resource was deleted, create a new resource instead of retrying the update against the deleted one.\n* If you need to replace a Participant in a Session, remove the existing Participant and add a new one to the Session.",
    "description": "Twilio returns this warning when an update request in Proxy does not modify any records because the target record cannot be found. This usually means the resource you tried to update no longer exists, was already removed, or does not match the parent `ServiceSid` or `SessionSid` in the request path.",
    "date_created": "2017-12-06T16:10:48Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80504,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "An internal server error has occurred.",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error means Proxy could not complete the request because it encountered an internal server error while processing it. In Twilio API responses, a `500` status indicates an internal Twilio error.\n\n### Possible causes\n\n- Proxy encountered an unexpected internal failure while handling a Proxy REST API request.\n- A storage or downstream Twilio component used by Proxy failed during request processing.\n- A current Twilio incident or degraded service is affecting Proxy or the wider Twilio platform. ([help.twilio.com](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page))\n\n### Possible solutions\n\n- Retry the request after a short delay. If you retry automatically, use exponential backoff.\n- Review the Twilio Debugger to inspect the error event and confirm which request failed.\n- Capture the `Twilio-Request-Id` response header from the failed request. Include it in your investigation or support case.\n- Review the Twilio status page to see whether an active incident is affecting Proxy or related platform services. ([help.twilio.com](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page))\n- If the error continues, test the same request with `curl` and contact support with the request details and request ID.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n- [Checking Twilio Service and API Status with the Status Page](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page)\n",
    "causes": "* Proxy encountered an unexpected internal failure while handling a Proxy REST API request.\n* A storage or downstream Twilio component used by Proxy failed during request processing.\n* A current Twilio incident or degraded service is affecting Proxy or the wider Twilio platform. ([help.twilio.com](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page))",
    "solutions": "* Retry the request after a short delay. If you retry automatically, use exponential backoff.\n* Review the Twilio Debugger to inspect the error event and confirm which request failed.\n* Capture the `Twilio-Request-Id` response header from the failed request. Include it in your investigation or support case.\n* Review the Twilio status page to see whether an active incident is affecting Proxy or related platform services. ([help.twilio.com](https://help.twilio.com/articles/360013353193-Checking-Twilio-Service-and-API-Status-with-the-Status-Page))\n* If the error continues, test the same request with `curl` and contact support with the request details and request ID.",
    "description": "This error means Proxy could not complete the request because it encountered an internal server error while processing it. In Twilio API responses, a `500` status indicates an internal Twilio error.",
    "date_created": "2020-03-10T20:53:56Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 80505,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Flex Configuration Error",
    "secondary_message": "A Flex component was not configured correctly",
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis error occurs when a Flex component is not configured correctly. In Flex, you manage configuration through the Flex Configuration REST API for Twilio-hosted deployments, or through `appConfig.js` and the Flex Configuration REST API for customer-hosted deployments. Flex component behavior can also be customized with `componentProps` and the React `defaultProps` API.\n\n### Possible causes\n\n- A Flex component was given invalid or incomplete configuration values through `componentProps`.\n- A plugin changed component defaults through the React `defaultProps` API in a way that does not match the component you are customizing.\n- A custom component added with the Flex UI content API is missing a required `key`.\n- A customization directly reused an internal Flex UI component in an unsupported way, which can lead to undesired behavior.\n- A Flex plugin or Flex UI customization introduced the error. Flex UI issues can come from custom plugins, third-party packages, or Flex UI itself.\n\n### Possible solutions\n\n- Review the Flex configuration in the correct location for your deployment. Use the Flex Configuration REST API for Twilio-hosted Flex. Use `appConfig.js` or the Flex Configuration REST API for customer-hosted Flex.\n- Check the component name and every configured property in `componentProps` and `defaultProps` to make sure they match the Flex component you intend to customize.\n- Add a unique `key` to every component you add or replace with the Flex UI content API.\n- Avoid importing and reusing built-in Flex UI components directly. Customize supported components through the documented Flex UI extension points instead.\n- If you cannot identify the misconfiguration from the UI alone, open the Status Report or download an error report so you can review logs and share the details with your administrator or support.\n\n#### Additional resources\n\n- [Flex Configuration](/docs/flex/developer/config)\n- [Work with Components and Props](/docs/flex/developer/ui/work-with-components-and-props)\n- [User Guide to Troubleshooting the Flex UI](/docs/flex/end-user-guide/troubleshooting)\n",
    "causes": "* A Flex component was given invalid or incomplete configuration values through `componentProps`.\n* A plugin changed component defaults through the React `defaultProps` API in a way that does not match the component you are customizing.\n* A custom component added with the Flex UI content API is missing a required `key`.\n* A customization directly reused an internal Flex UI component in an unsupported way, which can lead to undesired behavior.\n* A Flex plugin or Flex UI customization introduced the error. Flex UI issues can come from custom plugins, third-party packages, or Flex UI itself.",
    "solutions": "* Review the Flex configuration in the correct location for your deployment. Use the Flex Configuration REST API for Twilio-hosted Flex. Use `appConfig.js` or the Flex Configuration REST API for customer-hosted Flex.\n* Check the component name and every configured property in `componentProps` and `defaultProps` to make sure they match the Flex component you intend to customize.\n* Add a unique `key` to every component you add or replace with the Flex UI content API.\n* Avoid importing and reusing built-in Flex UI components directly. Customize supported components through the documented Flex UI extension points instead.\n* If you cannot identify the misconfiguration from the UI alone, open the Status Report or download an error report so you can review logs and share the details with your administrator or support.",
    "description": "This error occurs when a Flex component is not configured correctly. In Flex, you manage configuration through the Flex Configuration REST API for Twilio-hosted deployments, or through `appConfig.js` and the Flex Configuration REST API for customer-hosted deployments. Flex component behavior can also be customized with `componentProps` and the React `defaultProps` API.",
    "date_created": "2019-01-25T23:48:54Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80506,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Service Creation is restricted for new customers",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nBlocking Proxy Service Creation API for new accounts/sub-accounts/projects as Proxy is in EOS.\n\n### Possible causes\n\nProxy is in EOS and hence, we are blocking the service creation request for new accounts/sub-accounts/projects.\n\n### Possible solutions\n\nIf required, ask for an exempt for your account\n",
    "causes": "Proxy is in EOS and hence, we are blocking the service creation request for new accounts/sub-accounts/projects.",
    "solutions": "If required, ask for an exempt for your account",
    "description": "Blocking Proxy Service Creation API for new accounts/sub-accounts/projects as Proxy is in EOS.",
    "date_created": "2022-11-15T15:54:15Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80601,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Phone Number Not Available",
    "secondary_message": "PhoneNumber is not available. It may be bound to a number pool.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when the Twilio phone number you are trying to use is not available for the requested Proxy operation. In Proxy, a Twilio number can belong to only one `Proxy Service` at a time, and any number you set as a participant's `ProxyIdentifier` must already be added to that service's phone number pool.\n\n### Possible causes\n\n- The Twilio number is already associated with another `Proxy Service`, so it cannot be used in a second Proxy number pool.\n- You specified a participant `ProxyIdentifier`, but that number has not been added to the target `Proxy Service` phone number pool.\n- The number is still being kept in a Proxy pool while existing participants drain, so it is not yet ready to be removed or reused somewhere else.\n\n### Possible solutions\n\n- Check whether the number is already attached to another `Proxy Service`. If it is, remove it from that service before you try to use it in a different Proxy service.\n- If you want to assign a specific `ProxyIdentifier`, add that Twilio number to the same `Proxy Service` first by creating a Proxy `PhoneNumber` resource.\n- If you are moving a number out of a pool, mark it as Reserved and wait until no active participants are using it before you remove or reassign it.\n- If your application needs more available numbers for active sessions, add more Twilio numbers to the Proxy phone number pool and size the pool to match your session volume.\n\n#### Additional resources\n\n- [Phone Number resource for Proxy](/docs/proxy/api/phone-number)\n- [Phone Number Management for Proxy](/docs/proxy/understanding-phone-number-management)\n- [Reserved Phone Numbers](/docs/proxy/reserved-phone-numbers)\n",
    "causes": "* The Twilio number is already associated with another `Proxy Service`, so it cannot be used in a second Proxy number pool.\n* You specified a participant `ProxyIdentifier`, but that number has not been added to the target `Proxy Service` phone number pool.\n* The number is still being kept in a Proxy pool while existing participants drain, so it is not yet ready to be removed or reused somewhere else.",
    "solutions": "* Check whether the number is already attached to another `Proxy Service`. If it is, remove it from that service before you try to use it in a different Proxy service.\n* If you want to assign a specific `ProxyIdentifier`, add that Twilio number to the same `Proxy Service` first by creating a Proxy `PhoneNumber` resource.\n* If you are moving a number out of a pool, mark it as Reserved and wait until no active participants are using it before you remove or reassign it.\n* If your application needs more available numbers for active sessions, add more Twilio numbers to the Proxy phone number pool and size the pool to match your session volume.",
    "description": "This warning appears when the Twilio phone number you are trying to use is not available for the requested Proxy operation. In Proxy, a Twilio number can belong to only one `Proxy Service` at a time, and any number you set as a participant's `ProxyIdentifier` must already be added to that service's phone number pool.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80602,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Non Unique Service Name",
    "secondary_message": "Service UniqueName must be unique.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when you try to create a Proxy Service with a `uniqueName` that is already assigned to another Service. In Proxy, `uniqueName` is an application-defined identifier for the Service. It must be unique and 191 characters or fewer.\n\n### Possible causes\n\n- The create request used a `uniqueName` that already belongs to another Proxy Service in your account.\n- Your application tried to create a new Service for an environment or workflow that already has an existing Service with that name.\n- You intended to reuse or update an existing Service, but sent a create request instead.\n\n### Possible solutions\n\n- Create the Service with a different `uniqueName`.\n- List your existing Services before creating a new one so you can confirm the name is available.\n- If the Service already exists, reuse that Service instead of creating another one with the same `uniqueName`.\n- If you need to change an existing Service, update the Service by SID instead of creating a second Service with the same `uniqueName`.\n- Use a naming convention that keeps Service names distinct across environments such as dev, stage, and prod.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Service resource](/docs/proxy/api/service)\n- [Proxy overview](/docs/proxy)\n",
    "causes": "* The create request used a `uniqueName` that already belongs to another Proxy Service in your account.\n* Your application tried to create a new Service for an environment or workflow that already has an existing Service with that name.\n* You intended to reuse or update an existing Service, but sent a create request instead.",
    "solutions": "* Create the Service with a different `uniqueName`.\n* List your existing Services before creating a new one so you can confirm the name is available.\n* If the Service already exists, reuse that Service instead of creating another one with the same `uniqueName`.\n* If you need to change an existing Service, update the Service by SID instead of creating a second Service with the same `uniqueName`.\n* Use a naming convention that keeps Service names distinct across environments such as dev, stage, and prod.",
    "description": "This warning appears when you try to create a Proxy Service with a `uniqueName` that is already assigned to another Service. In Proxy, `uniqueName` is an application-defined identifier for the Service. It must be unique and 191 characters or fewer.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80603,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Non Unique Session Name",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou receive this error when you create a Proxy Session with a `uniqueName` that is already used by another Session in the same Service. A Session `uniqueName` is an application-defined identifier and must be unique.\n\n### Possible causes\n\n- Another Session in the same Service already has the `uniqueName` you sent in the create request.\n- Your application retried Session creation with the same `uniqueName`.\n- Your application generated the same identifier for more than one Session.\n\n### Possible solutions\n\n- Generate a new `uniqueName` before you create the Session.\n- Use a value that is unique for each Session in the Service, such as a distinct order ID or job ID from your application.\n- Verify whether a Session with that `uniqueName` already exists in the Service before you create a new one.\n- If you intended to continue an existing conversation, reuse the existing Session instead of creating another Session with the same `uniqueName`.\n\n#### Additional resources\n\n- [Proxy Session resource](/docs/proxy/api/session)\n- [Proxy quickstart](/docs/proxy/quickstart)\n- [The Proxy API overview](/docs/proxy/api)\n",
    "causes": "* Another Session in the same Service already has the `uniqueName` you sent in the create request.\n* Your application retried Session creation with the same `uniqueName`.\n* Your application generated the same identifier for more than one Session.",
    "solutions": "* Generate a new `uniqueName` before you create the Session.\n* Use a value that is unique for each Session in the Service, such as a distinct order ID or job ID from your application.\n* Verify whether a Session with that `uniqueName` already exists in the Service before you create a new one.\n* If you intended to continue an existing conversation, reuse the existing Session instead of creating another Session with the same `uniqueName`.",
    "description": "You receive this error when you create a Proxy Session with a `uniqueName` that is already used by another Session in the same Service. A Session `uniqueName` is an application-defined identifier and must be unique.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 80604,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Proxy Identifier In Use",
    "secondary_message": "Proxy identifier already in use with requested identifier.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when the requested `proxyIdentifier` is already associated with the requested participant `identifier` in a way that would create a conflicting active mapping. In Proxy, the `identifier` and `proxyIdentifier` pair is used to route calls and messages, so reusing the same pair across active Sessions can cause traffic to be routed to the wrong recipient.\n\n### Possible causes\n\n- You tried to re-open a closed Session, and one or both Participants already have the same `identifier` and `proxyIdentifier` pair active in another Session.\n- You supplied a specific `proxyIdentifier` or `proxyIdentifierSid` for a Participant, and that Proxy number is already in use for the same participant in another active Session.\n- The same participant is active in concurrent Sessions, but the Service does not have enough Proxy numbers available to assign a different Proxy number for each active mapping.\n- Your application is creating or re-opening Sessions close together in time, which can lead to duplicate active `identifier` and `proxyIdentifier` pairs if conflict handling is not enabled.\n\n### Possible solutions\n\n- Re-open a Session only when you know the affected Participants are not already active elsewhere with the same `proxyIdentifier`.\n- If the same person must participate in concurrent Sessions, add more Twilio numbers to the Service so Proxy can assign a different number to each active mapping. A single participant cannot use the same Proxy number in concurrent active Sessions.\n- Let Proxy select a number from the pool, or provide a different `proxyIdentifier` or `proxyIdentifierSid` that has already been added to the Service.\n- Send `FailOnParticipantConflict=true` on Session create, Session update, and Participant create requests so Proxy rejects conflicting requests before they create ambiguous routing.\n- If your account still allows participant conflicts, ask to remove the `ProxyAllowParticipantConflict` flag after you are ready to handle conflict responses on Session update and Participant create requests.\n\n#### Additional resources\n\n- [Participant resource](/docs/proxy/api/participant)\n- [Session resource](/docs/proxy/api/session)\n- [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed)\n",
    "causes": "* You tried to re-open a closed Session, and one or both Participants already have the same `identifier` and `proxyIdentifier` pair active in another Session.\n* You supplied a specific `proxyIdentifier` or `proxyIdentifierSid` for a Participant, and that Proxy number is already in use for the same participant in another active Session.\n* The same participant is active in concurrent Sessions, but the Service does not have enough Proxy numbers available to assign a different Proxy number for each active mapping.\n* Your application is creating or re-opening Sessions close together in time, which can lead to duplicate active `identifier` and `proxyIdentifier` pairs if conflict handling is not enabled.",
    "solutions": "* Re-open a Session only when you know the affected Participants are not already active elsewhere with the same `proxyIdentifier`.\n* If the same person must participate in concurrent Sessions, add more Twilio numbers to the Service so Proxy can assign a different number to each active mapping. A single participant cannot use the same Proxy number in concurrent active Sessions.\n* Let Proxy select a number from the pool, or provide a different `proxyIdentifier` or `proxyIdentifierSid` that has already been added to the Service.\n* Send `FailOnParticipantConflict=true` on Session create, Session update, and Participant create requests so Proxy rejects conflicting requests before they create ambiguous routing.\n* If your account still allows participant conflicts, ask to remove the `ProxyAllowParticipantConflict` flag after you are ready to handle conflict responses on Session update and Participant create requests.",
    "description": "Twilio returns this warning when the requested `proxyIdentifier` is already associated with the requested participant `identifier` in a way that would create a conflicting active mapping. In Proxy, the `identifier` and `proxyIdentifier` pair is used to route calls and messages, so reusing the same pair across active Sessions can cause traffic to be routed to the wrong recipient.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80605,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Proxy Identifier Not In Service",
    "secondary_message": "Proxy identifier not associated with service.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning means the Proxy Identifier you supplied is not part of the Proxy `Service` handling the request. In Proxy, phone numbers are associated directly with a specific `Service`, and when you set `proxyIdentifier` for a Participant, that number must already be in that service's phone number pool. If you omit `proxyIdentifier`, Proxy selects a number from the pool automatically.\n\n### Possible causes\n\n- You provided `proxyIdentifier` for a Participant, but that Twilio number was never added to the target Proxy `Service`.\n- The number is associated with a different Proxy `Service`. A Twilio number can be associated with only one Proxy Service at a time.\n- The request used the wrong `Service` or `Session` SID, so Proxy checked a different service than the one that contains the number.\n\n### Possible solutions\n\n- Add the Twilio number to the correct Proxy `Service` before you assign it as `proxyIdentifier`.\n- If you do not need to force a specific masked number, remove `proxyIdentifier` and let Proxy select an available number from the service's pool.\n- Verify that you are using the intended `Service` and `Session` SIDs, then retry with a number that belongs to that service. This follows from the way Participant requests are scoped to a service and session, and the way Proxy numbers are attached to a service.\n\n#### Additional resources\n\n- [Proxy Participant resource](/docs/proxy/api/participant)\n- [Proxy Phone Number resource](/docs/proxy/api/phone-number)\n- [Proxy Quickstart](/docs/proxy/quickstart)\n",
    "causes": "* You provided `proxyIdentifier` for a Participant, but that Twilio number was never added to the target Proxy `Service`.\n* The number is associated with a different Proxy `Service`. A Twilio number can be associated with only one Proxy Service at a time.\n* The request used the wrong `Service` or `Session` SID, so Proxy checked a different service than the one that contains the number.",
    "solutions": "* Add the Twilio number to the correct Proxy `Service` before you assign it as `proxyIdentifier`.\n* If you do not need to force a specific masked number, remove `proxyIdentifier` and let Proxy select an available number from the service's pool.\n* Verify that you are using the intended `Service` and `Session` SIDs, then retry with a number that belongs to that service. This follows from the way Participant requests are scoped to a service and session, and the way Proxy numbers are attached to a service.",
    "description": "This warning means the Proxy Identifier you supplied is not part of the Proxy `Service` handling the request. In Proxy, phone numbers are associated directly with a specific `Service`, and when you set `proxyIdentifier` for a Participant, that number must already be in that service's phone number pool. If you omit `proxyIdentifier`, Proxy selects a number from the pool automatically.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80606,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Proxy Identifier Not Owned By Account",
    "secondary_message": "Proxy identifier not owned by account.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning occurs when you explicitly assign `ProxyIdentifier` or `ProxyIdentifierSid` for a Participant, but the proxy number does not belong to the account making the request. When you specify a proxy number for a Participant, Proxy attempts to use the Twilio number you provide, and that number must be owned by your account.\n\n### Possible causes\n\n- The `ProxyIdentifier` value points to a Twilio number that belongs to a different account or subaccount.\n- The `ProxyIdentifierSid` value references a `PN` SID that is not owned by the account used for the request.\n- Your application is creating or updating the Participant with credentials for the wrong account or subaccount.\n- You are trying to reuse a proxy number from another project instead of selecting a number that is owned by the current account.\n\n### Possible solutions\n\n- Verify that you are using the correct `AccountSid` and auth credentials for the account that owns the proxy number.\n- Confirm that the `ProxyIdentifier` value is a Twilio number on your account, or that the `ProxyIdentifierSid` value matches a `PN` SID on your account.\n- If you need to assign a specific proxy number, use a Twilio number that is owned by the same account as the Proxy Service.\n- Add the correct Twilio number to your Proxy Service before assigning it to a Participant.\n- If the number is owned by a different account or subaccount, move the number to the correct account or update your request to use a number owned by the current account.\n\n#### Additional resources\n\n- [Participant resource](/docs/proxy/api/participant)\n- [PhoneNumber resource](/docs/proxy/api/phone-number)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n",
    "causes": "* The `ProxyIdentifier` value points to a Twilio number that belongs to a different account or subaccount.\n* The `ProxyIdentifierSid` value references a `PN` SID that is not owned by the account used for the request.\n* Your application is creating or updating the Participant with credentials for the wrong account or subaccount.\n* You are trying to reuse a proxy number from another project instead of selecting a number that is owned by the current account.",
    "solutions": "* Verify that you are using the correct `AccountSid` and auth credentials for the account that owns the proxy number.\n* Confirm that the `ProxyIdentifier` value is a Twilio number on your account, or that the `ProxyIdentifierSid` value matches a `PN` SID on your account.\n* If you need to assign a specific proxy number, use a Twilio number that is owned by the same account as the Proxy Service.\n* Add the correct Twilio number to your Proxy Service before assigning it to a Participant.\n* If the number is owned by a different account or subaccount, move the number to the correct account or update your request to use a number owned by the current account.",
    "description": "This warning occurs when you explicitly assign `ProxyIdentifier` or `ProxyIdentifierSid` for a Participant, but the proxy number does not belong to the account making the request. When you specify a proxy number for a Participant, Proxy attempts to use the Twilio number you provide, and that number must be owned by your account.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80607,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Session Closed",
    "secondary_message": "Session is closed and cannot be updated",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when you attempt to update a Proxy Session whose status is already `closed`. You may see the message \"Session is closed and cannot be updated.\" Proxy Sessions have a defined lifecycle, and updates are only valid while the Session is still active.\n\n### Possible causes\n\n- Your application sent an update request to a Session after its status had already been set to `closed`.\n- Your workflow closed the Session when the interaction was complete, then attempted another Session update later. In Proxy, a closed Session is no longer treated as an open Session for calls or messages.\n- An inbound call or SMS arrived after the Session was closed, but your application still expected that Session to be updated or reused. Proxy handles this as out-of-session traffic instead.\n\n### Possible solutions\n\n- Check the Session `status` before sending an update request. Only update Sessions that are still active.\n- Use valid Session status transitions in your workflow. To close a Session, update it from `open` to `closed` or from `in-progress` to `closed`.\n- If the participants need to communicate again after a Session has been closed, create a new Session instead of trying to update the closed one. Proxy can also auto-create a new Session for out-of-session traffic when you return valid JSON from your out-of-session callback.\n- Configure `outOfSessionCallbackUrl` on the Proxy Service to handle calls or SMS that arrive on a closed Session. You can return TwiML to respond to the interaction or return JSON to create a new Session.\n\n#### Additional resources\n\n- [Session Resource](/docs/proxy/api/session)\n- [Service Resource](/docs/proxy/api/service)\n- [Out-of-Session Callback Response Guide](/docs/proxy/out-session-callback-response-guide)\n",
    "causes": "* Your application sent an update request to a Session after its status had already been set to `closed`.\n* Your workflow closed the Session when the interaction was complete, then attempted another Session update later. In Proxy, a closed Session is no longer treated as an open Session for calls or messages.\n* An inbound call or SMS arrived after the Session was closed, but your application still expected that Session to be updated or reused. Proxy handles this as out-of-session traffic instead.",
    "solutions": "* Check the Session `status` before sending an update request. Only update Sessions that are still active.\n* Use valid Session status transitions in your workflow. To close a Session, update it from `open` to `closed` or from `in-progress` to `closed`.\n* If the participants need to communicate again after a Session has been closed, create a new Session instead of trying to update the closed one. Proxy can also auto-create a new Session for out-of-session traffic when you return valid JSON from your out-of-session callback.\n* Configure `outOfSessionCallbackUrl` on the Proxy Service to handle calls or SMS that arrive on a closed Session. You can return TwiML to respond to the interaction or return JSON to create a new Session.",
    "description": "This warning appears when you attempt to update a Proxy Session whose status is already `closed`. You may see the message \"Session is closed and cannot be updated.\" Proxy Sessions have a defined lifecycle, and updates are only valid while the Session is still active.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80608,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Session Status Invalid",
    "secondary_message": "Session status change not supported",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error occurs when you update a Proxy Session with a `status` change that Proxy does not support. Proxy Sessions use the `status` values `open`, `in-progress`, `closed`, `failed`, and `unknown`.\n\n### Possible causes\n\n- You attempted to change a Session to a state transition that Proxy does not support.\n- You tried to re-open a Session using a transition other than `closed` to `in-progress`.\n- You tried to close a Session using a transition other than `open` to `closed` or `in-progress` to `closed`.\n\n### Possible solutions\n\n- Verify the Session's current `status` before you send an update, then apply only a supported transition.\n- To re-open a Session, update `status` from `closed` to `in-progress`.\n- To close a Session, update `status` from `open` to `closed` or from `in-progress` to `closed`.\n\n#### Additional resources\n\n- [Session Resource](/docs/proxy/api/session)\n- [Proxy Quickstart](/docs/proxy/quickstart)\n- [The Proxy API Overview](/docs/proxy/api)\n",
    "causes": "* You attempted to change a Session to a state transition that Proxy does not support.\n* You tried to re-open a Session using a transition other than `closed` to `in-progress`.\n* You tried to close a Session using a transition other than `open` to `closed` or `in-progress` to `closed`.",
    "solutions": "* Verify the Session's current `status` before you send an update, then apply only a supported transition.\n* To re-open a Session, update `status` from `closed` to `in-progress`.\n* To close a Session, update `status` from `open` to `closed` or from `in-progress` to `closed`.",
    "description": "This error occurs when you update a Proxy Session with a `status` change that Proxy does not support. Proxy Sessions use the `status` values `open`, `in-progress`, `closed`, `failed`, and `unknown`.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 80609,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Too Many Added Participants",
    "secondary_message": "A Session may have at most 2 participants",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when you try to add more than two participants to a Proxy Session. Proxy supports one-to-one masked communication, and each Session can include only two participants.\n\n### Possible causes\n\n- Your application sent a create participant request for a Session that already has two participants.\n- Your application tried to create a Session with more than two participant objects in the request.\n- Your application is using a single Proxy Session for a workflow that needs more than two people, but Proxy Sessions are designed for communication between two parties.\n\n### Possible solutions\n\n- Check the existing participants in the Session before you add another one. Use the Participant list endpoint to confirm whether the Session already has two participants.\n- If you need to connect a different pair of users, create a new Session instead of adding a third participant to the current Session.\n- If one participant is no longer needed, delete that participant from the Session before you add a different participant.\n- When you create a Session and include participants in the request, limit the Session to two participants total.\n\n#### Additional resources\n\n- [Proxy overview](/docs/proxy)\n- [Session resource](/docs/proxy/api/session)\n- [Participant resource](/docs/proxy/api/participant)\n",
    "causes": "* Your application sent a create participant request for a Session that already has two participants.\n* Your application tried to create a Session with more than two participant objects in the request.\n* Your application is using a single Proxy Session for a workflow that needs more than two people, but Proxy Sessions are designed for communication between two parties.",
    "solutions": "* Check the existing participants in the Session before you add another one. Use the Participant list endpoint to confirm whether the Session already has two participants.\n* If you need to connect a different pair of users, create a new Session instead of adding a third participant to the current Session.\n* If one participant is no longer needed, delete that participant from the Session before you add a different participant.\n* When you create a Session and include participants in the request, limit the Session to two participants total.",
    "description": "This warning appears when you try to add more than two participants to a Proxy Session. Proxy supports one-to-one masked communication, and each Session can include only two participants.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80610,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Unauthorized Operation",
    "secondary_message": "Unauthorized. You may be trying to use an invalid combination of sids.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nYou see this warning when a Proxy request uses an invalid combination of SIDs. In Proxy, Sessions belong to a Service, and Participants belong to a Session within that Service. If the `ServiceSid`, `SessionSid`, or resource SID in your request do not refer to the same Proxy resource hierarchy, Twilio rejects the operation as unauthorized.\n\n### Possible causes\n\n- The `ServiceSid` in the request does not match the parent Service for the `SessionSid` you are trying to fetch, update, or delete.\n- The `SessionSid` in the request does not match the parent Session for the Participant resource you are trying to fetch or delete.\n- A SID from one Proxy resource was used with another resource type or endpoint. Proxy uses different SID formats for Services, Sessions, and Participants.\n- Your application reused a SID from a different Proxy Service or a different Session when building a nested request path.\n\n### Possible solutions\n\n- Verify that the `ServiceSid` in the request is the parent Service for the resource you want to access. Retrieve or list Sessions under that Service before retrying the request.\n- Verify that the `SessionSid` belongs to that Service and that any Participant resource belongs to that Session. Retrieve or list Participants from the same Session and use the returned SID values.\n- Check each SID before sending the request. Use `KS` for Services, `KC` for Sessions, and `KP` for Participants.\n- Stop hard-coding or manually combining SIDs across requests. Store and reuse the exact SID values returned by the Proxy API for the same resource hierarchy.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Session resource](/docs/proxy/api/session)\n- [Participant resource](/docs/proxy/api/participant)\n",
    "causes": "* The `ServiceSid` in the request does not match the parent Service for the `SessionSid` you are trying to fetch, update, or delete.\n* The `SessionSid` in the request does not match the parent Session for the Participant resource you are trying to fetch or delete.\n* A SID from one Proxy resource was used with another resource type or endpoint. Proxy uses different SID formats for Services, Sessions, and Participants.\n* Your application reused a SID from a different Proxy Service or a different Session when building a nested request path.",
    "solutions": "* Verify that the `ServiceSid` in the request is the parent Service for the resource you want to access. Retrieve or list Sessions under that Service before retrying the request.\n* Verify that the `SessionSid` belongs to that Service and that any Participant resource belongs to that Session. Retrieve or list Participants from the same Session and use the returned SID values.\n* Check each SID before sending the request. Use `KS` for Services, `KC` for Sessions, and `KP` for Participants.\n* Stop hard-coding or manually combining SIDs across requests. Store and reuse the exact SID values returned by the Proxy API for the same resource hierarchy.",
    "description": "You see this warning when a Proxy request uses an invalid combination of SIDs. In Proxy, Sessions belong to a Service, and Participants belong to a Session within that Service. If the `ServiceSid`, `SessionSid`, or resource SID in your request do not refer to the same Proxy resource hierarchy, Twilio rejects the operation as unauthorized.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80611,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Proxy Number In Active Sessions",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThe Proxy Number cannot be removed from Service.\n\n### Possible causes\n\nIt is in use by one or more Sessions.\n\n### Possible solutions\n\nThe number can be removed from the Service once it's not in use.\n",
    "causes": "It is in use by one or more Sessions.",
    "solutions": "The number can be removed from the Service once it's not in use.",
    "description": "The Proxy Number cannot be removed from Service.",
    "date_created": "2018-01-12T17:09:14Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80612,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Duplicate Entry",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to add a Proxy Participant with an `identifier` that already exists, or with an `identifier` that matches a participant you previously deleted. Proxy does not let you reuse the same `identifier` for a removed participant.\n\n### Possible causes\n\n- You submitted a Participant create request with an `identifier` that already exists.\n- You submitted a Participant create request with an `identifier` that was previously used by a participant that has been deleted.\n\n### Possible solutions\n\n- Use a unique `identifier` when you create the participant.\n- If you deleted a participant, create the replacement participant with a different `identifier`.\n- Review your participant creation logic to make sure your application does not submit the same `identifier` again after the participant already exists or has been removed.\n\n#### Additional resources\n\n- [Participant resource](/docs/proxy/api/participant)\n- [Session Resource](/docs/proxy/api/session)\n- [Proxy Quickstart](/docs/proxy/quickstart)\n",
    "causes": "* You submitted a Participant create request with an `identifier` that already exists.\n* You submitted a Participant create request with an `identifier` that was previously used by a participant that has been deleted.",
    "solutions": "* Use a unique `identifier` when you create the participant.\n* If you deleted a participant, create the replacement participant with a different `identifier`.\n* Review your participant creation logic to make sure your application does not submit the same `identifier` again after the participant already exists or has been removed.",
    "description": "This error occurs when you try to add a Proxy Participant with an `identifier` that already exists, or with an `identifier` that matches a participant you previously deleted. Proxy does not let you reuse the same `identifier` for a removed participant.",
    "date_created": "2018-04-10T03:31:44Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80613,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Downstream Request Rejected",
    "secondary_message": "A downstream service rejected a request from Proxy on your behalf.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nA downstream service rejected a request from Proxy while processing a request for your service.\n\n### Possible causes\n\nUnknown. You may be able to find more information if the downstream emitted any debugger notifications for the request.\n\n### Possible solutions\n\nUnknown. You may be able to find more information if the downstream emitted any debugger notifications for the request.\n",
    "causes": "Unknown. You may be able to find more information if the downstream emitted any debugger notifications for the request.",
    "solutions": "Unknown. You may be able to find more information if the downstream emitted any debugger notifications for the request.",
    "description": "A downstream service rejected a request from Proxy while processing a request for your service.",
    "date_created": "2018-04-10T03:31:04Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80614,
    "log_level": "WARNING",
    "log_type": null,
    "message": " No Partner Participant Found",
    "secondary_message": "Example Message: Incoming message or call found no target participant in session KCac74da33088913e84bfafb5b821ab0b0 for participant KP2ece38f658cdabc372ef3f149ed5977a",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning means Proxy received an inbound message or call from a participant in a session, but could not find the other participant to route that interaction to. Proxy is built for one-to-one masked communications, and a session supports up to two participants.\n\n### Possible causes\n\n- The session has only one active participant, so there is no partner participant available to receive the inbound interaction.\n- The partner participant was removed from the session. A removed participant has a `dateDeleted` value, and that participant is no longer available for routing.\n- Your application created the session before both participant records were present, or replaced a participant before the inbound call or message arrived. Proxy routes each participant through the partner participant's `proxyIdentifier`, so routing fails when that counterpart is missing.\n\n### Possible solutions\n\n- Fetch the session and list its participants to confirm the session is still active and that two participants are present for the conversation. Check the session `status`, `ttl`, and `dateExpiry` if inbound traffic is arriving later than expected.\n- If the session is missing the second participant, add a new participant with a valid `identifier`. If you specify `proxyIdentifier`, make sure that number is in the Proxy number pool for the service.\n- If you removed the original partner participant, create a new session for that user flow instead of trying to add the same identifier back to the existing session. After a participant is removed, you cannot add that same identifier back to the same session.\n- If your workflow needs to handle messages or calls that arrive after a session closes or no longer exists, configure `outOfSessionCallbackUrl`. You can use that callback to return TwiML or auto-create a new session.\n\n#### Additional resources\n\n- [Participant resource](/docs/proxy/api/participant)\n- [Session resource](/docs/proxy/api/session)\n- [Out-of-Session Callback Response Guide](/docs/proxy/out-session-callback-response-guide)\n",
    "causes": "* The session has only one active participant, so there is no partner participant available to receive the inbound interaction.\n* The partner participant was removed from the session. A removed participant has a `dateDeleted` value, and that participant is no longer available for routing.\n* Your application created the session before both participant records were present, or replaced a participant before the inbound call or message arrived. Proxy routes each participant through the partner participant's `proxyIdentifier`, so routing fails when that counterpart is missing.",
    "solutions": "* Fetch the session and list its participants to confirm the session is still active and that two participants are present for the conversation. Check the session `status`, `ttl`, and `dateExpiry` if inbound traffic is arriving later than expected.\n* If the session is missing the second participant, add a new participant with a valid `identifier`. If you specify `proxyIdentifier`, make sure that number is in the Proxy number pool for the service.\n* If you removed the original partner participant, create a new session for that user flow instead of trying to add the same identifier back to the existing session. After a participant is removed, you cannot add that same identifier back to the same session.\n* If your workflow needs to handle messages or calls that arrive after a session closes or no longer exists, configure `outOfSessionCallbackUrl`. You can use that callback to return TwiML or auto-create a new session.",
    "description": "This warning means Proxy received an inbound message or call from a participant in a session, but could not find the other participant to route that interaction to. Proxy is built for one-to-one masked communications, and a session supports up to two participants.",
    "date_created": "2018-04-18T21:11:05Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80615,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Account Sid on Legal Hold",
    "secondary_message": "Account `<AccountSid>` is on legal hold. Cannot delete record `<Sid>`.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when you send a `DELETE` request for a Proxy record on an account that is on legal hold. Twilio rejects the delete request and keeps the record identified by `<Sid>`.\n\n### Possible causes\n\n- The account identified by `<AccountSid>` is on legal hold, so Twilio must retain the record.\n- Your application attempted to delete a Proxy resource while the legal hold is active.\n- The `Sid` in the request belongs to the held account, so the delete operation cannot complete.\n\n### Possible solutions\n\n- Do not retry the `DELETE` request while the legal hold is active.\n- Review the `AccountSid` and `Sid` in the error response to confirm that your application targeted the expected account and record.\n- Remove or defer automatic cleanup steps that delete Proxy records for this account until deletion is allowed.\n- If you expected the record to be deletable, contact Support to confirm the account status before retrying.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Service resource](/docs/proxy/api/service)\n- [Data Retention and Deletion in Twilio Products](https://help.twilio.com/articles/4410585868443-Data-Retention-and-Deletion-in-Twilio-Products)\n",
    "causes": "* The account identified by `<AccountSid>` is on legal hold, so Twilio must retain the record.\n* Your application attempted to delete a Proxy resource while the legal hold is active.\n* The `Sid` in the request belongs to the held account, so the delete operation cannot complete.",
    "solutions": "* Do not retry the `DELETE` request while the legal hold is active.\n* Review the `AccountSid` and `Sid` in the error response to confirm that your application targeted the expected account and record.\n* Remove or defer automatic cleanup steps that delete Proxy records for this account until deletion is allowed.\n* If you expected the record to be deletable, contact Support to confirm the account status before retrying.",
    "description": "Twilio returns this error when you send a `DELETE` request for a Proxy record on an account that is on legal hold. Twilio rejects the delete request and keeps the record identified by `<Sid>`.",
    "date_created": "2018-08-28T02:36:57Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80616,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Unsupported Identifier Type For Session Mode",
    "secondary_message": "Cannot add `<Identifier>` to session `<SessionSid>`. The identifier is not compatible with the session mode.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error occurs when you add a Participant `identifier` that does not match the Proxy Session `mode`. Proxy Sessions support `message-only`, `voice-only`, and `voice-and-message`. Proxy also supports non-phone channel identifiers for messaging use cases, but those identifiers must be used in a messaging flow that matches the Session mode.\n\n### Possible causes\n\n- You created a `voice-only` or `voice-and-message` Session, then tried to add a channel or chat identifier instead of a phone number as the Participant `identifier`.\n- You are building a messaging app or chat integration, but the Session was not created as `message-only`. Twilio's channel-based examples use channel identifiers in `message-only` Sessions.\n- You reused an `identifier` or `proxyIdentifier` from a channel-based messaging setup in a Session that is expected to handle voice traffic. Proxy separates voice-capable and message-only session behavior through the Session `mode`.\n\n### Possible solutions\n\n- Check the Session `mode` before you add Participants. Use `message-only` for chat or messaging channel identifiers. Use `voice-only` or `voice-and-message` only when the Participant can be represented by a phone number.\n- If you are using Proxy with messaging channels, pass the messaging app or chat value as the Participant `identifier` and use the channel or contact address as `proxyIdentifier` in a `message-only` Session.\n- If the Session needs to support calls, recreate or update the flow so the Participant uses a phone number identifier, then verify your Proxy number pool includes numbers with the Voice or SMS capabilities required for that Session.\n\n#### Additional resources\n\n- [Session Resource](/docs/proxy/api/session)\n- [Participant](/docs/proxy/api/participant)\n- [Using Proxy with Channels](/docs/proxy/channels)\n",
    "causes": "* You created a `voice-only` or `voice-and-message` Session, then tried to add a channel or chat identifier instead of a phone number as the Participant `identifier`.\n* You are building a messaging app or chat integration, but the Session was not created as `message-only`. Twilio's channel-based examples use channel identifiers in `message-only` Sessions.\n* You reused an `identifier` or `proxyIdentifier` from a channel-based messaging setup in a Session that is expected to handle voice traffic. Proxy separates voice-capable and message-only session behavior through the Session `mode`.",
    "solutions": "* Check the Session `mode` before you add Participants. Use `message-only` for chat or messaging channel identifiers. Use `voice-only` or `voice-and-message` only when the Participant can be represented by a phone number.\n* If you are using Proxy with messaging channels, pass the messaging app or chat value as the Participant `identifier` and use the channel or contact address as `proxyIdentifier` in a `message-only` Session.\n* If the Session needs to support calls, recreate or update the flow so the Participant uses a phone number identifier, then verify your Proxy number pool includes numbers with the Voice or SMS capabilities required for that Session.",
    "description": "This error occurs when you add a Participant `identifier` that does not match the Proxy Session `mode`. Proxy Sessions support `message-only`, `voice-only`, and `voice-and-message`. Proxy also supports non-phone channel identifiers for messaging use cases, but those identifiers must be used in a messaging flow that matches the Session mode.",
    "date_created": "2018-08-28T02:35:15Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80617,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Flex Configuration Error",
    "secondary_message": "A Flex component was not configured correctly",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nA Flex component was not configured correctly.\n\n### Possible causes\n\n- You made changes to one of your Flex phone numbers\n- You are trying to use a phone number with Flex but have not created a Flex Flow for that number\n- You manually deleted a Chat Channel or Proxy Session\n- You removed or changed the Chat Channel Sid setting in your Proxy Service\n",
    "causes": "* You made changes to one of your Flex phone numbers\n* You are trying to use a phone number with Flex but have not created a Flex Flow for that number\n* You manually deleted a Chat Channel or Proxy Session\n* You removed or changed the Chat Channel Sid setting in your Proxy Service",
    "solutions": null,
    "description": "A Flex component was not configured correctly.",
    "date_created": "2019-02-12T23:50:50Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80618,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Chat Integration Error",
    "secondary_message": "A Chat element was not configured correctly for Proxy",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nA Chat component was not configured correctly for integration with Proxy Service\n\n### Possible causes\n\n- You manually deleted a Chat Channel or Proxy Session\n- You removed or changed the Chat Channel Sid setting in your Proxy Service\n",
    "causes": "* You manually deleted a Chat Channel or Proxy Session\n* You removed or changed the Chat Channel Sid setting in your Proxy Service",
    "solutions": null,
    "description": "A Chat component was not configured correctly for integration with Proxy Service",
    "date_created": "2019-02-12T23:53:23Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80619,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Chat Channel Attribute Error",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nChat Channel was not found or did not have expected attributes (twilioNumber, serviceNumber, status, proxySession) required for Proxy integration. If you are using the same Chat service for both Flex and non-Flex use-cases, this is expected for non-flex messages and you can probably ignore this event.\n",
    "causes": null,
    "solutions": null,
    "description": "Chat Channel was not found or did not have expected attributes (twilioNumber, serviceNumber, status, proxySession) required for Proxy integration. If you are using the same Chat service for both Flex and non-Flex use-cases, this is expected for non-flex messages and you can probably ignore this event.",
    "date_created": "2019-02-12T23:56:58Z",
    "last_updated": "2020-08-04T10:00:10.597Z"
  },
  {
    "code": 80620,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Chat Configured Proxy Identifier Not Found",
    "secondary_message": "Received a chat message for a proxy identifier that does not exist in your Proxy pool",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nReceived a chat message for a proxy identifier that does not exist in your Proxy pool\n\n### Possible causes\n\n- You removed a Flex number from your Proxy pool\n",
    "causes": "* You removed a Flex number from your Proxy pool",
    "solutions": null,
    "description": "Received a chat message for a proxy identifier that does not exist in your Proxy pool",
    "date_created": "2019-02-12T23:59:52Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80621,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Requests Rate Limited on Endpoint",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nYou have reached the limit on the number of requests for this endpoint\n\n### Possible causes\n\nThere is high increase of number of requests for this endpoint within a short span of time.\n\n### Possible solutions\n\nYou can retry the requests with a random exponential backoff or can follow any of the other techniques to avoid rate limiting.\n",
    "causes": "There is high increase of number of requests for this endpoint within a short span of time.",
    "solutions": "You can retry the requests with a random exponential backoff or can follow any of the other techniques to avoid rate limiting.",
    "description": "You have reached the limit on the number of requests for this endpoint",
    "date_created": "2023-11-30T08:39:55Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80622,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Maximum Pool Size Error",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nYou attempted to add a number to a Proxy Number Pool that has reached its maximum allowed size. A Proxy Service pool can have up to 500 unreserved numbers and 5000 reserved numbers.\n\n### Possible causes\n\nYou attempted to add a number to a Proxy Number Pool that has reached its maximum allowed size. A Proxy Service pool can have up to 500 unreserved numbers and 5000 reserved numbers.\n\n### Possible solutions\n\n- Check that your pool is sized for your actual concurrency before you add numbers. Pool size depends on how many Sessions your busiest participant is in at the same time, and on how many concurrent Sessions each number can carry before its reputation suffers. For more information, see [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed).\n- Remove numbers you no longer need.\n- If you need more numbers than the limit allows, create another Proxy Service for the additional numbers.\n",
    "causes": "You attempted to add a number to a Proxy Number Pool that has reached its maximum allowed size. A Proxy Service pool can have up to 500 unreserved numbers and 5000 reserved numbers.",
    "solutions": "* Check that your pool is sized for your actual concurrency before you add numbers. Pool size depends on how many Sessions your busiest participant is in at the same time, and on how many concurrent Sessions each number can carry before its reputation suffers. For more information, see [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed).\n* Remove numbers you no longer need.\n* If you need more numbers than the limit allows, create another Proxy Service for the additional numbers.",
    "description": "You attempted to add a number to a Proxy Number Pool that has reached its maximum allowed size. A Proxy Service pool can have up to 500 unreserved numbers and 5000 reserved numbers.",
    "date_created": "2020-05-27T21:01:08Z",
    "last_updated": "2026-10-14T12:14:34-04:00"
  },
  {
    "code": 80623,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Duplicate Participant Request",
    "secondary_message": "Possible duplicate Participant created in multiple Sessions.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n\n## Description\nThis error occurs when Proxy receives a request to create a Participant for an `Identifier` while another request for that same `Identifier` is still in progress in a different Session. Proxy rejects the request with a 409 conflict to prevent multiple active Participants from sharing the same `Identifier` and `ProxyIdentifier` pair, which can cause calls or messages to be routed incorrectly.\n\n### Possible causes\n- Your application sent multiple Participant create requests for the same `Identifier` at nearly the same time.\n- A Session create request that included participant parameters ran while another Participant create request for the same `Identifier` was still being processed.\n- Your application retried a Participant create request before the earlier request completed.\n- The same participant is being added to multiple concurrent Sessions without coordinating request order.\n\n### Possible solutions\n- Create Participants for the same `Identifier` one request at a time instead of sending parallel requests.\n- Include `FailOnParticipantConflict=true` in Participant create requests, or in Session create requests that include participant parameters, so Proxy can reject conflicting requests immediately.\n- When you receive 80623, wait for the earlier conflicting request to complete and then retry the failed request.\n- If the same participant must be active in multiple concurrent Sessions, add enough Twilio phone numbers to your Service so that participant can be assigned a unique Proxy number in each active Session.\n\n#### Additional resources\n- [Participant resource](/docs/proxy/api/participant)\n- [Session resource](/docs/proxy/api/session)\n- [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed)\n",
    "causes": "* Your application sent multiple Participant create requests for the same `Identifier` at nearly the same time.\n* A Session create request that included participant parameters ran while another Participant create request for the same `Identifier` was still being processed.\n* Your application retried a Participant create request before the earlier request completed.\n* The same participant is being added to multiple concurrent Sessions without coordinating request order.",
    "solutions": "* Create Participants for the same `Identifier` one request at a time instead of sending parallel requests.\n* Include `FailOnParticipantConflict=true` in Participant create requests, or in Session create requests that include participant parameters, so Proxy can reject conflicting requests immediately.\n* When you receive 80623, wait for the earlier conflicting request to complete and then retry the failed request.\n* If the same participant must be active in multiple concurrent Sessions, add enough Twilio phone numbers to your Service so that participant can be assigned a unique Proxy number in each active Session.",
    "description": "This error occurs when Proxy receives a request to create a Participant for an `Identifier` while another request for that same `Identifier` is still in progress in a different Session. Proxy rejects the request with a 409 conflict to prevent multiple active Participants from sharing the same `Identifier` and `ProxyIdentifier` pair, which can cause calls or messages to be routed incorrectly.",
    "date_created": "2020-08-03T22:41:11Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 80624,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Approaching Maximium Number Pool Size",
    "secondary_message": "Your Proxy number pool has reached 85% of the maximum limit.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nProxy number pools can include a maximum of 5000 Reserved numbers and 500 un-reserved numbers. We have detected that are getting close to one of those limits. Once you reach the limit, you will not be able to add more numbers to your pool.\n\n### Possible causes\n\nYou are nearing one of the limits in your Proxy number pool.\n\n### Possible solutions\n\n- Check that your pool is sized for your actual concurrency before you add numbers. Pool size depends on how many Sessions your busiest participant is in at the same time, and on how many concurrent Sessions each number can carry before its reputation suffers. For more information, see [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed).\n- If you need more numbers than the limit allows, create another Proxy Service for the additional numbers.\n",
    "causes": "You are nearing one of the limits in your Proxy number pool.",
    "solutions": "* Check that your pool is sized for your actual concurrency before you add numbers. Pool size depends on how many Sessions your busiest participant is in at the same time, and on how many concurrent Sessions each number can carry before its reputation suffers. For more information, see [How many Phone Numbers do I need?](/docs/proxy/phone-numbers-needed).\n* If you need more numbers than the limit allows, create another Proxy Service for the additional numbers.",
    "description": "Proxy number pools can include a maximum of 5000 Reserved numbers and 500 un-reserved numbers. We have detected that are getting close to one of those limits. Once you reach the limit, you will not be able to add more numbers to your pool.",
    "date_created": "2021-09-20T22:01:15Z",
    "last_updated": "2026-10-14T12:14:34-04:00"
  },
  {
    "code": 80625,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unauthorized Request. Signature is missing or is invalid",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nA valid signature header needs to be provided for the request to be authenticated.\n\n### Possible causes\n\nHeader - 'X-Twilio-Signature' is missing or is invalid\n\n### Possible solutions\n\nProvide a valid signature value in header 'X-Twilio-Signature'\n",
    "causes": "Header - 'X-Twilio-Signature' is missing or is invalid",
    "solutions": "Provide a valid signature value in header 'X-Twilio-Signature'",
    "description": "A valid signature header needs to be provided for the request to be authenticated.",
    "date_created": "2024-03-22T03:04:23Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80701,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Parameter Validation Failed",
    "secondary_message": "`<parameter name>` is invalid. `<parameter is invalid>`",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when a request to a Proxy resource includes a parameter that does not match the expected schema, format, or allowed value for that endpoint. The warning can appear as `<parameter name>` is invalid. `<parameter is invalid>`.\n\n### Possible causes\n\n- A required parameter for the resource you are creating was omitted or sent under the wrong field. For example, creating a Service requires `uniqueName`, and creating a Participant requires `identifier`.\n- An enum parameter contains a value outside the supported set, such as `mode`, `status`, `geoMatchLevel`, or `numberSelectionBehavior`.\n- A SID, URI, or date-time field does not match the required format, such as an invalid `ServiceSid`, `SessionSid`, `ProxyIdentifierSid`, callback URL, or `dateExpiry`.\n- A string or numeric value exceeds Proxy limits, such as `UniqueName`, `FriendlyName`, `Identifier`, `ProxyIdentifier`, or `ttl`.\n- A `proxyIdentifier` was provided for a Participant, but that Twilio number was not already added to the Proxy number pool for the service.\n\n### Possible solutions\n\n- Review the exact parameter named in the warning and compare it with the schema for the Service, Session, or Participant resource you are calling.\n- Send only documented values for enum fields. For example, use one of the supported values for `mode`, `status`, `geoMatchLevel`, and `numberSelectionBehavior`.\n- Validate identifiers before you send the request. Ensure SIDs use the correct prefix and length, callback fields are valid URIs, and `dateExpiry` is a valid ISO 8601 date-time value.\n- Keep request values within documented limits. `UniqueName` must be 191 characters or fewer, `FriendlyName` must be 255 characters or fewer, `Identifier` must be 191 characters or fewer, `ProxyIdentifier` must be 255 characters or fewer, and `ttl` must be greater than 0 and less than 2147483647.\n- If you set `proxyIdentifier` or `proxyIdentifierSid` on a Participant, use a Twilio number that is already assigned to the Proxy service's number pool.\n\n#### Additional resources\n\n- [Service resource](/docs/proxy/api/service)\n- [Session resource](/docs/proxy/api/session)\n- [Participant resource](/docs/proxy/api/participant)\n",
    "causes": "* A required parameter for the resource you are creating was omitted or sent under the wrong field. For example, creating a Service requires `uniqueName`, and creating a Participant requires `identifier`.\n* An enum parameter contains a value outside the supported set, such as `mode`, `status`, `geoMatchLevel`, or `numberSelectionBehavior`.\n* A SID, URI, or date-time field does not match the required format, such as an invalid `ServiceSid`, `SessionSid`, `ProxyIdentifierSid`, callback URL, or `dateExpiry`.\n* A string or numeric value exceeds Proxy limits, such as `UniqueName`, `FriendlyName`, `Identifier`, `ProxyIdentifier`, or `ttl`.\n* A `proxyIdentifier` was provided for a Participant, but that Twilio number was not already added to the Proxy number pool for the service.",
    "solutions": "* Review the exact parameter named in the warning and compare it with the schema for the Service, Session, or Participant resource you are calling.\n* Send only documented values for enum fields. For example, use one of the supported values for `mode`, `status`, `geoMatchLevel`, and `numberSelectionBehavior`.\n* Validate identifiers before you send the request. Ensure SIDs use the correct prefix and length, callback fields are valid URIs, and `dateExpiry` is a valid ISO 8601 date-time value.\n* Keep request values within documented limits. `UniqueName` must be 191 characters or fewer, `FriendlyName` must be 255 characters or fewer, `Identifier` must be 191 characters or fewer, `ProxyIdentifier` must be 255 characters or fewer, and `ttl` must be greater than 0 and less than 2147483647.\n* If you set `proxyIdentifier` or `proxyIdentifierSid` on a Participant, use a Twilio number that is already assigned to the Proxy service's number pool.",
    "description": "Twilio returns this warning when a request to a Proxy resource includes a parameter that does not match the expected schema, format, or allowed value for that endpoint. The warning can appear as `<parameter name>` is invalid. `<parameter is invalid>`.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80801,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid attempt to Re-Open a Session",
    "secondary_message": "Participant is active in another Session",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nA request was made to re-open a Session that would result in one or both of the Participants being active in multiple Sessions. This could result in calls or messages from the affected Participant being routed to an unintended recipient.\n\n### Possible causes\n\nMultiple Sessions in your service have a Participant with the same identifier/proxy-identifier pair, and one of those was active at the time a request was made to re-open one of the closed sessions.\n\n### Possible solutions\n\n1. Avoid re-opening sessions unless you can be certain that the Participants have not been assigned the same ProxyIdentifier in other sessions.\n2. Ask that the ProxyAllowParticipantConflict flag be removed from your account. By default, Proxy now rejects requests such as this one that would result in having two participants in active sessions with the same proxy identifier. However, this new behavior requires removing the ProxyAllowParticipantConflict flag from your account. When you are prepared to handle 400 on Session update requests (as well as 409 from Session create and Participant create endpoints), you can request to have this flag removed.\n3. Include the experimental form parameter FailOnParticipantConflict=true in your Session create/update and Participant create requests to allow Proxy to reject the individual request if it would result in this condition. This will allow you to test your code before choosing to remove the ProxyAllowParticipantConflict flag described above.\n",
    "causes": "Multiple Sessions in your service have a Participant with the same identifier/proxy-identifier pair, and one of those was active at the time a request was made to re-open one of the closed sessions.",
    "solutions": "1. Avoid re-opening sessions unless you can be certain that the Participants have not been assigned the same ProxyIdentifier in other sessions.\n2. Ask that the ProxyAllowParticipantConflict flag be removed from your account. By default, Proxy now rejects requests such as this one that would result in having two participants in active sessions with the same proxy identifier. However, this new behavior requires removing the ProxyAllowParticipantConflict flag from your account. When you are prepared to handle 400 on Session update requests (as well as 409 from Session create and Participant create endpoints), you can request to have this flag removed.\n3. Include the experimental form parameter FailOnParticipantConflict=true in your Session create/update and Participant create requests to allow Proxy to reject the individual request if it would result in this condition. This will allow you to test your code before choosing to remove the ProxyAllowParticipantConflict flag described above.",
    "description": "A request was made to re-open a Session that would result in one or both of the Participants being active in multiple Sessions. This could result in calls or messages from the affected Participant being routed to an unintended recipient.",
    "date_created": "2020-07-29T23:24:50Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80802,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Simultaneous requests to create the same Identifier in one or more Sessions",
    "secondary_message": "Possible duplicate Participant created in multiple Sessions.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nMultiple requests to the create-participant endpoint with the same identifier were made simultaneously or very close in time. This can result in the same proxy-identifier being assigned, causing Participants with the same Identifier/ProxyIdentifier pair to be active in multiple Sessions. This can result in calls and messages from affected Participants being routed to unintended recipients.\n\n### Possible causes\n\nMultiple requests to the create-participant endpoint with the same identifier were made simultaneously or very close in time.\n\n### Possible solutions\n\n1. If you are trying to add the same person to multiple Sessions, make the requests sequentially.\n2. Request that the ProxyAllowParticipantConflict flag be removed from your account. Proxy will reject requests that could result in having multiple Participants in active sessions with the same Identifier/ProxyIdentifier pair. In this case, Session create or Participant create, Proxy will return a 409 status code. You can retry the failed request after the previous (conflicting) request has completed. However, in order to opt-in to this behavior, the ProxyAllowParticipantConflict flag on your account must be removed\\*. See option 3 for details on how to opt-in to this behavior on a per-request basis if you wish to do some testing first.\n3. Include the form parameter FailOnParticipantConflict=True in your requests to Participant create (and/or Session create, if you include participant parameters) to allow Proxy to reject the request if it would result in this condition. Proxy will return a 409 (error code 80623) in this case.\n\n\\*Note that this flag also impacts the behavior of the Session update endpoint, on attempting to re-open closed sessions, when those requests would result in the condition described. This endpoint would return 400 (error code 80604).\n",
    "causes": "Multiple requests to the create-participant endpoint with the same identifier were made simultaneously or very close in time.",
    "solutions": "1. If you are trying to add the same person to multiple Sessions, make the requests sequentially.\n2. Request that the ProxyAllowParticipantConflict flag be removed from your account. Proxy will reject requests that could result in having multiple Participants in active sessions with the same Identifier/ProxyIdentifier pair. In this case, Session create or Participant create, Proxy will return a 409 status code. You can retry the failed request after the previous (conflicting) request has completed. However, in order to opt-in to this behavior, the ProxyAllowParticipantConflict flag on your account must be removed\\*. See option 3 for details on how to opt-in to this behavior on a per-request basis if you wish to do some testing first.\n3. Include the form parameter FailOnParticipantConflict=True in your requests to Participant create (and/or Session create, if you include participant parameters) to allow Proxy to reject the request if it would result in this condition. Proxy will return a 409 (error code 80623) in this case. \\*Note that this flag also impacts the behavior of the Session update endpoint, on attempting to re-open closed sessions, when those requests would result in the condition described. This endpoint would return 400 (error code 80604).",
    "description": "Multiple requests to the create-participant endpoint with the same identifier were made simultaneously or very close in time. This can result in the same proxy-identifier being assigned, causing Participants with the same Identifier/ProxyIdentifier pair to be active in multiple Sessions. This can result in calls and messages from affected Participants being routed to unintended recipients.",
    "date_created": "2020-07-29T23:42:46Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80901,
    "log_level": "WARNING",
    "log_type": "CARRIER",
    "message": "Message Matched Stop Word",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nProxy generated this warning because it did not forward an inbound SMS that matched a reserved opt-out keyword, or another opt-in or opt-out keyword that Proxy did not forward. By default, Proxy drops opt-out keywords instead of proxying them between participants. Dropped messages do not trigger callbacks.\n\n### Possible causes\n\n- A participant sent a single-word opt-out keyword such as `STOP`, `REVOKE`, `OPTOUT`, `UNSUBSCRIBE`, `END`, `CANCEL`, `QUIT`, or `STOPALL`.\n- A participant sent one of the French opt-out keywords that Proxy blocks, such as `ARRETT`, `ARRET`, or `ARRETE`.\n- A participant sent `UNSTOP`, which Proxy does not forward even though Proxy forwards other opt-in, help, and info keywords between participants.\n- Your application expected Proxy to forward one of these reserved keywords, but Proxy handled it before the message could be proxied.\n\n### Possible solutions\n\n- Ask participants not to send reserved opt-out keywords as standalone messages if the message should be delivered through Proxy.\n- If the sender previously opted out and needs to receive messages from the Twilio number again, have them send `START` to opt back in.\n- Design your workflow so you do not depend on callbacks for blocked opt-out messages. Proxy does not trigger callbacks for messages it drops.\n- If you need custom handling for opt-in or opt-out keywords, contact Support to enable the `ProxyRespectSmsStopFilterFlag` account flag and then use `InterceptCallbackUrl` on your Proxy Service to apply your logic.\n\n#### Additional resources\n\n- [Opt-out keywords](/docs/proxy/opt-out-keywords)\n- [Webhooks](/docs/proxy/api/webhooks)\n- [Twilio support for opt-out keywords (SMS STOP filtering)](https://help.twilio.com/hc/en-us/articles/223134027-Twilio-support-for-STOP-BLOCK-and-CANCEL-SMS-STOP-filtering-)\n",
    "causes": "* A participant sent a single-word opt-out keyword such as `STOP`, `REVOKE`, `OPTOUT`, `UNSUBSCRIBE`, `END`, `CANCEL`, `QUIT`, or `STOPALL`.\n* A participant sent one of the French opt-out keywords that Proxy blocks, such as `ARRETT`, `ARRET`, or `ARRETE`.\n* A participant sent `UNSTOP`, which Proxy does not forward even though Proxy forwards other opt-in, help, and info keywords between participants.\n* Your application expected Proxy to forward one of these reserved keywords, but Proxy handled it before the message could be proxied.",
    "solutions": "* Ask participants not to send reserved opt-out keywords as standalone messages if the message should be delivered through Proxy.\n* If the sender previously opted out and needs to receive messages from the Twilio number again, have them send `START` to opt back in.\n* Design your workflow so you do not depend on callbacks for blocked opt-out messages. Proxy does not trigger callbacks for messages it drops.\n* If you need custom handling for opt-in or opt-out keywords, contact Support to enable the `ProxyRespectSmsStopFilterFlag` account flag and then use `InterceptCallbackUrl` on your Proxy Service to apply your logic.",
    "description": "Proxy generated this warning because it did not forward an inbound SMS that matched a reserved opt-out keyword, or another opt-in or opt-out keyword that Proxy did not forward. By default, Proxy drops opt-out keywords instead of proxying them between participants. Dropped messages do not trigger callbacks.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80902,
    "log_level": "ERROR",
    "log_type": null,
    "message": "No Active Session",
    "secondary_message": "You received a call to your Proxy Number from a caller who is not a participant in an active session.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis error occurs when Proxy receives a call to a Proxy Number from a caller who is not a Participant in an open Session. Proxy Sessions map two Participants for a temporary conversation, so a call that arrives after a Session is closed, expired, or never created is treated as out-of-session traffic.\n\n### Possible causes\n\n- The caller's phone number was never added to the Session as a Participant `identifier`.\n- There is no `open` Session for the caller because the Session was closed, failed, or expired based on `ttl` or `dateExpiry`.\n- The caller dialed a different masked number than the `proxyIdentifier` assigned to that Participant. Proxy expects the participant to call the assigned Proxy Number to reach the other party.\n- The Service was not configured with `outOfSessionCallbackUrl` to handle calls that reach a closed or non-existent Session.\n\n### Possible solutions\n\n- Create the Session before either party places the call. Add the caller and the other party as Participants in that Session.\n- Verify that the caller's real phone number matches the Participant `identifier` stored in the intended Session and that the caller is dialing the assigned `proxyIdentifier`.\n- Review the Session status and expiration settings. Increase the Service `defaultTtl` or set the Session `ttl` or `dateExpiry` so the Session stays open for the full lifetime of the conversation.\n- Configure `outOfSessionCallbackUrl` if you need to handle calls that arrive after a Session ends or before one exists. Return valid TwiML to play a message or redirect the call, or return auto-create Session JSON to create the Session and Participants when appropriate.\n\n#### Additional resources\n\n- [Proxy Session resource](/docs/proxy/api/session)\n- [Proxy Participant resource](/docs/proxy/api/participant)\n- [Out-of-Session Callback Response Guide](/docs/proxy/out-session-callback-response-guide)\n",
    "causes": "* The caller's phone number was never added to the Session as a Participant `identifier`.\n* There is no `open` Session for the caller because the Session was closed, failed, or expired based on `ttl` or `dateExpiry`.\n* The caller dialed a different masked number than the `proxyIdentifier` assigned to that Participant. Proxy expects the participant to call the assigned Proxy Number to reach the other party.\n* The Service was not configured with `outOfSessionCallbackUrl` to handle calls that reach a closed or non-existent Session.",
    "solutions": "* Create the Session before either party places the call. Add the caller and the other party as Participants in that Session.\n* Verify that the caller's real phone number matches the Participant `identifier` stored in the intended Session and that the caller is dialing the assigned `proxyIdentifier`.\n* Review the Session status and expiration settings. Increase the Service `defaultTtl` or set the Session `ttl` or `dateExpiry` so the Session stays open for the full lifetime of the conversation.\n* Configure `outOfSessionCallbackUrl` if you need to handle calls that arrive after a Session ends or before one exists. Return valid TwiML to play a message or redirect the call, or return auto-create Session JSON to create the Session and Participants when appropriate.",
    "description": "This error occurs when Proxy receives a call to a Proxy Number from a caller who is not a Participant in an open Session. Proxy Sessions map two Participants for a temporary conversation, so a call that arrives after a Session is closed, expired, or never created is treated as out-of-session traffic.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80903,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Unknown Participant",
    "secondary_message": "Unknown Participant",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when Proxy cannot identify the participant for the current action. Proxy Sessions route communications between Participants, and both inbound handling and `MessageInteraction` requests depend on a valid participant match by `ParticipantSid` or by the participant's `identifier`.\n\n### Possible causes\n\n- The `ParticipantSid` in your request does not belong to an existing Participant in the target Session. Proxy message creation uses `/Participants/{ParticipantSid}/MessageInteractions`, and Participant records are scoped to a specific Session.\n- The caller or sender does not match any Participant `identifier` in the Session. In Proxy, the `identifier` is the participant's phone number or channel identifier, and inbound calls or messages that are not from a Participant in an open Session are handled through the out-of-session flow.\n- The Participant was deleted from the Session. Deleted Participants have a `dateDeleted`, and Proxy does not let you add a removed participant back to the same Session.\n\n### Possible solutions\n\n- Fetch or list the Session's Participants and confirm that you are using the correct `KP...` Participant SID for the request. Create the missing Participant before you send a message or start routing traffic through the Session.\n- Verify that the caller or sender is using the same phone number or channel identifier you stored in the Participant `identifier` field. If the contact value has changed, create a new Participant with the correct `identifier`.\n- If you removed a Participant, create a new Session and add fresh Participants instead of trying to reuse the deleted one. Proxy does not allow a removed participant to be added back to the same Session.\n- If calls or messages can arrive before a Session exists or after it closes, configure `outOfSessionCallbackUrl` so you can return TwiML or auto-create session JSON for that traffic.\n\n#### Additional resources\n\n- [Proxy API overview](/docs/proxy/api)\n- [Participant resource](/docs/proxy/api/participant)\n- [Out-of-Session Callback Response Guide](/docs/proxy/out-session-callback-response-guide)\n",
    "causes": "* The `ParticipantSid` in your request does not belong to an existing Participant in the target Session. Proxy message creation uses `/Participants/{ParticipantSid}/MessageInteractions`, and Participant records are scoped to a specific Session.\n* The caller or sender does not match any Participant `identifier` in the Session. In Proxy, the `identifier` is the participant's phone number or channel identifier, and inbound calls or messages that are not from a Participant in an open Session are handled through the out-of-session flow.\n* The Participant was deleted from the Session. Deleted Participants have a `dateDeleted`, and Proxy does not let you add a removed participant back to the same Session.",
    "solutions": "* Fetch or list the Session's Participants and confirm that you are using the correct `KP...` Participant SID for the request. Create the missing Participant before you send a message or start routing traffic through the Session.\n* Verify that the caller or sender is using the same phone number or channel identifier you stored in the Participant `identifier` field. If the contact value has changed, create a new Participant with the correct `identifier`.\n* If you removed a Participant, create a new Session and add fresh Participants instead of trying to reuse the deleted one. Proxy does not allow a removed participant to be added back to the same Session.\n* If calls or messages can arrive before a Session exists or after it closes, configure `outOfSessionCallbackUrl` so you can return TwiML or auto-create session JSON for that traffic.",
    "description": "This warning appears when Proxy cannot identify the participant for the current action. Proxy Sessions route communications between Participants, and both inbound handling and `MessageInteraction` requests depend on a valid participant match by `ParticipantSid` or by the participant's `identifier`.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80904,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Expired Proxy Session",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nProxy session has expired.\n\n### Possible causes\n\n- Session has expired due to **\"Ttl\"** or **\"DateExpiry\"** has been reached.\n\n  - If Session has DateExpiry property set, it overrides the Ttl value and session will expire as soon as DateExpiry is reached.\n  - If Both the properties are not set, default Ttl is set to 90 days and session expires when Ttl is reached.\n\n### Possible solutions\n\nCreate a new session or re-open a closed session within the service. Refer: [docs](/docs/proxy/api/session)\n",
    "causes": "* Session has expired due to **\"Ttl\"** or **\"DateExpiry\"** has been reached.\n\n  * If Session has DateExpiry property set, it overrides the Ttl value and session will expire as soon as DateExpiry is reached.\n  * If Both the properties are not set, default Ttl is set to 90 days and session expires when Ttl is reached.",
    "solutions": "Create a new session or re-open a closed session within the service. Refer: [docs](/docs/proxy/api/session)",
    "description": "Proxy session has expired.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80905,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Unknown Scenario",
    "secondary_message": "No valid proxy scenario for handling inbound call or message",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when Twilio Proxy receives an inbound call or message on a Proxy number, but cannot route the interaction through a valid Session. Proxy handles masked communications through Sessions that map two Participants. If the inbound traffic arrives for a closed or non-existent Session, configure `out_of_session_callback_url` to return valid TwiML or valid auto-create session JSON so Proxy can continue handling the interaction.\n\n### Possible causes\n\n- The inbound caller or sender is not a Participant in an open Session for the Proxy number that received the interaction.\n- The matching Session has already closed, expired because of `ttl` or `dateExpiry`, or was deleted.\n- The Proxy Service does not have `out_of_session_callback_url` configured, so inbound traffic for a closed or non-existent Session has no fallback handling path.\n- The `out_of_session_callback_url` response is not valid TwiML with `Content-Type: application/xml` or valid auto-create session JSON with `Content-Type: application/json`.\n- The Session or Participant configuration does not match the expected `identifier` and `proxyIdentifier` pairing for the inbound interaction.\n\n### Possible solutions\n\n- Confirm that the inbound call or message is reaching the correct Proxy Service and a Proxy number assigned to that Service.\n- Verify that the caller or sender is a Participant in an open Session for that Proxy number.\n- If the original Session has closed or expired, create a new Session for the participants before expecting Proxy to forward additional calls or messages.\n- Configure `out_of_session_callback_url` on the Service if you need to handle inbound traffic that arrives after a Session closes or when no Session exists.\n- Make sure your out-of-session webhook returns valid TwiML for voice or messaging, or valid auto-create session JSON if you want Proxy to create a new Session automatically.\n- Review your Session `ttl`, `dateExpiry`, Participant `identifier`, and `proxyIdentifier` values so the Session stays active for the expected duration and the inbound interaction can be matched correctly.\n\n#### Additional resources\n\n- [Proxy: One-to-one Masked Communications](/docs/proxy)\n- [Service resource](/docs/proxy/api/service)\n- [Out-of-Session Callback Response Guide](/docs/proxy/out-session-callback-response-guide)\n",
    "causes": "* The inbound caller or sender is not a Participant in an open Session for the Proxy number that received the interaction.\n* The matching Session has already closed, expired because of `ttl` or `dateExpiry`, or was deleted.\n* The Proxy Service does not have `out_of_session_callback_url` configured, so inbound traffic for a closed or non-existent Session has no fallback handling path.\n* The `out_of_session_callback_url` response is not valid TwiML with `Content-Type: application/xml` or valid auto-create session JSON with `Content-Type: application/json`.\n* The Session or Participant configuration does not match the expected `identifier` and `proxyIdentifier` pairing for the inbound interaction.",
    "solutions": "* Confirm that the inbound call or message is reaching the correct Proxy Service and a Proxy number assigned to that Service.\n* Verify that the caller or sender is a Participant in an open Session for that Proxy number.\n* If the original Session has closed or expired, create a new Session for the participants before expecting Proxy to forward additional calls or messages.\n* Configure `out_of_session_callback_url` on the Service if you need to handle inbound traffic that arrives after a Session closes or when no Session exists.\n* Make sure your out-of-session webhook returns valid TwiML for voice or messaging, or valid auto-create session JSON if you want Proxy to create a new Session automatically.\n* Review your Session `ttl`, `dateExpiry`, Participant `identifier`, and `proxyIdentifier` values so the Session stays active for the expected duration and the inbound interaction can be matched correctly.",
    "description": "This warning appears when Twilio Proxy receives an inbound call or message on a Proxy number, but cannot route the interaction through a valid Session. Proxy handles masked communications through Sessions that map two Participants. If the inbound traffic arrives for a closed or non-existent Session, configure `out_of_session_callback_url` to return valid TwiML or valid auto-create session JSON so Proxy can continue handling the interaction.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80906,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Interaction Not Open",
    "secondary_message": "Received interaction completion event for an Interaction that is already complete",
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning appears when Flex receives an interaction completion event for an Interaction that is already complete. In Flex Conversations, Interactions API operations trigger state change events, and a channel status can be `active` or `closed`, so a second completion after the channel is closed is logged as this warning.\n\n### Possible causes\n\n- Your application, webhook handler, Studio Flow, or backend job processed the same completion logic more than once for the same Interaction. This is the most likely cause when a duplicate completion reaches an Interaction after it has already moved to `closed`.\n- The Interaction Channel was already closed through the Channels subresource. Closing the channel also closes the underlying media channel and changes it to read-only.\n- Your workflow intended to remove the agent and keep the customer conversation available, but it closed the Interaction Channel instead. If you close the channel instead of updating the participant, later automation can still try to complete the same Interaction again.\n- Multiple automation paths handled terminal events without checking the current state first. Flex recommends handling terminal TaskRouter events such as `workflow.timeout`, `task.canceled`, and `task.deleted` according to your application's needs.\n\n### Possible solutions\n\n- Check the current Interaction Channel status before you send completion or close logic. Only complete the Interaction when the channel is still `active`.\n- Make your completion handling idempotent. Deduplicate webhook retries and repeated automation so the same Interaction is not completed twice.\n- If you want to remove the agent but keep the conversation available for future activity, update the Channel Participant status to `closed` instead of closing the Interaction Channel. That completes the agent task while the channel remains active.\n- Review Interactions webhooks, Studio execution logs, TaskRouter events, and the Twilio Console debugger to identify which step closed the Interaction first.\n\n#### Additional resources\n\n- [Close an Interaction Channel](/docs/flex/developer/conversations/interactions-api/channels-subresource)\n- [Configure a webhook for Interactions events](/docs/flex/admin-guide/setup/conversations/configure-interactions-webhook)\n- [Park an Interaction](/docs/flex/developer/conversations/park-an-interaction)\n",
    "causes": "* Your application, webhook handler, Studio Flow, or backend job processed the same completion logic more than once for the same Interaction. This is the most likely cause when a duplicate completion reaches an Interaction after it has already moved to `closed`.\n* The Interaction Channel was already closed through the Channels subresource. Closing the channel also closes the underlying media channel and changes it to read-only.\n* Your workflow intended to remove the agent and keep the customer conversation available, but it closed the Interaction Channel instead. If you close the channel instead of updating the participant, later automation can still try to complete the same Interaction again.\n* Multiple automation paths handled terminal events without checking the current state first. Flex recommends handling terminal TaskRouter events such as `workflow.timeout`, `task.canceled`, and `task.deleted` according to your application's needs.",
    "solutions": "* Check the current Interaction Channel status before you send completion or close logic. Only complete the Interaction when the channel is still `active`.\n* Make your completion handling idempotent. Deduplicate webhook retries and repeated automation so the same Interaction is not completed twice.\n* If you want to remove the agent but keep the conversation available for future activity, update the Channel Participant status to `closed` instead of closing the Interaction Channel. That completes the agent task while the channel remains active.\n* Review Interactions webhooks, Studio execution logs, TaskRouter events, and the Twilio Console debugger to identify which step closed the Interaction first.",
    "description": "This warning appears when Flex receives an interaction completion event for an Interaction that is already complete. In Flex Conversations, Interactions API operations trigger state change events, and a channel status can be `active` or `closed`, so a second completion after the channel is closed is logged as this warning.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 80907,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Open Interaction Not Found",
    "secondary_message": "Received a call with no open interaction",
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nThis warning usually means Flex received a voice call event but could not match it to an active interaction. Flex handles inbound and outbound calling for voice, and Studio Flows commonly act as the entry point for Flex calls. The Send to Flex widget is used to transfer an incoming call to Flex and create the tasking needed for agent handling. If that interaction was never created, was already completed, or is out of sync with the call lifecycle, Flex can log 80907 with the message \"Received a call with no open interaction.\"\n\n### Possible causes\n\n- Your inbound voice flow bypasses Send to Flex, so the call reaches Flex without the task and interaction context that Flex expects for call handling.\n- A custom voice workflow or Flex customization changes the default call flow and causes the call state to drift from the expected interaction lifecycle.\n- Your application does not handle terminal TaskRouter events correctly, which can leave conversations orphaned in an open state and create interaction state mismatches later in the flow.\n- A later call event arrived after the related interaction had already been completed.\n\n### Possible solutions\n\n- Route inbound calls through a Studio Flow that includes Send to Flex so Flex can enqueue the call and create the task context used for agent delivery.\n- Review any custom voice routing, plugins, or webhooks that modify Flex call behavior. Make sure they preserve the expected interaction and task context for the full life of the call.\n- Update your application logic to handle terminal TaskRouter events correctly so interactions are not left orphaned or completed too early.\n- After you publish changes, place a new test call and confirm the call is transferred into Flex as an active task before the agent accepts it.\n\n#### Additional resources\n\n- [Voice in Flex](/docs/flex/developer/voice)\n- [Send to Flex widget](/docs/studio/widget-library/send-flex)\n- [Build an IVR for Flex with Twilio Studio](/docs/flex/admin-guide/tutorials/ivr)\n",
    "causes": "* Your inbound voice flow bypasses Send to Flex, so the call reaches Flex without the task and interaction context that Flex expects for call handling.\n* A custom voice workflow or Flex customization changes the default call flow and causes the call state to drift from the expected interaction lifecycle.\n* Your application does not handle terminal TaskRouter events correctly, which can leave conversations orphaned in an open state and create interaction state mismatches later in the flow.\n* A later call event arrived after the related interaction had already been completed.",
    "solutions": "* Route inbound calls through a Studio Flow that includes Send to Flex so Flex can enqueue the call and create the task context used for agent delivery.\n* Review any custom voice routing, plugins, or webhooks that modify Flex call behavior. Make sure they preserve the expected interaction and task context for the full life of the call.\n* Update your application logic to handle terminal TaskRouter events correctly so interactions are not left orphaned or completed too early.\n* After you publish changes, place a new test call and confirm the call is transferred into Flex as an active task before the agent accepts it.",
    "description": "This warning usually means Flex received a voice call event but could not match it to an active interaction. Flex handles inbound and outbound calling for voice, and Studio Flows commonly act as the entry point for Flex calls. The Send to Flex widget is used to transfer an incoming call to Flex and create the tasking needed for agent handling. If that interaction was never created, was already completed, or is out of sync with the call lifecycle, Flex can log 80907 with the message \"Received a call with no open interaction.\"",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80908,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Callback Error",
    "secondary_message": "Error on Callback for http://www.yourdomain.com/callback",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning indicates that a request to the `callbackUrl` configured on your Proxy Service failed. Proxy uses `callbackUrl` to send informational webhooks for new interactions and interaction status changes.\n\n### Possible causes\n\n- The `callbackUrl` on your Proxy Service is invalid, points to the wrong route, or is no longer reachable from the public internet.\n- Your endpoint does not handle Proxy webhook requests as `application/x-www-form-urlencoded` data, or it does not return HTTP `200 OK` for this informational webhook.\n- Your endpoint returns a `4xx` or `5xx` response, times out, or fails during connection or TLS handshake setup.\n\n### Possible solutions\n\n- Verify that the Proxy Service `callbackUrl` is correct, publicly accessible, and updated to the exact route that should receive interaction callbacks.\n- Update your webhook handler to accept Proxy form parameters and return HTTP `200 OK` after you process the callback.\n- Open the URL directly in a browser or send a mock request to confirm that the route does not fail or redirect unexpectedly.\n- Check the Debugger or Twilio Workbench to review the logged warning and inspect the HTTP request and response for the callback attempt.\n- If intermittent network issues are causing failures, add webhook connection overrides to adjust timeout and retry behavior for the callback URL.\n\n#### Additional resources\n\n- [Proxy webhooks](/docs/proxy/api/webhooks)\n- [Proxy Service resource](/docs/proxy/api/service)\n- [Debugging your application](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The `callbackUrl` on your Proxy Service is invalid, points to the wrong route, or is no longer reachable from the public internet.\n* Your endpoint does not handle Proxy webhook requests as `application/x-www-form-urlencoded` data, or it does not return HTTP `200 OK` for this informational webhook.\n* Your endpoint returns a `4xx` or `5xx` response, times out, or fails during connection or TLS handshake setup.",
    "solutions": "* Verify that the Proxy Service `callbackUrl` is correct, publicly accessible, and updated to the exact route that should receive interaction callbacks.\n* Update your webhook handler to accept Proxy form parameters and return HTTP `200 OK` after you process the callback.\n* Open the URL directly in a browser or send a mock request to confirm that the route does not fail or redirect unexpectedly.\n* Check the Debugger or Twilio Workbench to review the logged warning and inspect the HTTP request and response for the callback attempt.\n* If intermittent network issues are causing failures, add webhook connection overrides to adjust timeout and retry behavior for the callback URL.",
    "description": "This warning indicates that a request to the `callbackUrl` configured on your Proxy Service failed. Proxy uses `callbackUrl` to send informational webhooks for new interactions and interaction status changes.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80909,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Inbound Contact Rejected",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nInteraction not completed due to InterceptCallbackUrl.\n\n### Possible causes\n\nA request to InterceptCallbackUrl received 403 and the interaction was aborted/blocked.\n\n### Possible solutions\n\nIf this was unintended, the logic in the InterceptCallbackUrl could be revised. See behavior in the webhooks [documentation](/docs/proxy/api/webhooks).\n",
    "causes": "A request to InterceptCallbackUrl received 403 and the interaction was aborted/blocked.",
    "solutions": "If this was unintended, the logic in the InterceptCallbackUrl could be revised. See behavior in the webhooks [documentation](/docs/proxy/api/webhooks).",
    "description": "Interaction not completed due to InterceptCallbackUrl.",
    "date_created": "2017-12-05T22:32:04Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 80910,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Message To Voice Only Session Rejected",
    "secondary_message": "Example Message: Inbound message to voice-only session rejected.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nThis warning appears when Proxy receives an inbound message for a Session whose `mode` is `voice-only`. Proxy Sessions support `message-only`, `voice-only`, and `voice-and-message`, so Proxy rejects messaging traffic for a voice-only Session.\n\n### Possible causes\n\n- The Session was created with `mode` set to `voice-only`.\n- Your application expected one Session to handle both calls and messages, but the Session was not created with `voice-and-message`.\n- The Proxy numbers available to your Service were selected for voice handling, while your messaging flow still routed an inbound SMS to that Session. Proxy number pools can contain numbers with Voice or SMS capabilities, and in many countries numbers support only one of those capabilities.\n\n### Possible solutions\n\n- Create the Session with `mode` set to `voice-and-message` if participants need to communicate over both voice and messaging.\n- Create the Session with `mode` set to `message-only` if the interaction should support messaging only.\n- Review your Session creation workflow and choose the correct `mode` before traffic begins. The Session create API accepts `mode`, while the Session update API does not expose `mode` as an update parameter.\n- Verify that the Proxy numbers in your pool are SMS-capable if you expect inbound messages. In many countries, you need separate numbers for Voice and SMS.\n\n#### Additional resources\n\n- [Session resource](/docs/proxy/api/session)\n- [Proxy Quickstart for SMS and Voice](/docs/proxy/quickstart)\n- [Phone number management](/docs/proxy/understanding-phone-number-management)\n",
    "causes": "* The Session was created with `mode` set to `voice-only`.\n* Your application expected one Session to handle both calls and messages, but the Session was not created with `voice-and-message`.\n* The Proxy numbers available to your Service were selected for voice handling, while your messaging flow still routed an inbound SMS to that Session. Proxy number pools can contain numbers with Voice or SMS capabilities, and in many countries numbers support only one of those capabilities.",
    "solutions": "* Create the Session with `mode` set to `voice-and-message` if participants need to communicate over both voice and messaging.\n* Create the Session with `mode` set to `message-only` if the interaction should support messaging only.\n* Review your Session creation workflow and choose the correct `mode` before traffic begins. The Session create API accepts `mode`, while the Session update API does not expose `mode` as an update parameter.\n* Verify that the Proxy numbers in your pool are SMS-capable if you expect inbound messages. In many countries, you need separate numbers for Voice and SMS.",
    "description": "This warning appears when Proxy receives an inbound message for a Session whose `mode` is `voice-only`. Proxy Sessions support `message-only`, `voice-only`, and `voice-and-message`, so Proxy rejects messaging traffic for a voice-only Session.",
    "date_created": "2018-03-12T15:28:21Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80911,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Call To Message Only Session Rejected",
    "secondary_message": "Example Message: Inbound call to message-only session rejected.",
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nTwilio returns this warning when an inbound voice call reaches a Proxy Session whose `mode` is `message-only`. Proxy Sessions can use `message-only`, `voice-only`, or `voice-and-message`. A `message-only` session does not accept voice traffic, so Proxy rejects the call.\n\n### Possible causes\n\n- Your application created the Session with `mode` set to `message-only`.\n- An out-of-session callback created the Session in `message-only` mode, and a participant then placed a call to the Proxy number.\n- The Twilio phone number assigned to the Proxy workflow is still routing inbound voice traffic to Proxy through its voice configuration, even though the session is intended for messaging only.\n- The Proxy number pool or workflow was set up for SMS use, but callers are also using the same number for voice.\n\n### Possible solutions\n\n- If participants need to call each other, create the Session with `mode` set to `voice-and-message` or `voice-only`.\n- If you auto-create Sessions from an out-of-session callback, return session data with a voice-capable `mode` when you expect calls.\n- If the workflow should stay SMS-only, update the Twilio phone number's voice configuration so inbound calls go to your own `voice_url` or voice application instead of Proxy.\n- Use Twilio phone numbers with the capabilities required for your workflow. If you need masked calls, make sure the numbers in your Proxy pool support inbound voice.\n\n#### Additional resources\n\n- [Proxy Session resource](/docs/proxy/api/session)\n- [Proxy Quickstart](/docs/proxy/quickstart)\n- [IncomingPhoneNumber resource](/docs/phone-numbers/api/incomingphonenumber-resource)\n",
    "causes": "* Your application created the Session with `mode` set to `message-only`.\n* An out-of-session callback created the Session in `message-only` mode, and a participant then placed a call to the Proxy number.\n* The Twilio phone number assigned to the Proxy workflow is still routing inbound voice traffic to Proxy through its voice configuration, even though the session is intended for messaging only.\n* The Proxy number pool or workflow was set up for SMS use, but callers are also using the same number for voice.",
    "solutions": "* If participants need to call each other, create the Session with `mode` set to `voice-and-message` or `voice-only`.\n* If you auto-create Sessions from an out-of-session callback, return session data with a voice-capable `mode` when you expect calls.\n* If the workflow should stay SMS-only, update the Twilio phone number's voice configuration so inbound calls go to your own `voice_url` or voice application instead of Proxy.\n* Use Twilio phone numbers with the capabilities required for your workflow. If you need masked calls, make sure the numbers in your Proxy pool support inbound voice.",
    "description": "Twilio returns this warning when an inbound voice call reaches a Proxy Session whose `mode` is `message-only`. Proxy Sessions can use `message-only`, `voice-only`, or `voice-and-message`. A `message-only` session does not accept voice traffic, so Proxy rejects the call.",
    "date_created": "2018-03-12T15:29:05Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 80913,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Out-Of-Session Callback Error",
    "secondary_message": null,
    "product": "Proxy",
    "products_used": [
      "proxy"
    ],
    "docs": "\n## Description\n\nCallback to Out-of-Session handler returned a non-success status code.\n\n### Possible causes\n\n- Your Out-of-Session callback URL is invalid.\n\n### Possible solutions\n\n- Verify that your Out-of-Session callback URL is valid and that your server is correctly processing Out-of-Session callbacks from Proxy.\n- For more information, see the [Out-of-session callback guide](/docs/proxy/out-session-callback-response-guide).\n",
    "causes": "* Your Out-of-Session callback URL is invalid.",
    "solutions": "* Verify that your Out-of-Session callback URL is valid and that your server is correctly processing Out-of-Session callbacks from Proxy.\n* For more information, see the [Out-of-session callback guide](/docs/proxy/out-session-callback-response-guide).",
    "description": "Callback to Out-of-Session handler returned a non-success status code.",
    "date_created": "2019-06-17T17:49:15Z",
    "last_updated": "2026-07-14T08:30:02-04:00"
  },
  {
    "code": 81000,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "The Execution has exceeded max steps allowed for a flow",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThis limitation is enforced to prevent infinite loops. Please try to design your flows such that they terminate.\n\n### Possible causes\n\n- You have too many steps in your flow.\n\n### Possible solutions\n\n- Reduce the number of steps in your flow.\n",
    "causes": "* You have too many steps in your flow.",
    "solutions": "* Reduce the number of steps in your flow.",
    "description": "This limitation is enforced to prevent infinite loops. Please try to design your flows such that they terminate.",
    "date_created": "2018-06-26T23:13:46Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81001,
    "log_level": "WARNING",
    "log_type": null,
    "message": "The Widget has exceeded max steps in a loop",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThis limitation is enforced to prevent infinite loops. Please try to design your flows such that they terminate.\n\n### Possible causes\n\n- You have a single widget looping back on itself too many times.\n\n### Possible solutions\n\n- Remove the single widget loop.\n",
    "causes": "* You have a single widget looping back on itself too many times.",
    "solutions": "* Remove the single widget loop.",
    "description": "This limitation is enforced to prevent infinite loops. Please try to design your flows such that they terminate.",
    "date_created": "2018-06-26T23:14:02Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81002,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Unexpected event while processing Widget",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nAn unexpected event was received while processing a widget. Studio ignored this event and did not transition to another widget because there was no matching transition available to handle the event.\n\n*Note:* If the Execution ended correctly, this warning can be ignored.\n\n### Possible causes\n\n- A new call, message, or REST API Execution was initiated for a contact address (e.g. phone number) that already has an active Execution.\n- An event came in while processing a widget that cannot handle that event (e.g. incoming message received during Run Function widget).\n- A hangup for a phone call was detected while processing a widget that does not have a \"Hangup\" transition (e.g. HTTP Request or Send Message).\n- There was no transition that matched the received event.\n\n### Possible solutions\n\n- Incoming Calls only: Enable [Concurrent Calls](/docs/studio/user-guide#handling-concurrent-calls-from-the-same-number-in-studio) in the Flow's Trigger widget.\n- REST API-triggered Executions: Use [Studio REST API v2](/docs/studio/rest-api/v2/execution#create-a-new-execution) to create Executions and end any that are still active for the same contact.\n- Return results for Function calls and HTTP requests quickly.\n- End any [stuck Executions](https://support.twilio.com/hc/en-us/articles/360019383714-Understanding-and-Avoiding-Stuck-Executions-in-Twilio-Studio) via Twilio Console.\n",
    "causes": "* A new call, message, or REST API Execution was initiated for a contact address (e.g. phone number) that already has an active Execution.\n* An event came in while processing a widget that cannot handle that event (e.g. incoming message received during Run Function widget).\n* A hangup for a phone call was detected while processing a widget that does not have a \"Hangup\" transition (e.g. HTTP Request or Send Message).\n* There was no transition that matched the received event.",
    "solutions": "* Incoming Calls only: Enable [Concurrent Calls](/docs/studio/user-guide#handling-concurrent-calls-from-the-same-number-in-studio) in the Flow's Trigger widget.\n* REST API-triggered Executions: Use [Studio REST API v2](/docs/studio/rest-api/v2/execution#create-a-new-execution) to create Executions and end any that are still active for the same contact.\n* Return results for Function calls and HTTP requests quickly.\n* End any [stuck Executions](https://support.twilio.com/hc/en-us/articles/360019383714-Understanding-and-Avoiding-Stuck-Executions-in-Twilio-Studio) via Twilio Console.",
    "description": "An unexpected event was received while processing a widget. Studio ignored this event and did not transition to another widget because there was no matching transition available to handle the event. *Note:* If the Execution ended correctly, this warning can be ignored.",
    "date_created": "2018-06-26T23:14:17Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81004,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to add member to Chat Channel",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio was unable to add a member to the Chat Channel while executing the Flow\n\n### Possible causes\n\n- The request to the Chat API failed.\n- Invalid values were passed to the Chat API.\n\n### Possible solutions\n\n- Check the Widget configuration. Are all fields filled out correctly?\n",
    "causes": "* The request to the Chat API failed.\n* Invalid values were passed to the Chat API.",
    "solutions": "* Check the Widget configuration. Are all fields filled out correctly?",
    "description": "Studio was unable to add a member to the Chat Channel while executing the Flow",
    "date_created": "2018-06-26T23:14:37Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81005,
    "log_level": "WARNING",
    "log_type": null,
    "message": "Failed to transition because no match was found",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio was unable to transition to the next widget because no matching transition was found in the Split widget.\n\n### Possible causes\n\n- Missing values in the match field.\n- Match field is in the wrong format.\n- Regular expression is too restrictive.\n\n### Possible solutions\n\n- Check the values that you're matching against in the Split widget.\n",
    "causes": "* Missing values in the match field.\n* Match field is in the wrong format.\n* Regular expression is too restrictive.",
    "solutions": "* Check the values that you're matching against in the Split widget.",
    "description": "Studio was unable to transition to the next widget because no matching transition was found in the Split widget.",
    "date_created": "2018-06-26T23:14:59Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81006,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to create Chat Channel",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio was unable to create the Chat Channel while executing the Flow\n\n### Possible causes\n\n- The request to the Chat API failed.\n- Invalid values were passed to the Chat API.\n\n### Possible solutions\n\n- Check the Widget configuration. Are all fields filled out correctly?\n",
    "causes": "* The request to the Chat API failed.\n* Invalid values were passed to the Chat API.",
    "solutions": "* Check the Widget configuration. Are all fields filled out correctly?",
    "description": "Studio was unable to create the Chat Channel while executing the Flow",
    "date_created": "2018-06-26T23:15:14Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81007,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Connecting to a Call timed out",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio timed out while executing the Connect Caller widget in the Flow.\n\n### Possible causes\n\n- The call could not be completed before the end of the timeout period.\n\n### Possible solutions\n\n- Check the Widget configuration. Are all fields filled out correctly?\n",
    "causes": "* The call could not be completed before the end of the timeout period.",
    "solutions": "* Check the Widget configuration. Are all fields filled out correctly?",
    "description": "Studio timed out while executing the Connect Caller widget in the Flow.",
    "date_created": "2018-06-26T23:15:34Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81008,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to connect to outgoing Call",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio was unable to connect a call while processing the Outgoing Call widget.\n\n### Possible causes\n\n- The request to the Voice API failed.\n- Invalid values were passed to the Voice API.\n\n### Possible solutions\n\n- Check the Widget configuration. Are all fields filled out correctly?\n",
    "causes": "* The request to the Voice API failed.\n* Invalid values were passed to the Voice API.",
    "solutions": "* Check the Widget configuration. Are all fields filled out correctly?",
    "description": "Studio was unable to connect a call while processing the Outgoing Call widget.",
    "date_created": "2018-06-26T23:15:49Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81009,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Timed out enqueueing Call",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio timed out while executing the Enqueue Call widget in the Flow.\n\n### Possible causes\n\n- The request to the Taskrouter API failed.\n- Invalid values were passed to the Taskrouter API.\n\n### Possible solutions\n\n- Check the Widget configuration. Are all fields filled out correctly?\n",
    "causes": "* The request to the Taskrouter API failed.\n* Invalid values were passed to the Taskrouter API.",
    "solutions": "* Check the Widget configuration. Are all fields filled out correctly?",
    "description": "Studio timed out while executing the Enqueue Call widget in the Flow.",
    "date_created": "2018-06-26T23:16:03Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81010,
    "log_level": "ERROR",
    "log_type": null,
    "message": "There was an internal error while processing a Function",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio could not invoke the Function service.\n\n### Possible causes\n\n- The Function returned a 4xx or 5xx status code\n- The Function timed out or did not include `callback()`\n- There may be an issue with Twilio Function Service\n\n### Possible solutions\n\n- Verify your Function calls `callback()` to avoid timeouts\n- Check your Function logs for runtime errors\n- Ensure you're returning the correct status code\n",
    "causes": "* The Function returned a 4xx or 5xx status code\n* The Function timed out or did not include `callback()`\n* There may be an issue with Twilio Function Service",
    "solutions": "* Verify your Function calls `callback()` to avoid timeouts\n* Check your Function logs for runtime errors\n* Ensure you're returning the correct status code",
    "description": "Studio could not invoke the Function service.",
    "date_created": "2018-06-26T23:16:30Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81011,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to send Message",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio was unable to send a Message. This is usually due to incorrect setup of a Message Widget.\n\n### Possible causes\n\n- You have an invalid number.\n- You are missing a message body.\n- You are missing a Media URL\n\n### Possible solutions\n\n- Ensure the message number is valid.\n- Ensure you have set a correct message body in the Widget.\n- Ensure you have setup a Media URL.\n",
    "causes": "* You have an invalid number.\n* You are missing a message body.\n* You are missing a Media URL",
    "solutions": "* Ensure the message number is valid.\n* Ensure you have set a correct message body in the Widget.\n* Ensure you have setup a Media URL.",
    "description": "Studio was unable to send a Message. This is usually due to incorrect setup of a Message Widget.",
    "date_created": "2018-06-26T23:16:46Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81012,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to update Sync service",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio was unable to update the Sync Service while executing the Flow\n\n### Possible causes\n\n- The request to the Sync API failed.\n- Invalid values were passed to the Sync API.\n\n### Possible solutions\n\n- Check the Widget configuration. Are all fields filled out correctly?\n",
    "causes": "* The request to the Sync API failed.\n* Invalid values were passed to the Sync API.",
    "solutions": "* Check the Widget configuration. Are all fields filled out correctly?",
    "description": "Studio was unable to update the Sync Service while executing the Flow",
    "date_created": "2018-06-26T23:17:01Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81013,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to invoke Understand API",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nStudio was unable to invoke the Understand API while executing the Flow\n\n### Possible causes\n\n- The request to the Understand API failed.\n- Invalid values were passed to the Understand API.\n\n### Possible solutions\n\n- Check the Widget configuration. Are all fields filled out correctly?\n",
    "causes": "* The request to the Understand API failed.\n* Invalid values were passed to the Understand API.",
    "solutions": "* Check the Widget configuration. Are all fields filled out correctly?",
    "description": "Studio was unable to invoke the Understand API while executing the Flow",
    "date_created": "2018-06-26T23:17:15Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81014,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "There was an internal error while processing an HTTP request",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nAn internal error occurred while Studio was executing an HTTP Request widget.\n\n### Possible causes\n\n- Parameter name uses a reserved word, e.g. \"method\"\n- URL was set to a Liquid variable that did not evaluate to a valid URL at runtime\n- A transient internal error occurred\n\n### Possible solutions\n\n- Remove reserved words from the parameter names, e.g. \"method\"\n- Check Flow logs to ensure a valid URL is being used in Liquid variables\n- Retry the request\n- Check [Twilio Status](https://status.twilio.com/)\n- Contact [Twilio Support](https://www.twilio.com/help/contact)\n",
    "causes": "* Parameter name uses a reserved word, e.g. \"method\"\n* URL was set to a Liquid variable that did not evaluate to a valid URL at runtime\n* A transient internal error occurred",
    "solutions": "* Remove reserved words from the parameter names, e.g. \"method\"\n* Check Flow logs to ensure a valid URL is being used in Liquid variables\n* Retry the request\n* Check [Twilio Status](https://status.twilio.com/)\n* Contact [Twilio Support](https://www.twilio.com/help/contact)",
    "description": "An internal error occurred while Studio was executing an HTTP Request widget.",
    "date_created": "2018-06-26T23:17:30Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81015,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Failed to Create Task",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nAn error occurred when Studio attempted to create task.\n\n### Possible causes\n\n- Required values are missing from the widget.\n- Values are not correctly formatted (e.g. Attributes)\n\n### Possible solutions\n\n- Check the Widget configuration. Are all fields filled out correctly?\n",
    "causes": "* Required values are missing from the widget.\n* Values are not correctly formatted (e.g. Attributes)",
    "solutions": "* Check the Widget configuration. Are all fields filled out correctly?",
    "description": "An error occurred when Studio attempted to create task.",
    "date_created": "2018-08-20T23:43:15Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81016,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Outbound HTTP Request Failed",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThe outgoing HTTP request from a Studio widget failed.\n\n### Possible causes\n\n- The URL you are requesting is incorrect\n- The response is badly formed\n- The URL returned a 4xx or 5xx error code\n\n### Possible solutions\n\n- Make sure the request results in a response code 2xx or 3xx\n",
    "causes": "* The URL you are requesting is incorrect\n* The response is badly formed\n* The URL returned a 4xx or 5xx error code",
    "solutions": "* Make sure the request results in a response code 2xx or 3xx",
    "description": "The outgoing HTTP request from a Studio widget failed.",
    "date_created": "2018-09-19T18:47:42Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81017,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Error in Twilio Function Response",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThere was an error in the response back from a Twilio Function attached to the Studio flow.\n\n### Possible causes\n\n- Your Function timed out before responding\n- Your Function returned an error response\n\n### Possible solutions\n\n- Your Function must contain a callback.\n- Make sure you place the Function callback `callback(err, response)` is placed correctly in your Function code.\n- If you are using a JavaScript promise, make sure the callback is called in both success and catch blocks.\n- Your Function responded with an error.\n",
    "causes": "* Your Function timed out before responding\n* Your Function returned an error response",
    "solutions": "* Your Function must contain a callback.\n* Make sure you place the Function callback `callback(err, response)` is placed correctly in your Function code.\n* If you are using a JavaScript promise, make sure the callback is called in both success and catch blocks.\n* Your Function responded with an error.",
    "description": "There was an error in the response back from a Twilio Function attached to the Studio flow.",
    "date_created": "2018-09-19T18:48:09Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81018,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Template evaluation error in Studio widget",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nAn error occurred when Studio tried to evaluate your template syntax.\n\n### Possible causes\n\n- The syntax used in your widget caused an error\n- An array index referenced in your widget didn't exist at execution time\n- Your Liquid curly braces are mismatched\n- You used a `+` character in your template\n- You have improperly assigned a variable\n- You used a non-ASCII character in a variable name\n- A tag or filter used in your template does not exist\n\n### Possible solutions\n\n- Check the syntax used in your widget (See Liquid docs [here](/docs/studio/user-guide/liquid-template-language))\n- Verify the runtime data of your flow execution by checking the Flow Data and inspecting any variables you may have referenced\n- Verify that your Liquid curly braces are matched\n- Verify that all tags and filters used in your template are correct (The list of available filters is [here](/docs/studio/user-guide/liquid-template-language#standard-filters))\n- Use only ASCII characters in variable names\n",
    "causes": "* The syntax used in your widget caused an error\n* An array index referenced in your widget didn't exist at execution time\n* Your Liquid curly braces are mismatched\n* You used a `+` character in your template\n* You have improperly assigned a variable\n* You used a non-ASCII character in a variable name\n* A tag or filter used in your template does not exist",
    "solutions": "* Check the syntax used in your widget (See Liquid docs [here](/docs/studio/user-guide/liquid-template-language))\n* Verify the runtime data of your flow execution by checking the Flow Data and inspecting any variables you may have referenced\n* Verify that your Liquid curly braces are matched\n* Verify that all tags and filters used in your template are correct (The list of available filters is [here](/docs/studio/user-guide/liquid-template-language#standard-filters))\n* Use only ASCII characters in variable names",
    "description": "An error occurred when Studio tried to evaluate your template syntax.",
    "date_created": "2018-10-03T17:41:08Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81019,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Twilio phone number using deprecated API version",
    "secondary_message": "Studio does not support 2008-08-01 API",
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThe Twilio phone number connected to your Studio Flow is configured for the deprecated 2008-08-01 API, which is not compatible. Update the phone number API version to 2010-04-01.\n\n### Possible causes\n\nThe Twilio phone number is configured for the 2008-08-01 API\n\n### Possible solutions\n\nUpdate the phone number API version to 2010-04-01\n",
    "causes": "The Twilio phone number is configured for the 2008-08-01 API",
    "solutions": "Update the phone number API version to 2010-04-01",
    "description": "The Twilio phone number connected to your Studio Flow is configured for the deprecated 2008-08-01 API, which is not compatible. Update the phone number API version to 2010-04-01.",
    "date_created": "2019-06-17T17:28:02Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81020,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Unsupported Trigger Type",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nAn error occurred when Studio tried to run a widget that is not supported for the trigger type.\n\n### Possible causes\n\n- Flow was triggered by an incoming event that isn't supported for this widget\n\n### Possible solutions\n\n- Flow should be updated to use only the supported trigger types for this widget\n- For Send To Flex widget, only incoming call and incoming chat are supported\n",
    "causes": "* Flow was triggered by an incoming event that isn't supported for this widget",
    "solutions": "* Flow should be updated to use only the supported trigger types for this widget\n* For Send To Flex widget, only incoming call and incoming chat are supported",
    "description": "An error occurred when Studio tried to run a widget that is not supported for the trigger type.",
    "date_created": "2019-11-05T18:40:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Flow revision must be an integer or enum(LatestPublished, LatestRevision)",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThe Revision was invalid. Revision must be an integer or enum(LatestPublished, LatestRevision).\n\n### Possible causes\n\n- Revision did not match a valid option\n\n### Possible solutions\n\n- Check the value and ensure it is either an integer or one of the magic identifiers: LatestPublished or LatestRevision\n",
    "causes": "* Revision did not match a valid option",
    "solutions": "* Check the value and ensure it is either an integer or one of the magic identifiers: LatestPublished or LatestRevision",
    "description": "The Revision was invalid. Revision must be an integer or enum(LatestPublished, LatestRevision).",
    "date_created": "2020-02-21T17:50:10Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81022,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Flow definition validation failed",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThe Flow Definition is invalid. Check the error response details for an array of validation failures.\n\n### Possible causes\n\n- Definition contains properties that do not match the schema\n- Widget names are not unique\n- Transition references a widget that doesn't exist\n\n### Possible solutions\n\n- Verify the definition adheres to the JSON schema\n- Ensure widget names are all unique\n- Remove transitions that reference widgets that don't exist\n",
    "causes": "* Definition contains properties that do not match the schema\n* Widget names are not unique\n* Transition references a widget that doesn't exist",
    "solutions": "* Verify the definition adheres to the JSON schema\n* Ensure widget names are all unique\n* Remove transitions that reference widgets that don't exist",
    "description": "The Flow Definition is invalid. Check the error response details for an array of validation failures.",
    "date_created": "2020-02-21T17:44:17Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Creating an Execution via REST API failed due to malformed contact parameters",
    "secondary_message": "When creating a flow execution via the REST API, the To and From parameters may not collectively exceed 300 bytes.",
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThe Create Execution endpoint was called with To and/or From parameters that could not be processed.\n\n### Possible causes\n\n- Collectively, the To and From parameters exceeded 300 bytes.\n\n### Possible solutions\n\nDouble-check the provided To and From parameters for syntax errors.\n",
    "causes": "* Collectively, the To and From parameters exceeded 300 bytes.",
    "solutions": "Double-check the provided To and From parameters for syntax errors.",
    "description": "The Create Execution endpoint was called with To and/or From parameters that could not be processed.",
    "date_created": "2020-05-08T22:34:21Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81024,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Subflow Error",
    "secondary_message": "Subflow could not be executed",
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nSubflow could not be executed\n\n### Possible causes\n\n- Subflow definition does not exist\n- Subflow is trying to invoke another Subflow\n\n### Possible solutions\n\n- Ensure Subflow exists\n- Remove Subflow widget from Subflow definition\n",
    "causes": "* Subflow definition does not exist\n* Subflow is trying to invoke another Subflow",
    "solutions": "* Ensure Subflow exists\n* Remove Subflow widget from Subflow definition",
    "description": "Subflow could not be executed",
    "date_created": "2020-05-21T18:54:28Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81025,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Studio Flow exceeds maximum allowed widgets",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThe cumulative number of widgets in your Studio Flow and all its linked Subflows exceeds the maximum allowed widget count of 2,000. You must reduce the number of widgets to 2,000 or fewer to prevent future Executions from failing.\n\n### Possible causes\n\n- Too many widgets in your Subflows\n- Subflows reused too many times in a parent Flow\n\n### Possible solutions\n\n- Reduce the number of widgets in your Subflows\n",
    "causes": "* Too many widgets in your Subflows\n* Subflows reused too many times in a parent Flow",
    "solutions": "* Reduce the number of widgets in your Subflows",
    "description": "The cumulative number of widgets in your Studio Flow and all its linked Subflows exceeds the maximum allowed widget count of 2,000. You must reduce the number of widgets to 2,000 or fewer to prevent future Executions from failing.",
    "date_created": "2021-08-19T22:20:18Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81026,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Studio Execution failed because Flow exceeds maximum allowed widgets",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThe Execution failed because the cumulative number of widgets in your Studio Flow and all its linked Subflows exceeds the maximum allowed widget count of 2,000. All Executions for this Flow will fail until you reduce the number of widgets to 2,000 or fewer.\n\n### Possible causes\n\n- Too many widgets in your Subflows\n- Subflows reused too many times in a parent Flow\n\n### Possible solutions\n\n- Reduce the number of widgets in your Subflows\n",
    "causes": "* Too many widgets in your Subflows\n* Subflows reused too many times in a parent Flow",
    "solutions": "* Reduce the number of widgets in your Subflows",
    "description": "The Execution failed because the cumulative number of widgets in your Studio Flow and all its linked Subflows exceeds the maximum allowed widget count of 2,000. All Executions for this Flow will fail until you reduce the number of widgets to 2,000 or fewer.",
    "date_created": "2021-08-19T22:22:22Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81027,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Error parsing type in Studio widget",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nAn error occurred when Studio attempted to parse a type in a widget\n\n### Possible causes\n\n- Tried to convert a variable to an incompatible type (e.g. \"foo\" to JSON Object type)\n- The provided JSON string is not valid\n\n### Possible solutions\n\n- Verify the runtime data of your flow execution by checking the Flow Data and inspecting any variables you may have referenced\n- Ensure that the configured type matches the variable data.\n",
    "causes": "* Tried to convert a variable to an incompatible type (e.g. \"foo\" to JSON Object type)\n* The provided JSON string is not valid",
    "solutions": "* Verify the runtime data of your flow execution by checking the Flow Data and inspecting any variables you may have referenced\n* Ensure that the configured type matches the variable data.",
    "description": "An error occurred when Studio attempted to parse a type in a widget",
    "date_created": "2024-05-28T18:58:37Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 81028,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Invalid wait URL in Studio widget",
    "secondary_message": null,
    "product": "Studio",
    "products_used": [
      "studio"
    ],
    "docs": "\n## Description\n\nThe wait URL configured in an Enqueue Call or Send To Flex widget wasn't a valid absolute URL after Liquid template interpolation. The wait URL has been omitted from the Enqueue TwiML, and the call will proceed with the default hold music.\n\n### Possible causes\n\n- The wait URL contains Liquid template variables that resolved to an invalid absolute URL at execution time.\n- The wait URL is a relative path (for example, `hold-music.mp3` or `/hold-music.mp3`) instead of a fully qualified URL.\n- The wait URL contains invalid characters such as spaces or unencoded special characters.\n\n### Possible solutions\n\n- Ensure the wait URL is a fully qualified absolute URL including the protocol (for example, `https://example.com/hold-music.mp3`).\n- Verify the runtime data of your flow execution by checking the Flow Data and inspecting any variables referenced in the wait URL.\n- Check the [Liquid template syntax](/docs/studio/user-guide/liquid-template-language) used in the wait URL field.\n- Ensure that all query parameters in the wait URL are properly URL-encoded. If you are using Liquid to construct the URL, you can use the `url_encode` filter to encode any dynamic values. For example: `https://example.com/hold-music.mp3?caller={{contact.channel.address | url_encode}}`.\n",
    "causes": "* The wait URL contains Liquid template variables that resolved to an invalid absolute URL at execution time.\n* The wait URL is a relative path (for example, `hold-music.mp3` or `/hold-music.mp3`) instead of a fully qualified URL.\n* The wait URL contains invalid characters such as spaces or unencoded special characters.",
    "solutions": "* Ensure the wait URL is a fully qualified absolute URL including the protocol (for example, `https://example.com/hold-music.mp3`).\n* Verify the runtime data of your flow execution by checking the Flow Data and inspecting any variables referenced in the wait URL.\n* Check the [Liquid template syntax](/docs/studio/user-guide/liquid-template-language) used in the wait URL field.\n* Ensure that all query parameters in the wait URL are properly URL-encoded. If you are using Liquid to construct the URL, you can use the `url_encode` filter to encode any dynamic values. For example: `https://example.com/hold-music.mp3?caller={{contact.channel.address | url_encode}}`.",
    "description": "The wait URL configured in an Enqueue Call or Send To Flex widget wasn't a valid absolute URL after Liquid template interpolation. The wait URL has been omitted from the Enqueue TwiML, and the call will proceed with the default hold music.",
    "date_created": "2026-03-05T08:52:00-06:00",
    "last_updated": "2026-03-13T18:33:32-04:00"
  },
  {
    "code": 82001,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Function invocation resulted in StatusCode 4xx",
    "secondary_message": null,
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nYour Function invocation returned a 4xx StatusCode.\n\n### Possible causes\n\n- Function route does not exist.\n- Function is set to Private and invocation request is not signed.\n\n### Possible solutions\n\n- Check the Function route you are invoking exists.\n- Check whether the Function's *Access Control* is set to Private and whether you intended to have it set as so. If it is Private, then your request must be properly signed.\n",
    "causes": "* Function route does not exist.\n* Function is set to Private and invocation request is not signed.",
    "solutions": "* Check the Function route you are invoking exists.\n* Check whether the Function's *Access Control* is set to Private and whether you intended to have it set as so. If it is Private, then your request must be properly signed.",
    "description": "Your Function invocation returned a 4xx StatusCode.",
    "date_created": "2018-09-12T03:00:55Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 82002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Error on Twilio Function response",
    "secondary_message": null,
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nYour Function invocation resulted in StatusCode 5xx.\n\n### Possible causes\n\n- Your Function timed out before responding.\n- Your Function returned an error response.\n\n### Possible solutions\n\n- Your Function must contain a callback.\n- Make sure you place the Function callback `callback(err, response)` is placed correctly in your Function code.\n- If you are using a JavaScript promise, make sure the callback is called in both success and catch blocks.\n- Your Function responded with an error.\n",
    "causes": "* Your Function timed out before responding.\n* Your Function returned an error response.",
    "solutions": "* Your Function must contain a callback.\n* Make sure you place the Function callback `callback(err, response)` is placed correctly in your Function code.\n* If you are using a JavaScript promise, make sure the callback is called in both success and catch blocks.\n* Your Function responded with an error.",
    "description": "Your Function invocation resulted in StatusCode 5xx.",
    "date_created": "2018-09-12T03:00:29Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 82003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deployment Installation Failure",
    "secondary_message": null,
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nYour latest Functions and Private Assets failed to be deployed.\n\n### Possible causes\n\n- NPM registry is degraded.\n- Your Service instance is trying to install a package that requires a gcc compiler.\n- Your Service instance resulted in out of space error due to large packages.\n\n### Possible solutions\n\n- Retry deployment after sometime.\n",
    "causes": "* NPM registry is degraded.\n* Your Service instance is trying to install a package that requires a gcc compiler.\n* Your Service instance resulted in out of space error due to large packages.",
    "solutions": "* Retry deployment after sometime.",
    "description": "Your latest Functions and Private Assets failed to be deployed.",
    "date_created": "2018-09-21T17:11:37Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 82004,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Function execution resulted in a warning log",
    "secondary_message": null,
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nThis warning appears when your Function logs a warning-level message during execution, such as with `console.warn()`. Warning and error logs are available through Serverless logs and also appear in Debugger.\n\n### Possible causes\n\n- Your Function code calls `console.warn()` during execution.\n- A request or event reaches a code path in your Function that writes a warning message.\n\n### Possible solutions\n\n- Review the warning message shown with the execution to identify which part of your Function logged the warning.\n- Enable live logs in the Console while you test your Function so you can see `console` output in real time.\n- Retrieve the warning from Serverless logs by using the Logs resource or the CLI. You can list logs with `twilio api:serverless:v1:services:environments:logs:list` or tail logs with `twilio serverless:logs --tail`.\n\n#### Additional resources\n\n- [Debug your Function(s)](/docs/serverless/functions-assets/functions/debugging)\n- [Logs](/docs/serverless/api/resource/logs)\n- [Function Execution](/docs/serverless/functions-assets/functions/invocation)\n",
    "causes": "* Your Function code calls `console.warn()` during execution.\n* A request or event reaches a code path in your Function that writes a warning message.",
    "solutions": "* Review the warning message shown with the execution to identify which part of your Function logged the warning.\n* Enable live logs in the Console while you test your Function so you can see `console` output in real time.\n* Retrieve the warning from Serverless logs by using the Logs resource or the CLI. You can list logs with `twilio api:serverless:v1:services:environments:logs:list` or tail logs with `twilio serverless:logs --tail`.",
    "description": "This warning appears when your Function logs a warning-level message during execution, such as with `console.warn()`. Warning and error logs are available through Serverless logs and also appear in Debugger.",
    "date_created": "2020-02-12T02:43:54Z",
    "last_updated": "2026-04-16T22:35:24+01:00"
  },
  {
    "code": 82005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Function execution resulted in an error log",
    "secondary_message": null,
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nThis error appears when your Twilio Function writes an error-level log during execution. In Functions, calling `console.error()` creates an error log entry. Twilio also surfaces `WARN` and `ERROR` log lines in the Debugger, which helps you trace the code path and message that triggered the event.\n\n### Possible causes\n\n- Your Function code called `console.error()`.\n- A conditional branch in your handler logged an application failure with `console.error()`.\n- An exception handler caught an error and wrote the details to `console.error()`.\n- Your Function emitted an error-level log while processing a request, even if the Function still returned a response.\n\n### Possible solutions\n\n- Review the highlighted log message to identify the exact code path that called `console.error()`.\n- Open your Function's live logs in Console or retrieve logs from the `/Logs` resource to inspect the full invocation output.\n- Use `twilio serverless:logs --tail` while testing so you can see error logs as your deployed Function runs.\n- Update your Function to handle expected conditions before they reach an error path.\n- Reserve `console.error()` for actual failures. Use `console.warn()` or `console.log()` for non-fatal diagnostic output when appropriate.\n- Redeploy your Function and test again to confirm the invocation no longer emits an error-level log.\n\n#### Additional resources\n\n- [Debug your Function(s)](/docs/serverless/functions-assets/functions/debugging)\n- [Logs resource](/docs/serverless/api/resource/logs)\n- [Function Execution](/docs/serverless/functions-assets/functions/invocation)\n",
    "causes": "* Your Function code called `console.error()`.\n* A conditional branch in your handler logged an application failure with `console.error()`.\n* An exception handler caught an error and wrote the details to `console.error()`.\n* Your Function emitted an error-level log while processing a request, even if the Function still returned a response.",
    "solutions": "* Review the highlighted log message to identify the exact code path that called `console.error()`.\n* Open your Function's live logs in Console or retrieve logs from the `/Logs` resource to inspect the full invocation output.\n* Use `twilio serverless:logs --tail` while testing so you can see error logs as your deployed Function runs.\n* Update your Function to handle expected conditions before they reach an error path.\n* Reserve `console.error()` for actual failures. Use `console.warn()` or `console.log()` for non-fatal diagnostic output when appropriate.\n* Redeploy your Function and test again to confirm the invocation no longer emits an error-level log.",
    "description": "This error appears when your Twilio Function writes an error-level log during execution. In Functions, calling `console.error()` creates an error log entry. Twilio also surfaces `WARN` and `ERROR` log lines in the Debugger, which helps you trace the code path and message that triggered the event.",
    "date_created": "2020-02-12T02:50:37Z",
    "last_updated": "2026-06-08T12:29:20+01:00"
  },
  {
    "code": 82006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Environment Context too large",
    "secondary_message": null,
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nContext of the function has exceeded maximum limit. Reduce the context size and try again.\n\n### Possible causes\n\nContext size consists of account metadata, domain name, path and Environment variables stored as a JSON string. If this string exceeds 3KB, invocations may fail.\n\n### Possible solutions\n\nTry reducing number of Environment Variables or size of the Environment Variables stored.\n",
    "causes": "Context size consists of account metadata, domain name, path and Environment variables stored as a JSON string. If this string exceeds 3KB, invocations may fail.",
    "solutions": "Try reducing number of Environment Variables or size of the Environment Variables stored.",
    "description": "Context of the function has exceeded maximum limit. Reduce the context size and try again.",
    "date_created": "2020-09-11T14:48:34Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 82007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported Runtime",
    "secondary_message": null,
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nThe runtime used in the Serverless Build request is not supported on the platform. A runtime defines the environment your Functions will be executed in (e.g. which Node.js version to use for your Functions).\n\n### Possible causes\n\n- A Serverless Build request was made without providing the runtime and the runtime used for the last successful build in the service (e.g. a Node.js version that is no longer supported on the platform).\n- A Serverless Build request was made with a specified runtime (e.g. node10) that is currently not supported on the platform.\n\n### Possible solutions\n\n- Determine what [runtime versions are currently available](/docs/serverless/functions-assets/faq#which-runtimes-are-available-for-twilio-functions).\n- Migrate to a new valid Node.js version by following our migration guide: [https://www.twilio.com/docs/serverless/functions-assets/node-upgrade](/docs/serverless/functions-assets/node-upgrade)\n- When using the Serverless API pass a dedicated valid runtime version when creating a new Build: [https://www.twilio.com/docs/serverless/api/resource/build](/docs/serverless/api/resource/build)\n",
    "causes": "* A Serverless Build request was made without providing the runtime and the runtime used for the last successful build in the service (e.g. a Node.js version that is no longer supported on the platform).\n* A Serverless Build request was made with a specified runtime (e.g. node10) that is currently not supported on the platform.",
    "solutions": "* Determine what [runtime versions are currently available](/docs/serverless/functions-assets/faq#which-runtimes-are-available-for-twilio-functions).\n* Migrate to a new valid Node.js version by following our migration guide: [https://www.twilio.com/docs/serverless/functions-assets/node-upgrade](/docs/serverless/functions-assets/node-upgrade)\n* When using the Serverless API pass a dedicated valid runtime version when creating a new Build: [https://www.twilio.com/docs/serverless/api/resource/build](/docs/serverless/api/resource/build)",
    "description": "The runtime used in the Serverless Build request is not supported on the platform. A runtime defines the environment your Functions will be executed in (e.g. which Node.js version to use for your Functions).",
    "date_created": "2021-05-06T23:15:01Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 82008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Headers or cookies too large",
    "secondary_message": "Request or response headers/cookies size is greater than the limits",
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nThis error is thrown when request or response headers are greater than the enforced limits.\n\n### Possible causes\n\n1. The user has passed request/response headers larger than 4kb.\n2. Request/response has more than 75 headers+cookies.\n\n### Possible solutions\n\n1. Pass cookies and headers less than 4kb. Set cookies less than 4kb in the response.\n2. Send less than 75 headers. Set less than 75 headers/cookies in the response.\n",
    "causes": "1. The user has passed request/response headers larger than 4kb.\n2. Request/response has more than 75 headers+cookies.",
    "solutions": "1. Pass cookies and headers less than 4kb. Set cookies less than 4kb in the response.\n2. Send less than 75 headers. Set less than 75 headers/cookies in the response.",
    "description": "This error is thrown when request or response headers are greater than the enforced limits.",
    "date_created": "2021-08-11T17:44:58Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 82009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Multi-valued headers not supported",
    "secondary_message": null,
    "product": "Functions",
    "products_used": [
      "serverless"
    ],
    "docs": "\n## Description\n\nTwilio was unable to process the correct response to your Function invocation because your version of Functions is incompatible with multi-valued HTTP response headers.\n\n### Possible causes\n\nA Function invocation has resulted in a Twilio Response with multi-valued headers (i.e. the header value is an array). Multi-valued headers are not supported in Classic Functions, or in @twilio/runtime-handler dependency versions below 1.2.0.\n\n### Possible solutions\n\nUse the new Functions/Assets UI or Serverless API, and upgrade your @twilio/runtime-handler dependency version to 1.2.0 or higher. Please refer to [this](/docs/serverless/functions-assets/handler) for more information about the Runtime Handler, how to upgrade the version, and the currently available versions. For Classic Functions, or incompatible Runtime Handler versions, only String-valued headers are permitted.\n",
    "causes": "A Function invocation has resulted in a Twilio Response with multi-valued headers (i.e. the header value is an array). Multi-valued headers are not supported in Classic Functions, or in @twilio/runtime-handler dependency versions below 1.2.0.",
    "solutions": "Use the new Functions/Assets UI or Serverless API, and upgrade your @twilio/runtime-handler dependency version to 1.2.0 or higher. Please refer to [this](/docs/serverless/functions-assets/handler) for more information about the Runtime Handler, how to upgrade the version, and the currently available versions. For Classic Functions, or incompatible Runtime Handler versions, only String-valued headers are permitted.",
    "description": "Twilio was unable to process the correct response to your Function invocation because your version of Functions is incompatible with multi-valued HTTP response headers.",
    "date_created": "2022-01-27T00:50:47Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83000,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Super SIM registration failed due to Internal Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Super SIM registration request has caused an internal error that is not further specified.\n\n### Possible causes\n\nAn unspecified error occurred while registering your Super SIM.\n\n### Possible solutions\n\n- Retry to register your Super SIM.\n- If this is a continuous experience, please contact Twilio Support.\n",
    "causes": "An unspecified error occurred while registering your Super SIM.",
    "solutions": "* Retry to register your Super SIM.\n* If this is a continuous experience, please contact Twilio Support.",
    "description": "Your Super SIM registration request has caused an internal error that is not further specified.",
    "date_created": "2021-03-21T23:58:07Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Parameter missing while registering a Super SIM",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRaised whenever a required parameter was not passed with the request while registering a Super SIM. The error object's detail field will indicate which parameter was not provided.\n\n### Possible causes\n\nEither you did not provide the Super SIM's ICCID or Registration Code in the request.\n\n### Possible solutions\n\nEnsure both the ICCID and Registration Code are provided in the request while registering a Super SIM.\n",
    "causes": "Either you did not provide the Super SIM's ICCID or Registration Code in the request.",
    "solutions": "Ensure both the ICCID and Registration Code are provided in the request while registering a Super SIM.",
    "description": "Raised whenever a required parameter was not passed with the request while registering a Super SIM. The error object's detail field will indicate which parameter was not provided.",
    "date_created": "2021-03-21T23:59:53Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Super SIM cannot be registered",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe ICCID and Registration Code do not belong to a registrable Super SIM.\n\n### Possible causes\n\nYou tried to register a Super SIM that cannot be registered to your Account.\n\n### Possible solutions\n\nEnsure the ICCID and Registration Code you used in the request belong to a registrable Super SIM. If you are unable to register a new Super SIM, please contact Twilio Support.\n",
    "causes": "You tried to register a Super SIM that cannot be registered to your Account.",
    "solutions": "Ensure the ICCID and Registration Code you used in the request belong to a registrable Super SIM. If you are unable to register a new Super SIM, please contact Twilio Support.",
    "description": "The ICCID and Registration Code do not belong to a registrable Super SIM.",
    "date_created": "2021-03-22T00:01:05Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Super SIM already belongs to the requesting Account.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRaised whenever you try to register a Super SIM that is already registered to your Account.\n\n### Possible causes\n\nYou tried to register a Super SIM that already belongs to your Account.\n\n### Possible solutions\n\nYou do not need to register the Super SIM as it is already associated to your Account. The error message contains the Super SIM SID that you can use to look it up.\n",
    "causes": "You tried to register a Super SIM that already belongs to your Account.",
    "solutions": "You do not need to register the Super SIM as it is already associated to your Account. The error message contains the Super SIM SID that you can use to look it up.",
    "description": "Raised whenever you try to register a Super SIM that is already registered to your Account.",
    "date_created": "2021-03-22T00:02:20Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Super SIM update operation failed due to Internal Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Super SIM update request has caused an internal error that is not further specified.\n\n### Possible causes\n\n- An unspecified error occurred while updating your Super SIM.\n\n### Possible solutions\n\n- Retry updating your Super SIM.\n- If you continue to experience this issue, please contact Twilio Support.\n",
    "causes": "* An unspecified error occurred while updating your Super SIM.",
    "solutions": "* Retry updating your Super SIM.\n* If you continue to experience this issue, please contact Twilio Support.",
    "description": "Your Super SIM update request has caused an internal error that is not further specified.",
    "date_created": "2021-08-23T11:21:33Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Super SIM not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Super SIM could not be found.\n\n### Possible causes\n\n- The Super SIM could not be found. It may have been deleted or transferred to another account.\n\n### Possible solutions\n\n- Ensure that the defined Super SIM SID or Unique Name is present in your Account.\n",
    "causes": "* The Super SIM could not be found. It may have been deleted or transferred to another account.",
    "solutions": "* Ensure that the defined Super SIM SID or Unique Name is present in your Account.",
    "description": "Your Super SIM could not be found.",
    "date_created": "2021-08-23T11:22:34Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Super SIM’s Target Fleet not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Super SIM cannot be assigned to the target Fleet because the Fleet could not be found.\n\n### Possible causes\n\n- The defined Fleet's SID or Unique Name does not exist.\n\n### Possible solutions\n\n- Ensure that the defined Fleet SID or Unique Name is present in your Account.\n",
    "causes": "* The defined Fleet's SID or Unique Name does not exist.",
    "solutions": "* Ensure that the defined Fleet SID or Unique Name is present in your Account.",
    "description": "Your Super SIM cannot be assigned to the target Fleet because the Fleet could not be found.",
    "date_created": "2021-08-23T11:23:24Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to activate your Super SIM as it does not belong to a Fleet",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Super SIM cannot be activated without being assigned to a Fleet.\n\n### Possible causes\n\n- The Super SIM is not assigned to a Fleet and the activation request did not include a Fleet.\n\n### Possible solutions\n\n- Provide a Fleet in the activation request or first assign your Super SIM to a Fleet and then try activating it again.\n",
    "causes": "* The Super SIM is not assigned to a Fleet and the activation request did not include a Fleet.",
    "solutions": "* Provide a Fleet in the activation request or first assign your Super SIM to a Fleet and then try activating it again.",
    "description": "Your Super SIM cannot be activated without being assigned to a Fleet.",
    "date_created": "2021-08-23T11:24:06Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to remove your Super SIM from its Fleet",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Super SIM must be assigned to a Fleet while it is in status 'ready' or 'active'.\n\n### Possible causes\n\n- The Super SIM is in status ready or active, and must belong to a Fleet.\n\n### Possible solutions\n\n- If you want to change your Super SIM's Fleet while it is in status ready or active, you need to provide an alternative Fleet in the request.\n- Update the Super SIM's status to inactive. This can be done either as a separate update request or in the same request as removing the Fleet.\n",
    "causes": "* The Super SIM is in status ready or active, and must belong to a Fleet.",
    "solutions": "* If you want to change your Super SIM's Fleet while it is in status ready or active, you need to provide an alternative Fleet in the request.\n* Update the Super SIM's status to inactive. This can be done either as a separate update request or in the same request as removing the Fleet.",
    "description": "Your Super SIM must be assigned to a Fleet while it is in status 'ready' or 'active'.",
    "date_created": "2021-08-23T11:24:43Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to update your Super SIM’s Fleet while it is in status scheduled",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Fleet update request cannot be performed on your Super SIM as it is in status scheduled.\n\n### Possible causes\n\n- Another operation on your Super SIM is in progress.\n\n### Possible solutions\n\n- Wait for the current Super SIM operation to be complete and try again.\n",
    "causes": "* Another operation on your Super SIM is in progress.",
    "solutions": "* Wait for the current Super SIM operation to be complete and try again.",
    "description": "Your Fleet update request cannot be performed on your Super SIM as it is in status scheduled.",
    "date_created": "2021-08-23T11:25:40Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to update your Super SIM to the desired status",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Super SIM cannot be updated from its current status to the desired status.\n\n### Possible causes\n\n- The Super SIM's current status cannot be updated to the desired status.\n\n### Possible solutions\n\n- Check the public documentation for valid operations.\n",
    "causes": "* The Super SIM's current status cannot be updated to the desired status.",
    "solutions": "* Check the public documentation for valid operations.",
    "description": "Your Super SIM cannot be updated from its current status to the desired status.",
    "date_created": "2021-08-23T11:26:13Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83011,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "A Super SIM with the specified Unique Name exists already",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYour Super SIM cannot be updated with the provided Unique Name because another Super SIM on your Account is already using it.\n\n### Possible causes\n\n- A Unique Name must be unique across all Super SIMs that belong to your Account. Two Super SIMs cannot have the same Unique Name.\n\n### Possible solutions\n\n- Specify an alternative Unique Name in your request.\n- Change the Unique Name of the Super SIM already using the desired Unique Name to something else and then retry your request.\n",
    "causes": "* A Unique Name must be unique across all Super SIMs that belong to your Account. Two Super SIMs cannot have the same Unique Name.",
    "solutions": "* Specify an alternative Unique Name in your request.\n* Change the Unique Name of the Super SIM already using the desired Unique Name to something else and then retry your request.",
    "description": "Your Super SIM cannot be updated with the provided Unique Name because another Super SIM on your Account is already using it.",
    "date_created": "2021-08-23T11:26:55Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83400,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "IP Commands error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRaised whenever delivering an IP Command fails with an error that is not covered by a more specific error code.\n\n### Possible causes\n\nAn unspecified error occurred while delivering your IP Command.\n\n### Possible solutions\n\n- Try to send the IP Command again.\n- If this is a continuous experience, please contact Twilio Support.\n",
    "causes": "An unspecified error occurred while delivering your IP Command.",
    "solutions": "* Try to send the IP Command again.\n* If this is a continuous experience, please contact Twilio Support.",
    "description": "Raised whenever delivering an IP Command fails with an error that is not covered by a more specific error code.",
    "date_created": "2021-04-15T21:08:47Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83401,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The device was not attached to a cellular network",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe device was not attached to a cellular network when Twilio attempted to send the IP Command. The IP Command was not sent to the device.\n\n### Possible causes\n\nYour device was not attached to a cellular network when Twilio attempted to send the IP Command.\n\n### Possible solutions\n\nEnsure your device is attached to a cellular network and try to send the IP Command again.\n",
    "causes": "Your device was not attached to a cellular network when Twilio attempted to send the IP Command.",
    "solutions": "Ensure your device is attached to a cellular network and try to send the IP Command again.",
    "description": "The device was not attached to a cellular network when Twilio attempted to send the IP Command. The IP Command was not sent to the device.",
    "date_created": "2021-04-15T21:10:15Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83402,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Received error response to IP Command callback request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio received an error response when attempting to send an IP Command event to the provided callback URL.\n\n### Possible causes\n\nTwilio did not receive a 2xx response from the callback URL when attempting to send an IP Command event.\n\n### Possible solutions\n\nEnsure that your callback server can handle the callback and responds with a 2xx HTTP status code. See the [Debugger](https://www.twilio.com/console/debugger) in Console for further information on the callback response.\n",
    "causes": "Twilio did not receive a 2xx response from the callback URL when attempting to send an IP Command event.",
    "solutions": "Ensure that your callback server can handle the callback and responds with a 2xx HTTP status code. See the [Debugger](https://www.twilio.com/console/debugger) in Console for further information on the callback response.",
    "description": "Twilio received an error response when attempting to send an IP Command event to the provided callback URL.",
    "date_created": "2021-04-29T14:18:12Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83500,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "No eSIM Profiles are available",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio currently does not have eSIM Profiles available for ordering.\n\n### Possible causes\n\n- There are no eSIM Profiles currently available for ordering.\n\n### Possible solutions\n\n- Twilio tries to restock eSIM Profiles as soon as possible. If you would like to be notified when eSIM Profiles are available again, please open a ticket with customer support.\n",
    "causes": "* There are no eSIM Profiles currently available for ordering.",
    "solutions": "* Twilio tries to restock eSIM Profiles as soon as possible. If you would like to be notified when eSIM Profiles are available again, please open a ticket with customer support.",
    "description": "Twilio currently does not have eSIM Profiles available for ordering.",
    "date_created": "2021-11-02T12:45:52Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83600,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": " An invalid parameter value was passed to the API",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA parameter was passed to the Usage Records API which failed validation. This usually means the value format was invalid, or multiple parameters in the request conflict with each other.\n\n### Possible causes\n\n- Check the response message for details on which parameter was invalid and the specific reason.\n\n### Possible solutions\n\n- Refer to the API documentation and adjust your parameter value to a supported value.\n",
    "causes": "* Check the response message for details on which parameter was invalid and the specific reason.",
    "solutions": "* Refer to the API documentation and adjust your parameter value to a supported value.",
    "description": "A parameter was passed to the Usage Records API which failed validation. This usually means the value format was invalid, or multiple parameters in the request conflict with each other.",
    "date_created": "2021-08-19T13:12:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83601,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Request StartTime and/or EndTime must be aligned to UTC day boundaries",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nCertain requests for Usage Records can only be made with StartTime and EndTime parameters that align to midnight UTC (e.g. \"2021-07-15T00:00:00Z\").\n\n### Possible causes\n\n- This happens if you request Usage Records with StartTime or EndTime parameters that do not fall on a day cutoff (i.e. midnight UTC) for certain UsageRecord requests.\n\n### Possible solutions\n\n- Adjust your StartTime or EndTime parameters so that they are at midnight UTC (e.g. \"2021-07-15T00:00:00Z\").\n",
    "causes": "* This happens if you request Usage Records with StartTime or EndTime parameters that do not fall on a day cutoff (i.e. midnight UTC) for certain UsageRecord requests.",
    "solutions": "* Adjust your StartTime or EndTime parameters so that they are at midnight UTC (e.g. \"2021-07-15T00:00:00Z\").",
    "description": "Certain requests for Usage Records can only be made with StartTime and EndTime parameters that align to midnight UTC (e.g. \"2021-07-15T00:00:00Z\").",
    "date_created": "2021-08-19T13:13:35Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Request StartTime and/or EndTime must be aligned to UTC hour boundaries.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nCertain requests for Usage Records can only be made with StartTime and EndTime parameters that align to a UTC hour cutoff (e.g. \"2021-07-15T04:00:00Z\").\n\n### Possible causes\n\n- This happens if you request Usage Records with StartTime or EndTime parameters that do not fall on an hour cutoff for certain UsageRecord requests.\n\n### Possible solutions\n\n- Adjust your StartTime or EndTime parameters so that they are on a UTC hour cutoff (e.g. \"2021-07-15T04:00:00Z\").\n",
    "causes": "* This happens if you request Usage Records with StartTime or EndTime parameters that do not fall on an hour cutoff for certain UsageRecord requests.",
    "solutions": "* Adjust your StartTime or EndTime parameters so that they are on a UTC hour cutoff (e.g. \"2021-07-15T04:00:00Z\").",
    "description": "Certain requests for Usage Records can only be made with StartTime and EndTime parameters that align to a UTC hour cutoff (e.g. \"2021-07-15T04:00:00Z\").",
    "date_created": "2021-08-19T13:14:34Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83603,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The maximum allowed query period is 31 days for group by sim queries",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRequests for Usage Records grouping by \"sim\" can query a maximum time period of 31 days.\n\n### Possible causes\n\n- This happens if you request Usage Records grouped by SIM with StartTime or EndTime parameters that span more than 31 days.\n\n### Possible solutions\n\n- Adjust your StartTime or EndTime parameters so that the time range is less than or equal to 31 days.\n",
    "causes": "* This happens if you request Usage Records grouped by SIM with StartTime or EndTime parameters that span more than 31 days.",
    "solutions": "* Adjust your StartTime or EndTime parameters so that the time range is less than or equal to 31 days.",
    "description": "Requests for Usage Records grouping by \"sim\" can query a maximum time period of 31 days.",
    "date_created": "2021-08-19T13:15:17Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83604,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Query period exceeds the maximum allowed for the requested Granularity",
    "secondary_message": null,
    "product": "Usage",
    "products_used": [
      "usage"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Usage Records request spans more time than the selected granularity supports. Requests with `all` can query up to 18 months of data, requests with `day` can query up to 3 months of data, and requests with `hour` can query up to 31 days of data.\n\n### Possible causes\n\n- Your request uses `startDate` and `endDate` values that define a date range longer than the allowed limit for the granularity you selected.\n- Your request asks for `hour` data across more than 31 days.\n- Your request asks for `day` data across more than 3 months, or `all` data across more than 18 months.\n\n### Possible solutions\n\n- Reduce the time span between `startDate` and `endDate` so the request stays within the supported limit for the granularity you need.\n- Send `startDate` and `endDate` in `YYYY-MM-DD` format so Twilio can evaluate the requested period correctly.\n- If you need a different reporting interval, use one of the supported Usage Records subresources such as `Daily`, `Monthly`, `Yearly`, `AllTime`, `ThisMonth`, or `LastMonth` instead of querying an unsupported range.\n\n#### Additional resources\n\n- [Usage Records API reference](/docs/usage/api/usage-record)\n- [General Usage](/docs/usage)\n- [UsageTrigger API reference](/docs/usage/api/usage-trigger)\n",
    "causes": "* Your request uses `startDate` and `endDate` values that define a date range longer than the allowed limit for the granularity you selected.\n* Your request asks for `hour` data across more than 31 days.\n* Your request asks for `day` data across more than 3 months, or `all` data across more than 18 months.",
    "solutions": "* Reduce the time span between `startDate` and `endDate` so the request stays within the supported limit for the granularity you need.\n* Send `startDate` and `endDate` in `YYYY-MM-DD` format so Twilio can evaluate the requested period correctly.\n* If you need a different reporting interval, use one of the supported Usage Records subresources such as `Daily`, `Monthly`, `Yearly`, `AllTime`, `ThisMonth`, or `LastMonth` instead of querying an unsupported range.",
    "description": "This error occurs when your Usage Records request spans more time than the selected granularity supports. Requests with `all` can query up to 18 months of data, requests with `day` can query up to 3 months of data, and requests with `hour` can query up to 31 days of data.",
    "date_created": "2021-08-19T13:16:11Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 83605,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "StartTime parameter is too far in the past. It must be within the last 18 months.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou can query usage data up to 18 months in the past. The oldest allowed StartTime is 18 months prior to the start of the current UTC day. For example, if the current time is 2021-12-13T5:00:00Z, then you can query usage as far back as 2020-06-13T:00:00:00Z.\n\n### Possible causes\n\nThis happens if you request Usage Records with a StartTime parameter more than 18 months in the past.\n\n### Possible solutions\n\nAdjust your StartTime parameter to be at most 18 months in the past.\n",
    "causes": "This happens if you request Usage Records with a StartTime parameter more than 18 months in the past.",
    "solutions": "Adjust your StartTime parameter to be at most 18 months in the past.",
    "description": "You can query usage data up to 18 months in the past. The oldest allowed StartTime is 18 months prior to the start of the current UTC day. For example, if the current time is 2021-12-13T5:00:00Z, then you can query usage as far back as 2020-06-13T:00:00:00Z.",
    "date_created": "2022-01-04T00:09:10Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83700,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Attachment Failed Due To Internal Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn unexpected error occurred while attempting to process your SIM's attachment request to the Network. This is usually a transient error and should resolve itself in time.\n\n### Possible causes\n\n- An unexpected error occurred in processing your SIM's attachment to the Network\n\n### Possible solutions\n\n- Retry connecting to the Network from your device.\n- If this issue persists for your SIM, please contact Twilio Support.\n",
    "causes": "* An unexpected error occurred in processing your SIM's attachment to the Network",
    "solutions": "* Retry connecting to the Network from your device.\n* If this issue persists for your SIM, please contact Twilio Support.",
    "description": "An unexpected error occurred while attempting to process your SIM's attachment request to the Network. This is usually a transient error and should resolve itself in time.",
    "date_created": "2022-07-21T14:18:43Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83701,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Data Session Establishment Failed Due To Internal Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nAn unexpected error occurred while establishing a Data Session for your SIM. This is usually a transient error and should resolve itself in time.\n\n### Possible causes\n\n- An unexpected error occurred in setting up a Data Session for your SIM.\n\n### Possible solutions\n\n- Retry connecting to the Network from your device.\n- If this issue persists for your SIM, please contact Twilio Support.\n",
    "causes": "* An unexpected error occurred in setting up a Data Session for your SIM.",
    "solutions": "* Retry connecting to the Network from your device.\n* If this issue persists for your SIM, please contact Twilio Support.",
    "description": "An unexpected error occurred while establishing a Data Session for your SIM. This is usually a transient error and should resolve itself in time.",
    "date_created": "2022-07-21T14:21:00Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83702,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attachment Rejected Due To Network Not Allowed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SIM could not to attach to the specified Network, either because its Fleet's Network Access Profile did not allow the Network or because Twilio has blocked the IMSI currently being used from attaching to the Network.\n\n### Possible causes\n\n- The Network Access Profile associated with this SIM's Fleet has blocked access to this Network.\n- Twilio has disabled this Network for all SIMs.\n\n### Possible solutions\n\n- Check the Network Access Profile associated with the SIM and enable the Network if you would like to use it.\n",
    "causes": "* The Network Access Profile associated with this SIM's Fleet has blocked access to this Network.\n* Twilio has disabled this Network for all SIMs.",
    "solutions": "* Check the Network Access Profile associated with the SIM and enable the Network if you would like to use it.",
    "description": "The SIM could not to attach to the specified Network, either because its Fleet's Network Access Profile did not allow the Network or because Twilio has blocked the IMSI currently being used from attaching to the Network.",
    "date_created": "2022-07-21T14:23:23Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83703,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attachment Rejected Due To Rate Limiting",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SIM was not able to attach to the specified Network because your device has repeatedly attempted to connect too frequently and is rate limited. Rate limiting is enforced to protect the network infrastracture and prevent one device from impacting the experience of other users on the Network.\n\n### Possible causes\n\n- Your device may be stuck in a loop and is repeatedly and rapidly attempting to reattach to the network.\n\n### Possible solutions\n\n- Implement backoffs in connection attempts on your device to not overwhelm the network infrastructure.\n",
    "causes": "* Your device may be stuck in a loop and is repeatedly and rapidly attempting to reattach to the network.",
    "solutions": "* Implement backoffs in connection attempts on your device to not overwhelm the network infrastructure.",
    "description": "The SIM was not able to attach to the specified Network because your device has repeatedly attempted to connect too frequently and is rate limited. Rate limiting is enforced to protect the network infrastracture and prevent one device from impacting the experience of other users on the Network.",
    "date_created": "2022-07-21T14:25:26Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83704,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attachment Rejected Due To SIM In New State",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SIM was not able to attach to the specified network because your SIM has not been activated yet and is in the `new` state. This is the state that SIMs arrive in when they are shipped and they must be activated first via Console or REST API before they can be used.\n\n### Possible causes\n\n- Your SIM is in the `new` state and is not active.\n\n### Possible solutions\n\n- Use the Twilio Console or REST API to activate your SIM by setting its `status` to `ready` or `active`.\n",
    "causes": "* Your SIM is in the `new` state and is not active.",
    "solutions": "* Use the Twilio Console or REST API to activate your SIM by setting its `status` to `ready` or `active`.",
    "description": "The SIM was not able to attach to the specified network because your SIM has not been activated yet and is in the `new` state. This is the state that SIMs arrive in when they are shipped and they must be activated first via Console or REST API before they can be used.",
    "date_created": "2022-07-21T14:28:53Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 83705,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Attachment Rejected Due To SIM In Inactive State",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe SIM was not able to attach to the specified Network because your SIM is `inactive`. A SIM must be in the `ready` or `active` states to access the Network.\n\n### Possible causes\n\n- Your SIM is in the `inactive` state.\n\n### Possible solutions\n\n- Use the Twilio Console or REST API to activate your SIM by setting its `status` to `active`.\n",
    "causes": "* Your SIM is in the `inactive` state.",
    "solutions": "* Use the Twilio Console or REST API to activate your SIM by setting its `status` to `active`.",
    "description": "The SIM was not able to attach to the specified Network because your SIM is `inactive`. A SIM must be in the `ready` or `active` states to access the Network.",
    "date_created": "2022-07-21T14:31:51Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 84000,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Execution has exceeded max steps allowed for a flow.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis limitation is enforced to prevent infinite loops. Please try to design your flows such that they terminate.\n\n### Possible causes\n\nThere are too many steps in the flow\n\n### Possible solutions\n\nReduce the number of steps in your flow.\n",
    "causes": "There are too many steps in the flow",
    "solutions": "Reduce the number of steps in your flow.",
    "description": "This limitation is enforced to prevent infinite loops. Please try to design your flows such that they terminate.",
    "date_created": "2024-01-10T18:07:41Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 84001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Workflow execution timed out.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nExecution timed out before completing the execution of all the blocks.\n\n### Possible causes\n\n- Long await on any async await events.\n\n### Possible solutions\n\n- Define a timeout for async await events.\n",
    "causes": "* Long await on any async await events.",
    "solutions": "* Define a timeout for async await events.",
    "description": "Execution timed out before completing the execution of all the blocks.",
    "date_created": "2024-01-10T18:08:36Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 84002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Workflow execution failed. ",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error means a Studio Flow Execution failed before it could complete. Review the Execution log to identify the failed widget, inspect the Step event, and use the Debugging Information and Flow Data panels to find the specific runtime failure.\n\n### Possible causes\n\n- A downstream exception occurred while the Flow was running.\n- A `Run Function` widget did not return successfully. This can happen if the Function returns a `4xx` or `5xx` status code, takes longer than 10 seconds, or returns a response body larger than 64 KB.\n- A `Make HTTP Request` widget failed because the endpoint did not return a successful response, timed out after 10 seconds, or returned a response body larger than 64 KB.\n- A message or call operation failed in a widget, which caused the Execution to end before later widgets were reached.\n\n### Possible solutions\n\n- Open the Flow's Logs, find the failed Execution by contact address and time range, and inspect the failed Step's Debugging Information to identify the exact widget and error details. If needed, review Flow Data for the full execution state.\n- If the failure came from `Run Function`, make sure the Function returns a `2xx` or `3xx` response within 10 seconds and keeps the response body under 64 KB. Return valid JSON when you want Studio to parse the response into variables.\n- If the failure came from `Make HTTP Request`, verify the Request URL, request settings, and downstream endpoint behavior. Make sure the endpoint returns a `2xx` response within 10 seconds and keeps the response body under 64 KB. If you need to send custom headers, use a Function to make the request instead.\n- Add or review failure handling transitions in the affected widget so the Flow can move to a recovery step when a downstream request fails. For repeated downstream failures, track retry attempts with a variable and branch after a fixed number of retries instead of looping indefinitely.\n- If the issue started after a recent Flow change, review Revision History to identify the change that introduced the failure and revert to an earlier revision if necessary.\n\n#### Additional resources\n\n- [Studio Troubleshooting](/docs/studio/user-guide/studio-troubleshooting)\n- [Run Function widget](/docs/studio/widget-library/run-function)\n- [Make HTTP Request widget](/docs/studio/widget-library/http-request)\n",
    "causes": "* A downstream exception occurred while the Flow was running.\n* A `Run Function` widget did not return successfully. This can happen if the Function returns a `4xx` or `5xx` status code, takes longer than 10 seconds, or returns a response body larger than 64 KB.\n* A `Make HTTP Request` widget failed because the endpoint did not return a successful response, timed out after 10 seconds, or returned a response body larger than 64 KB.\n* A message or call operation failed in a widget, which caused the Execution to end before later widgets were reached.",
    "solutions": "* Open the Flow's Logs, find the failed Execution by contact address and time range, and inspect the failed Step's Debugging Information to identify the exact widget and error details. If needed, review Flow Data for the full execution state.\n* If the failure came from `Run Function`, make sure the Function returns a `2xx` or `3xx` response within 10 seconds and keeps the response body under 64 KB. Return valid JSON when you want Studio to parse the response into variables.\n* If the failure came from `Make HTTP Request`, verify the Request URL, request settings, and downstream endpoint behavior. Make sure the endpoint returns a `2xx` response within 10 seconds and keeps the response body under 64 KB. If you need to send custom headers, use a Function to make the request instead.\n* Add or review failure handling transitions in the affected widget so the Flow can move to a recovery step when a downstream request fails. For repeated downstream failures, track retry attempts with a variable and branch after a fixed number of retries instead of looping indefinitely.\n* If the issue started after a recent Flow change, review Revision History to identify the change that introduced the failure and revert to an earlier revision if necessary.",
    "description": "This error means a Studio Flow Execution failed before it could complete. Review the Execution log to identify the failed widget, inspect the Step event, and use the Debugging Information and Flow Data panels to find the specific runtime failure.",
    "date_created": "2024-01-10T18:10:07Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 84003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to render block.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA block could not be rendered.\n\n### Possible causes\n\n- Liquid values used in the block might not be correct.\n\n### Possible solutions\n\n- Check the liquid expressions in the block evaluate to a proper value.\n",
    "causes": "* Liquid values used in the block might not be correct.",
    "solutions": "* Check the liquid expressions in the block evaluate to a proper value.",
    "description": "A block could not be rendered.",
    "date_created": "2024-01-10T18:10:41Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 84004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Error while creating execution via REST API.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRequired values to create execution might not have been provided.\n\n### Possible causes\n\n- The Create Execution endpoint was called with parameters that could not be processed.\n\n### Possible solutions\n\n- Double-check the provided parameters for syntax errors.\n",
    "causes": "* The Create Execution endpoint was called with parameters that could not be processed.",
    "solutions": "* Double-check the provided parameters for syntax errors.",
    "description": "Required values to create execution might not have been provided.",
    "date_created": "2024-01-10T18:11:15Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 86001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid credential",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nThe API Key you have provided in your credential is invalid.\n\n### Possible solutions\n\nEnsure you are using the correct API key.\n",
    "causes": "The API Key you have provided in your credential is invalid.",
    "solutions": "Ensure you are using the correct API key.",
    "description": "",
    "date_created": "2025-08-04T17:57:49.205Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 86002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Session terminated: insufficient credits or funds for this credential",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n86002 indicates that the provider tied to the credential ended the Voice session because the credential no longer has available credit or has reached a provider-side spending limit. Check the provider account that backs the credential before you retry the session.\n\n### Possible causes\n\n- The provider account associated with the credential has exhausted its available credit.\n- The provider account or credential has reached a maximum monthly spend limit.\n- If you use SIP authentication, the session can be using a credential from a credential list that is mapped to your SIP Domain.\n\n### Possible solutions\n\n- Add credits or funds to the provider account associated with the credential, then retry the session.\n- Increase the provider-side monthly spend limit if the account has reached its cap.\n- If you use SIP authentication, review the credential list mapped to your SIP Domain and confirm that the session is using the intended credential.\n\n#### Additional resources\n\n- [Use SIP with Twilio Voice](/docs/voice/api/sending-sip)\n- [SIP CredentialList Resource](/docs/voice/sip/api/sip-credentiallist-resource)\n- [Bring Your Own Carrier (BYOC) Trunking for Programmable Voice](/docs/voice/bring-your-own-carrier-byoc)\n",
    "causes": "* The provider account associated with the credential has exhausted its available credit.\n* The provider account or credential has reached a maximum monthly spend limit.\n* If you use SIP authentication, the session can be using a credential from a credential list that is mapped to your SIP Domain.",
    "solutions": "* Add credits or funds to the provider account associated with the credential, then retry the session.\n* Increase the provider-side monthly spend limit if the account has reached its cap.\n* If you use SIP authentication, review the credential list mapped to your SIP Domain and confirm that the session is using the intended credential.",
    "description": "86002 indicates that the provider tied to the credential ended the Voice session because the credential no longer has available credit or has reached a provider-side spending limit. Check the provider account that backs the credential before you retry the session.",
    "date_created": "2025-08-04T18:00:27.977Z",
    "last_updated": "2026-04-10T05:20:38-07:00"
  },
  {
    "code": 86003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Session with provider terminated due to provider issue",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nThere was an issue with the provider's servers.\n\n### Possible solutions\n\nRetry your request after a brief wait and contact the provider if the issue persists. Check the status page of the provider for more information.\n",
    "causes": "There was an issue with the provider's servers.",
    "solutions": "Retry your request after a brief wait and contact the provider if the issue persists. Check the status page of the provider for more information.",
    "description": "",
    "date_created": "2025-08-04T18:04:08.975Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 86004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid attribute",
    "secondary_message": "Invalid attribute provided within the TwiML.",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nInvalid attribute provided within the TwiML.\n\n### Possible causes\n\nOne of the submitted attributes to the TwiML is invalid.\n\n### Possible solutions\n\nValidate that attributes provided are corrected.\n",
    "causes": "One of the submitted attributes to the TwiML is invalid.",
    "solutions": "Validate that attributes provided are corrected.",
    "description": "Invalid attribute provided within the TwiML.",
    "date_created": "2025-08-04T18:27:20.387Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 86005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Server Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\n### Possible causes\n\nThere is an issue on our servers.\n\n### Possible solutions\n\nRetry your request and reach out if the issue persists.\n",
    "causes": "There is an issue on our servers.",
    "solutions": "Retry your request and reach out if the issue persists.",
    "description": "",
    "date_created": "2025-08-04T18:24:32.197Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 86006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Max call duration reached",
    "secondary_message": "The maximum call duration was reached and the call was terminated",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nTwilio Voice has a limit on the length of a call, once that is reached the call is terminated.\n\n### Possible causes\n\nThis call reached the maximum duration.\n\n### Possible solutions\n\nNone at this moment.\n",
    "causes": "This call reached the maximum duration.",
    "solutions": "None at this moment.",
    "description": "Twilio Voice has a limit on the length of a call, once that is reached the call is terminated.",
    "date_created": "2025-08-04T18:29:11.668Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 86007,
    "log_level": "ERROR",
    "log_type": "CARRIER",
    "message": "RTP Timeout",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nAn RTP timeout is detected, meaning that audio stopped flowing.\n\n### Possible causes\n\n- Phone call finished\n- Carrier stopped sending audio to Twilio\n\n### Possible solutions\n\n- Contact Twilio support\n",
    "causes": "* Phone call finished\n* Carrier stopped sending audio to Twilio",
    "solutions": "* Contact Twilio support",
    "description": "An RTP timeout is detected, meaning that audio stopped flowing.",
    "date_created": "2025-08-04T18:31:06.388Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 86008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Concurrency limit reached",
    "secondary_message": "The concurrency limit was reached for this account",
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThe call was rejected because you reached the maximum limit of concurrent calls available for your account.\n\n### Possible causes\n\nThe allowed concurrency limit on your account was reached.\n\n### Possible solutions\n\nIf needed, reach out to Twilio to see if they can increase your concurrency limit.\n",
    "causes": "The allowed concurrency limit on your account was reached.",
    "solutions": "If needed, reach out to Twilio to see if they can increase your concurrency limit.",
    "description": "The call was rejected because you reached the maximum limit of concurrent calls available for your account.",
    "date_created": "2025-08-04T18:32:27.223Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90000,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Uncaught Flex JavaScript Exception",
    "secondary_message": "A client-side JavaScript exception occurred within the Flex UI",
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nA JavaScript error has occurred within Flex UI.\n\n### Possible causes\n\n- There may have been an issue initializing Flex\n- There may be an uncaught exception within a Flex plugin\n",
    "causes": "* There may have been an issue initializing Flex\n* There may be an uncaught exception within a Flex plugin",
    "solutions": null,
    "description": "A JavaScript error has occurred within Flex UI.",
    "date_created": "2019-04-09T17:32:00Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message SID is invalid",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a Message SID that does not match the expected format for a Message resource. Use a Twilio-generated Message SID with the `SM` or `MM` prefix followed by 32 hexadecimal characters.\n\n### Possible causes\n\n- The SID does not start with `SM` or `MM`.\n- The SID is not 34 characters long.\n- The SID contains characters outside the hexadecimal range `0-9` and `a-f`.\n- You passed a SID for a different resource, such as an Account SID or Messaging Service SID, instead of a Message SID.\n\n### Possible solutions\n\n- Copy the Message SID from the original message create response, a message fetch response, or the Messaging logs.\n- Validate the SID format before you send the request. A valid Message SID matches `^(SM|MM)[0-9a-fA-F]{32}$`.\n- Make sure you send the `MessageSid` parameter with a Message SID value, not another Twilio resource SID such as `AC...` or `MG...`.\n- If you need to inspect an existing message, fetch it from the Messages resource by using the correct Message SID.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Programmable Messaging Logs](/docs/messaging/features/messaging-logs)\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* The SID does not start with `SM` or `MM`.\n* The SID is not 34 characters long.\n* The SID contains characters outside the hexadecimal range `0-9` and `a-f`.\n* You passed a SID for a different resource, such as an Account SID or Messaging Service SID, instead of a Message SID.",
    "solutions": "* Copy the Message SID from the original message create response, a message fetch response, or the Messaging logs.\n* Validate the SID format before you send the request. A valid Message SID matches `^(SM|MM)[0-9a-fA-F]{32}$`.\n* Make sure you send the `MessageSid` parameter with a Message SID value, not another Twilio resource SID such as `AC...` or `MG...`.\n* If you need to inspect an existing message, fetch it from the Messages resource by using the correct Message SID.",
    "description": "This error occurs when you send a Message SID that does not match the expected format for a Message resource. Use a Twilio-generated Message SID with the `SM` or `MM` prefix followed by 32 hexadecimal characters.",
    "date_created": "2021-03-05T11:30:15Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 90002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Too Many Errors",
    "secondary_message": "Your Flex application has exceeded the publish rate limit of errors per second. Only a partial set of errors have been published instead.",
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nYour Flex application has exceeded the publish rate limit of errors per second. Only a partial set of errors have been published instead.\n\n### Possible causes\n\n- Your Flex Application is sending too many errors to the Twilio Debugger\n- Your Flex Plugin is misconfigured causing a lot of errors to be published\n\n### Possible solutions\n\n- Ensure that you have put log messages appropriately in your plugin to reduce the number errors being published\n- There could be errors outside of your plugins, within Twilio that are causing it to throw errors\n- Use `try/catch` around methods and handle exceptions gracefully\n- Use `.catch` for all HTTP requests to handle exceptions gracefully\n",
    "causes": "* Your Flex Application is sending too many errors to the Twilio Debugger\n* Your Flex Plugin is misconfigured causing a lot of errors to be published",
    "solutions": "* Ensure that you have put log messages appropriately in your plugin to reduce the number errors being published\n* There could be errors outside of your plugins, within Twilio that are causing it to throw errors\n* Use `try/catch` around methods and handle exceptions gracefully\n* Use `.catch` for all HTTP requests to handle exceptions gracefully",
    "description": "Your Flex application has exceeded the publish rate limit of errors per second. Only a partial set of errors have been published instead.",
    "date_created": "2019-08-20T19:14:59Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to fetch plugins from the Custom Plugins URL",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nTwilio could not fetch your Flex plugins from your provided plugins URL\n\n### Possible causes\n\n- An invalid content type or no content being returned when Twilio tries to retrieve your plugins using the custom plugins URL.\n\n### Possible solutions\n\n- Check if the custom plugins URL has been set correctly\n- The custom plugin URL must return a valid JSON object\n\nSee the [Deploying Flex Plugins](/docs/flex/developer/plugins/cli#deploying-to-your-own-cdn) docs for more information.\n",
    "causes": "* An invalid content type or no content being returned when Twilio tries to retrieve your plugins using the custom plugins URL.",
    "solutions": "* Check if the custom plugins URL has been set correctly\n* The custom plugin URL must return a valid JSON object See the [Deploying Flex Plugins](/docs/flex/developer/plugins/cli#deploying-to-your-own-cdn) docs for more information.",
    "description": "Twilio could not fetch your Flex plugins from your provided plugins URL",
    "date_created": "2019-09-09T23:18:54Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Message Truncated",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nA debug-event was too large to be published to Twilio Debugger.\n\n### Possible causes\n\n- You have logged a message field that exceeds a total of 5000 allowed bytes\n\n### Possible solutions\n\n- Try to separate out your logs into individual messages\n",
    "causes": "* You have logged a message field that exceeds a total of 5000 allowed bytes",
    "solutions": "* Try to separate out your logs into individual messages",
    "description": "A debug-event was too large to be published to Twilio Debugger.",
    "date_created": "2019-10-08T18:54:28Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90006,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid direction",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the request included an invalid `direction` value for a message. Valid Message resource directions are `inbound`, `outbound-api`, `outbound-call`, and `outbound-reply`.\n\n### Possible causes\n\n- The request sent a `direction` value that is not one of the supported Message resource directions.\n- The application or integration mapped the wrong value into the message direction field.\n\n### Possible solutions\n\n- Update the request or integration to use one of the supported values: `inbound`, `outbound-api`, `outbound-call`, or `outbound-reply`.\n- Review the code that creates or updates the message and remove any unexpected `direction` value.\n- If the request is already using a valid value and the error continues, contact Twilio Support.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging API Overview](/docs/messaging/api)\n",
    "causes": "* The request sent a `direction` value that is not one of the supported Message resource directions.\n* The application or integration mapped the wrong value into the message direction field.",
    "solutions": "* Update the request or integration to use one of the supported values: `inbound`, `outbound-api`, `outbound-call`, or `outbound-reply`.\n* Review the code that creates or updates the message and remove any unexpected `direction` value.\n* If the request is already using a valid value and the error continues, contact Twilio Support.",
    "description": "This error means the request included an invalid `direction` value for a message. Valid Message resource directions are `inbound`, `outbound-api`, `outbound-call`, and `outbound-reply`.",
    "date_created": "2022-01-19T11:52:47Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 90007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid validity period value",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThe `validity_period` value for a Message or Messaging Service is outside the supported range. Set the value in whole seconds between 1 and 36,000, which is a maximum of 10 hours. If the message stays in Twilio's queue longer than the configured validity period, Twilio does not send it.\n\n### Possible causes\n\n- `validity_period` was set to a value lower than 1 second.\n- `validity_period` was set to a value higher than 36,000 seconds.\n- The value was configured on the Message request or on the associated Messaging Service with an invalid number.\n\n### Possible solutions\n\n- Set `validity_period` to an integer between 1 and 36,000.\n- Review the Message request payload and remove any invalid `validity_period` value.\n- If you use a Messaging Service, update the Validity period setting in the service configuration.\n- Use the default value of 36,000 seconds if you do not need a shorter queue time.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* `validity_period` was set to a value lower than 1 second.\n* `validity_period` was set to a value higher than 36,000 seconds.\n* The value was configured on the Message request or on the associated Messaging Service with an invalid number.",
    "solutions": "* Set `validity_period` to an integer between 1 and 36,000.\n* Review the Message request payload and remove any invalid `validity_period` value.\n* If you use a Messaging Service, update the Validity period setting in the service configuration.\n* Use the default value of 36,000 seconds if you do not need a shorter queue time.",
    "description": "The `validity_period` value for a Message or Messaging Service is outside the supported range. Set the value in whole seconds between 1 and 36,000, which is a maximum of 10 hours. If the message stays in Twilio's queue longer than the configured validity period, Twilio does not send it.",
    "date_created": "2020-06-08T13:02:29Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 90009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The message SID already exists.",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error means the request to create a Message resource conflicts with an existing message SID. Twilio identifies each resource with a unique SID, and this error page lists a duplicate message SID as the cause when creating a new message.\n\n### Possible causes\n\n- A message with the same SID already exists, so the new message request conflicts with an existing resource.\n- Your integration reused a message identifier instead of creating a unique value for the new message. Twilio uses unique SIDs to identify resources.\n\n### Possible solutions\n\n- Generate a new, unique message SID before you retry the request.\n- Make sure your application does not reuse the same identifier when creating messages.\n- If you need to inspect an existing message, fetch it with the Messages resource using its SID.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* A message with the same SID already exists, so the new message request conflicts with an existing resource.\n* Your integration reused a message identifier instead of creating a unique value for the new message. Twilio uses unique SIDs to identify resources.",
    "solutions": "* Generate a new, unique message SID before you retry the request.\n* Make sure your application does not reuse the same identifier when creating messages.\n* If you need to inspect an existing message, fetch it with the Messages resource using its SID.",
    "description": "This error means the request to create a Message resource conflicts with an existing message SID. Twilio identifies each resource with a unique SID, and this error page lists a duplicate message SID as the cause when creating a new message.",
    "date_created": "2020-07-14T06:41:07Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 90010,
    "log_level": "ERROR",
    "log_type": null,
    "message": "Account is not active",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis account is currently not in an active state\n\n### Possible causes\n\n- Account is suspended\n",
    "causes": "* Account is suspended",
    "solutions": null,
    "description": "This account is currently not in an active state",
    "date_created": "2016-04-01T20:24:55Z",
    "last_updated": "2020-08-04T10:00:22.612Z"
  },
  {
    "code": 90011,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "MessageSid is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you send a `MessageSid` that does not match the expected format for a Message resource. Use a Twilio-generated Message SID with the `SM` or `MM` prefix followed by 32 hexadecimal characters.\n\n### Possible causes\n\n- The `MessageSid` value does not start with `SM` or `MM`.\n- The SID is not 34 characters long.\n- The SID contains characters outside the hexadecimal range `0-9` and `a-f`.\n- You passed a SID for a different resource, such as `AC...` or `MG...`, instead of a Message SID.\n\n### Possible solutions\n\n- Copy the Message SID from the original message create response, a message fetch response, or the Messaging logs.\n- Validate the SID format before you send the request. A valid Message SID matches `^(SM|MM)[0-9a-fA-F]{32}$`.\n- Make sure the `MessageSid` parameter contains a Twilio-generated Message SID, not another Twilio resource SID.\n- If you need to inspect an existing message, fetch it from the Messages resource by using the correct Message SID.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Programmable Messaging Logs](/docs/messaging/features/messaging-logs)\n- [What is a String Identifier (SID)?](/docs/glossary/what-is-a-sid)\n",
    "causes": "* The `MessageSid` value does not start with `SM` or `MM`.\n* The SID is not 34 characters long.\n* The SID contains characters outside the hexadecimal range `0-9` and `a-f`.\n* You passed a SID for a different resource, such as `AC...` or `MG...`, instead of a Message SID.",
    "solutions": "* Copy the Message SID from the original message create response, a message fetch response, or the Messaging logs.\n* Validate the SID format before you send the request. A valid Message SID matches `^(SM|MM)[0-9a-fA-F]{32}$`.\n* Make sure the `MessageSid` parameter contains a Twilio-generated Message SID, not another Twilio resource SID.\n* If you need to inspect an existing message, fetch it from the Messages resource by using the correct Message SID.",
    "description": "This error occurs when you send a `MessageSid` that does not match the expected format for a Message resource. Use a Twilio-generated Message SID with the `SM` or `MM` prefix followed by 32 hexadecimal characters.",
    "date_created": "2020-12-11T08:31:49Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90012,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Recipients' list has too many items [deprecated] ",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis deprecated error occurs when you submit a Broadcast request with more recipients than the request allows. For current bulk messaging workflows, Twilio accepts up to 10,000 recipients in a single request through the `to` array.\n\n### Possible causes\n\n- You provided too many recipients for a single Broadcast request.\n- Your application tried to send one bulk request instead of partitioning the audience into smaller recipient groups.\n- If you are using the current Bulk Messaging API, the `to` array contains more than 10,000 recipients.\n\n### Possible solutions\n\n- Split the recipient list into smaller Broadcast requests, or break a bulk send into multiple requests with fewer recipients.\n- If you use the Bulk Messaging API, keep the `to` array at 10,000 recipients or fewer in each request.\n- After you resend a smaller batch, use the `operationId` from the response to track progress with the Operation resource.\n\n#### Additional resources\n\n- [Getting started with Twilio Bulk Messaging](/docs/bulk-messaging/getting-started)\n- [Bulk Messaging troubleshooting](/docs/bulk-messaging/troubleshooting)\n- [Notify: Multi-Channel Notifications](/docs/notify)\n",
    "causes": "* You provided too many recipients for a single Broadcast request.\n* Your application tried to send one bulk request instead of partitioning the audience into smaller recipient groups.\n* If you are using the current Bulk Messaging API, the `to` array contains more than 10,000 recipients.",
    "solutions": "* Split the recipient list into smaller Broadcast requests, or break a bulk send into multiple requests with fewer recipients.\n* If you use the Bulk Messaging API, keep the `to` array at 10,000 recipients or fewer in each request.\n* After you resend a smaller batch, use the `operationId` from the response to track progress with the Operation resource.",
    "description": "This deprecated error occurs when you submit a Broadcast request with more recipients than the request allows. For current bulk messaging workflows, Twilio accepts up to 10,000 recipients in a single request through the `to` array.",
    "date_created": "2020-12-11T09:40:31Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90013,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Template' or 'TemplateSid'&'TemplateLanguage' or 'MediaUrls' is required",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n'Template' or 'TemplateSid'&'TemplateLanguage' or 'MediaUrls' is required to send Broadcast\n\n### Possible causes\n\nAll next attributes are missing: 'Template', 'TemplateSid', 'TemplateLanguage', 'MediaUrls'\n\n### Possible solutions\n\nUse one of the attributes 'Template', 'TemplateSid', 'TemplateLanguage', 'MediaUrls' to specify Broadcast content\n",
    "causes": "All next attributes are missing: 'Template', 'TemplateSid', 'TemplateLanguage', 'MediaUrls'",
    "solutions": "Use one of the attributes 'Template', 'TemplateSid', 'TemplateLanguage', 'MediaUrls' to specify Broadcast content",
    "description": "'Template' or 'TemplateSid'&'TemplateLanguage' or 'MediaUrls' is required to send Broadcast",
    "date_created": "2020-12-11T09:46:01Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90014,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Validity Period should be positive integer",
    "secondary_message": "Validity Period should be positive integer",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when `validity_period` is not a positive integer. For Messaging Service messages and Message resources, Twilio accepts integer values from `1` to `36000` seconds.\n\n### Possible causes\n\n- You set `validity_period` to `0`, a negative number, or a non-integer value. Twilio requires a positive integer.\n- You configured a Messaging Service with a validity period outside the supported range of `1` to `36000` seconds.\n\n### Possible solutions\n\n- Set `validity_period` to a whole number between `1` and `36000`.\n- If you are using a Messaging Service, enter the queue time in seconds in the Validity period setting.\n- Update the message request or Messaging Service configuration, then send the message again.\n\n#### Additional resources\n\n- [Message resource](/docs/messaging/api/message-resource)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* You set `validity_period` to `0`, a negative number, or a non-integer value. Twilio requires a positive integer.\n* You configured a Messaging Service with a validity period outside the supported range of `1` to `36000` seconds.",
    "solutions": "* Set `validity_period` to a whole number between `1` and `36000`.\n* If you are using a Messaging Service, enter the queue time in seconds in the Validity period setting.\n* Update the message request or Messaging Service configuration, then send the message again.",
    "description": "This error occurs when `validity_period` is not a positive integer. For Messaging Service messages and Message resources, Twilio accepts integer values from `1` to `36000` seconds.",
    "date_created": "2020-05-16T15:24:44Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 90015,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Body and Template (Body, Sid, Language, Args) are provided",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nBody and Template (Body, Sid, Language, Args) are provided together.\n\n### Possible causes\n\nSingle create message request has Body and one of Template's field: Template or TemplateSid or TemplateLanguage or TemplateArgs\n\n### Possible solutions\n\nChoose which type of message would you like to use: templated message or plain message.\n",
    "causes": "Single create message request has Body and one of Template's field: Template or TemplateSid or TemplateLanguage or TemplateArgs",
    "solutions": "Choose which type of message would you like to use: templated message or plain message.",
    "description": "Body and Template (Body, Sid, Language, Args) are provided together.",
    "date_created": "2020-12-11T08:36:54Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90016,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Template' or 'TemplateSid'/'TemplateLanguage' is required to send a Template Message",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n'Template' or 'TemplateSid'/'TemplateLanguage' is required to send a Template Message\n\n### Possible causes\n\nSome template parameters are provided but Template (or TemplateSid) itself is not provide.\n\n### Possible solutions\n\nProvide Template or TemplateSid\\&TemplateLanguage in the create message request\n",
    "causes": "Some template parameters are provided but Template (or TemplateSid) itself is not provide.",
    "solutions": "Provide Template or TemplateSid\\&TemplateLanguage in the create message request",
    "description": "'Template' or 'TemplateSid'/'TemplateLanguage' is required to send a Template Message",
    "date_created": "2020-12-11T08:40:29Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90017,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Template' and 'TemplateSid'/'TemplateLanguage' must not be specified together",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n'Template' and 'TemplateSid'/'TemplateLanguage' must not be specified together for template message\n\n### Possible causes\n\n'Template' and 'TemplateSid'/'TemplateLanguage' are specified together for template message\n\n### Possible solutions\n\nChoose which template message to use Direcy('Template') or Indirect('TemplateSid')\n",
    "causes": "'Template' and 'TemplateSid'/'TemplateLanguage' are specified together for template message",
    "solutions": "Choose which template message to use Direcy('Template') or Indirect('TemplateSid')",
    "description": "'Template' and 'TemplateSid'/'TemplateLanguage' must not be specified together for template message",
    "date_created": "2020-12-11T08:42:19Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90018,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Template' field is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when your Broadcast request includes a `Template` value that exceeds the allowed length for that field. Broadcasts are one-time SMS or email campaigns in Twilio Engage, and Engage campaigns can use Twilio services to power SMS delivery.\n\n### Possible causes\n\n- Your request includes an inline `Template` value that is longer than Twilio accepts.\n- You added too much static copy, personalization text, or other message content to the `Template` field, which caused the request to exceed the field limit.\n- You meant to send a saved template by reference, but sent a long inline `Template` body instead. Use `TemplateSid` with `TemplateLanguage` to reference a saved template.\n\n### Possible solutions\n\n- Shorten the text in `Template` and resend the request.\n- Remove unnecessary copy from the inline template so only the content required for the campaign remains in `Template`.\n- If you want to reuse message content across campaigns, use a saved template reference instead of sending a long inline `Template` value. Provide `TemplateSid` and `TemplateLanguage` when you use a saved template, and do not send `Template` in the same request.\n- Review the content you send through Engage before you launch the Broadcast. If you manage reusable messaging templates, keep them concise and update the template content before resending.\n\n#### Additional resources\n\n- [Audiences, Journeys, and Broadcasts](/docs/segment/guides/audiences-and-journeys)\n- [Engage Settings](/docs/segment/engage/settings)\n- [Twilio Content Template Builder](/docs/content)\n",
    "causes": "* Your request includes an inline `Template` value that is longer than Twilio accepts.\n* You added too much static copy, personalization text, or other message content to the `Template` field, which caused the request to exceed the field limit.\n* You meant to send a saved template by reference, but sent a long inline `Template` body instead. Use `TemplateSid` with `TemplateLanguage` to reference a saved template.",
    "solutions": "* Shorten the text in `Template` and resend the request.\n* Remove unnecessary copy from the inline template so only the content required for the campaign remains in `Template`.\n* If you want to reuse message content across campaigns, use a saved template reference instead of sending a long inline `Template` value. Provide `TemplateSid` and `TemplateLanguage` when you use a saved template, and do not send `Template` in the same request.\n* Review the content you send through Engage before you launch the Broadcast. If you manage reusable messaging templates, keep them concise and update the template content before resending.",
    "description": "Twilio returns this error when your Broadcast request includes a `Template` value that exceeds the allowed length for that field. Broadcasts are one-time SMS or email campaigns in Twilio Engage, and Engage campaigns can use Twilio services to power SMS delivery.",
    "date_created": "2020-12-11T08:43:54Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90019,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'TemplateArgs' dictionary size is too large",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when your request includes more template arguments in `TemplateArgs` than Twilio accepts for a template message. Send only the key-value pairs required to populate the placeholders defined in your template.\n\n### Possible causes\n\n- `TemplateArgs` contains too many entries.\n- Your request includes placeholder keys that are not required by the template you are sending.\n- Your application is passing a large personalization object into `TemplateArgs` instead of only the variables used by the template.\n- The template design requires more dynamic fields than Twilio supports in a single template payload.\n\n### Possible solutions\n\n- Remove unused entries from `TemplateArgs` and resend the request.\n- Send only the placeholder keys that are defined in the template body.\n- Keep the template variable payload within the supported limit. Content templates support up to 100 variables.\n- Move static text into the template itself and reserve `TemplateArgs` for runtime substitution values only.\n- If you need more placeholders than a single template supports, simplify the template or split the content into multiple messages or templates.\n- Review each variable definition before resending. Variable keys cannot contain spaces, keys can be up to 16 characters, and values can be up to 1,600 characters.\n\n#### Additional resources\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* `TemplateArgs` contains too many entries.\n* Your request includes placeholder keys that are not required by the template you are sending.\n* Your application is passing a large personalization object into `TemplateArgs` instead of only the variables used by the template.\n* The template design requires more dynamic fields than Twilio supports in a single template payload.",
    "solutions": "* Remove unused entries from `TemplateArgs` and resend the request.\n* Send only the placeholder keys that are defined in the template body.\n* Keep the template variable payload within the supported limit. Content templates support up to 100 variables.\n* Move static text into the template itself and reserve `TemplateArgs` for runtime substitution values only.\n* If you need more placeholders than a single template supports, simplify the template or split the content into multiple messages or templates.\n* Review each variable definition before resending. Variable keys cannot contain spaces, keys can be up to 16 characters, and values can be up to 1,600 characters.",
    "description": "This error occurs when your request includes more template arguments in `TemplateArgs` than Twilio accepts for a template message. Send only the key-value pairs required to populate the placeholders defined in your template.",
    "date_created": "2020-12-11T08:45:09Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90020,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "One of 'TemplateArgs' dictionary key is blank",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis error occurs when a template message request includes `TemplateArgs` and at least one dictionary key is blank. Use a non-empty key for every template argument so Twilio can match each substitution to the correct placeholder in the template.\n\n### Possible causes\n- The `TemplateArgs` object includes an empty key.\n- Your application builds `TemplateArgs` dynamically and one variable name resolves to a blank value before the request is sent.\n- The request payload is serialized or transformed incorrectly, which leaves one of the `TemplateArgs` keys blank.\n- A template tag is referenced in the template body, but the corresponding key in `TemplateArgs` is empty.\n\n### Possible solutions\n- Remove empty keys from `TemplateArgs` and resend the request.\n- Make sure every `TemplateArgs` key is a non-empty string that matches the placeholder you want to populate.\n- Validate and trim dynamically generated keys before you submit the message request.\n- Review the final request payload your application sends and confirm `TemplateArgs` contains only valid key-value pairs.\n- If you are building new template sends, use `ContentSid` with properly formatted `ContentVariables` in the Messages resource.\n\n#### Additional resources\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Send WhatsApp notification messages with templates](/docs/whatsapp/tutorial/send-whatsapp-notification-messages-templates)\n",
    "causes": "* The `TemplateArgs` object includes an empty key.\n* Your application builds `TemplateArgs` dynamically and one variable name resolves to a blank value before the request is sent.\n* The request payload is serialized or transformed incorrectly, which leaves one of the `TemplateArgs` keys blank.\n* A template tag is referenced in the template body, but the corresponding key in `TemplateArgs` is empty.",
    "solutions": "* Remove empty keys from `TemplateArgs` and resend the request.\n* Make sure every `TemplateArgs` key is a non-empty string that matches the placeholder you want to populate.\n* Validate and trim dynamically generated keys before you submit the message request.\n* Review the final request payload your application sends and confirm `TemplateArgs` contains only valid key-value pairs.\n* If you are building new template sends, use `ContentSid` with properly formatted `ContentVariables` in the Messages resource.",
    "description": "This error occurs when a template message request includes `TemplateArgs` and at least one dictionary key is blank. Use a non-empty key for every template argument so Twilio can match each substitution to the correct placeholder in the template.",
    "date_created": "2020-12-11T08:46:19Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90021,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "One of 'TemplateArgs' dictionary key is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne of 'TemplateArgs' dictionary key is too long\n\n### Possible causes\n\nOne of 'TemplateArgs' dictionary key is too long\n\n### Possible solutions\n\nUse shorter 'TemplateArgs' dictionary keys\n",
    "causes": "One of 'TemplateArgs' dictionary key is too long",
    "solutions": "Use shorter 'TemplateArgs' dictionary keys",
    "description": "One of 'TemplateArgs' dictionary key is too long",
    "date_created": "2020-12-11T08:47:19Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90022,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "One of 'TemplateArgs' dictionary value is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nOne of 'TemplateArgs' dictionary value is too long\n\n### Possible causes\n\nOne of 'TemplateArgs' dictionary value is too long\n\n### Possible solutions\n\nUse shorter 'TemplateArgs' dictionary values\n",
    "causes": "One of 'TemplateArgs' dictionary value is too long",
    "solutions": "Use shorter 'TemplateArgs' dictionary values",
    "description": "One of 'TemplateArgs' dictionary value is too long",
    "date_created": "2020-12-11T08:48:09Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90023,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "One of 'TemplateArgs' dictionary value is null",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your request includes `TemplateArgs` and at least one dictionary value is `null`. Replace that entry with a real substitution value before you send the request. If you are using current content templates, Twilio also requires non-null values for `ContentVariables`.\n\n### Possible causes\n\n- Your request payload includes a `TemplateArgs` key whose value is `null`.\n- Your application maps an optional or missing field into the template argument payload, and that field is serialized as `null` at send time.\n- You build template substitutions dynamically and do not validate the final payload before sending it. As a result, one or more values resolve to `null`.\n\n### Possible solutions\n\n- Inspect the final outbound request and identify every `TemplateArgs` entry before you send it. Remove any path in your application that allows a template value to resolve to `null`.\n- Replace each `null` entry with a valid substitution value that matches the placeholder your template expects.\n- Add application-side validation for any field you copy into template arguments, especially values loaded from forms, databases, or upstream APIs. Reject the request or supply a valid value before you create the Twilio API request.\n- If you are sending a content template through the current Messaging API, send `ContentSid` with a valid JSON string in `ContentVariables` and make sure each variable value is non-null. If your template defines default variable values, use those defaults instead of sending `null`.\n\n#### Additional resources\n\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Messages resource](/docs/messaging/api/message-resource)\n",
    "causes": "* Your request payload includes a `TemplateArgs` key whose value is `null`.\n* Your application maps an optional or missing field into the template argument payload, and that field is serialized as `null` at send time.\n* You build template substitutions dynamically and do not validate the final payload before sending it. As a result, one or more values resolve to `null`.",
    "solutions": "* Inspect the final outbound request and identify every `TemplateArgs` entry before you send it. Remove any path in your application that allows a template value to resolve to `null`.\n* Replace each `null` entry with a valid substitution value that matches the placeholder your template expects.\n* Add application-side validation for any field you copy into template arguments, especially values loaded from forms, databases, or upstream APIs. Reject the request or supply a valid value before you create the Twilio API request.\n* If you are sending a content template through the current Messaging API, send `ContentSid` with a valid JSON string in `ContentVariables` and make sure each variable value is non-null. If your template defines default variable values, use those defaults instead of sending `null`.",
    "description": "This error occurs when your request includes `TemplateArgs` and at least one dictionary value is `null`. Replace that entry with a real substitution value before you send the request. If you are using current content templates, Twilio also requires non-null values for `ContentVariables`.",
    "date_created": "2020-12-11T08:48:59Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90024,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Template body has tag which is not provided in 'TemplateArgs'",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTemplate body has tag which is not provided in 'TemplateArgs'\n\n### Possible causes\n\nTemplate body has wider tag's set than specified in 'TemplateArgs' dictionary\n\n### Possible solutions\n\nCheck all tags from template body are specified in 'TemplateArgs' dictionary as keys\n",
    "causes": "Template body has wider tag's set than specified in 'TemplateArgs' dictionary",
    "solutions": "Check all tags from template body are specified in 'TemplateArgs' dictionary as keys",
    "description": "Template body has tag which is not provided in 'TemplateArgs'",
    "date_created": "2020-12-11T08:51:17Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90025,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Template body has unsupported tag type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when your template body includes a Mustache tag type that Twilio does not support. Use only data tags in `{{}}` for placeholders, such as `{{1}}` or `{{CustomerName}}`.\n\n### Possible causes\n\n- The template body includes a Mustache tag or command other than a data tag.\n- The body mixes supported placeholder tags with other Mustache commands.\n- The body uses syntax that is not a simple placeholder wrapped in `{{}}`.\n\n### Possible solutions\n\n- Remove any unsupported Mustache tags or commands from the template body.\n- Replace each unsupported tag with a data tag placeholder in `{{}}`.\n- Use simple variable placeholders such as `{{1}}` or `{{CustomerName}}`. Variable keys can be numeric or alphanumeric, and they cannot contain spaces.\n- If you send the template with substitutions, pass matching values in `ContentVariables`. If you create the template with the Content API, define the template variables in the `variables` object.\n\n#### Additional resources\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Content API Public Endpoints](/docs/content/content-api-resources)\n- [Content Templates Overview](/docs/content/overview)\n",
    "causes": "* The template body includes a Mustache tag or command other than a data tag.\n* The body mixes supported placeholder tags with other Mustache commands.\n* The body uses syntax that is not a simple placeholder wrapped in `{{}}`.",
    "solutions": "* Remove any unsupported Mustache tags or commands from the template body.\n* Replace each unsupported tag with a data tag placeholder in `{{}}`.\n* Use simple variable placeholders such as `{{1}}` or `{{CustomerName}}`. Variable keys can be numeric or alphanumeric, and they cannot contain spaces.\n* If you send the template with substitutions, pass matching values in `ContentVariables`. If you create the template with the Content API, define the template variables in the `variables` object.",
    "description": "This error occurs when your template body includes a Mustache tag type that Twilio does not support. Use only data tags in `{{}}` for placeholders, such as `{{1}}` or `{{CustomerName}}`.",
    "date_created": "2020-12-11T08:53:44Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90026,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Template body could not be parsed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTemplate body could not be parsed by Mustache compiler\n\n### Possible causes\n\nTemplate body uses incorrect grammar (we support Mustache grammar). For instance empty Mustache placeholder (\"\\{\\{}}\") is not allowed by the grammar.\n\n### Possible solutions\n\nCheck your template body is correct Mustache grammar.\n",
    "causes": "Template body uses incorrect grammar (we support Mustache grammar). For instance empty Mustache placeholder (\"{{}}\") is not allowed by the grammar.",
    "solutions": "Check your template body is correct Mustache grammar.",
    "description": "Template body could not be parsed by Mustache compiler",
    "date_created": "2020-12-11T08:56:59Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90027,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast 'FriendlyName' is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when your broadcast request includes a FriendlyName value that exceeds the supported length. Twilio validates request parameters before it processes messaging operations, so shorten the FriendlyName value and send the request again.\n\n### Possible causes\n\n- The FriendlyName value in your broadcast request is longer than Twilio accepts.\n- Your application is sending a generated or concatenated FriendlyName value whose final length exceeds the supported limit.\n\n### Possible solutions\n\n- Shorten the FriendlyName value in the request before you create the broadcast.\n- Inspect the final request payload your application sends to Twilio to confirm the FriendlyName value is not too long.\n- Review the failed request in the Twilio Debugger or your application logs, update the request, and retry it.\n\n#### Additional resources\n\n- [Bulk Messaging API](/docs/bulk-messaging)\n- [Messages resource](/docs/bulk-messaging/api/message-resource)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n",
    "causes": "* The FriendlyName value in your broadcast request is longer than Twilio accepts.\n* Your application is sending a generated or concatenated FriendlyName value whose final length exceeds the supported limit.",
    "solutions": "* Shorten the FriendlyName value in the request before you create the broadcast.\n* Inspect the final request payload your application sends to Twilio to confirm the FriendlyName value is not too long.\n* Review the failed request in the Twilio Debugger or your application logs, update the request, and retry it.",
    "description": "Twilio returns this error when your broadcast request includes a FriendlyName value that exceeds the supported length. Twilio validates request parameters before it processes messaging operations, so shorten the FriendlyName value and send the request again.",
    "date_created": "2020-12-11T13:13:55Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90028,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast 'IdempotencyToken' is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when your broadcast request includes an `IdempotencyToken` value that exceeds the supported length for the request. Use a short, stable token so Twilio can identify retries without rejecting the payload.\n\n### Possible causes\n\n- The `IdempotencyToken` value in your broadcast request is longer than the allowed limit.\n- Your application generates `IdempotencyToken` values from long concatenated strings, serialized payloads, or other unbounded input.\n- Your application does not validate the length of `IdempotencyToken` before sending the request.\n\n### Possible solutions\n\n- Replace the `IdempotencyToken` with a shorter value.\n- Generate a compact identifier for `IdempotencyToken`, such as a UUID, instead of using the full request body or other long input.\n- Reuse the same `IdempotencyToken` only when retrying the same request after a timeout or similar transient failure.\n- Add input validation in your application so requests are rejected or corrected before they reach Twilio.\n\n#### Additional resources\n\n- [Bulk Messaging API](/docs/bulk-messaging)\n- [Messaging API Overview](/docs/messaging/api)\n- [Debugging Tools](/docs/messaging/guides/debugging-tools)\n",
    "causes": "* The `IdempotencyToken` value in your broadcast request is longer than the allowed limit.\n* Your application generates `IdempotencyToken` values from long concatenated strings, serialized payloads, or other unbounded input.\n* Your application does not validate the length of `IdempotencyToken` before sending the request.",
    "solutions": "* Replace the `IdempotencyToken` with a shorter value.\n* Generate a compact identifier for `IdempotencyToken`, such as a UUID, instead of using the full request body or other long input.\n* Reuse the same `IdempotencyToken` only when retrying the same request after a timeout or similar transient failure.\n* Add input validation in your application so requests are rejected or corrected before they reach Twilio.",
    "description": "Twilio returns this error when your broadcast request includes an `IdempotencyToken` value that exceeds the supported length for the request. Use a short, stable token so Twilio can identify retries without rejecting the payload.",
    "date_created": "2020-12-11T13:17:16Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90029,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast 'CorrelationId' is empty",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nYou sent a broadcast request with an empty `CorrelationId` value. Provide a non-empty `CorrelationId` so Twilio can associate the broadcast request with your application context.\n\n### Possible causes\n\n- The `CorrelationId` field was included in the request, but its value was an empty string\n- Your application trimmed or cleared the `CorrelationId` value before sending the request\n- A variable used to populate `CorrelationId` was unset, null, or resolved to an empty value in your request-building logic\n\n### Possible solutions\n\n- Set `CorrelationId` to a non-empty string before you send the broadcast request\n- Validate request payloads in your application so empty string values are rejected before submission\n- Review any templating, serialization, or variable-mapping logic that populates `CorrelationId`\n- If you do not need application correlation for this request, remove the field only if the API operation allows it. Otherwise, send a valid non-empty value\n\n#### Additional resources\n\n- [Twilio Events documentation](/docs/events)\n- [Twilio APIs](/docs/usage/requests-to-twilio)\n",
    "causes": "* The `CorrelationId` field was included in the request, but its value was an empty string\n* Your application trimmed or cleared the `CorrelationId` value before sending the request\n* A variable used to populate `CorrelationId` was unset, null, or resolved to an empty value in your request-building logic",
    "solutions": "* Set `CorrelationId` to a non-empty string before you send the broadcast request\n* Validate request payloads in your application so empty string values are rejected before submission\n* Review any templating, serialization, or variable-mapping logic that populates `CorrelationId`\n* If you do not need application correlation for this request, remove the field only if the API operation allows it. Otherwise, send a valid non-empty value",
    "description": "You sent a broadcast request with an empty `CorrelationId` value. Provide a non-empty `CorrelationId` so Twilio can associate the broadcast request with your application context.",
    "date_created": "2020-12-11T13:19:12Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90030,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast 'CorrelationId' is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when your Notify Broadcast request includes a `CorrelationId` value that exceeds the maximum length accepted by the API.\n\n### Possible causes\n\n- The `CorrelationId` value in the Broadcast request is longer than the allowed limit.\n- Your application generated a `CorrelationId` from a long string, token, or concatenated identifier.\n- The request includes one or more `CorrelationId` values that were not length-checked before the API call was sent.\n\n### Possible solutions\n\n- Shorten the `CorrelationId` value and resend the request.\n- Generate compact correlation values for Broadcast requests instead of passing full payload data or long combined identifiers.\n- Validate the length of each `CorrelationId` in your application before you send the request.\n- If the request fails, review the API response and update the Broadcast payload before retrying.\n\n#### Additional resources\n\n- [Notify API Notification Resource](/docs/notify/api/notification-resource)\n- [Sending and Receiving Notifications](/docs/notify/send-notifications)\n- [Troubleshooting Issues with Twilio Notify](https://help.twilio.com/articles/115016131208-Troubleshooting-Issues-with-Twilio-Notify)\n",
    "causes": "* The `CorrelationId` value in the Broadcast request is longer than the allowed limit.\n* Your application generated a `CorrelationId` from a long string, token, or concatenated identifier.\n* The request includes one or more `CorrelationId` values that were not length-checked before the API call was sent.",
    "solutions": "* Shorten the `CorrelationId` value and resend the request.\n* Generate compact correlation values for Broadcast requests instead of passing full payload data or long combined identifiers.\n* Validate the length of each `CorrelationId` in your application before you send the request.\n* If the request fails, review the API response and update the Broadcast payload before retrying.",
    "description": "This error occurs when your Notify Broadcast request includes a `CorrelationId` value that exceeds the maximum length accepted by the API.",
    "date_created": "2020-12-11T13:20:18Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90031,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast Recipients list is empty [deprecated] ",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis deprecated error appears when the Broadcast `Recipients` list is empty.\n\n### Possible causes\n\n- You sent a Broadcast request without any recipients.\n- The `Recipients` list in the request payload was empty.\n\n### Possible solutions\n\n- Add at least one recipient to the Broadcast request before you send it.\n- Verify that the `Recipients` list is populated and is not being cleared by your application logic.\n\n#### Additional resources\n\n- [Programmable Messaging](/docs/messaging)\n",
    "causes": "* You sent a Broadcast request without any recipients.\n* The `Recipients` list in the request payload was empty.",
    "solutions": "* Add at least one recipient to the Broadcast request before you send it.\n* Verify that the `Recipients` list is populated and is not being cleared by your application logic.",
    "description": "This deprecated error appears when the Broadcast `Recipients` list is empty.",
    "date_created": "2020-12-11T13:22:29Z",
    "last_updated": "2026-03-25T13:34:46Z"
  },
  {
    "code": 90032,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast recipient's 'to' is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not process the broadcast recipient because the `to` value is not in a valid format. Set `to` to a channel and address pair in the format `channel:address`.\n\n### Possible causes\n\n- The `to` value does not include the required colon separator between the channel and address\n- The channel name in `to` is missing or misspelled\n- The address portion of `to` is empty\n- The address does not match the expected format for the selected channel\n- The request sends the recipient object with an incorrectly structured or malformed `to` field\n\n### Possible solutions\n\n- Update the recipient `to` value to use the required `channel:address` format\n- Verify that the channel is valid for your Notify integration, such as `sms`, `whatsapp`, `facebook-messenger`, or another supported channel\n- Confirm that the address is valid for the selected channel, such as an E.164 phone number for `sms` or `whatsapp`\n- Review your request payload before sending it and reject recipients with missing or malformed `to` values\n- If you generate recipient objects programmatically, add validation to ensure every `to` value includes both a channel and an address\n\n#### Additional resources\n\n- [Notify API overview](/docs/notify/api)\n- [E.164 formatting](/docs/glossary/what-e164)\n- [WhatsApp with Twilio](/docs/whatsapp)\n",
    "causes": "* The `to` value does not include the required colon separator between the channel and address\n* The channel name in `to` is missing or misspelled\n* The address portion of `to` is empty\n* The address does not match the expected format for the selected channel\n* The request sends the recipient object with an incorrectly structured or malformed `to` field",
    "solutions": "* Update the recipient `to` value to use the required `channel:address` format\n* Verify that the channel is valid for your Notify integration, such as `sms`, `whatsapp`, `facebook-messenger`, or another supported channel\n* Confirm that the address is valid for the selected channel, such as an E.164 phone number for `sms` or `whatsapp`\n* Review your request payload before sending it and reject recipients with missing or malformed `to` values\n* If you generate recipient objects programmatically, add validation to ensure every `to` value includes both a channel and an address",
    "description": "Twilio could not process the broadcast recipient because the `to` value is not in a valid format. Set `to` to a channel and address pair in the format `channel:address`.",
    "date_created": "2020-12-11T13:26:17Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90033,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast recipient's 'to' is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe recipient `to` value in your Notify broadcast request is longer than the maximum length allowed for the selected channel. Twilio rejects the request when a destination address does not match the expected format or exceeds channel limits.\n\n### Possible causes\n\n- You sent a phone number, identity, or device address that is longer than the channel supports.\n- The `to` value includes extra characters such as spaces, formatting symbols, or concatenated data that make the address invalid.\n- You used the wrong destination type for the channel, such as sending a non-phone-number value for an `sms` or `mms` notification.\n- Your application passed an unvalidated user-supplied value into the recipient list.\n\n### Possible solutions\n\n- Validate each recipient address before you send the broadcast.\n- For `sms` and `mms`, send the destination as a valid phone number in `E.164` format.\n- Make sure the `to` value matches the channel you selected and remove any unsupported prefixes, labels, or appended metadata.\n- Review your application logic for string concatenation or serialization issues that can make the destination value too long.\n- If you are sending to identities or bindings, confirm that the stored address or identity value is within the limits required by your Notify integration.\n\n#### Additional resources\n\n- [Notify API overview](/docs/notify/api)\n- [Phone number formatting in E.164](/docs/glossary/what-e164)\n- [Using Twilio phone numbers](/docs/phone-numbers)\n",
    "causes": "* You sent a phone number, identity, or device address that is longer than the channel supports.\n* The `to` value includes extra characters such as spaces, formatting symbols, or concatenated data that make the address invalid.\n* You used the wrong destination type for the channel, such as sending a non-phone-number value for an `sms` or `mms` notification.\n* Your application passed an unvalidated user-supplied value into the recipient list.",
    "solutions": "* Validate each recipient address before you send the broadcast.\n* For `sms` and `mms`, send the destination as a valid phone number in `E.164` format.\n* Make sure the `to` value matches the channel you selected and remove any unsupported prefixes, labels, or appended metadata.\n* Review your application logic for string concatenation or serialization issues that can make the destination value too long.\n* If you are sending to identities or bindings, confirm that the stored address or identity value is within the limits required by your Notify integration.",
    "description": "The recipient `to` value in your Notify broadcast request is longer than the maximum length allowed for the selected channel. Twilio rejects the request when a destination address does not match the expected format or exceeds channel limits.",
    "date_created": "2020-12-11T13:28:46Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90034,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'BroadcastStatusCallbackUrl' is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nTwilio returns this error when the `BroadcastStatusCallbackUrl` value in your bulk messaging request exceeds the allowed length. Twilio validates bulk messaging requests before processing them, so shorten the callback URL and resend the request.\n\n### Possible causes\n- The `BroadcastStatusCallbackUrl` value is longer than Twilio accepts for a request.\n- The callback URL includes long query parameters, fragments, or encoded state.\n- Your application appends campaign, recipient, or tracking data directly to `BroadcastStatusCallbackUrl`, which makes the URL too long.\n\n### Possible solutions\n- Shorten the `BroadcastStatusCallbackUrl` value before you send the request.\n- Remove unnecessary query parameters, fragments, and embedded state from the callback URL.\n- Keep the callback endpoint stable and use the `operationId` returned by the Bulk Messaging API to correlate status updates in your application.\n- If you need operation updates without encoding extra context in the URL, subscribe to Bulk Messaging Events and map events to your internal records by `operationId` or `messageId`.\n\n#### Additional resources\n- [Bulk Messaging API](/docs/bulk-messaging)\n- [Operations and Message Tracking](/docs/bulk-messaging/operations-and-message-tracking)\n- [Bulk Messaging Events](/docs/bulk-messaging/events)\n",
    "causes": "* The `BroadcastStatusCallbackUrl` value is longer than Twilio accepts for a request.\n* The callback URL includes long query parameters, fragments, or encoded state.\n* Your application appends campaign, recipient, or tracking data directly to `BroadcastStatusCallbackUrl`, which makes the URL too long.",
    "solutions": "* Shorten the `BroadcastStatusCallbackUrl` value before you send the request.\n* Remove unnecessary query parameters, fragments, and embedded state from the callback URL.\n* Keep the callback endpoint stable and use the `operationId` returned by the Bulk Messaging API to correlate status updates in your application.\n* If you need operation updates without encoding extra context in the URL, subscribe to Bulk Messaging Events and map events to your internal records by `operationId` or `messageId`.",
    "description": "Twilio returns this error when the `BroadcastStatusCallbackUrl` value in your bulk messaging request exceeds the allowed length. Twilio validates bulk messaging requests before processing them, so shorten the callback URL and resend the request.",
    "date_created": "2020-12-11T15:42:17Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90035,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast 'MessageStatusCallbackUrl' is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when your broadcast request includes a `MessageStatusCallbackUrl` value that exceeds the length Twilio accepts. Twilio uses status callback URLs to send outbound message status updates to your webhook endpoint, and invalid request data is rejected during request validation.\n\n### Possible causes\n\n- The `MessageStatusCallbackUrl` value is longer than Twilio accepts for a broadcast request.\n- The callback URL includes unnecessary query parameters, fragments, or other appended data that increase its total length. Twilio webhook URLs follow standard URL syntax, and optional connection override fragments also add characters to the URL.\n- Your application generates a different callback URL for each request instead of reusing a shorter endpoint. This is a likely cause when request-specific state is being added directly to the URL.\n\n### Possible solutions\n\n- Shorten the value you send in `MessageStatusCallbackUrl`.\n- Remove unnecessary query parameters, path segments, and webhook connection override fragments from the callback URL. Only include override settings when you need them.\n- Use a shorter reusable webhook endpoint for message status events, then correlate each event in your application by using the identifiers Twilio provides for message tracking such as `operationId` and `messageId`.\n- After shortening the URL, make sure it still uses a valid `http` or `https` URL format and a valid hostname before you retry the request.\n\n#### Additional resources\n- [Bulk Messaging API](/docs/bulk-messaging)\n- [Operations and Message Tracking](/docs/bulk-messaging/operations-and-message-tracking)\n- [Messaging Webhooks](/docs/usage/webhooks/messaging-webhooks)\n",
    "causes": "* The `MessageStatusCallbackUrl` value is longer than Twilio accepts for a broadcast request.\n* The callback URL includes unnecessary query parameters, fragments, or other appended data that increase its total length. Twilio webhook URLs follow standard URL syntax, and optional connection override fragments also add characters to the URL.\n* Your application generates a different callback URL for each request instead of reusing a shorter endpoint. This is a likely cause when request-specific state is being added directly to the URL.",
    "solutions": "* Shorten the value you send in `MessageStatusCallbackUrl`.\n* Remove unnecessary query parameters, path segments, and webhook connection override fragments from the callback URL. Only include override settings when you need them.\n* Use a shorter reusable webhook endpoint for message status events, then correlate each event in your application by using the identifiers Twilio provides for message tracking such as `operationId` and `messageId`.\n* After shortening the URL, make sure it still uses a valid `http` or `https` URL format and a valid hostname before you retry the request.",
    "description": "This error occurs when your broadcast request includes a `MessageStatusCallbackUrl` value that exceeds the length Twilio accepts. Twilio uses status callback URLs to send outbound message status updates to your webhook endpoint, and invalid request data is rejected during request validation.",
    "date_created": "2020-12-11T15:43:20Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90036,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast recipient's 'body' is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nYou receive this error when a broadcast request includes a recipient object whose `body` value is longer than the allowed limit. For Messaging API requests, `Body` can be up to 1,600 characters. SMS content that includes non-`GSM-7` characters, such as emoji or smart quotes, can also increase message size and affect how the message is segmented.\n\n### Possible causes\n\n- One or more recipient objects include a `body` value that exceeds the allowed character limit.\n- Personalized or templated content expands the final `body` beyond the supported limit for a recipient.\n- The message includes Unicode characters that require `UCS-2` encoding, which reduces the number of characters available in each SMS segment.\n- The broadcast payload was generated without validating the final rendered message length for each recipient.\n\n### Possible solutions\n\n- Shorten the `body` value in each recipient object before you send the broadcast.\n- Keep the final message body at 1,600 characters or fewer.\n- If you personalize content per recipient, render and validate each recipient's final `body` before submitting the request.\n- Remove unnecessary text, links, or repeated content that increases the message length.\n- If you are sending SMS, avoid unnecessary Unicode characters when possible and keep messages closer to 320 characters for better deliverability and readability.\n\n#### Additional resources\n- [Programmable Messaging](/docs/messaging)\n- [Messages resource](/docs/messaging/api/message-resource)\n- [How long can a message be?](/docs/glossary/what-sms-character-limit)\n",
    "causes": "* One or more recipient objects include a `body` value that exceeds the allowed character limit.\n* Personalized or templated content expands the final `body` beyond the supported limit for a recipient.\n* The message includes Unicode characters that require `UCS-2` encoding, which reduces the number of characters available in each SMS segment.\n* The broadcast payload was generated without validating the final rendered message length for each recipient.",
    "solutions": "* Shorten the `body` value in each recipient object before you send the broadcast.\n* Keep the final message body at 1,600 characters or fewer.\n* If you personalize content per recipient, render and validate each recipient's final `body` before submitting the request.\n* Remove unnecessary text, links, or repeated content that increases the message length.\n* If you are sending SMS, avoid unnecessary Unicode characters when possible and keep messages closer to 320 characters for better deliverability and readability.",
    "description": "You receive this error when a broadcast request includes a recipient object whose `body` value is longer than the allowed limit. For Messaging API requests, `Body` can be up to 1,600 characters. SMS content that includes non-`GSM-7` characters, such as emoji or smart quotes, can also increase message size and affect how the message is segmented.",
    "date_created": "2020-12-11T15:46:28Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90037,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast has too many 'CorrelationId' items",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis error occurs when your Broadcast request includes more `CorrelationId` values than the API accepts.\n\n### Possible causes\n- Your request includes too many `CorrelationId` items.\n- Your application adds duplicate or repeated `CorrelationId` values to the same Broadcast request.\n- Your request-building logic appends `CorrelationId` values in a loop and exceeds the allowed request limit.\n\n### Possible solutions\n- Reduce the number of `CorrelationId` values you send in a single Broadcast request.\n- Remove duplicate `CorrelationId` entries before you submit the request.\n- Split large Broadcast operations into multiple requests so each request stays within the accepted limit.\n- Review the code that builds your Broadcast payload and make sure it only adds the `CorrelationId` values you intend to send.\n- If you are building a new notifications workflow, use Programmable Messaging for SMS notifications. For push notifications, integrate directly with APNs or FCM. Notify is deprecated.\n\n#### Additional resources\n- [Notify overview](/docs/notify)\n- [Notification Resource](/docs/notify/api/notification-resource)\n- [Notify limits](/docs/notify/notify-limits)\n",
    "causes": "* Your request includes too many `CorrelationId` items.\n* Your application adds duplicate or repeated `CorrelationId` values to the same Broadcast request.\n* Your request-building logic appends `CorrelationId` values in a loop and exceeds the allowed request limit.",
    "solutions": "* Reduce the number of `CorrelationId` values you send in a single Broadcast request.\n* Remove duplicate `CorrelationId` entries before you submit the request.\n* Split large Broadcast operations into multiple requests so each request stays within the accepted limit.\n* Review the code that builds your Broadcast payload and make sure it only adds the `CorrelationId` values you intend to send.\n* If you are building a new notifications workflow, use Programmable Messaging for SMS notifications. For push notifications, integrate directly with APNs or FCM. Notify is deprecated.",
    "description": "This error occurs when your Broadcast request includes more `CorrelationId` values than the API accepts.",
    "date_created": "2020-12-11T15:49:06Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90038,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'BroadcastStatusCallbackUrl' is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n`BroadcastStatusCallbackUrl` is not a valid callback URL for a Notify Broadcast request. Provide a fully qualified `http` or `https` URL that Twilio can request to send broadcast status updates.\n\n### Possible causes\n\n- `BroadcastStatusCallbackUrl` is missing a valid URL scheme\n- `BroadcastStatusCallbackUrl` uses a scheme other than `http` or `https`\n- `BroadcastStatusCallbackUrl` is not a fully qualified URL\n- The URL contains formatting errors, such as invalid characters or an incomplete host name\n\n### Possible solutions\n\n- Set `BroadcastStatusCallbackUrl` to a complete `http` or `https` URL\n- Verify that the URL includes the protocol, host, and path if needed\n- Remove unsupported schemes and update the value to use `http` or `https`\n- Validate the callback URL in your application before you send the Broadcast request\n\n#### Additional resources\n\n- [Notify API reference](/docs/notify/api)\n- [Status callbacks](/docs/usage/webhooks)\n- [Webhook request guide](/docs/usage/webhooks/webhooks-overview)\n",
    "causes": "* `BroadcastStatusCallbackUrl` is missing a valid URL scheme\n* `BroadcastStatusCallbackUrl` uses a scheme other than `http` or `https`\n* `BroadcastStatusCallbackUrl` is not a fully qualified URL\n* The URL contains formatting errors, such as invalid characters or an incomplete host name",
    "solutions": "* Set `BroadcastStatusCallbackUrl` to a complete `http` or `https` URL\n* Verify that the URL includes the protocol, host, and path if needed\n* Remove unsupported schemes and update the value to use `http` or `https`\n* Validate the callback URL in your application before you send the Broadcast request",
    "description": "`BroadcastStatusCallbackUrl` is not a valid callback URL for a Notify Broadcast request. Provide a fully qualified `http` or `https` URL that Twilio can request to send broadcast status updates.",
    "date_created": "2020-12-11T15:51:11Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90039,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast 'MessageStatusCallbackUrl' is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when you send a Bulk Messaging request with a `MessageStatusCallbackUrl` that is not a valid absolute callback URL. Twilio accepts only `http://` and `https://` schemas for messaging webhook URLs, and invalid request input is rejected as a `400` error.\n\n### Possible causes\n\n- The `MessageStatusCallbackUrl` uses an unsupported schema, or it does not include `http://` or `https://`.\n- The `MessageStatusCallbackUrl` is not a fully qualified absolute URL, such as a relative path or a URL missing a hostname.\n- The `MessageStatusCallbackUrl` contains malformed characters or improperly encoded URL components, which makes the callback URL invalid.\n\n### Possible solutions\n\n- Set `MessageStatusCallbackUrl` to a fully qualified `http://` or `https://` URL.\n- Verify that the callback URL includes a valid protocol, hostname, and any required path or query parameters in a valid URL format.\n- Use a publicly reachable endpoint for your callback URL. If you are testing locally, expose your application through a public HTTPS tunnel before sending the request.\n- Resubmit the broadcast request after you correct the `MessageStatusCallbackUrl` value.\n\n#### Additional resources\n- [Getting started with Twilio Bulk Messaging](/docs/bulk-messaging/getting-started)\n- [Operations and Message Tracking](/docs/bulk-messaging/operations-and-message-tracking)\n- [Webhooks Overview](/docs/usage/webhooks/webhooks-overview)\n",
    "causes": "* The `MessageStatusCallbackUrl` uses an unsupported schema, or it does not include `http://` or `https://`.\n* The `MessageStatusCallbackUrl` is not a fully qualified absolute URL, such as a relative path or a URL missing a hostname.\n* The `MessageStatusCallbackUrl` contains malformed characters or improperly encoded URL components, which makes the callback URL invalid.",
    "solutions": "* Set `MessageStatusCallbackUrl` to a fully qualified `http://` or `https://` URL.\n* Verify that the callback URL includes a valid protocol, hostname, and any required path or query parameters in a valid URL format.\n* Use a publicly reachable endpoint for your callback URL. If you are testing locally, expose your application through a public HTTPS tunnel before sending the request.\n* Resubmit the broadcast request after you correct the `MessageStatusCallbackUrl` value.",
    "description": "This error occurs when you send a Bulk Messaging request with a `MessageStatusCallbackUrl` that is not a valid absolute callback URL. Twilio accepts only `http://` and `https://` schemas for messaging webhook URLs, and invalid request input is rejected as a `400` error.",
    "date_created": "2020-12-11T15:53:24Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90040,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast 'MediaUrls' list has too many items",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when your broadcast request includes more `MediaUrl` values than Twilio accepts. In Notify, SMS channel-specific media is sent in the `sms.media_urls` JSON array, and Twilio supports up to 10 media files per message.\n\n### Possible causes\n\n- Your request includes more than the supported number of `MediaUrl` values for a single message.\n- Your `sms.media_urls` JSON array contains too many items.\n- Your application repeats `MediaUrl` fields or appends media URLs dynamically without enforcing the per-message media limit before sending the request.\n\n### Possible solutions\n\n- Reduce the number of `MediaUrl` values in the request so the message includes no more than 10 media files.\n- If you are using Notify channel-specific payloads, place media in the `sms.media_urls` JSON array.\n- Validate the final media count in your application before you submit the broadcast request.\n- Verify that the combined size of the message and its media stays within the destination channel limit before you retry the request.\n- If you are starting a new implementation for SMS notifications, use Programmable Messaging for SMS notifications because Notify is deprecated and no longer supported.\n\n#### Additional resources\n- [Notification resource](/docs/notify/api/notification-resource)\n- [Media subresource](/docs/messaging/api/media-resource)\n- [Accepted content types for media](/docs/messaging/guides/accepted-mime-types)\n",
    "causes": "* Your request includes more than the supported number of `MediaUrl` values for a single message.\n* Your `sms.media_urls` JSON array contains too many items.\n* Your application repeats `MediaUrl` fields or appends media URLs dynamically without enforcing the per-message media limit before sending the request.",
    "solutions": "* Reduce the number of `MediaUrl` values in the request so the message includes no more than 10 media files.\n* If you are using Notify channel-specific payloads, place media in the `sms.media_urls` JSON array.\n* Validate the final media count in your application before you submit the broadcast request.\n* Verify that the combined size of the message and its media stays within the destination channel limit before you retry the request.\n* If you are starting a new implementation for SMS notifications, use Programmable Messaging for SMS notifications because Notify is deprecated and no longer supported.",
    "description": "This error occurs when your broadcast request includes more `MediaUrl` values than Twilio accepts. In Notify, SMS channel-specific media is sent in the `sms.media_urls` JSON array, and Twilio supports up to 10 media files per message.",
    "date_created": "2020-12-11T15:56:24Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 90041,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Broadcast 'MediaUrl' field is too long",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not create or send the broadcast because at least one `MediaUrl` value in your request exceeds the supported length. This error usually occurs when your application passes a very long media link, often because of excessive query parameters, tracking values, or a pre-signed URL.\n\n### Possible causes\n\n- One of the `MediaUrl` values in the broadcast request is longer than the allowed limit.\n- Your application generated a media URL with long query string parameters or temporary access tokens.\n- You included a redirecting or signed URL that expanded beyond the supported request size for the `MediaUrl` field.\n- The request payload contains an incorrectly formatted media link that caused the final `MediaUrl` value to be longer than expected.\n\n### Possible solutions\n\n- Shorten the `MediaUrl` value before you send the broadcast request.\n- Host the media at a stable, publicly accessible URL that does not require long query parameters.\n- Remove unnecessary tracking parameters, signatures, or redirect layers from the media link.\n- Verify that each `MediaUrl` points directly to the media file you want to send.\n- If you generate URLs programmatically, review your application logic to ensure it does not append duplicate parameters or unexpected encoded data.\n- Test the request again with a shorter media link to confirm the broadcast can be created successfully.\n\n#### Additional resources\n\n- [Send media in Programmable Messaging](/docs/messaging/guides/webhook-request)\n- [Notify API reference](/docs/notify/api)\n- [Get help with Twilio error logs](https://help.twilio.com/articles/360011045133-Viewing-Error-Logs-in-Twilio-Console)\n",
    "causes": "* One of the `MediaUrl` values in the broadcast request is longer than the allowed limit.\n* Your application generated a media URL with long query string parameters or temporary access tokens.\n* You included a redirecting or signed URL that expanded beyond the supported request size for the `MediaUrl` field.\n* The request payload contains an incorrectly formatted media link that caused the final `MediaUrl` value to be longer than expected.",
    "solutions": "* Shorten the `MediaUrl` value before you send the broadcast request.\n* Host the media at a stable, publicly accessible URL that does not require long query parameters.\n* Remove unnecessary tracking parameters, signatures, or redirect layers from the media link.\n* Verify that each `MediaUrl` points directly to the media file you want to send.\n* If you generate URLs programmatically, review your application logic to ensure it does not append duplicate parameters or unexpected encoded data.\n* Test the request again with a shorter media link to confirm the broadcast can be created successfully.",
    "description": "Twilio could not create or send the broadcast because at least one `MediaUrl` value in your request exceeds the supported length. This error usually occurs when your application passes a very long media link, often because of excessive query parameters, tracking values, or a pre-signed URL.",
    "date_created": "2020-12-11T15:58:37Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Autopilot Actions JSON",
    "secondary_message": null,
    "product": "Understand",
    "products_used": [
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nAutopilot Actions Configured on the Task are Invalid\n\n### Possible causes\n\nActions JSON does not comply with the Actions Schema (https://carnelian-neanderthal-8008.twil.io/assets/ActionsSchema.json)\n\n### Possible solutions\n\nTest your JSON response against the Actions Schema (https://carnelian-neanderthal-8008.twil.io/assets/ActionsSchema.json)\n",
    "causes": "Actions JSON does not comply with the Actions Schema (https://carnelian-neanderthal-8008.twil.io/assets/ActionsSchema.json)",
    "solutions": "Test your JSON response against the Actions Schema (https://carnelian-neanderthal-8008.twil.io/assets/ActionsSchema.json)",
    "description": "Autopilot Actions Configured on the Task are Invalid",
    "date_created": "2019-08-07T00:57:57Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unique Name Already Exists",
    "secondary_message": null,
    "product": "Understand",
    "products_used": [
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create or update a Conversation Intelligence (classic) Intelligence Service with a `UniqueName` that is already assigned to another Service. Twilio requires `uniqueName` when you create a Service, uses it as a unique and addressable name in addition to the Service `sid`, and lets you fetch a Service by its `sid` or `unique_name`.\n\n### Possible causes\n\n- The `UniqueName` in your request already belongs to an existing Intelligence Service.\n- You tried to update a Service and set `uniqueName` to a value that is already assigned to another Service.\n- A previous create request already succeeded, and a retry submitted the same `UniqueName` again.\n\n### Possible solutions\n\n- Use a different `UniqueName` when you create or update the Service.\n- Fetch the existing Service by `sid` or `unique_name`, or fetch multiple Services, to confirm which name is already in use before retrying the request.\n- If you want to keep using the existing Service, update that Service instead of creating another one with the same `UniqueName`.\n- If the existing Service is no longer needed, delete it and then retry the request.\n\n#### Additional resources\n\n- [Conversation Intelligence (classic) Service Resource](/docs/conversation-intelligence-classic/api/service-resource)\n- [Conversation Intelligence (classic) onboarding guide](/docs/conversation-intelligence-classic/onboarding)\n- [Conversation Intelligence (classic) API overview](/docs/conversation-intelligence-classic/api)\n",
    "causes": "* The `UniqueName` in your request already belongs to an existing Intelligence Service.\n* You tried to update a Service and set `uniqueName` to a value that is already assigned to another Service.\n* A previous create request already succeeded, and a retry submitted the same `UniqueName` again.",
    "solutions": "* Use a different `UniqueName` when you create or update the Service.\n* Fetch the existing Service by `sid` or `unique_name`, or fetch multiple Services, to confirm which name is already in use before retrying the request.\n* If you want to keep using the existing Service, update that Service instead of creating another one with the same `UniqueName`.\n* If the existing Service is no longer needed, delete it and then retry the request.",
    "description": "This error occurs when you create or update a Conversation Intelligence (classic) Intelligence Service with a `UniqueName` that is already assigned to another Service. Twilio requires `uniqueName` when you create a Service, uses it as a unique and addressable name in addition to the Service `sid`, and lets you fetch a Service by its `sid` or `unique_name`.",
    "date_created": "2020-05-29T00:14:46Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 90102,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Assistant failure to start collection",
    "secondary_message": null,
    "product": "Understand",
    "products_used": [
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nAutopilot was unable to start the collection\n\n### Possible causes\n\nAn internal error rendered us unable to start the collection. Apologies!\n\n### Possible solutions\n\nIf the error persists, [contact us](/help/contact) to figure out what has happened and how to fix it. Note the time of the error and what you were trying to do when it occurred. Thank you!\n",
    "causes": "An internal error rendered us unable to start the collection. Apologies!",
    "solutions": "If the error persists, [contact us](/help/contact) to figure out what has happened and how to fix it. Note the time of the error and what you were trying to do when it occurred. Thank you!",
    "description": "Autopilot was unable to start the collection",
    "date_created": "2020-07-02T23:29:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90103,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Error processing answer during collection",
    "secondary_message": null,
    "product": "Understand",
    "products_used": [
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nError processing answer during collection\n\n### Possible causes\n\nAn internal error rendered us unable to process the answer. Apologies!\n\n### Possible solutions\n\nIf the error persists, [contact us](/help/contact) to figure out what has happened and how to fix it. Note the time of the error and what you were trying to do when it occurred. Thank you!\n",
    "causes": "An internal error rendered us unable to process the answer. Apologies!",
    "solutions": "If the error persists, [contact us](/help/contact) to figure out what has happened and how to fix it. Note the time of the error and what you were trying to do when it occurred. Thank you!",
    "description": "Error processing answer during collection",
    "date_created": "2020-07-02T23:29:36Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90104,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Collect Field Type",
    "secondary_message": null,
    "product": "Understand",
    "products_used": [
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nThe Field Type in Collect JSON is Invalid\n\n### Possible causes\n\nCollect Question has an Invalid Field Type\n\n### Possible solutions\n\nPlease ensure the type in the Collect Question is valid.\n",
    "causes": "Collect Question has an Invalid Field Type",
    "solutions": "Please ensure the type in the Collect Question is valid.",
    "description": "The Field Type in Collect JSON is Invalid",
    "date_created": "2020-07-14T19:19:55Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 90403,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "[Autopilot] Signature validation failed",
    "secondary_message": null,
    "product": "Understand",
    "products_used": [
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nThis error occurs when Twilio cannot validate an Autopilot assistant signature because the assistant and the Messaging Service or Voice service are owned by different Twilio accounts that do not share a parent and subaccount relationship. Twilio keeps resources separated by account, so the service account must own the assistant directly or through the same account hierarchy.\n\n### Possible causes\n\n- The Autopilot assistant was created in a different Twilio account than the Messaging Service or Voice service.\n- The assistant account and the service account are unrelated accounts instead of a main account and one of its subaccounts.\n- You are working with subaccounts, but the assistant and service were created or managed under different account credentials, so they are not in the same account hierarchy.\n\n### Possible solutions\n\n- Reconfigure the integration so the Autopilot assistant and the Messaging Service or Voice service belong to the same Twilio account.\n- If the service must stay in its current account, move the assistant by exporting it and importing it into that account or into one of its subaccounts.\n- Review your account hierarchy before reconnecting the assistant. A main account can own subaccounts, but resources remain separated by account and must be managed from the correct account context.\n\n#### Additional resources\n\n- [Subaccounts](/docs/iam/api/subaccounts)\n- [Webhooks security](/docs/usage/webhooks/webhooks-security)\n- [Messaging Services](/docs/messaging/services)\n",
    "causes": "* The Autopilot assistant was created in a different Twilio account than the Messaging Service or Voice service.\n* The assistant account and the service account are unrelated accounts instead of a main account and one of its subaccounts.\n* You are working with subaccounts, but the assistant and service were created or managed under different account credentials, so they are not in the same account hierarchy.",
    "solutions": "* Reconfigure the integration so the Autopilot assistant and the Messaging Service or Voice service belong to the same Twilio account.\n* If the service must stay in its current account, move the assistant by exporting it and importing it into that account or into one of its subaccounts.\n* Review your account hierarchy before reconnecting the assistant. A main account can own subaccounts, but resources remain separated by account and must be managed from the correct account context.",
    "description": "This error occurs when Twilio cannot validate an Autopilot assistant signature because the assistant and the Messaging Service or Voice service are owned by different Twilio accounts that do not share a parent and subaccount relationship. Twilio keeps resources separated by account, so the service account must own the assistant directly or through the same account hierarchy.",
    "date_created": "2021-12-13T21:35:13Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 91000,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sink could not be created",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nCreating sink failed due to bad configuration\n\n### Possible causes\n\n- Sink type is not Kinesis or Webhook\n- Sink Configuration is empty\n- Sink Configuration role-arn is empty\n- Sink Configuration arn is empty\n- Sink Configuration external\\_id is empty\n- Sink Configuration destination is empty\n- Sink Configuration method is empty\n- Sink Configuration batch\\_events is empty\n\n### Possible solutions\n\n- Description cannot be empty\n- Sink configuration values cannot be empty\n- Sink type must be Kinesis or Webhook\n",
    "causes": "* Sink type is not Kinesis or Webhook\n* Sink Configuration is empty\n* Sink Configuration role-arn is empty\n* Sink Configuration arn is empty\n* Sink Configuration external\\_id is empty\n* Sink Configuration destination is empty\n* Sink Configuration method is empty\n* Sink Configuration batch\\_events is empty",
    "solutions": "* Description cannot be empty\n* Sink configuration values cannot be empty\n* Sink type must be Kinesis or Webhook",
    "description": "Creating sink failed due to bad configuration",
    "date_created": "2020-09-16T15:33:10Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sink could not be found",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio returns this error when your Event Streams request references a sink that Twilio cannot find. In Event Streams, a sink is the destination for subscription data, and each sink is identified by a 34-character SID with the `DG` prefix.\n\n### Possible causes\n\n- The request used a sink `Sid` that does not match any existing Event Streams sink. Twilio fetches sink configurations by SID.\n- The sink was deleted, and your application is still using the deleted sink SID.\n- The request was sent with credentials for a different account or subaccount than the one that owns the sink. Twilio lists and returns sinks for the account associated with the request.\n\n### Possible solutions\n\n- List your sinks for the account making the request and confirm that the sink still exists before you fetch, update, or reference it.\n- Verify that the sink SID is copied exactly and that it is a 34-character sink SID with the `DG` prefix.\n- If the sink was deleted, create a new sink and update your application or subscription workflow to use the new sink SID.\n- If you use subaccounts, make the request with credentials for the account that owns the sink.\n\n#### Additional resources\n\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n- [Event Streams overview](/docs/events)\n",
    "causes": "* The request used a sink `Sid` that does not match any existing Event Streams sink. Twilio fetches sink configurations by SID.\n* The sink was deleted, and your application is still using the deleted sink SID.\n* The request was sent with credentials for a different account or subaccount than the one that owns the sink. Twilio lists and returns sinks for the account associated with the request.",
    "solutions": "* List your sinks for the account making the request and confirm that the sink still exists before you fetch, update, or reference it.\n* Verify that the sink SID is copied exactly and that it is a 34-character sink SID with the `DG` prefix.\n* If the sink was deleted, create a new sink and update your application or subscription workflow to use the new sink SID.\n* If you use subaccounts, make the request with credentials for the account that owns the sink.",
    "description": "Twilio returns this error when your Event Streams request references a sink that Twilio cannot find. In Event Streams, a sink is the destination for subscription data, and each sink is identified by a 34-character SID with the `DG` prefix.",
    "date_created": "2020-09-16T15:37:38Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 91002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Incorrect values for pagination",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n\n## Description\n\nThis error occurs when your Event Streams request includes invalid pagination values. Use `Page` and `PageSize` values that match the requirements for Event Streams list endpoints.\n\n### Possible causes\n\n- `Page` is negative or not an integer. Event Streams list endpoints require the page index to be an integer with a minimum value of `0`.\n- `PageSize` is not an integer. Event Streams list endpoints require an integer page size.\n- `PageSize` is outside the allowed range. Event Streams list endpoints support values from `1` through `1000`.\n\n### Possible solutions\n\n- Set `Page` to `0` or a larger integer, then retry the request.\n- Set `PageSize` to an integer between `1` and `1000`. If you do not need a custom value, use the default page size of `50`.\n- When you request the next page of results, use the pagination data returned by the API, such as `next_page_url` or the API-provided `pageToken`, instead of constructing paging values manually.\n\n#### Additional resources\n- [Event Streams overview](/docs/events)\n- [Sink resource API](/docs/events/event-streams/sink-resource)\n- [Subscription resource API](/docs/events/event-streams/subscription)\n",
    "causes": "* `Page` is negative or not an integer. Event Streams list endpoints require the page index to be an integer with a minimum value of `0`.\n* `PageSize` is not an integer. Event Streams list endpoints require an integer page size.\n* `PageSize` is outside the allowed range. Event Streams list endpoints support values from `1` through `1000`.",
    "solutions": "* Set `Page` to `0` or a larger integer, then retry the request.\n* Set `PageSize` to an integer between `1` and `1000`. If you do not need a custom value, use the default page size of `50`.\n* When you request the next page of results, use the pagination data returned by the API, such as `next_page_url` or the API-provided `pageToken`, instead of constructing paging values manually.",
    "description": "This error occurs when your Event Streams request includes invalid pagination values. Use `Page` and `PageSize` values that match the requirements for Event Streams list endpoints.",
    "date_created": "2020-09-16T15:45:21Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 91003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account reached the max sink limit",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create an Event Streams sink after your account has reached the maximum of 100 Sink resources. Delete an unused sink before you create another one.\n\n### Possible causes\n\n- Your account already has 100 Sink resources.\n- Unused or obsolete sinks are still present in your account.\n- A sink you planned to remove still has an associated subscription, so the sink cannot be deleted yet.\n\n### Possible solutions\n\n- List your existing sinks with `GET /v1/Sinks` and identify any sink you no longer need.\n- If an unused sink still has a subscription, delete the subscription first with `DELETE /v1/Subscriptions/{Sid}`.\n- Delete the unused sink with `DELETE /v1/Sinks/{Sid}`.\n- Retry your sink creation request after your account has fewer than 100 sinks.\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource API reference](/docs/events/event-streams/sink-resource)\n- [Subscription resource API reference](/docs/events/event-streams/subscription)\n",
    "causes": "* Your account already has 100 Sink resources.\n* Unused or obsolete sinks are still present in your account.\n* A sink you planned to remove still has an associated subscription, so the sink cannot be deleted yet.",
    "solutions": "* List your existing sinks with `GET /v1/Sinks` and identify any sink you no longer need.\n* If an unused sink still has a subscription, delete the subscription first with `DELETE /v1/Subscriptions/{Sid}`.\n* Delete the unused sink with `DELETE /v1/Sinks/{Sid}`.\n* Retry your sink creation request after your account has fewer than 100 sinks.",
    "description": "This error occurs when you try to create an Event Streams sink after your account has reached the maximum of 100 Sink resources. Delete an unused sink before you create another one.",
    "date_created": "2020-09-16T15:47:48Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 91004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Test event cannot be found",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to validate an Event Streams sink with a `testId` that Twilio cannot match to a previously created sink test event. Create the test event with the Sink Test resource before you submit its ID to the Sink Validate resource.\n\n### Possible causes\n\n- You called the Sink Validate resource before creating a test event for the sink.\n- The `testId` you submitted does not match the test event generated for the sink you are validating.\n- You used a different value instead of the test event ID from the request body sent to your webhook endpoint during sink validation.\n\n### Possible solutions\n\n- Create a test event for the sink before you call the Sink Validate resource.\n- If you validate a webhook sink connection, read the request body sent to your endpoint and submit the test event ID returned in that test event.\n- Confirm that the `testId` belongs to the same sink you are validating and that you copied it exactly.\n- For new integrations, skip sink validation unless you need it for an existing workflow. Sinks are `active` by default, but the validation endpoint still expects a valid `testId` if you call it.\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink Test resource](/docs/events/event-streams/sink-resource/test)\n- [Sink Validate resource](/docs/events/event-streams/sink-resource/validate)\n",
    "causes": "* You called the Sink Validate resource before creating a test event for the sink.\n* The `testId` you submitted does not match the test event generated for the sink you are validating.\n* You used a different value instead of the test event ID from the request body sent to your webhook endpoint during sink validation.",
    "solutions": "* Create a test event for the sink before you call the Sink Validate resource.\n* If you validate a webhook sink connection, read the request body sent to your endpoint and submit the test event ID returned in that test event.\n* Confirm that the `testId` belongs to the same sink you are validating and that you copied it exactly.\n* For new integrations, skip sink validation unless you need it for an existing workflow. Sinks are `active` by default, but the validation endpoint still expects a valid `testId` if you call it.",
    "description": "This error occurs when you try to validate an Event Streams sink with a `testId` that Twilio cannot match to a previously created sink test event. Create the test event with the Sink Test resource before you submit its ID to the Sink Validate resource.",
    "date_created": "2020-09-16T15:51:47Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 91005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Test ID is invalid",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTest ID is invalid\n\n### Possible causes\n\n- The provided test id is not the one that was sent to the configured stream\n\n### Possible solutions\n\n- Ensure test id is valid and exists in your stream\n",
    "causes": "* The provided test id is not the one that was sent to the configured stream",
    "solutions": "* Ensure test id is valid and exists in your stream",
    "description": "Test ID is invalid",
    "date_created": "2020-09-16T15:56:33Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The sink sid is in an invalid format",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nThe sink sid provided does not match the expected format (dg\\[0-9a-f]\\{32})\n\n### Possible causes\n\nThe id for the sink has to start with a DG, followed by a 32 character UUID\n\n### Possible solutions\n\nMake sure the sink sid is in the expected format\n",
    "causes": "The id for the sink has to start with a DG, followed by a 32 character UUID",
    "solutions": "Make sure the sink sid is in the expected format",
    "description": "The sink sid provided does not match the expected format (dg\\[0-9a-f]{32})",
    "date_created": "2020-09-16T16:06:33Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sink still in use",
    "secondary_message": "There are subscriptions using this sink",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nSink cannot be deleted because it is sill in use\n\n### Possible causes\n\n- There are subscriptions using this sink\n\n### Possible solutions\n\n- Delete all the subscriptions that use this sink. You can use the Event Streams - Subscriptions API endpoint to list all your subscriptions filtered by SinkSid and then delete them.\n",
    "causes": "* There are subscriptions using this sink",
    "solutions": "* Delete all the subscriptions that use this sink. You can use the Event Streams - Subscriptions API endpoint to list all your subscriptions filtered by SinkSid and then delete them.",
    "description": "Sink cannot be deleted because it is sill in use",
    "date_created": "2021-01-18T15:01:41Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91100,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Subscription could not be created",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nCreating subscription for sink failed\n\n### Possible causes\n\n- Sink is not in an active state\n\n### Possible solutions\n\n- Ensure sink is in an active state before creating subscription\n",
    "causes": "* Sink is not in an active state",
    "solutions": "* Ensure sink is in an active state before creating subscription",
    "description": "Creating subscription for sink failed",
    "date_created": "2020-09-16T14:20:49Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Subscription could not be created",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nSubscription creation failed\n\n### Possible causes\n\n- Event types are duplicated\n- Description is empty\n\n### Possible solutions\n\n- Ensure event types are not duplicated\n- Description is not empty\n",
    "causes": "* Event types are duplicated\n* Description is empty",
    "solutions": "* Ensure event types are not duplicated\n* Description is not empty",
    "description": "Subscription creation failed",
    "date_created": "2020-09-16T14:38:18Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Subscription could not be found",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nSubscription could not be found\n\n### Possible causes\n\n- Subscription does not exist\n- Invalid sid\n\n### Possible solutions\n\n- Make sure subscription exists\n- Pass an valid sid for the subscription\n",
    "causes": "* Subscription does not exist\n* Invalid sid",
    "solutions": "* Make sure subscription exists\n* Pass an valid sid for the subscription",
    "description": "Subscription could not be found",
    "date_created": "2020-09-16T14:42:34Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Event type list is empty",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nThis error occurs when you create or update an Event Streams subscription without providing any event types in the `Types` list. Event Streams subscriptions require a set of event type and schema version pairs, and the Subscription resource requires the `types` request parameter.\n\n### Possible causes\n\n- Your request to the Subscription resource included an empty `Types` array.\n- Your application built the subscription payload without adding any event type entries before sending the request.\n\n### Possible solutions\n\n- Add at least one event type to the `Types` parameter when you create the subscription. Each entry should identify an existing event type and can include a `schema_version`.\n- Verify the event types you want to subscribe to before sending the request. Use the Event Type resource to review available event types and schemas.\n- If you manage event types after creating the subscription, use the Subscribed Event resource to add event types to the subscription instead of submitting an empty list.\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Subscription resource](/docs/events/event-streams/subscription)\n- [Subscribed Event resource](/docs/events/event-streams/subscription/subscribed-event-api)\n",
    "causes": "* Your request to the Subscription resource included an empty `Types` array.\n* Your application built the subscription payload without adding any event type entries before sending the request.",
    "solutions": "* Add at least one event type to the `Types` parameter when you create the subscription. Each entry should identify an existing event type and can include a `schema_version`.\n* Verify the event types you want to subscribe to before sending the request. Use the Event Type resource to review available event types and schemas.\n* If you manage event types after creating the subscription, use the Subscribed Event resource to add event types to the subscription instead of submitting an empty list.",
    "description": "This error occurs when you create or update an Event Streams subscription without providing any event types in the `Types` list. Event Streams subscriptions require a set of event type and schema version pairs, and the Subscription resource requires the `types` request parameter.",
    "date_created": "2020-09-16T14:43:41Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 91104,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Event type not found",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nThis error occurs when your Event Streams request references a `type` value that Twilio cannot match to an available Event Type resource. Event Streams subscriptions are built from Event Type and schema version pairs, and you can list valid event types or fetch a specific one through the Event Type resource.\n\n### Possible causes\n\n- The `type` value in your request does not exactly match an Event Type resource returned by `GET /v1/Types` or `GET /v1/Types/{Type}`.\n- The event type name is misspelled or uses the wrong namespace, so Twilio cannot identify it as a valid Event Streams event type.\n- You are creating or updating a subscription, or adding a subscribed event, with an event type that is not available for use in Event Streams. Subscriptions and subscribed events both require valid event type values.\n- You are trying to use an event type whose status no longer allows new subscriptions or additions, such as `restricted` or `discontinued`.\n\n### Possible solutions\n\n- List available event types with `GET /v1/Types` and copy the exact `type` value from the response before you create or update a subscription.\n- Fetch the specific event type with `GET /v1/Types/{Type}` to confirm that the event type exists and that the identifier in your request is correct.\n- If you are creating a subscription or adding a subscribed event, update the request so the `type` value matches a valid Event Streams event type.\n- Verify the event type status before you add it to a subscription. If the event type is `restricted` or `discontinued`, replace it with a supported alternative.\n\n#### Additional resources\n\n- [Event Type resource](/docs/events/event-streams/event-type-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n- [Event types lifecycle](/docs/events/event-types-lifecycle)\n",
    "causes": "* The `type` value in your request does not exactly match an Event Type resource returned by `GET /v1/Types` or `GET /v1/Types/{Type}`.\n* The event type name is misspelled or uses the wrong namespace, so Twilio cannot identify it as a valid Event Streams event type.\n* You are creating or updating a subscription, or adding a subscribed event, with an event type that is not available for use in Event Streams. Subscriptions and subscribed events both require valid event type values.\n* You are trying to use an event type whose status no longer allows new subscriptions or additions, such as `restricted` or `discontinued`.",
    "solutions": "* List available event types with `GET /v1/Types` and copy the exact `type` value from the response before you create or update a subscription.\n* Fetch the specific event type with `GET /v1/Types/{Type}` to confirm that the event type exists and that the identifier in your request is correct.\n* If you are creating a subscription or adding a subscribed event, update the request so the `type` value matches a valid Event Streams event type.\n* Verify the event type status before you add it to a subscription. If the event type is `restricted` or `discontinued`, replace it with a supported alternative.",
    "description": "This error occurs when your Event Streams request references a `type` value that Twilio cannot match to an available Event Type resource. Event Streams subscriptions are built from Event Type and schema version pairs, and you can list valid event types or fetch a specific one through the Event Type resource.",
    "date_created": "2020-09-16T14:49:30Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 91201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Bad Request",
    "secondary_message": null,
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nIncorrect information provided in the request\n\n### Possible causes\n\n- The transform template is not a valid template\n- The JSON Schema is incorrect\n- The value of one of the entry params is not correct\n\n### Possible solutions\n\n- Recheck the input information and validate against examples\n",
    "causes": "* The transform template is not a valid template\n* The JSON Schema is incorrect\n* The value of one of the entry params is not correct",
    "solutions": "* Recheck the input information and validate against examples",
    "description": "Incorrect information provided in the request",
    "date_created": "2020-09-21T21:13:01Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91202,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Not Found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nResource is not found\n\n### Possible causes\n\n- Schema not found\n- Event Type Not found\n\n### Possible solutions\n\n- Recheck to see if the correct information is provided else\n- Recheck to verify is the resource actually exists\n",
    "causes": "* Schema not found\n* Event Type Not found",
    "solutions": "* Recheck to see if the correct information is provided else\n* Recheck to verify is the resource actually exists",
    "description": "Resource is not found",
    "date_created": "2020-09-21T21:16:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91203,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Method Not Allowed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis operation is not allowed against the resource\n\n### Possible causes\n\n- Deleting a schema is not allowed\n\n### Possible solutions\n\n- Avoid executing a `DELETE` action against the Schema resource\n",
    "causes": "* Deleting a schema is not allowed",
    "solutions": "* Avoid executing a `DELETE` action against the Schema resource",
    "description": "This operation is not allowed against the resource",
    "date_created": "2020-09-21T21:18:47Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 91300,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Event delivery to sink failed",
    "secondary_message": "Twilio attempted to deliver an event to your configured sink and did not receive a successful response.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this generic delivery failure error when Event Streams cannot deliver an event to your configured sink and the failure does not match a more specific error condition.\n\nThis error serves as a generic fallback and is recorded when Twilio cannot identify the precise root cause such as a timeout, connection error, or specific HTTP status.\n\n### Possible causes\n\n- A non-webhook sink (such as AWS Kinesis, Segment, etc) rejected the write payload due to invalid stream names, missing permissions, or invalid credentials.\n- The sink rejected or dropped the delivery payload under conditions that fall outside standard HTTP or protocol-specific error categorizations.\n\n### Possible solutions\n\n- Review your sink error logs for more granular errors that provide specific remediation steps.\n- Verify that the sink actually exists, is active, and is not in a deleting or paused state.\n- Ensure that the API keys, IAM roles, write permissions, or authorization tokens configured on the sink are active and have write access to the sink.\n\n### Related errors\n\n- [91305: Sink endpoint rejected the event](/docs/api/errors/91305)\n- [91306: Sink endpoint returned a server error](/docs/api/errors/91306)\n- [91307: Could not connect to sink endpoint](/docs/api/errors/91307)\n- [91308: Sink endpoint did not respond in time](/docs/api/errors/91308)\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* A non-webhook sink (such as AWS Kinesis, Segment, etc) rejected the write payload due to invalid stream names, missing permissions, or invalid credentials.\n* The sink rejected or dropped the delivery payload under conditions that fall outside standard HTTP or protocol-specific error categorizations.",
    "solutions": "* Review your sink error logs for more granular errors that provide specific remediation steps.\n* Verify that the sink actually exists, is active, and is not in a deleting or paused state.\n* Ensure that the API keys, IAM roles, write permissions, or authorization tokens configured on the sink are active and have write access to the sink.",
    "description": "Twilio records this generic delivery failure error when Event Streams cannot deliver an event to your configured sink and the failure does not match a more specific error condition. This error serves as a generic fallback and is recorded when Twilio cannot identify the precise root cause such as a timeout, connection error, or specific HTTP status.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-27T10:14:57-07:00"
  },
  {
    "code": 91301,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Sink is disabled",
    "secondary_message": "All events were dropped because the sink is disabled.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this error when Event Streams attempts to deliver an event to a sink with a `disabled` status.\n\nBecause the sink is disabled, Twilio immediately drops the event. Events dropped are lost permanently and cannot be queued, retried, or re-delivered.\n\n### Possible causes\n\n- The sink status was manually set to `disabled` via the API.\n- Twilio automatically set the sink to `disabled` after a period of sustained delivery failures.\n\n### Possible solutions\n\n- Ensure your target destination is online, reachable, and correctly configured to receive events.\n- If the sink was disabled automatically, check your error logs to identify and resolve the root cause. For more details, see [Error 91300: Event delivery to sink failed](/docs/api/errors/91300).\n- Once your destination is healthy, update the sink status back to `active` via the API to resume event delivery.\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* The sink status was manually set to `disabled` via the API.\n* Twilio automatically set the sink to `disabled` after a period of sustained delivery failures.",
    "solutions": "* Ensure your target destination is online, reachable, and correctly configured to receive events.\n* If the sink was disabled automatically, check your error logs to identify and resolve the root cause. For more details, see [Error 91300: Event delivery to sink failed](/docs/api/errors/91300).\n* Once your destination is healthy, update the sink status back to `active` via the API to resume event delivery.",
    "description": "Twilio records this error when Event Streams attempts to deliver an event to a sink with a `disabled` status. Because the sink is disabled, Twilio immediately drops the event. Events dropped are lost permanently and cannot be queued, retried, or re-delivered.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-26T04:00:34-07:00"
  },
  {
    "code": 91302,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Delivery throttled",
    "secondary_message": "Event delivery to the sink is throttled due to an exceeded rate limit or a high rate of failure responses from the sink.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this error when Event Streams temporarily reduces event delivery throughput to a targeted sink. Throttling occurs when the destination endpoint enforces rate limits or returns a high volume of failure responses.\n\nThrottling allows the target sink time to recover or operate within its capacity limits. Twilio automatically retries throttled events; no immediate action is required unless throttling is sustained.\n\n### Possible causes\n\n- The sink is repeatedly returning 429 or 5xx responses.\n- The sink is experiencing slow response times, causing delivery backpressure.\n- A sudden increase in event volume is exceeding the sink endpoint's capacity limits.\n\n### Possible solutions\n\n- Reduce processing overhead on your sink so it can return a fast 2xx response.\n- Confirm that your sink is not configured to rate-limit Twilio's delivery requests.\n- If throttling persists during volume spikes, evaluate your event subscription to ensure you are only streaming necessary event types to the sink.\n- Increase the capacity or concurrency handling of the sink.\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* The sink is repeatedly returning 429 or 5xx responses.\n* The sink is experiencing slow response times, causing delivery backpressure.\n* A sudden increase in event volume is exceeding the sink endpoint's capacity limits.",
    "solutions": "* Reduce processing overhead on your sink so it can return a fast 2xx response.\n* Confirm that your sink is not configured to rate-limit Twilio's delivery requests.\n* If throttling persists during volume spikes, evaluate your event subscription to ensure you are only streaming necessary event types to the sink.\n* Increase the capacity or concurrency handling of the sink.",
    "description": "Twilio records this error when Event Streams temporarily reduces event delivery throughput to a targeted sink. Throttling occurs when the destination endpoint enforces rate limits or returns a high volume of failure responses. Throttling allows the target sink time to recover or operate within its capacity limits. Twilio automatically retries throttled events; no immediate action is required unless throttling is sustained.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-26T04:00:34-07:00"
  },
  {
    "code": 91303,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Event dropped due to an internal error",
    "secondary_message": "Twilio could not process this event for delivery, and the event was dropped.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this error when Event Streams cannot process an event for delivery because of an internal fault, before any delivery attempt is made to your sink.\n\nThe event is dropped and is not retried. Dropped events are lost permanently and cannot be queued, retried, or re-delivered. This is an internal condition and does not indicate a problem with your sink or subscription configuration.\n\n### Possible causes\n\n- Twilio could not convert the event into the format the sink type requires.\n- The stored event payload could not be read.\n- Twilio could not resolve the delivery configuration for the event.\n- An internal error occurred while assembling the outbound request.\n\n### Possible solutions\n\n- No configuration change on your side will resolve this.\n- Contact [Twilio Support](https://help.twilio.com) and include the sink SID, subscription SID, event ID, event type, and the timestamp of the failure. The specific internal failure is recorded on the event and Support can retrieve it.\n- If this affects more than an isolated event, say whether it is limited to one event type or one subscription — that narrows the cause considerably.\n\n### Related errors\n\n- [91304: Internal error, delivery retried](/docs/api/errors/91304)\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* Twilio could not convert the event into the format the sink type requires.\n* The stored event payload could not be read.\n* Twilio could not resolve the delivery configuration for the event.\n* An internal error occurred while assembling the outbound request.",
    "solutions": "* No configuration change on your side will resolve this.\n* Contact [Twilio Support](https://help.twilio.com) and include the sink SID, subscription SID, event ID, event type, and the timestamp of the failure. The specific internal failure is recorded on the event and Support can retrieve it.\n* If this affects more than an isolated event, say whether it is limited to one event type or one subscription — that narrows the cause considerably.",
    "description": "Twilio records this error when Event Streams cannot process an event for delivery because of an internal fault, before any delivery attempt is made to your sink. The event is dropped and is not retried. Dropped events are lost permanently and cannot be queued, retried, or re-delivered. This is an internal condition and does not indicate a problem with your sink or subscription configuration.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-27T10:14:57-07:00"
  },
  {
    "code": 91304,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Internal error, delivery retried",
    "secondary_message": "Twilio hit a transient internal condition while processing this event and will retry delivery.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this error when Event Streams hits a transient internal condition while preparing an event for delivery.\n\nThe event is **not** dropped. Twilio retries delivery automatically according to the retry policy on your sink, and in most cases the event is delivered on a subsequent attempt. No action is required unless the condition persists.\n\n### Possible causes\n\n- Twilio could not read the sink's configuration at delivery time.\n- Converting the event for the sink exceeded its internal time limit.\n\n### Possible solutions\n\n- No action is required if the event is delivered on a subsequent attempt.\n- If events remain undelivered after the retry window, contact [Twilio Support](https://help.twilio.com) and include the sink SID, subscription SID, event type, and the time window of the affected events.\n\n### Related errors\n\n- [91303: Event dropped due to an internal error](/docs/api/errors/91303)\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* Twilio could not read the sink's configuration at delivery time.\n* Converting the event for the sink exceeded its internal time limit.",
    "solutions": "* No action is required if the event is delivered on a subsequent attempt.\n* If events remain undelivered after the retry window, contact [Twilio Support](https://help.twilio.com) and include the sink SID, subscription SID, event type, and the time window of the affected events.",
    "description": "Twilio records this error when Event Streams hits a transient internal condition while preparing an event for delivery. The event is **not** dropped. Twilio retries delivery automatically according to the retry policy on your sink, and in most cases the event is delivered on a subsequent attempt. No action is required unless the condition persists.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-27T10:14:57-07:00"
  },
  {
    "code": 91305,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sink endpoint rejected the event",
    "secondary_message": "Your sink endpoint returned a 4xx client error status code.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this error when Event Streams attempts to deliver an event, but the target sink endpoint rejects the payload with an HTTP 4xx status code.\n\nBecause a 4xx response indicates a client-side or configuration error, Twilio does not attempt to retry delivery for these events.\n\n### Possible causes\n\n- Authentication or authorization failures (401 / 403): API keys, credentials, or signing signatures configured on the sink are invalid or expired.\n- Invalid endpoint URL (404): The URL path configured on the sink is incorrect or the target route no longer exists.\n- Payload or header rejection (400 / 415): The sink endpoint rejected the payload structure, missing parameters, or the `Content-Type` header sent by Twilio.\n- WAF or firewall blocking: A Web Application Firewall (WAF), CDN, or bot protection layer blocked the incoming request before it reached your service application.\n\n### Possible solutions\n\n- Inspect sink endpoint's logs to review the full request payload, headers, exact status code, and response body returned to Twilio.\n- Verify that any API keys, tokens, or signing secrets configured on the sink match your sink's requirements.\n- Confirm that the destination URL and path configured on the sink are active and correctly routed.\n- If your endpoint sits behind a WAF or CDN, update firewall and WAF rules to ensure Twilio's IP ranges are allowed.\n- Ensure your endpoint is configured to parse the content type (e.g., `application/json`) transmitted by Twilio for this sink type.\n\n### Related errors\n\n- [91300: Event delivery to sink failed](/docs/api/errors/91300)\n- [91306: Sink endpoint returned a server error](/docs/api/errors/91306)\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* Authentication or authorization failures (401 / 403): API keys, credentials, or signing signatures configured on the sink are invalid or expired.\n* Invalid endpoint URL (404): The URL path configured on the sink is incorrect or the target route no longer exists.\n* Payload or header rejection (400 / 415): The sink endpoint rejected the payload structure, missing parameters, or the `Content-Type` header sent by Twilio.\n* WAF or firewall blocking: A Web Application Firewall (WAF), CDN, or bot protection layer blocked the incoming request before it reached your service application.",
    "solutions": "* Inspect sink endpoint's logs to review the full request payload, headers, exact status code, and response body returned to Twilio.\n* Verify that any API keys, tokens, or signing secrets configured on the sink match your sink's requirements.\n* Confirm that the destination URL and path configured on the sink are active and correctly routed.\n* If your endpoint sits behind a WAF or CDN, update firewall and WAF rules to ensure Twilio's IP ranges are allowed.\n* Ensure your endpoint is configured to parse the content type (e.g., `application/json`) transmitted by Twilio for this sink type.",
    "description": "Twilio records this error when Event Streams attempts to deliver an event, but the target sink endpoint rejects the payload with an HTTP 4xx status code. Because a 4xx response indicates a client-side or configuration error, Twilio does not attempt to retry delivery for these events.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-27T10:14:57-07:00"
  },
  {
    "code": 91306,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sink endpoint returned a server error",
    "secondary_message": "Your sink endpoint returned a 5xx server error status code.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this error when Event Streams attempts to deliver an event, but the sink endpoint responds with an HTTP `5xx` server error status code.\n\nBecause a `5xx` error indicates a temporary processing failure on the destination server rather than a rejected payload, Twilio automatically retries event delivery according to the retry policy.\n\n### Possible causes\n\n- Your receiving service encountered an unhandled exception or crash while processing the incoming payload (HTTP 500).\n- A dependency required by your endpoint (such as a database, cache, or internal API) was unavailable or timing out.\n- Your sink was overwhelmed by traffic or active connections.\n- A load balancer or reverse proxy returned 502, 503, or 504 because no healthy backend was available.\n- The request arrived during an active application deployment, restart, or rolling update.\n\n### Possible solutions\n\n- Check your target sink logs and error-tracking system around the failure timestamp to identify unhandled exceptions.\n- Return an immediate HTTP `200 OK` or `202 Accepted` response upon receiving the payload, offloading heavy processing (like database writes) to a background worker queue.\n- Verify that your load balancer, server health checks, and autoscaling policies are correctly configured to handle peak event volumes.\n- Ensure your deployment strategy uses connection draining so in-flight requests from Twilio complete cleanly during code updates.\n\n### Related errors\n\n- [91300: Event delivery to sink failed](/docs/api/errors/91300)\n- [91305: Sink endpoint rejected the event](/docs/api/errors/91305)\n- [91308: Sink endpoint did not respond in time](/docs/api/errors/91308)\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* Your receiving service encountered an unhandled exception or crash while processing the incoming payload (HTTP 500).\n* A dependency required by your endpoint (such as a database, cache, or internal API) was unavailable or timing out.\n* Your sink was overwhelmed by traffic or active connections.\n* A load balancer or reverse proxy returned 502, 503, or 504 because no healthy backend was available.\n* The request arrived during an active application deployment, restart, or rolling update.",
    "solutions": "* Check your target sink logs and error-tracking system around the failure timestamp to identify unhandled exceptions.\n* Return an immediate HTTP `200 OK` or `202 Accepted` response upon receiving the payload, offloading heavy processing (like database writes) to a background worker queue.\n* Verify that your load balancer, server health checks, and autoscaling policies are correctly configured to handle peak event volumes.\n* Ensure your deployment strategy uses connection draining so in-flight requests from Twilio complete cleanly during code updates.",
    "description": "Twilio records this error when Event Streams attempts to deliver an event, but the sink endpoint responds with an HTTP `5xx` server error status code. Because a `5xx` error indicates a temporary processing failure on the destination server rather than a rejected payload, Twilio automatically retries event delivery according to the retry policy.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-27T10:14:57-07:00"
  },
  {
    "code": 91307,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Could not connect to sink endpoint",
    "secondary_message": "Twilio could not establish a connection to your sink endpoint, so the event was not delivered.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this error when Event Streams cannot establish a connection to your sink endpoint.\n\nBecause the connection could not be established, no event was sent. Twilio will automatically retry delivery per retry policy.\n\n### Possible causes\n\n- The sink hostname could not be resolved via public DNS.\n- The sink closed or reset the connection attempt because no service was listening on the designated port.\n- A firewall, security group, or network access control list silently dropped Twilio's incoming connection request.\n- The endpoint presented an expired, self-signed, hostname-mismatched, or incomplete SSL/TLS certificate chain.\n- The sink hostname resolves to a private IP space or an unroutable endpoint that is unreachable over the public internet.\n\n### Possible solutions\n\n- Confirm that your sink's domain name is publicly resolvable and resolves to an accessible, public IP address.\n- Ensure your target server presents a valid, unexpired SSL/TLS certificate issued by a trusted Certificate Authority (CA) that matches your configured domain name.\n- Ensure your network firewalls, cloud security groups, or API gateways permit inbound traffic from Twilio's public IP ranges.\n- Confirm that the protocol (https://) and port (default 443) configured in your sink setting match your receiving application's configuration.\n- Run an external curl command or TLS verification check from a host outside your private network to isolate network reachability issues.\n\n### Related errors\n\n- [91300: Event delivery to sink failed](/docs/api/errors/91300)\n- [91308: Sink endpoint did not respond in time](/docs/api/errors/91308)\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* The sink hostname could not be resolved via public DNS.\n* The sink closed or reset the connection attempt because no service was listening on the designated port.\n* A firewall, security group, or network access control list silently dropped Twilio's incoming connection request.\n* The endpoint presented an expired, self-signed, hostname-mismatched, or incomplete SSL/TLS certificate chain.\n* The sink hostname resolves to a private IP space or an unroutable endpoint that is unreachable over the public internet.",
    "solutions": "* Confirm that your sink's domain name is publicly resolvable and resolves to an accessible, public IP address.\n* Ensure your target server presents a valid, unexpired SSL/TLS certificate issued by a trusted Certificate Authority (CA) that matches your configured domain name.\n* Ensure your network firewalls, cloud security groups, or API gateways permit inbound traffic from Twilio's public IP ranges.\n* Confirm that the protocol (https://) and port (default 443) configured in your sink setting match your receiving application's configuration.\n* Run an external curl command or TLS verification check from a host outside your private network to isolate network reachability issues.",
    "description": "Twilio records this error when Event Streams cannot establish a connection to your sink endpoint. Because the connection could not be established, no event was sent. Twilio will automatically retry delivery per retry policy.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-27T10:14:57-07:00"
  },
  {
    "code": 91308,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Sink endpoint did not respond in time",
    "secondary_message": "Your sink endpoint accepted the connection but did not return a response before the delivery timeout elapsed.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nTwilio records this error when Event Streams establishes a connection and transmits an event to your sink, but the sink fails to return an HTTP response before the timeout limit is reached.\n\nBecause Twilio did not get a response from your sink, Twilio will automatically retry event delivery per retry policy. To prevent duplicate processing when retries occur, your sink should treat Event Streams delivery as at-least-once delivery and deduplicate incoming events using the unique Event ID.\n\n### Possible causes\n\n- The sink executes time-consuming operations, such as synchronous database writes, complex computations, or downstream API requests, before returning an HTTP response.\n- A service downstream from your handler experienced high latency or a timeout.\n- High incoming event volume exhausted available server resources.\n\n### Possible solutions\n\n- Acknowledge incoming payloads immediately with an HTTP 2xx status code, offloading long-running operations to a background queue or worker process.\n- Monitor your sink response latencies to identify transient slowdowns under load.\n- Ensure your sink is sized appropriately for peak concurrency.\n\n### Related errors\n\n- [91300: Event delivery to sink failed](/docs/api/errors/91300)\n- [91306: Sink endpoint returned a server error](/docs/api/errors/91306)\n- [91307: Could not connect to sink endpoint](/docs/api/errors/91307)\n\n#### Additional resources\n\n- [Event Streams overview](/docs/events)\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Subscription resource](/docs/events/event-streams/subscription)\n",
    "causes": "* The sink executes time-consuming operations, such as synchronous database writes, complex computations, or downstream API requests, before returning an HTTP response.\n* A service downstream from your handler experienced high latency or a timeout.\n* High incoming event volume exhausted available server resources.",
    "solutions": "* Acknowledge incoming payloads immediately with an HTTP 2xx status code, offloading long-running operations to a background queue or worker process.\n* Monitor your sink response latencies to identify transient slowdowns under load.\n* Ensure your sink is sized appropriately for peak concurrency.",
    "description": "Twilio records this error when Event Streams establishes a connection and transmits an event to your sink, but the sink fails to return an HTTP response before the timeout limit is reached. Because Twilio did not get a response from your sink, Twilio will automatically retry event delivery per retry policy. To prevent duplicate processing when retries occur, your sink should treat Event Streams delivery as at-least-once delivery and deduplicate incoming events using the unique Event ID.",
    "date_created": "2026-08-04T06:11:24-07:00",
    "last_updated": "2026-10-27T10:14:57-07:00"
  },
  {
    "code": 92001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'Types' Parameter Required",
    "secondary_message": "You attempted to create content, but you forgot to include at least one type within the 'types' property the 'types' parameter requires at least one type in order to create content.",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\n### 'types' Parameter Required\n\nYou attempted to create content, but you forgot to include at least one type within the 'types' property the 'types' parameter requires at least one type in order to create content.\n\n### Possible causes\n\nYou attempted to create content, but you forgot to include at least one type within the 'types' property, the 'types' parameter requires at least one type in order to create content.\n\n### Possible solutions\n\nInclude at least one type within the 'types' property.\n",
    "causes": "You attempted to create content, but you forgot to include at least one type within the 'types' property, the 'types' parameter requires at least one type in order to create content.",
    "solutions": "Include at least one type within the 'types' property.",
    "description": "",
    "date_created": "2021-11-03T07:51:51Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 92002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The 'variables' parameter exceeds the allowed limit",
    "secondary_message": "Invalid variables. The max amount of variables allowed is 100",
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when your request includes more than 100 variables. Content templates support up to 100 variables, and template sends support up to 100 key-value pairs in `ContentVariables`.\n\n### Possible causes\n\n- The `variables` object in your Content API request contains more than 100 placeholder entries.\n- The `ContentVariables` payload you send with a template message contains more than 100 key-value pairs.\n\n### Possible solutions\n\n- Reduce the number of entries in `variables` to 100 or fewer, then submit the request again.\n- If you send a template with `ContentVariables`, limit the payload to 100 key-value pairs.\n- Review each variable definition before you resend the request. Variable names cannot contain spaces, keys can be up to 16 characters, and values can be up to 1,600 characters.\n\n#### Additional resources\n\n- [Use variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Content API public endpoints](/docs/content/content-api-resources)\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n",
    "causes": "* The `variables` object in your Content API request contains more than 100 placeholder entries.\n* The `ContentVariables` payload you send with a template message contains more than 100 key-value pairs.",
    "solutions": "* Reduce the number of entries in `variables` to 100 or fewer, then submit the request again.\n* If you send a template with `ContentVariables`, limit the payload to 100 key-value pairs.\n* Review each variable definition before you resend the request. Variable names cannot contain spaces, keys can be up to 16 characters, and values can be up to 1,600 characters.",
    "description": "This error occurs when your request includes more than 100 variables. Content templates support up to 100 variables, and template sends support up to 100 key-value pairs in `ContentVariables`.",
    "date_created": "2021-11-03T07:54:38Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 92003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "'language' Parameter Required",
    "secondary_message": "Invalid language. Language is required",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nTwilio returns 92003 when you create content without the required `language` parameter. Include a supported language value when you create the template.\n\n### Possible causes\n\n- You omitted the `language` field when creating the content template.\n\n### Possible solutions\n\n- Add the required `language` field to your content create request.\n- Set `language` to a supported two-letter language code before you submit the template.\n\n#### Additional resources\n\n- [Content API public endpoints](/docs/content/content-api-resources)\n- [Get Started with Content API](/en-us/blog/get-started-with-content-api)\n",
    "causes": "* You omitted the `language` field when creating the content template.",
    "solutions": "* Add the required `language` field to your content create request.\n* Set `language` to a supported two-letter language code before you submit the template.",
    "description": "Twilio returns 92003 when you create content without the required `language` parameter. Include a supported language value when you create the template.",
    "date_created": "2021-11-08T19:49:50Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 92004,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid language code",
    "secondary_message": "Invalid language code",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error appears when you create Content with a `language` value that is not valid for the resource. The Content API uses a two-letter ISO 639-1 language code, and Content Templates are limited to one language per template.\n\n### Possible causes\n\n- You sent a `language` value that is not a valid two-letter ISO 639-1 code.\n- The language you chose is not supported for the Content template you are creating or updating.\n\n### Possible solutions\n\n- Set `language` to a supported two-letter ISO 639-1 code, such as `en`.\n- If you need to send content in more than one language, create a separate Content template for each language.\n\n#### Additional resources\n\n- [Content API public endpoints](/docs/content/content-api-resources)\n- [FAQs and Troubleshooting](/docs/content/faqs-and-troubleshooting)\n",
    "causes": "* You sent a `language` value that is not a valid two-letter ISO 639-1 code.\n* The language you chose is not supported for the Content template you are creating or updating.",
    "solutions": "* Set `language` to a supported two-letter ISO 639-1 code, such as `en`.\n* If you need to send content in more than one language, create a separate Content template for each language.",
    "description": "This error appears when you create Content with a `language` value that is not valid for the resource. The Content API uses a two-letter ISO 639-1 language code, and Content Templates are limited to one language per template.",
    "date_created": "2021-11-03T07:41:11Z",
    "last_updated": "2026-03-25T13:47:45Z"
  },
  {
    "code": 92005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "ContentSid Required",
    "secondary_message": "A ContentSid must be specified if content variables are provided in the request.",
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nYou sent a Messaging API request with `ContentVariables` but did not include `ContentSid`. When you send a content template, include `ContentSid`, and include `ContentVariables` only when you need to substitute template variables.\n\n### Possible causes\n\n- You included `ContentVariables` in the request without `ContentSid`.\n- Your application builds a template-based message request and omits the required `ContentSid` field before sending.\n- You intended to send a Content Template Builder template, but the request still uses only variable data and does not reference the preconfigured template SID.\n\n### Possible solutions\n\n- Add `ContentSid` to the request whenever you include `ContentVariables`.\n- Use the SID of the preconfigured content template you want to send. `ContentSid` identifies the template, and `ContentVariables` supplies the runtime substitution values.\n- Format `ContentVariables` as a JSON string that contains the placeholder keys and values defined for your template.\n- If you are sending a content template, replace `Body` and `MediaUrl` with `ContentSid`. Then add `ContentVariables` only if the template includes placeholders.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Send templates created with the Content Template Builder](/docs/content/send-templates-created-with-the-content-template-builder)\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n",
    "causes": "* You included `ContentVariables` in the request without `ContentSid`.\n* Your application builds a template-based message request and omits the required `ContentSid` field before sending.\n* You intended to send a Content Template Builder template, but the request still uses only variable data and does not reference the preconfigured template SID.",
    "solutions": "* Add `ContentSid` to the request whenever you include `ContentVariables`.\n* Use the SID of the preconfigured content template you want to send. `ContentSid` identifies the template, and `ContentVariables` supplies the runtime substitution values.\n* Format `ContentVariables` as a JSON string that contains the placeholder keys and values defined for your template.\n* If you are sending a content template, replace `Body` and `MediaUrl` with `ContentSid`. Then add `ContentVariables` only if the template includes placeholders.",
    "description": "You sent a Messaging API request with `ContentVariables` but did not include `ContentSid`. When you send a content template, include `ContentSid`, and include `ContentVariables` only when you need to substitute template variables.",
    "date_created": "2021-11-08T19:59:40Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 92006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Content Sid is Invalid",
    "secondary_message": "The Content Sid you are using is not valid",
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a Message request with a `ContentSid` value that is not recognized as a valid Content Template SID. Use a valid 34-character SID with an `HX` prefix, and retrieve it from the Content Template Builder in Console or from the response when you create or fetch a template with the Content API.\n\n### Possible causes\n\n- The `ContentSid` value does not match the required SID format and does not start with `HX`.\n- The `ContentSid` contains a typo or refers to a template SID that does not exist.\n- The template was deleted from your account.\n- The template belongs to a different Twilio account than the account sending the message.\n- You used an identifier from a WhatsApp template workflow that is not a Content Template SID. Only Content Templates can be sent with `ContentSid` and `ContentVariables`.\n\n### Possible solutions\n\n- Copy the `ContentSid` directly from the Content Template Builder in Console or from the Content API response instead of entering it manually.\n- Verify that the SID is 34 characters long and matches the `^HX[0-9a-fA-F]{32}$` pattern.\n- Fetch or list your content templates to confirm that the template exists, has not been deleted, and belongs to the same account that is sending the message.\n- Replace the invalid or deleted template SID with an active Content Template SID and send the request again.\n- If you are sending WhatsApp templates, use a Content Template SID with `ContentSid` instead of a template identifier from the WhatsApp Templates console flow.\n\n#### Additional resources\n\n- [Messages resource](/docs/messaging/api/message-resource)\n- [Content API public endpoints](/docs/content/content-api-resources)\n- [FAQs and Troubleshooting](/docs/content/faqs-and-troubleshooting)\n",
    "causes": "* The `ContentSid` value does not match the required SID format and does not start with `HX`.\n* The `ContentSid` contains a typo or refers to a template SID that does not exist.\n* The template was deleted from your account.\n* The template belongs to a different Twilio account than the account sending the message.\n* You used an identifier from a WhatsApp template workflow that is not a Content Template SID. Only Content Templates can be sent with `ContentSid` and `ContentVariables`.",
    "solutions": "* Copy the `ContentSid` directly from the Content Template Builder in Console or from the Content API response instead of entering it manually.\n* Verify that the SID is 34 characters long and matches the `^HX[0-9a-fA-F]{32}$` pattern.\n* Fetch or list your content templates to confirm that the template exists, has not been deleted, and belongs to the same account that is sending the message.\n* Replace the invalid or deleted template SID with an active Content Template SID and send the request again.\n* If you are sending WhatsApp templates, use a Content Template SID with `ContentSid` instead of a template identifier from the WhatsApp Templates console flow.",
    "description": "This error occurs when you send a Message request with a `ContentSid` value that is not recognized as a valid Content Template SID. Use a valid 34-character SID with an `HX` prefix, and retrieve it from the Content Template Builder in Console or from the response when you create or fetch a template with the Content API.",
    "date_created": "2021-11-08T20:01:08Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 92007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The Content Variables Parameter is invalid",
    "secondary_message": "The Content Variables Parameter is invalid",
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when `ContentVariables` is not sent in a valid format. Send `ContentVariables` as a JSON string of key-value pairs for the variables in your content template. When you include `ContentVariables`, also include `ContentSid`.\n\n### Possible causes\n\n- You sent `ContentVariables` as an object, array, or another value instead of a JSON string.\n- The JSON string is malformed because it contains invalid quotes, commas, braces, or escaping.\n- One or more `ContentVariables` values are null or empty strings.\n- For approved WhatsApp templates, a variable value contains a newline.\n\n### Possible solutions\n\n- Serialize the variable payload to a JSON string before sending the request. If you use a helper library, pass `contentVariables: JSON.stringify({...})`.\n- Validate the JSON before sending the request and confirm it contains valid key-value pairs for your template variables.\n- Include `ContentSid` with `ContentVariables`.\n- Replace null or empty values with valid substitutions, or omit a value so the template can use its default placeholder value.\n- If you are sending an approved WhatsApp template, remove newline characters from variable values and verify the template follows WhatsApp variable rules.\n\n#### Additional resources\n\n- [Using Variables with Content Templates](/docs/content/using-variables-with-content-api)\n- [Content API public endpoints](/docs/content/content-api-resources)\n- [Message resource](/docs/messaging/api/message-resource)\n",
    "causes": "* You sent `ContentVariables` as an object, array, or another value instead of a JSON string.\n* The JSON string is malformed because it contains invalid quotes, commas, braces, or escaping.\n* One or more `ContentVariables` values are null or empty strings.\n* For approved WhatsApp templates, a variable value contains a newline.",
    "solutions": "* Serialize the variable payload to a JSON string before sending the request. If you use a helper library, pass `contentVariables: JSON.stringify({...})`.\n* Validate the JSON before sending the request and confirm it contains valid key-value pairs for your template variables.\n* Include `ContentSid` with `ContentVariables`.\n* Replace null or empty values with valid substitutions, or omit a value so the template can use its default placeholder value.\n* If you are sending an approved WhatsApp template, remove newline characters from variable values and verify the template follows WhatsApp variable rules.",
    "description": "This error occurs when `ContentVariables` is not sent in a valid format. Send `ContentVariables` as a JSON string of key-value pairs for the variables in your content template. When you include `ContentVariables`, also include `ContentSid`.",
    "date_created": "2021-11-08T20:02:33Z",
    "last_updated": "2026-04-20T01:45:15-05:00"
  },
  {
    "code": 92008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unsupported Content Type",
    "secondary_message": "Creating new twilio/button templates is no longer supported.",
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to create a new Content template with the deprecated `twilio/buttons` content type. Create new button-based templates with `twilio/call-to-action` or `twilio/quick-reply` instead.\n\n### Possible causes\n\n- Your template creation request includes `twilio/buttons` in the `types` object.\n- Your application is using an older Content API example or integration that still creates `twilio/buttons` templates.\n- You are trying to recreate an older button template by using the deprecated `twilio/buttons` content type for a new template.\n\n### Possible solutions\n\n- Update your template creation request to use `twilio/call-to-action` when you want buttons that open a URL or place a call.\n- Update your template creation request to use `twilio/quick-reply` when you want recipients to tap a button and send a response.\n- Review your request payload and remove any new `twilio/buttons` content type usage before you submit the template.\n- Keep any previously created `twilio/buttons` templates only where they are already in use. Create all new button templates with `twilio/call-to-action` or `twilio/quick-reply`.\n\n#### Additional resources\n\n- [Content Types Overview](/docs/content/content-types-overview)\n- [twilio/call-to-action](/docs/content/twilio-call-to-action)\n- [twilio/quick-reply](/docs/content/twilio-quick-reply)\n",
    "causes": "* Your template creation request includes `twilio/buttons` in the `types` object.\n* Your application is using an older Content API example or integration that still creates `twilio/buttons` templates.\n* You are trying to recreate an older button template by using the deprecated `twilio/buttons` content type for a new template.",
    "solutions": "* Update your template creation request to use `twilio/call-to-action` when you want buttons that open a URL or place a call.\n* Update your template creation request to use `twilio/quick-reply` when you want recipients to tap a button and send a response.\n* Review your request payload and remove any new `twilio/buttons` content type usage before you submit the template.\n* Keep any previously created `twilio/buttons` templates only where they are already in use. Create all new button templates with `twilio/call-to-action` or `twilio/quick-reply`.",
    "description": "This error occurs when you try to create a new Content template with the deprecated `twilio/buttons` content type. Create new button-based templates with `twilio/call-to-action` or `twilio/quick-reply` instead.",
    "date_created": "2022-08-04T17:10:56Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 92009,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The template associated with this SID has already been submitted for approval.",
    "secondary_message": "The template associated with this SID has already been submitted for approval.",
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when you submit a content template for WhatsApp approval and the same template SID has already been submitted. Twilio expects you to create a new template copy before making changes, because editing an existing template from the details page is not supported.\n\n### Possible causes\n\n- You tried to submit the same `ContentSid` for WhatsApp approval more than once.\n- You made changes to an existing template instead of duplicating it first. Twilio only supports making changes by duplicating a template.\n\n### Possible solutions\n\n- Duplicate the template, make your changes in the new copy, and submit the duplicate for approval.\n- Create a new template with a new `HX` SID before resubmitting for approval.\n- If you are using the Console, choose `Save and submit for WhatsApp approval` only when the template is ready to be reviewed.\n\n#### Additional resources\n\n- [Manage your Templates with the Content Template Builder](/docs/content/manage-your-templates-with-the-content-template-builder)\n- [Create templates with the Content Template Builder in Console](/docs/content/create-templates-with-the-content-template-builder)\n- [Content API public endpoints](/docs/content/content-api-resources)\n",
    "causes": "* You tried to submit the same `ContentSid` for WhatsApp approval more than once.\n* You made changes to an existing template instead of duplicating it first. Twilio only supports making changes by duplicating a template.",
    "solutions": "* Duplicate the template, make your changes in the new copy, and submit the duplicate for approval.\n* Create a new template with a new `HX` SID before resubmitting for approval.\n* If you are using the Console, choose `Save and submit for WhatsApp approval` only when the template is ready to be reviewed.",
    "description": "This error occurs when you submit a content template for WhatsApp approval and the same template SID has already been submitted. Twilio expects you to create a new template copy before making changes, because editing an existing template from the details page is not supported.",
    "date_created": "2023-07-07T21:40:15Z",
    "last_updated": "2026-03-26T11:40:11Z"
  },
  {
    "code": 92010,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid Content update",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to update a Content template after it has already been submitted for WhatsApp approval, or when you try to change its `language` after creation. If you need a different language, create a new template by duplicating the existing one and edit the copy.\n\n### Possible causes\n\n- You attempted to update the `language` field after the template was created.\n- The template has already been submitted for approval, and further updates are not allowed.\n\n### Possible solutions\n\n- Do not update the `language` field on the existing template.\n- Make changes before you submit the template for WhatsApp approval.\n- If you need a different language, duplicate the template and edit the new copy.\n\n#### Additional resources\n\n- [Content API endpoints](/docs/content/content-api-resources)\n- [Manage your Templates with the Content Template Builder](/docs/content/manage-your-templates-with-the-content-template-builder)\n- [Create templates with the Content Template Builder in Console](/docs/content/create-templates-with-the-content-template-builder)\n",
    "causes": "* You attempted to update the `language` field after the template was created.\n* The template has already been submitted for approval, and further updates are not allowed.",
    "solutions": "* Do not update the `language` field on the existing template.\n* Make changes before you submit the template for WhatsApp approval.\n* If you need a different language, duplicate the template and edit the new copy.",
    "description": "This error occurs when you try to update a Content template after it has already been submitted for WhatsApp approval, or when you try to change its `language` after creation. If you need a different language, create a new template by duplicating the existing one and edit the copy.",
    "date_created": "2025-10-31T22:26:32.413Z",
    "last_updated": "2026-03-26T06:28:41Z"
  },
  {
    "code": 93100,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Replay failed",
    "secondary_message": "Replay could not be completed due to an internal error",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nAn internal error occurred when trying to replay the events and the replay was aborted.\n\n### Possible causes\n\n- A temporary error failed the replay.\n- An incident impacting Event Streams prevented the replay from completing.\n- The replay ran for too long.\n\n### Possible solutions\n\n- If there is an incident in the [status page](https://status.twilio.com/), wait for it to be mitigated and retry the replay.\n- Otherwise, wait a few minutes and retry the replay.\n",
    "causes": "* A temporary error failed the replay.\n* An incident impacting Event Streams prevented the replay from completing.\n* The replay ran for too long.",
    "solutions": "* If there is an incident in the [status page](https://status.twilio.com/), wait for it to be mitigated and retry the replay.\n* Otherwise, wait a few minutes and retry the replay.",
    "description": "An internal error occurred when trying to replay the events and the replay was aborted.",
    "date_created": "2025-02-14T09:14:39Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 93101,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to deliver events to sink",
    "secondary_message": "The sink you are using for your Event Streams subscription is having issues",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nThere is an issue with sending event to your sink\n\n### Possible causes\n\nSee the error message for more details\n\n### Possible solutions\n\nVerify that your sink destination is up and has not changed\n",
    "causes": "See the error message for more details",
    "solutions": "Verify that your sink destination is up and has not changed",
    "description": "There is an issue with sending event to your sink",
    "date_created": "2021-01-13T18:25:56Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 93102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "There was an error with your AWS role",
    "secondary_message": "The role associated with your AWS Sink is not allowing Event Streams to send events",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nThis error occurs when Event Streams cannot assume the AWS IAM role configured for your Kinesis sink. Event Streams uses the `role_arn` and `external_id` values from the sink configuration to access your stream. If AWS rejects that role assumption, Event Streams cannot deliver events to the sink and retries delivery for this error.\n\n### Possible causes\n\n- The `role_arn` in your sink configuration points to a role that no longer exists or is no longer the correct role for the target stream.\n- The IAM role trust policy does not allow Twilio's AWS principal `arn:aws:iam::177261743968:root` to call `sts:AssumeRole`.\n- The `sts:ExternalId` value in the IAM role trust policy does not match the `external_id` configured on the sink.\n- The AWS role or trust relationship was changed after you created the sink.\n- The role no longer has the access your Kinesis sink configuration expects.\n\n### Possible solutions\n\n- Verify that your sink configuration uses the correct Kinesis stream `arn`, `role_arn`, and `external_id`.\n- Update the IAM role trust policy to allow `arn:aws:iam::177261743968:root` to use `sts:AssumeRole`.\n- Make sure the trust policy uses the same `sts:ExternalId` value that you configured as the sink `external_id`.\n- Confirm that the IAM role still exists and still has access to write to the target Kinesis stream.\n- If you changed the AWS role settings after creating the sink, create a new sink with the updated `role_arn` and `external_id`, then move your subscriptions to the new sink. Event Streams only supports updating a sink description after creation.\n- Send a sink test event after you update the configuration to confirm the sink is ready to receive events.\n\n#### Additional resources\n\n- [Sink resource](/docs/events/event-streams/sink-resource)\n- [Kinesis quickstart](/docs/events/eventstreams-quickstart)\n- [Event delivery retries and duplication](/docs/events/event-delivery-and-duplication)\n",
    "causes": "* The `role_arn` in your sink configuration points to a role that no longer exists or is no longer the correct role for the target stream.\n* The IAM role trust policy does not allow Twilio's AWS principal `arn:aws:iam::177261743968:root` to call `sts:AssumeRole`.\n* The `sts:ExternalId` value in the IAM role trust policy does not match the `external_id` configured on the sink.\n* The AWS role or trust relationship was changed after you created the sink.\n* The role no longer has the access your Kinesis sink configuration expects.",
    "solutions": "* Verify that your sink configuration uses the correct Kinesis stream `arn`, `role_arn`, and `external_id`.\n* Update the IAM role trust policy to allow `arn:aws:iam::177261743968:root` to use `sts:AssumeRole`.\n* Make sure the trust policy uses the same `sts:ExternalId` value that you configured as the sink `external_id`.\n* Confirm that the IAM role still exists and still has access to write to the target Kinesis stream.\n* If you changed the AWS role settings after creating the sink, create a new sink with the updated `role_arn` and `external_id`, then move your subscriptions to the new sink. Event Streams only supports updating a sink description after creation.\n* Send a sink test event after you update the configuration to confirm the sink is ready to receive events.",
    "description": "This error occurs when Event Streams cannot assume the AWS IAM role configured for your Kinesis sink. Event Streams uses the `role_arn` and `external_id` values from the sink configuration to access your stream. If AWS rejects that role assumption, Event Streams cannot deliver events to the sink and retries delivery for this error.",
    "date_created": "2021-01-13T18:26:33Z",
    "last_updated": "2026-06-08T13:04:59+01:00"
  },
  {
    "code": 93103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "There was an error with your Kinesis stream",
    "secondary_message": "The Kinesis Stream associated with this Sink is having issues.",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nEvent Streams is unable to write to the Kinesis Stream\n\n### Possible causes\n\nSee Error Message for more details\n\n### Possible solutions\n\nCheck your Kinesis Stream and ensure it is configured correctly for the load of events you are subscribed too, Check to see if there is an AWS outage with Kinesis streams.\n",
    "causes": "See Error Message for more details",
    "solutions": "Check your Kinesis Stream and ensure it is configured correctly for the load of events you are subscribed too, Check to see if there is an AWS outage with Kinesis streams.",
    "description": "Event Streams is unable to write to the Kinesis Stream",
    "date_created": "2021-01-13T18:27:03Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 93104,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "There is an issue with the Kinesis Stream Name or Region",
    "secondary_message": "The ARN provided for your Kinesis Stream is invalid",
    "product": "Events",
    "products_used": [
      "events"
    ],
    "docs": "\n## Description\n\nThe ARN for your Kinesis Stream is invalid\n\n### Possible causes\n\nBad ARN was provided when creating the sink\n\n### Possible solutions\n\nCreate a new sink and put in a valid ARN\n",
    "causes": "Bad ARN was provided when creating the sink",
    "solutions": "Create a new sink and put in a valid ARN",
    "description": "The ARN for your Kinesis Stream is invalid",
    "date_created": "2021-01-13T18:27:31Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 93105,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Consent has already been provided for this account and vendor",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nError surfaces when consent data has been provided\n\n### Possible causes\n\nThe consent submission happens more than once\n\n### Possible solutions\n\nDo not submit consent data more than once\n",
    "causes": "The consent submission happens more than once",
    "solutions": "Do not submit consent data more than once",
    "description": "Error surfaces when consent data has been provided",
    "date_created": "2021-04-20T09:12:57Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94000,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Transcriptions: request to transcribe audio error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to process the request to transcribe audio due to an internal issue. No transcription resource has been created\n\n### Possible causes\n\n### Possible solutions\n",
    "causes": "",
    "solutions": "",
    "description": "Twilio failed to process the request to transcribe audio due to an internal issue. No transcription resource has been created",
    "date_created": "2021-09-13T14:03:16Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions: Invalid transcribe value",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nInvalid \"transcribe\" value. It should be either true or false. No transcription resource has been created\n\n### Possible causes\n\n### Possible solutions\n\n- Ensure that the transcribe value is set to \"true\" to request a transcription via REST API or TwiML\n",
    "causes": "",
    "solutions": "* Ensure that the transcribe value is set to \"true\" to request a transcription via REST API or TwiML",
    "description": "Invalid \"transcribe\" value. It should be either true or false. No transcription resource has been created",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Transcriptions: configuration not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to process the request to transcribe audio because configuration was not found. No transcription resource has been created\n\n### Possible causes\n\n- Transcription Configuration was not specified\n- Transcription Configuration was specified but not found in account\n\n### Possible solutions\n\n- Specify unique name or Sid of an existent Transcription Configuration associated to your account\n",
    "causes": "* Transcription Configuration was not specified\n* Transcription Configuration was specified but not found in account",
    "solutions": "* Specify unique name or Sid of an existent Transcription Configuration associated to your account",
    "description": "Twilio failed to process the request to transcribe audio because configuration was not found. No transcription resource has been created",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94100,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Transcriptions: status callback response error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio attempted to send a transcription event to the callback URL specified and your application returned a 4xx or 5xx or other HTTP response error\n\n### Possible causes\n\n- The callback URL specified is incorrect\n- Your application has an issue while handling callback requests or suffering and outage\n\n### Possible solutions\n\n- Ensure that the callback URL specified is correct\n- Ensure that your callback server can handle the request and responds with a 2xx HTTP status code\n",
    "causes": "* The callback URL specified is incorrect\n* Your application has an issue while handling callback requests or suffering and outage",
    "solutions": "* Ensure that the callback URL specified is correct\n* Ensure that your callback server can handle the request and responds with a 2xx HTTP status code",
    "description": "Twilio attempted to send a transcription event to the callback URL specified and your application returned a 4xx or 5xx or other HTTP response error",
    "date_created": "2021-08-31T11:16:33Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94101,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Transcriptions: status callback response timed out",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio attempted to send a transcription event to the callback URL specified and your application didn't respond before time out\n\n### Possible causes\n\n- The server receiving status callbacks sent by Twilio takes too long to respond\n\n### Possible solutions\n\n- Ensure that your callback server can handle the request and responds within a reasonable time\n",
    "causes": "* The server receiving status callbacks sent by Twilio takes too long to respond",
    "solutions": "* Ensure that your callback server can handle the request and responds within a reasonable time",
    "description": "Twilio attempted to send a transcription event to the callback URL specified and your application didn't respond before time out",
    "date_created": "2021-08-31T11:17:33Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94200,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions Settings: Invalid encryptionEnabled value",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nInvalid \"encryptionEnabled\" value. It should be either true or false\n\n### Possible causes\n\n- \"encryptionEnabled\" value is invalid\n\n### Possible solutions\n\n- Set \"encryptionEnabled\" value to true to enable encryption for transcriptions\n- Set \"encryptionEnabled\" value to false to disable encryption for transcriptions\n",
    "causes": "* \"encryptionEnabled\" value is invalid",
    "solutions": "* Set \"encryptionEnabled\" value to true to enable encryption for transcriptions\n* Set \"encryptionEnabled\" value to false to disable encryption for transcriptions",
    "description": "Invalid \"encryptionEnabled\" value. It should be either true or false",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94201,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions Settings: encryptionKeySid invalid or not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nRequest to enable encryption for transcriptions failed because encryptionKeySid is invalid or not defined\n\n### Possible causes\n\n- \"encryptionKeySid\" value is invalid\n- \"encryptionKeySid\" not found in Transcription Settings\n- \"encryptionKeySid\" not found in Credentials Storage\n- \"encryptionKeySid\" is not a credential resource of type Public Key\n\n### Possible solutions\n\n- Specify a encryptionKeySid of a valid credential resource of type Public Key that can be used to encrypt transcription results or disable encryption\n",
    "causes": "* \"encryptionKeySid\" value is invalid\n* \"encryptionKeySid\" not found in Transcription Settings\n* \"encryptionKeySid\" not found in Credentials Storage\n* \"encryptionKeySid\" is not a credential resource of type Public Key",
    "solutions": "* Specify a encryptionKeySid of a valid credential resource of type Public Key that can be used to encrypt transcription results or disable encryption",
    "description": "Request to enable encryption for transcriptions failed because encryptionKeySid is invalid or not defined",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94300,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions Configurations: Invalid callback configuration",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nInvalid callback configuration, either to create a new configuration or update existing one. A valid Url and Method must be specified to enable callbacks via HTTP request (webhook) and receive transcriptions status updates.\n\n### Possible causes\n\n- Invalid Callback \"Url\" value\n- Invalid Callback \"Method\" value\n\n### Possible solutions\n\n- Callback \"Url\" value should be valid Http(s) url format\n- Callback \"Method\" value should be either `POST` or `GET`\n- Disable callback by setting \"Url\" to '' value (empty string)\n",
    "causes": "* Invalid Callback \"Url\" value\n* Invalid Callback \"Method\" value",
    "solutions": "* Callback \"Url\" value should be valid Http(s) url format\n* Callback \"Method\" value should be either `POST` or `GET`\n* Disable callback by setting \"Url\" to '' value (empty string)",
    "description": "Invalid callback configuration, either to create a new configuration or update existing one. A valid Url and Method must be specified to enable callbacks via HTTP request (webhook) and receive transcriptions status updates.",
    "date_created": "2021-09-02T10:44:42Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94301,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions Configurations: UniqueName is required",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA UniqueName is required to create a new configuration\n\n### Possible causes\n\n- \"UniqueName\" is blank\n- \"UniqueName\" is null\n\n### Possible solutions\n\n- Specify a valid \"UniqueName\" for transcription configuration\n",
    "causes": "* \"UniqueName\" is blank\n* \"UniqueName\" is null",
    "solutions": "* Specify a valid \"UniqueName\" for transcription configuration",
    "description": "A UniqueName is required to create a new configuration",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94302,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Transcriptions Configurations: UniqueName is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nInvalid UniqueName value, either to create a new configuration or update existing one\n\n### Possible causes\n\n- \"UniqueName\" already associated to another configuration\n- \"UniqueName\" is blank or null\n- Invalid \"UniqueName\" value: Length should be between 1 and 50 characters, can't contain blank spaces or special characters and can't be a Transcription Configuration Sid\n\n### Possible solutions\n\n- Specify a valid \"UniqueName\" for transcription configuration\n",
    "causes": "* \"UniqueName\" already associated to another configuration\n* \"UniqueName\" is blank or null\n* Invalid \"UniqueName\" value: Length should be between 1 and 50 characters, can't contain blank spaces or special characters and can't be a Transcription Configuration Sid",
    "solutions": "* Specify a valid \"UniqueName\" for transcription configuration",
    "description": "Invalid UniqueName value, either to create a new configuration or update existing one",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94303,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions Configurations: Language is required",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nA language is required to create a new configuration\n\n### Possible causes\n\n- \"Language\" value is blank\n- \"Language\" value is null\n\n### Possible solutions\n\n- Specify a valid \"language\" as a BCP-47 code\n",
    "causes": "* \"Language\" value is blank\n* \"Language\" value is null",
    "solutions": "* Specify a valid \"language\" as a BCP-47 code",
    "description": "A language is required to create a new configuration",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94304,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions Configurations: Language is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nInvalid language value, either to create a new configuration or update existing one. Language should be a BCP-47 code\n\n### Possible causes\n\n- \"Language\" value is not a BCP-47 code\n\n### Possible solutions\n\n- Specify a valid \"language\" as a BCP-47 code\n",
    "causes": "* \"Language\" value is not a BCP-47 code",
    "solutions": "* Specify a valid \"language\" as a BCP-47 code",
    "description": "Invalid language value, either to create a new configuration or update existing one. Language should be a BCP-47 code",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94400,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Transcriptions: transcription internal error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio due to an internal issue. The transcription files have been deleted and the resource has been marked as \"failed\"\n\n### Possible causes\n\n- Twilio failed to process transcription request and all retries attempts were exhausted\n- Twilio failed to normalize and/or store transcription results and all retries attempts were exhausted\n\n### Possible solutions\n",
    "causes": "* Twilio failed to process transcription request and all retries attempts were exhausted\n* Twilio failed to normalize and/or store transcription results and all retries attempts were exhausted",
    "solutions": "",
    "description": "Twilio failed to transcribe audio due to an internal issue. The transcription files have been deleted and the resource has been marked as \"failed\"",
    "date_created": "2021-07-21T09:10:20Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94401,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Transcriptions: audio processing error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio due to an issue with the transcription provider. The transcription files have been deleted and the resource has been marked as \"failed\"\n\n### Possible causes\n\n- The speech-to-text provider failed to transcribe audio\n\n### Possible solutions\n",
    "causes": "* The speech-to-text provider failed to transcribe audio",
    "solutions": "",
    "description": "Twilio failed to transcribe audio due to an issue with the transcription provider. The transcription files have been deleted and the resource has been marked as \"failed\"",
    "date_created": "2021-07-21T09:11:04Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94402,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions: Encryption failed and transcription result files deleted",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to encrypt and securely store transcription results. The transcription files have been deleted and the resource has been marked as \"failed\"\n\n### Possible causes\n\n- Twilio failed to encrypt transcription results and all retries attempts were exhausted\n\n### Possible solutions\n\n- Set a public key that can be used to encrypt transcription results or disable encryption so future transcriptions can be successfully processed and stored\n",
    "causes": "* Twilio failed to encrypt transcription results and all retries attempts were exhausted",
    "solutions": "* Set a public key that can be used to encrypt transcription results or disable encryption so future transcriptions can be successfully processed and stored",
    "description": "Twilio failed to encrypt and securely store transcription results. The transcription files have been deleted and the resource has been marked as \"failed\"",
    "date_created": "2021-07-27T09:48:49Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94403,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Transcriptions: Invalid encryption credentials",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nPublic key credentials to encrypt transcription results are invalid. Twilio will attempt operation again shortly.\n\n### Possible causes\n\n- Public key specified in Transcription Settings is not found in Twilio Credentials Storage\n- Public key defined in credentials resource is invalid and can't be used to encrypt transcription files\n- Public key defined in credentials resource is expired and can't be used to encrypt transcription files\n\n### Possible solutions\n\n- Ensure public key is correct in credentials resource\n- Set a different public key that can be used to encrypt transcription results or disable encryption\n",
    "causes": "* Public key specified in Transcription Settings is not found in Twilio Credentials Storage\n* Public key defined in credentials resource is invalid and can't be used to encrypt transcription files\n* Public key defined in credentials resource is expired and can't be used to encrypt transcription files",
    "solutions": "* Ensure public key is correct in credentials resource\n* Set a different public key that can be used to encrypt transcription results or disable encryption",
    "description": "Public key credentials to encrypt transcription results are invalid. Twilio will attempt operation again shortly.",
    "date_created": "2021-07-27T09:49:57Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94500,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions: sourceSid invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe action could not be performed because the sourceSid provided is not valid\n\n### Possible causes\n\n- sourceSid value is invalid\n- sourceSid is not a call recording sid\n\n### Possible solutions\n\n- Specify a sourceSid of a valid call recording\n",
    "causes": "* sourceSid value is invalid\n* sourceSid is not a call recording sid",
    "solutions": "* Specify a sourceSid of a valid call recording",
    "description": "The action could not be performed because the sourceSid provided is not valid",
    "date_created": "2022-03-01T14:16:52Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94501,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcriptions: Status invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe action could not be performed because the Status provided is not valid.\n\n### Possible causes\n\n- Status value is invalid.\n\n### Possible solutions\n\n- Value must be enqueued, processing, completed, failed or deleted.\n",
    "causes": "* Status value is invalid.",
    "solutions": "* Value must be enqueued, processing, completed, failed or deleted.",
    "description": "The action could not be performed because the Status provided is not valid.",
    "date_created": "2022-05-09T16:04:22Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94600,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Filter limit exceeded",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe action could not be performed because the filter limit was exceeded.\n\n### Possible causes\n\n- There were too many filters applied.\n\n### Possible solutions\n\n- Use date filtering freely plus at most one other filter.\n",
    "causes": "* There were too many filters applied.",
    "solutions": "* Use date filtering freely plus at most one other filter.",
    "description": "The action could not be performed because the filter limit was exceeded.",
    "date_created": "2022-05-09T16:05:09Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94601,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Date range is not valid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe action could not be performed because the date range provided is not valid.\n\n### Possible causes\n\n- UntilDate is equal or more recent than FromDate.\n\n### Possible solutions\n\n- FromDate should be a recent date than UntilDate.\n",
    "causes": "* UntilDate is equal or more recent than FromDate.",
    "solutions": "* FromDate should be a recent date than UntilDate.",
    "description": "The action could not be performed because the date range provided is not valid.",
    "date_created": "2022-05-09T16:05:49Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid FromDate",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe action could not be performed because the FromDate is invalid.\n\n### Possible causes\n\n- FromDate is a future date.\n\n### Possible solutions\n\n- FromDate should be earlier than the present date.\n",
    "causes": "* FromDate is a future date.",
    "solutions": "* FromDate should be earlier than the present date.",
    "description": "The action could not be performed because the FromDate is invalid.",
    "date_created": "2022-05-09T16:06:59Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94603,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Ttl is out of range",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe action could not be performed because the TTL provided is out of range.\n\n### Possible causes\n\n- Ttl is smaller than 1 seconds\n- Ttl is bigger than 3600 seconds\n\n### Possible solutions\n\n- Ttl value must be between 1 and 3600 seconds\n",
    "causes": "* Ttl is smaller than 1 seconds\n* Ttl is bigger than 3600 seconds",
    "solutions": "* Ttl value must be between 1 and 3600 seconds",
    "description": "The action could not be performed because the TTL provided is out of range.",
    "date_created": "2022-05-10T10:23:52Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 94604,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Account Sid on Legal Hold.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Account is on Legal Hold, the operation could not be performed.\n\n### Possible causes\n\n- The account has a Legal Hold\n\n### Possible solutions\n",
    "causes": "* The account has a Legal Hold",
    "solutions": "",
    "description": "The Account is on Legal Hold, the operation could not be performed.",
    "date_created": "2022-05-09T15:40:38Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid media url",
    "secondary_message": null,
    "product": "Understand",
    "products_used": [
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nTwilio couldn't create a new Transcript because the `Channel` object's `media_properties.media_url` value isn't a valid URI. Use `media_url` when you transcribe an external recording. If you're transcribing a Twilio Recording stored in Twilio, use `source_sid` instead.\n\n### Possible causes\n\n- The `media_url` value in `Channel.media_properties` is malformed or isn't a valid URI for an external recording.\n- You included both `media_url` and `source_sid` in the same Transcript creation request. When both values are present, Twilio uses `media_url`.\n\n### Possible solutions\n\n- Provide a valid URL in `Channel.media_properties.media_url` when you create a Transcript for an external recording.\n- If the recording is a Twilio Recording stored in Twilio, remove `media_url` and provide `source_sid` in `Channel.media_properties` instead.\n- If the recording is stored externally, make the file publicly accessible during transcription. Use a presigned URL or SAS URL if the file is access-controlled. Don't use basic authentication on `media_url`.\n\n#### Additional resources\n\n- [Transcript resource](/docs/conversation-intelligence-classic/api/transcript-resource)\n- [Conversation Intelligence (classic) onboarding guide](/docs/conversation-intelligence-classic/onboarding)\n- [Customize Conversation Intelligence (classic)](/docs/conversation-intelligence-classic/customize)\n",
    "causes": "* The `media_url` value in `Channel.media_properties` is malformed or isn't a valid URI for an external recording.\n* You included both `media_url` and `source_sid` in the same Transcript creation request. When both values are present, Twilio uses `media_url`.",
    "solutions": "* Provide a valid URL in `Channel.media_properties.media_url` when you create a Transcript for an external recording.\n* If the recording is a Twilio Recording stored in Twilio, remove `media_url` and provide `source_sid` in `Channel.media_properties` instead.\n* If the recording is stored externally, make the file publicly accessible during transcription. Use a presigned URL or SAS URL if the file is access-controlled. Don't use basic authentication on `media_url`.",
    "description": "Twilio couldn't create a new Transcript because the `Channel` object's `media_properties.media_url` value isn't a valid URI. Use `media_url` when you transcribe an external recording. If you're transcribing a Twilio Recording stored in Twilio, use `source_sid` instead.",
    "date_created": "2024-04-16T17:27:12Z",
    "last_updated": "2026-04-23T13:38:05-04:00"
  },
  {
    "code": 95006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media url is empty",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to create a new transcript due to an empty media url\n\n### Possible causes\n\nCreate transcript requests cannot have an empty media url if no recording is specified.\n\n### Possible solutions\n\nProvide a valid media url.\n",
    "causes": "Create transcript requests cannot have an empty media url if no recording is specified.",
    "solutions": "Provide a valid media url.",
    "description": "Twilio failed to create a new transcript due to an empty media url",
    "date_created": "2024-04-16T17:28:33Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95100,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to transcribe",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio due to an internal issue.The resource has been marked as \"failed\"\n\n### Possible causes\n\nThis is an internal issue.\n\n### Possible solutions\n\nContact support\n",
    "causes": "This is an internal issue.",
    "solutions": "Contact support",
    "description": "Twilio failed to transcribe audio due to an internal issue.The resource has been marked as \"failed\"",
    "date_created": "2024-04-16T17:29:40Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95102,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcript media processing error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio due to an issue with the transcript recording. The transcript files have been deleted and the resource has been marked as \"failed\"\n\n### Possible causes\n\nThe recording was deleted. The recording is not authorized to the given account.\n\n### Possible solutions\n\nEnsure the recording status is completed before starting to transcribe. Ensure the recording was not deleted. Ensure the recording is part of the given account.\n",
    "causes": "The recording was deleted. The recording is not authorized to the given account.",
    "solutions": "Ensure the recording status is completed before starting to transcribe. Ensure the recording was not deleted. Ensure the recording is part of the given account.",
    "description": "Twilio failed to transcribe audio due to an issue with the transcript recording. The transcript files have been deleted and the resource has been marked as \"failed\"",
    "date_created": "2024-06-12T17:37:47Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95103,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media file reached maximum size",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio due to an issue with the audio file size. The transcription files have been deleted and the resource has been marked as \"failed\"\n\n### Possible causes\n\nThe audio file size is larger than 3 GiB.\n\n### Possible solutions\n\nUse a different format that allows the file to be compressed, like mp3. Split the file into shorter audio files and process them separately.\n",
    "causes": "The audio file size is larger than 3 GiB.",
    "solutions": "Use a different format that allows the file to be compressed, like mp3. Split the file into shorter audio files and process them separately.",
    "description": "Twilio failed to transcribe audio due to an issue with the audio file size. The transcription files have been deleted and the resource has been marked as \"failed\"",
    "date_created": "2024-04-16T17:31:27Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95104,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid media type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio due to an invalid media type. The transcription resource has been marked as \"failed\"\n\n### Possible causes\n\nMedia type is not supported.\n\n### Possible solutions\n\nConvert the file into one of the supported media types: wav, mp3 or FLAC.\n",
    "causes": "Media type is not supported.",
    "solutions": "Convert the file into one of the supported media types: wav, mp3 or FLAC.",
    "description": "Twilio failed to transcribe audio due to an invalid media type. The transcription resource has been marked as \"failed\"",
    "date_created": "2024-04-16T17:32:18Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95105,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to download audio file",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio due to download failure. The transcription resource has been marked as \"failed\"\n\n### Possible causes\n\nTimeout trying to download the file. Connection problem.\n\n### Possible solutions\n\nEnsure the file exist and accessible in the provided url\n",
    "causes": "Timeout trying to download the file. Connection problem.",
    "solutions": "Ensure the file exist and accessible in the provided url",
    "description": "Twilio failed to transcribe audio due to download failure. The transcription resource has been marked as \"failed\"",
    "date_created": "2024-04-16T17:33:20Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95106,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Speech-to-Text engine error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio failed to transcribe audio due to a third party speech-to-text engine failure. The transcription resource has been marked as \"failed\".\n\n### Possible causes\n\nTranscript language is not the one specified in the service.\n\n### Possible solutions\n\nEnsure the transcript language matches the specified language of the service.\n",
    "causes": "Transcript language is not the one specified in the service.",
    "solutions": "Ensure the transcript language matches the specified language of the service.",
    "description": "Twilio failed to transcribe audio due to a third party speech-to-text engine failure. The transcription resource has been marked as \"failed\".",
    "date_created": "2024-05-27T08:34:05Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95108,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to delete resource",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio couldn't delete the requested Conversational Intelligence Transcript resource. Use the delete endpoint only with the `Sid` of an existing Transcript resource. If you need to process the same recording again, delete the original Transcript and then create a new one.\n\n### Possible causes\n\n- The Transcript resource was already deleted.\n- The delete operation couldn't complete because the backing storage step failed. Failed access to S3 is a documented example for this error.\n\n### Possible solutions\n\n- Confirm that you are deleting the correct Transcript `Sid`. The delete endpoint expects a Transcript `Sid` in `GT` format.\n- If the Transcript has already been deleted, no further delete action is required. Fetch or list your Transcript resources first to confirm which resource still exists before retrying the delete request.\n- If you are deleting a Transcript so you can re-transcribe the same recording, delete the original Transcript and then create a new Transcript resource for that recording.\n- If your transcription workflow uses media stored outside Twilio, verify that the media location is accessible. For recordings stored on S3, use a presigned URL. Twilio makes a single access attempt for external recordings.\n\n#### Additional resources\n\n- [Conversation Intelligence Transcript Resource](/docs/conversation-intelligence-classic/api/transcript-resource)\n- [Conversation Intelligence Transcript Media Subresource](/docs/conversation-intelligence-classic/api/transcript-media-subresource)\n- [Conversational Intelligence onboarding guide](/docs/conversation-intelligence-classic/onboarding)\n",
    "causes": "* The Transcript resource was already deleted.\n* The delete operation couldn't complete because the backing storage step failed. Failed access to S3 is a documented example for this error.",
    "solutions": "* Confirm that you are deleting the correct Transcript `Sid`. The delete endpoint expects a Transcript `Sid` in `GT` format.\n* If the Transcript has already been deleted, no further delete action is required. Fetch or list your Transcript resources first to confirm which resource still exists before retrying the delete request.\n* If you are deleting a Transcript so you can re-transcribe the same recording, delete the original Transcript and then create a new Transcript resource for that recording.\n* If your transcription workflow uses media stored outside Twilio, verify that the media location is accessible. For recordings stored on S3, use a presigned URL. Twilio makes a single access attempt for external recordings.",
    "description": "Twilio couldn't delete the requested Conversational Intelligence Transcript resource. Use the delete endpoint only with the `Sid` of an existing Transcript resource. If you need to process the same recording again, delete the original Transcript and then create a new one.",
    "date_created": "2024-05-03T18:46:27Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 95109,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media content is empty",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nTwilio returns this error when it downloads the media for a transcription request and the file has no usable audio content. This can happen when the media file is empty or when the recording is shorter than two seconds, because recordings shorter than two seconds are not transcribed.\n\n### Possible causes\n- The file referenced by `mediaUrl` is empty or contains no usable audio content.\n- The recording is shorter than two seconds.\n- The audio file was exported or generated incorrectly, which produced a file container without playable audio.\n\n### Possible solutions\n- Open the source recording and confirm that it contains audible content before you submit it for transcription.\n- If you use `mediaUrl`, make sure the URL points directly to the audio file and that the file is fully available when Twilio fetches it.\n- Submit a recording that is at least two seconds long.\n- Re-export the recording in a supported format such as WAV PCM, MP3, or FLAC if the current file was generated incorrectly.\n\n#### Additional resources\n- [Batch Transcription resource](/docs/voice/api/batch-transcription-resource)\n- [Conversation Intelligence (classic) Transcript resource](/docs/conversation-intelligence-classic/api/transcript-resource)\n- [Transcriptions resource](/docs/voice/api/recording-transcription)\n",
    "causes": "* The file referenced by `mediaUrl` is empty or contains no usable audio content.\n* The recording is shorter than two seconds.\n* The audio file was exported or generated incorrectly, which produced a file container without playable audio.",
    "solutions": "* Open the source recording and confirm that it contains audible content before you submit it for transcription.\n* If you use `mediaUrl`, make sure the URL points directly to the audio file and that the file is fully available when Twilio fetches it.\n* Submit a recording that is at least two seconds long.\n* Re-export the recording in a supported format such as WAV PCM, MP3, or FLAC if the current file was generated incorrectly.",
    "description": "Twilio returns this error when it downloads the media for a transcription request and the file has no usable audio content. This can happen when the media file is empty or when the recording is shorter than two seconds, because recordings shorter than two seconds are not transcribed.",
    "date_created": "2024-04-16T17:34:27Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 95110,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to download media: file was not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nFailed to download media file was not found\n\n### Possible causes\n\nMedia file was deleted. Misspelled URL.\n\n### Possible solutions\n\nVerify the media file was not deleted and the URL is correct.\n",
    "causes": "Media file was deleted. Misspelled URL.",
    "solutions": "Verify the media file was not deleted and the URL is correct.",
    "description": "Failed to download media file was not found",
    "date_created": "2024-04-16T17:35:23Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95111,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Failed to download media file: unauthorized",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe media file is not accessible. The URL returned \"Unauthorized\" when trying to download.\n\n### Possible causes\n\nProtected resource. Expired pre-signed URL.\n\n### Possible solutions\n\nVerify that the media url is not an expired pre-signed URL or ensure open access to the media.\n",
    "causes": "Protected resource. Expired pre-signed URL.",
    "solutions": "Verify that the media url is not an expired pre-signed URL or ensure open access to the media.",
    "description": "The media file is not accessible. The URL returned \"Unauthorized\" when trying to download.",
    "date_created": "2024-04-16T17:36:14Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95112,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid sample rate found on media",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe media sample rate is less than the minimum required to transcribe.\n\n### Possible causes\n\nThe media file sample rate is less than 8KHz.\n\n### Possible solutions\n\nUse media with a higher sample rate.\n",
    "causes": "The media file sample rate is less than 8KHz.",
    "solutions": "Use media with a higher sample rate.",
    "description": "The media sample rate is less than the minimum required to transcribe.",
    "date_created": "2024-04-16T17:37:25Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95113,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Corrupted media provided",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe media file is corrupted and could not be opened.\n\n### Possible causes\n\nCorruption of data. Error recording media.\n\n### Possible solutions\n\nVerify the media is not corrupted or use another media.\n",
    "causes": "Corruption of data. Error recording media.",
    "solutions": "Verify the media is not corrupted or use another media.",
    "description": "The media file is corrupted and could not be opened.",
    "date_created": "2024-04-16T17:38:04Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95114,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media duration is too long.",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nValidation of audio failed as it is longer than the allowed maximum duration (8h). Some STT providers have this limit in place.\n\n### Possible causes\n\nMedia duration is longer than 8h.\n\n### Possible solutions\n\nSplit audio into smaller pieces.\n",
    "causes": "Media duration is longer than 8h.",
    "solutions": "Split audio into smaller pieces.",
    "description": "Validation of audio failed as it is longer than the allowed maximum duration (8h). Some STT providers have this limit in place.",
    "date_created": "2024-04-16T17:38:48Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95115,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Media has too many channels",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nValidation of audio failed because it contains more than two channels.\n\n### Possible causes\n\nMulti channel audio containing more than 2 channels. It could come from a recording of a conference.\n\n### Possible solutions\n\nRemove unnecessary channels. Downmix extra channels into one.\n",
    "causes": "Multi channel audio containing more than 2 channels. It could come from a recording of a conference.",
    "solutions": "Remove unnecessary channels. Downmix extra channels into one.",
    "description": "Validation of audio failed because it contains more than two channels.",
    "date_created": "2024-04-16T17:39:53Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95116,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "PCI Recordings are not supported",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\nThis warning appears when you try to create a Conversation Intelligence transcript from a Twilio Voice recording on an account with PCI Mode enabled. Conversation Intelligence is not PCI compliant, and PCI Voice Recordings can't be used to create transcripts from a recording `SourceSid`.\n\n### Possible causes\n- PCI Mode is enabled for the account, so the recording is treated as a PCI Voice Recording.\n- The transcript request uses a Twilio Recording `SourceSid` instead of an external recording `MediaUrl`.\n- The workflow sends audio to Conversation Intelligence even though the workflow is subject to PCI.\n\n### Possible solutions\n- If the workflow is subject to PCI, do not send the recording to Conversation Intelligence.\n- If you need to transcribe a recording stored outside Twilio, create the transcript with `MediaUrl` instead of `SourceSid`.\n- Make sure the `MediaUrl` stays accessible while transcription runs. Use a public URL or a pre-signed URL if the file is stored in external storage.\n\n#### Additional resources\n- [Conversation Intelligence onboarding](/docs/conversation-intelligence-classic/onboarding)\n- [Transcript Resource](/docs/conversation-intelligence-classic/api/transcript-resource)\n- [Payment Card Industry Programmable Voice workflows](/docs/voice/pci-workflows)\n",
    "causes": "* PCI Mode is enabled for the account, so the recording is treated as a PCI Voice Recording.\n* The transcript request uses a Twilio Recording `SourceSid` instead of an external recording `MediaUrl`.\n* The workflow sends audio to Conversation Intelligence even though the workflow is subject to PCI.",
    "solutions": "* If the workflow is subject to PCI, do not send the recording to Conversation Intelligence.\n* If you need to transcribe a recording stored outside Twilio, create the transcript with `MediaUrl` instead of `SourceSid`.\n* Make sure the `MediaUrl` stays accessible while transcription runs. Use a public URL or a pre-signed URL if the file is stored in external storage.",
    "description": "This warning appears when you try to create a Conversation Intelligence transcript from a Twilio Voice recording on an account with PCI Mode enabled. Conversation Intelligence is not PCI compliant, and PCI Voice Recordings can't be used to create transcripts from a recording `SourceSid`.",
    "date_created": "2024-05-30T16:55:20Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 95118,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Twilio Recordings with external storage are not supported",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nConversation Intelligence (classic) does not support Twilio Recordings with external storage\n\n### Possible causes\n\nTwilio Recordings use external storage\n\n### Possible solutions\n\nUse the MediaUrl parameter instead of the SourceSid when creating a Transcription\n",
    "causes": "Twilio Recordings use external storage",
    "solutions": "Use the MediaUrl parameter instead of the SourceSid when creating a Transcription",
    "description": "Conversation Intelligence (classic) does not support Twilio Recordings with external storage",
    "date_created": "2024-05-30T16:57:02Z",
    "last_updated": "2026-04-23T13:38:05-04:00"
  },
  {
    "code": 95119,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Conversation Intelligence does not support encrypted recordings",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis warning appears when you try to create a Conversation Intelligence Transcript from a Voice Recording that was encrypted with Voice Recording Encryption. Conversation Intelligence can't decrypt encrypted recordings, so it can't transcribe them directly.\n\n### Possible causes\n\n- Voice Recording Encryption is enabled on the project or subaccount, which means new Voice Recordings are encrypted with your public key after they are created.\n- The transcript request uses a Twilio Recording SID in `source_sid`, but the referenced recording is encrypted. Conversation Intelligence can't create a Transcript from an encrypted Twilio-hosted recording.\n- The media file provided for transcription is still encrypted. External recordings must be accessible for download during transcription, and encrypted recordings aren't supported.\n\n### Possible solutions\n\n- Decrypt the recording outside Twilio by using your private key together with the recording's `EncryptionDetails` from the Recording resource.\n- Store the decrypted audio in your own external storage and create the Transcript with `media_url` instead of `source_sid`. Conversation Intelligence supports external recordings through a publicly accessible or time-limited pre-signed URL.\n- Use an unencrypted recording when you want to create a Transcript directly from a Twilio Recording SID.\n- Make sure the external file stays accessible for the full transcription job and returns an HTTP 200 response when Conversation Intelligence fetches it.\n\n#### Additional resources\n- [Voice Recording Encryption](/docs/voice/tutorials/voice-recording-encryption)\n- [Conversation Intelligence Transcript Resource](/docs/conversation-intelligence-classic/api/transcript-resource)\n- [Conversation Intelligence (classic) overview](/docs/conversation-intelligence-classic)\n",
    "causes": "* Voice Recording Encryption is enabled on the project or subaccount, which means new Voice Recordings are encrypted with your public key after they are created.\n* The transcript request uses a Twilio Recording SID in `source_sid`, but the referenced recording is encrypted. Conversation Intelligence can't create a Transcript from an encrypted Twilio-hosted recording.\n* The media file provided for transcription is still encrypted. External recordings must be accessible for download during transcription, and encrypted recordings aren't supported.",
    "solutions": "* Decrypt the recording outside Twilio by using your private key together with the recording's `EncryptionDetails` from the Recording resource.\n* Store the decrypted audio in your own external storage and create the Transcript with `media_url` instead of `source_sid`. Conversation Intelligence supports external recordings through a publicly accessible or time-limited pre-signed URL.\n* Use an unencrypted recording when you want to create a Transcript directly from a Twilio Recording SID.\n* Make sure the external file stays accessible for the full transcription job and returns an HTTP 200 response when Conversation Intelligence fetches it.",
    "description": "This warning appears when you try to create a Conversation Intelligence Transcript from a Voice Recording that was encrypted with Voice Recording Encryption. Conversation Intelligence can't decrypt encrypted recordings, so it can't transcribe them directly.",
    "date_created": "2024-05-30T16:58:05Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 95120,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Twilio Recording is not in a valid status to be transcribed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio Recording is not in a valid status to be transcribed\n\n### Possible causes\n\nThe recording is in-progress, absent or deleted\n\n### Possible solutions\n\nSend recording in completed status\n",
    "causes": "The recording is in-progress, absent or deleted",
    "solutions": "Send recording in completed status",
    "description": "Twilio Recording is not in a valid status to be transcribed",
    "date_created": "2025-05-12T11:58:38Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95121,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Public Key Encryption is disabled for this account",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nPublic Key Encryption is not enabled for this account.\n\n### Possible causes\n\nYour account does not have a Twilio Security or Enterprise Edition.\n\n### Possible solutions\n\nPlease reach out to Support for assistance.\n",
    "causes": "Your account does not have a Twilio Security or Enterprise Edition.",
    "solutions": "Please reach out to Support for assistance.",
    "description": "Public Key Encryption is not enabled for this account.",
    "date_created": "2025-05-22T15:44:23.343Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95122,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Twilio Recording is not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you create a Conversation Intelligence transcript from a Twilio recording and Twilio can't find the recording identified by `source_sid`. For Twilio recordings, the Transcript resource expects the SID of a Twilio Recording resource, and that SID must be an `RE` SID. Voice Recording resources can also be deleted, which makes them unavailable for transcription.\n\n### Possible causes\n\n- The `source_sid` value is incorrect, incomplete, or not a valid Twilio Recording SID with the `RE` prefix.\n- The recording was deleted, so Twilio can no longer find it when processing the transcript request.\n\n### Possible solutions\n\n- Verify the recording SID in your transcript request and make sure you pass the exact `source_sid` for the Twilio recording you want to transcribe.\n- Fetch the recording from the Recordings resource to confirm that it still exists before you submit the transcript request. Twilio supports fetching Voice Recording resources through the Recordings API.\n- Use an existing recording that has not been deleted. If the original recording was removed, create or reference a different recording and submit a new transcript request with that recording SID.\n\n#### Additional resources\n\n- [Conversation Intelligence (classic) Transcript resource](/docs/conversation-intelligence-classic/api/transcript-resource)\n- [Voice Recordings resource](/docs/voice/api/recording)\n- [Missing Programmable Voice Recordings](https://help.twilio.com/articles/360014252253-Missing-Programmable-Voice-Recordings)\n",
    "causes": "* The `source_sid` value is incorrect, incomplete, or not a valid Twilio Recording SID with the `RE` prefix.\n* The recording was deleted, so Twilio can no longer find it when processing the transcript request.",
    "solutions": "* Verify the recording SID in your transcript request and make sure you pass the exact `source_sid` for the Twilio recording you want to transcribe.\n* Fetch the recording from the Recordings resource to confirm that it still exists before you submit the transcript request. Twilio supports fetching Voice Recording resources through the Recordings API.\n* Use an existing recording that has not been deleted. If the original recording was removed, create or reference a different recording and submit a new transcript request with that recording SID.",
    "description": "This error occurs when you create a Conversation Intelligence transcript from a Twilio recording and Twilio can't find the recording identified by `source_sid`. For Twilio recordings, the Transcript resource expects the SID of a Twilio Recording resource, and that SID must be an `RE` SID. Voice Recording resources can also be deleted, which makes them unavailable for transcription.",
    "date_created": "2025-05-23T09:03:09.67Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 95123,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Public Key Encryption credential is invalid",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe encryptionCredentialSid specified in the Service parameter is invalid.\n\n### Possible causes\n\n- The Credential Sid does not exist, is expired or has been deleted.\n- The credential Sid you attempted to use does not belong to this account.\n\n### Possible solutions\n\n- Check Credentials of your account to ensure that your public key has been created and has not been deleted.\n- If you use subaccounts, ensure that your public key has also been created in the subaccount.\n",
    "causes": "* The Credential Sid does not exist, is expired or has been deleted.\n* The credential Sid you attempted to use does not belong to this account.",
    "solutions": "* Check Credentials of your account to ensure that your public key has been created and has not been deleted.\n* If you use subaccounts, ensure that your public key has also been created in the subaccount.",
    "description": "The encryptionCredentialSid specified in the Service parameter is invalid.",
    "date_created": "2025-08-19T09:32:33.261Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95124,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Public Key Encryption does not support media redaction",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nThis error occurs when you create or update a Conversation Intelligence (classic) Service with both `mediaRedaction` and `encryptionCredentialSid` configured. `mediaRedaction` redacts PII from transcript media, and `encryptionCredentialSid` applies your public key to transcript sentences and operator results. Use only one of these settings on the same Service.\n\n### Possible causes\n\n- You sent a Create Service request with `mediaRedaction` enabled and an `encryptionCredentialSid` in the same Service configuration.\n- You updated an existing Service to add public key encryption after `mediaRedaction` was already enabled.\n- You updated an existing Service to enable `mediaRedaction` after a public key had already been attached to the Service.\n\n### Possible solutions\n\n- Choose one feature for the Service. Keep `mediaRedaction` and remove `encryptionCredentialSid`, or keep public key encryption and disable `mediaRedaction`.\n- Update the Service in the Console or with the Service Resource API so the Service does not include both settings at the same time.\n- Apply the change before creating new transcripts, because transcripts belong to a Service and inherit that Service configuration.\n\n#### Additional resources\n- [Conversation Intelligence (classic) Service Resource](/docs/conversation-intelligence-classic/api/service-resource)\n- [Encrypting transcripts and operator results](/docs/conversation-intelligence-classic/encrypting-transcripts-and-operator-results)\n- [Conversation Intelligence (classic) onboarding guide](/docs/conversation-intelligence-classic/onboarding)\n",
    "causes": "* You sent a Create Service request with `mediaRedaction` enabled and an `encryptionCredentialSid` in the same Service configuration.\n* You updated an existing Service to add public key encryption after `mediaRedaction` was already enabled.\n* You updated an existing Service to enable `mediaRedaction` after a public key had already been attached to the Service.",
    "solutions": "* Choose one feature for the Service. Keep `mediaRedaction` and remove `encryptionCredentialSid`, or keep public key encryption and disable `mediaRedaction`.\n* Update the Service in the Console or with the Service Resource API so the Service does not include both settings at the same time.\n* Apply the change before creating new transcripts, because transcripts belong to a Service and inherit that Service configuration.",
    "description": "This error occurs when you create or update a Conversation Intelligence (classic) Service with both `mediaRedaction` and `encryptionCredentialSid` configured. `mediaRedaction` redacts PII from transcript media, and `encryptionCredentialSid` applies your public key to transcript sentences and operator results. Use only one of these settings on the same Service.",
    "date_created": "2025-08-19T15:11:16.326Z",
    "last_updated": "2026-06-08T12:38:30+01:00"
  },
  {
    "code": 95200,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Status callback response error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio attempted to send a transcript event to the callback URL specified and your application returned a 4xx or 5xx or other HTTP response error\n\n### Possible causes\n\nThe callback URL specified is incorrect. Your application has an issue while handling callback requests or suffering and outage\n\n### Possible solutions\n\nEnsure that the callback URL specified is correct. Ensure that your callback server can handle the request and responds with a 2xx HTTP status code.\n",
    "causes": "The callback URL specified is incorrect. Your application has an issue while handling callback requests or suffering and outage",
    "solutions": "Ensure that the callback URL specified is correct. Ensure that your callback server can handle the request and responds with a 2xx HTTP status code.",
    "description": "Twilio attempted to send a transcript event to the callback URL specified and your application returned a 4xx or 5xx or other HTTP response error",
    "date_created": "2024-04-18T16:38:39Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95201,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Status callback response timed out",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio attempted to send a transcript event to the callback URL specified and your application didn't respond before time out\n\n### Possible causes\n\nThe server receiving status callbacks sent by Twilio takes too long to respond\n\n### Possible solutions\n\nEnsure that your callback server can handle the request and responds within a reasonable time\n",
    "causes": "The server receiving status callbacks sent by Twilio takes too long to respond",
    "solutions": "Ensure that your callback server can handle the request and responds within a reasonable time",
    "description": "Twilio attempted to send a transcript event to the callback URL specified and your application didn't respond before time out",
    "date_created": "2024-04-18T16:36:09Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95250,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "AI/ML Features Addendum has not been accepted",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\n[The Predictive and Generative AI/ML Features Addendum](https://www.twilio.com/en-us/legal/ai-terms/predictive-generative-ai-features) has to be accepted.\n\n### Possible causes\n\nThe Predictive and Generative AI/ML Features Addendum has not been accepted yet.\n\n### Possible solutions\n\nAccept the [Predictive and Generative AI/ML Features Addendum](https://www.twilio.com/en-us/legal/ai-terms/predictive-generative-ai-features) on the **Privacy & Security** tab of the Voice general settings page in [Twilio Console](https://1console.twilio.com/go?to=/account/__account__/us1/voice/settings/general-settings/privacy-security-settings) or the [legacy Console](https://console.twilio.com/us1/develop/voice/settings/general?frameUrl=%2Fconsole%2Fvoice%2Fsettings%3Fx-target-region%3Dus1).\n",
    "causes": "The Predictive and Generative AI/ML Features Addendum has not been accepted yet.",
    "solutions": "Accept the [Predictive and Generative AI/ML Features Addendum](https://www.twilio.com/en-us/legal/ai-terms/predictive-generative-ai-features) on the **Privacy & Security** tab of the Voice general settings page in [Twilio Console](https://1console.twilio.com/go?to=/account/__account__/us1/voice/settings/general-settings/privacy-security-settings) or the [legacy Console](https://console.twilio.com/us1/develop/voice/settings/general?frameUrl=%2Fconsole%2Fvoice%2Fsettings%3Fx-target-region%3Dus1).",
    "description": "[The Predictive and Generative AI/ML Features Addendum](https://www.twilio.com/en-us/legal/ai-terms/predictive-generative-ai-features) has to be accepted.",
    "date_created": "2024-06-17T08:08:00Z",
    "last_updated": "2026-05-06T08:22:30-05:00"
  },
  {
    "code": 95300,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Conversation Intelligence (classic) Service was not found",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Conversation Intelligence (classic) Service specified was not found.\n\n### Possible causes\n\nThe service specified in the \"intelligenceService\" property does not exist or has not been created under the account.\n\n### Possible solutions\n\nVerify that the service exists for the account in the Conversation Intelligence (classic) product.\n",
    "causes": "The service specified in the \"intelligenceService\" property does not exist or has not been created under the account.",
    "solutions": "Verify that the service exists for the account in the Conversation Intelligence (classic) product.",
    "description": "The Conversation Intelligence (classic) Service specified was not found.",
    "date_created": "2024-12-16T11:00:35Z",
    "last_updated": "2026-04-23T13:38:05-04:00"
  },
  {
    "code": 95301,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Transcription language code does not match the Conversation Intelligence (classic) Service",
    "secondary_message": null,
    "product": "Programmable Voice, Understand",
    "products_used": [
      "voice",
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nThis error occurs when the `languageCode` on your Transcription request does not match the language configured on the Intelligence Service referenced by `intelligenceService`. Each Intelligence Service supports one transcription language only, and Twilio uses `en-US` by default if you do not set a language when you create the Service.\n\n### Possible causes\n\n- The Transcription request includes a `languageCode` that is different from the language configured on the referenced Intelligence Service.\n- The referenced Intelligence Service was created without an explicit `languageCode`, so the Service language defaulted to `en-US` while your Transcription request uses a different language.\n- You are trying to use one Intelligence Service for calls in multiple languages. An Intelligence Service supports only one `LanguageCode`, and you cannot update that value after the Service is created.\n\n### Possible solutions\n\n- Update the Transcription request so `languageCode` matches the language configured on the Intelligence Service you pass in `intelligenceService`.\n- If you need a different transcription language, create a new Intelligence Service with the required `languageCode` and use that Service SID or unique name in `intelligenceService`.\n- Create a separate Intelligence Service for each language you need to transcribe.\n\n#### Additional resources\n\n- [Calls Transcriptions subresource](/docs/voice/api/realtime-transcription-resource)\n- [TwiML `<Transcription>`](/docs/voice/twiml/transcription)\n- [Intelligence Service Resource](/docs/conversation-intelligence-classic/api/service-resource)\n",
    "causes": "* The Transcription request includes a `languageCode` that is different from the language configured on the referenced Intelligence Service.\n* The referenced Intelligence Service was created without an explicit `languageCode`, so the Service language defaulted to `en-US` while your Transcription request uses a different language.\n* You are trying to use one Intelligence Service for calls in multiple languages. An Intelligence Service supports only one `LanguageCode`, and you cannot update that value after the Service is created.",
    "solutions": "* Update the Transcription request so `languageCode` matches the language configured on the Intelligence Service you pass in `intelligenceService`.\n* If you need a different transcription language, create a new Intelligence Service with the required `languageCode` and use that Service SID or unique name in `intelligenceService`.\n* Create a separate Intelligence Service for each language you need to transcribe.",
    "description": "This error occurs when the `languageCode` on your Transcription request does not match the language configured on the Intelligence Service referenced by `intelligenceService`. Each Intelligence Service supports one transcription language only, and Twilio uses `en-US` by default if you do not set a language when you create the Service.",
    "date_created": "2024-12-16T11:02:07Z",
    "last_updated": "2026-04-23T13:38:05-04:00"
  },
  {
    "code": 95302,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Conversation Intelligence Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n\n## Description\n\nTwilio encountered an internal error while processing a Conversation Intelligence request. Use the Twilio Console Debugger to inspect the failed execution details and identify the affected resource.\n\n### Possible causes\n\n- An internal Conversation Intelligence service issue interrupted processing.\n- A Conversation Intelligence execution failed before Twilio could complete transcript analysis or return a result.\n- A downstream Conversation Intelligence operation, such as a language operator execution, encountered an internal failure.\n\n### Possible solutions\n\n- Open Twilio Console and go to **Monitor** > **Debugger**. Filter by source `conversation-intelligence` to review the Log SID, Resource SID, event type, timestamp, and log body for the failed execution.\n- Use the debugger details to confirm which Conversation Intelligence execution failed and whether the issue is isolated or recurring.\n- If the error persists, contact Twilio Support and include the Log SID, Resource SID, timestamp, and the steps that led to the failure.\n\n#### Additional resources\n\n- [Conversation Intelligence troubleshooting](/docs/conversations/intelligence/troubleshooting)\n- [Twilio Debugger](/docs/usage/troubleshooting/debugging-your-application)\n- [Contacting Twilio Support](https://help.twilio.com/articles/360048500694-Contacting-Twilio-Support%20)\n",
    "causes": "* An internal Conversation Intelligence service issue interrupted processing.\n* A Conversation Intelligence execution failed before Twilio could complete transcript analysis or return a result.\n* A downstream Conversation Intelligence operation, such as a language operator execution, encountered an internal failure.",
    "solutions": "* Open Twilio Console and go to **Monitor** > **Debugger**. Filter by source `conversation-intelligence` to review the Log SID, Resource SID, event type, timestamp, and log body for the failed execution.\n* Use the debugger details to confirm which Conversation Intelligence execution failed and whether the issue is isolated or recurring.\n* If the error persists, contact Twilio Support and include the Log SID, Resource SID, timestamp, and the steps that led to the failure.",
    "description": "Twilio encountered an internal error while processing a Conversation Intelligence request. Use the Twilio Console Debugger to inspect the failed execution details and identify the affected resource.",
    "date_created": "2024-12-16T11:03:52Z",
    "last_updated": "2026-09-25T11:57:30-07:00"
  },
  {
    "code": 95303,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Service requires redaction but request language is not available for redaction",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe request language is not available for redaction yet the service in use requires redaction\n\n### Possible causes\n\nMisconfigured service or use of the wrong service for the request in question\n\n### Possible solutions\n\nDisable auto-redaction on the service or use another service\n",
    "causes": "Misconfigured service or use of the wrong service for the request in question",
    "solutions": "Disable auto-redaction on the service or use another service",
    "description": "The request language is not available for redaction yet the service in use requires redaction",
    "date_created": "2025-06-16T10:06:15.215Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 95304,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Service requires media redaction but language is not supported for redaction",
    "secondary_message": null,
    "product": "Understand",
    "products_used": [
      "conversational-intelligence"
    ],
    "docs": "\n## Description\n\nThis error occurs when the Intelligence Service requires `mediaRedaction`, but the language used for the request is not supported for media redaction. Conversation Intelligence (classic) supports transcript PII redaction for all supported transcription languages, but media redaction is available only for `en-US`.\n\n### Possible causes\n\n- The Intelligence Service has `mediaRedaction` enabled, but the request is using a language other than `en-US`.\n- The request is using the wrong Intelligence Service, and that service is configured for a language that does not support media redaction.\n- The service was created with a non-`en-US` `languageCode`. An Intelligence Service supports only one language, and that language cannot be changed after the service is created.\n\n### Possible solutions\n\n- If you need media redaction, use an Intelligence Service configured with `languageCode` set to `en-US`.\n- If you do not need audio-level PII removal, disable `mediaRedaction` on the service and continue using transcript redaction instead.\n- Verify that your request points to the correct Intelligence Service. Update the referenced `serviceSid` or `intelligenceService` value if needed.\n- If your existing service uses a non-`en-US` language, create a new Intelligence Service for `en-US` and send the request to that service.\n\n#### Additional resources\n\n- [Conversation Intelligence (classic) onboarding guide](/docs/conversation-intelligence-classic/onboarding)\n- [Service Resource API reference](/docs/conversation-intelligence-classic/api/service-resource)\n- [Customize Your Conversation Intelligence (classic) Configuration](/docs/conversation-intelligence-classic/customize)\n",
    "causes": "* The Intelligence Service has `mediaRedaction` enabled, but the request is using a language other than `en-US`.\n* The request is using the wrong Intelligence Service, and that service is configured for a language that does not support media redaction.\n* The service was created with a non-`en-US` `languageCode`. An Intelligence Service supports only one language, and that language cannot be changed after the service is created.",
    "solutions": "* If you need media redaction, use an Intelligence Service configured with `languageCode` set to `en-US`.\n* If you do not need audio-level PII removal, disable `mediaRedaction` on the service and continue using transcript redaction instead.\n* Verify that your request points to the correct Intelligence Service. Update the referenced `serviceSid` or `intelligenceService` value if needed.\n* If your existing service uses a non-`en-US` language, create a new Intelligence Service for `en-US` and send the request to that service.",
    "description": "This error occurs when the Intelligence Service requires `mediaRedaction`, but the language used for the request is not supported for media redaction. Conversation Intelligence (classic) supports transcript PII redaction for all supported transcription languages, but media redaction is available only for `en-US`.",
    "date_created": "2025-06-16T10:22:27.072Z",
    "last_updated": "2026-04-23T13:38:05-04:00"
  },
  {
    "code": 95305,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Rule execution failure",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nSome or all language operators failed during execution of the intelligence rule.\n\n### Possible causes\n\n- One or more language operators in the rule failed to execute.\n- One or more language operators took too long to execute.\n- An unexpected internal error occurred while processing the rule.\n\n### Possible solutions\n\n- Open Twilio Console, go to **Monitor** > **Debugger**, and filter by Event type `com.twilio.intelligence.configuration.ruleexecution.operator.execution.failed` to identify which specific language operator failed and steps you can take to resolve the failure.\n- Review Debugger to check if individual operators are failing rather than the whole rule—these indicate operator-level failures where partial results may still be available.\n- If failures persist, review your rule configuration to ensure all referenced language operators are valid and properly configured, and that the Intelligence Configuration is correctly linked to the Conversation Configuration.\n- If the error persists, contact Twilio Support and include the Log SID, Resource SID, timestamp, and the steps that led to the failure.\n",
    "causes": "* One or more language operators in the rule failed to execute.\n* One or more language operators took too long to execute.\n* An unexpected internal error occurred while processing the rule.",
    "solutions": "* Open Twilio Console, go to **Monitor** > **Debugger**, and filter by Event type `com.twilio.intelligence.configuration.ruleexecution.operator.execution.failed` to identify which specific language operator failed and steps you can take to resolve the failure.\n* Review Debugger to check if individual operators are failing rather than the whole rule—these indicate operator-level failures where partial results may still be available.\n* If failures persist, review your rule configuration to ensure all referenced language operators are valid and properly configured, and that the Intelligence Configuration is correctly linked to the Conversation Configuration.\n* If the error persists, contact Twilio Support and include the Log SID, Resource SID, timestamp, and the steps that led to the failure.",
    "description": "Some or all language operators failed during execution of the intelligence rule.",
    "date_created": "2026-07-08T17:25:45+02:00",
    "last_updated": "2026-09-25T11:57:30-07:00"
  },
  {
    "code": 95306,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Language operator execution failure",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe language operator failed to execute. Other operators within the same rule may have completed successfully.\n\n### Possible causes\n\n- A Conversation Intelligence execution failed before Twilio could return a result.\n- The language operator took too long to execute.\n- An unexpected internal error occurred during operator execution that interrupted processing.\n\n### Possible solutions\n\n- Review your rule configuration to ensure all referenced language operators are valid and properly configured.\n- If the error persists, contact Twilio Support and include the Log SID, Resource SID, timestamp, and the steps that led to the failure.\n",
    "causes": "* A Conversation Intelligence execution failed before Twilio could return a result.\n* The language operator took too long to execute.\n* An unexpected internal error occurred during operator execution that interrupted processing.",
    "solutions": "* Review your rule configuration to ensure all referenced language operators are valid and properly configured.\n* If the error persists, contact Twilio Support and include the Log SID, Resource SID, timestamp, and the steps that led to the failure.",
    "description": "The language operator failed to execute. Other operators within the same rule may have completed successfully.",
    "date_created": "2026-07-08T17:25:45+02:00",
    "last_updated": "2026-07-08T17:25:45+02:00"
  },
  {
    "code": 95400,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Configuration validation failed during processing",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Intelligence Configuration failed validation during rule execution processing.\n\n### Possible causes\n\n- Configuration contains invalid parameters or references.\n- Referenced operators no longer exist or are unavailable.\n- Configuration schema does not match the expected format.\n\n### Possible solutions\n\n- Verify that the configuration is valid by using the Configuration API.\n- Check that all referenced operators exist and are accessible.\n- Review the configuration for any invalid or missing fields.\n",
    "causes": "* Configuration contains invalid parameters or references.\n* Referenced operators no longer exist or are unavailable.\n* Configuration schema does not match the expected format.",
    "solutions": "* Verify that the configuration is valid by using the Configuration API.\n* Check that all referenced operators exist and are accessible.\n* Review the configuration for any invalid or missing fields.",
    "description": "The Intelligence Configuration failed validation during rule execution processing.",
    "date_created": "2026-04-14T14:05:23-05:00",
    "last_updated": "2026-04-14T14:05:23-05:00"
  },
  {
    "code": 95402,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Operator execution timeout",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe operation exceeded the maximum allowed time and was terminated.\n\n### Possible causes\n\n- Operator processing exceeded the configured timeout.\n- Large conversation data causing extended processing time.\n\n### Possible solutions\n\n- Review the operator configuration for complexity.\n- Consider breaking down complex operations into smaller steps.\n",
    "causes": "* Operator processing exceeded the configured timeout.\n* Large conversation data causing extended processing time.",
    "solutions": "* Review the operator configuration for complexity.\n* Consider breaking down complex operations into smaller steps.",
    "description": "The operation exceeded the maximum allowed time and was terminated.",
    "date_created": "2026-04-14T14:05:23-05:00",
    "last_updated": "2026-04-14T14:05:23-05:00"
  },
  {
    "code": 95403,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Operator output schema validation failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe operator execution completed but the output did not conform to the expected schema.\n\n### Possible causes\n\n- Operator returned data in an unexpected format.\n- Output schema mismatch between operator version and configuration.\n\n### Possible solutions\n\n- Verify the operator configuration matches the expected output schema.\n- Update custom operator implementations to return valid output format.\n- Check for operator version compatibility with your configuration.\n",
    "causes": "* Operator returned data in an unexpected format.\n* Output schema mismatch between operator version and configuration.",
    "solutions": "* Verify the operator configuration matches the expected output schema.\n* Update custom operator implementations to return valid output format.\n* Check for operator version compatibility with your configuration.",
    "description": "The operator execution completed but the output did not conform to the expected schema.",
    "date_created": "2026-04-14T14:05:23-05:00",
    "last_updated": "2026-04-14T14:05:23-05:00"
  },
  {
    "code": 95404,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Operator guardrail violation",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe operator execution was blocked due to a guardrail violation.\n\n### Possible causes\n\n- Operator output violated the content safety guardrails.\n- Input data triggered safety filters.\n- The configured guardrail thresholds were exceeded.\n\n### Possible solutions\n\n- Review the conversation content for policy violations.\n- Contact Twilio Support for guidance on guardrail configuration.\n",
    "causes": "* Operator output violated the content safety guardrails.\n* Input data triggered safety filters.\n* The configured guardrail thresholds were exceeded.",
    "solutions": "* Review the conversation content for policy violations.\n* Contact Twilio Support for guidance on guardrail configuration.",
    "description": "The operator execution was blocked due to a guardrail violation.",
    "date_created": "2026-04-14T14:05:23-05:00",
    "last_updated": "2026-04-14T14:05:23-05:00"
  },
  {
    "code": 95405,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Language Operator version deprecated",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe rule was successfully executed, but a Twilio-authored language operator version used in the rule is deprecated.\n\n### Possible causes\n\n- The version of a Twilio-authored language operator used in the rule has been deprecated.\n\n### Possible solutions\n\n- Choose a newer version of the language operator.\n- Choose a different Twilio-authored language operator, if available.\n",
    "causes": "* The version of a Twilio-authored language operator used in the rule has been deprecated.",
    "solutions": "* Choose a newer version of the language operator.\n* Choose a different Twilio-authored language operator, if available.",
    "description": "The rule was successfully executed, but a Twilio-authored language operator version used in the rule is deprecated.",
    "date_created": "2026-07-08T17:25:45+02:00",
    "last_updated": "2026-07-08T17:25:45+02:00"
  },
  {
    "code": 95406,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Enterprise Knowledge search failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe language operator produced a result without accessing knowledge base content.\n\n### Possible causes\n\n- The Enterprise Knowledge service was temporarily unavailable.\n- The knowledge base ID is invalid or inaccessible.\n\n### Possible solutions\n\n- Confirm that your knowledge base is active.\n",
    "causes": "* The Enterprise Knowledge service was temporarily unavailable.\n* The knowledge base ID is invalid or inaccessible.",
    "solutions": "* Confirm that your knowledge base is active.",
    "description": "The language operator produced a result without accessing knowledge base content.",
    "date_created": "2026-07-08T17:25:45+02:00",
    "last_updated": "2026-07-08T17:25:45+02:00"
  },
  {
    "code": 95407,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Conversation Memory observation retrieval failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe language operator produced a result without accessing observations.\n\n### Possible causes\n\n- The Conversation Memory service was temporarily unavailable.\n- The memory store ID is invalid or inaccessible.\n\n### Possible solutions\n\n- Confirm that your memory store is active.\n",
    "causes": "* The Conversation Memory service was temporarily unavailable.\n* The memory store ID is invalid or inaccessible.",
    "solutions": "* Confirm that your memory store is active.",
    "description": "The language operator produced a result without accessing observations.",
    "date_created": "2026-07-08T17:25:45+02:00",
    "last_updated": "2026-07-08T17:25:45+02:00"
  },
  {
    "code": 95408,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Conversation Memory traits retrieval failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe language operator produced a result without accessing traits.\n\n### Possible causes\n\n- The Conversation Memory service was temporarily unavailable.\n- The memory store ID or profile ID is invalid or inaccessible.\n\n### Possible solutions\n\n- Confirm that your memory store is active.\n",
    "causes": "* The Conversation Memory service was temporarily unavailable.\n* The memory store ID or profile ID is invalid or inaccessible.",
    "solutions": "* Confirm that your memory store is active.",
    "description": "The language operator produced a result without accessing traits.",
    "date_created": "2026-07-08T17:25:45+02:00",
    "last_updated": "2026-07-08T17:25:45+02:00"
  },
  {
    "code": 95410,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Configuration validation failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Intelligence Configuration could not be created or updated because it failed validation.\n\n### Possible causes\n\n- Invalid parameters in the configuration request.\n- Missing required fields.\n- Schema validation errors in the configuration structure.\n- Referenced operators don't exist or aren't accessible.\n\n### Possible solutions\n\n- Review the API request for missing or invalid parameters.\n- Ensure all required fields are provided.\n- Verify that referenced operators exist in your account.\n- Check that action URLs are valid HTTPS endpoints.\n",
    "causes": "* Invalid parameters in the configuration request.\n* Missing required fields.\n* Schema validation errors in the configuration structure.\n* Referenced operators don't exist or aren't accessible.",
    "solutions": "* Review the API request for missing or invalid parameters.\n* Ensure all required fields are provided.\n* Verify that referenced operators exist in your account.\n* Check that action URLs are valid HTTPS endpoints.",
    "description": "The Intelligence Configuration could not be created or updated because it failed validation.",
    "date_created": "2026-04-14T14:05:23-05:00",
    "last_updated": "2026-04-14T14:05:23-05:00"
  },
  {
    "code": 95411,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Configuration version conflict",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe Intelligence Configuration could not be updated due to a version conflict.\n\n### Possible causes\n\n- Configuration was modified by another request since it was last fetched.\n- The `If-Match` header value does not match the current configuration version.\n- Concurrent updates to the same configuration\n\n### Possible solutions\n\n- Fetch the latest configuration version before updating.\n- Use the current ETag/version in the `If-Match` header.\n- Implement retry logic with fresh data after conflict errors.\n",
    "causes": "* Configuration was modified by another request since it was last fetched.\n* The `If-Match` header value does not match the current configuration version.\n* Concurrent updates to the same configuration",
    "solutions": "* Fetch the latest configuration version before updating.\n* Use the current ETag/version in the `If-Match` header.\n* Implement retry logic with fresh data after conflict errors.",
    "description": "The Intelligence Configuration could not be updated due to a version conflict.",
    "date_created": "2026-04-14T14:05:23-05:00",
    "last_updated": "2026-04-14T14:05:23-05:00"
  },
  {
    "code": 95420,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Operator schema validation failed",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe operator could not be created or updated because the configuration failed validation against the operator type schema.\n\n### Possible causes\n\n- Operator configuration does not match the required schema.\n- Missing required fields in the operator definition.\n- Invalid field values or types in the operator configuration.\n\n### Possible solutions\n\n- Review the operator type documentation to identity the required fields.\n- Validate the operator configuration against the provided schema.\n- Ensure all field values match the expected data types.\n",
    "causes": "* Operator configuration does not match the required schema.\n* Missing required fields in the operator definition.\n* Invalid field values or types in the operator configuration.",
    "solutions": "* Review the operator type documentation to identity the required fields.\n* Validate the operator configuration against the provided schema.\n* Ensure all field values match the expected data types.",
    "description": "The operator could not be created or updated because the configuration failed validation against the operator type schema.",
    "date_created": "2026-04-14T14:05:23-05:00",
    "last_updated": "2026-04-14T14:05:23-05:00"
  },
  {
    "code": 95421,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Operator version conflict",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe operator could not be updated due to a version conflict.\n\n### Possible causes\n\n- Operator was modified by another request since it was last fetched.\n- The `If-Match` header does not match the current operator version.\n- Concurrent updates to the same operator.\n\n### Possible solutions\n\n- Fetch the latest operator version before updating.\n- Use the current ETag value in the `If-Match` header.\n- Implement retry logic with fresh data on conflict errors.\n",
    "causes": "* Operator was modified by another request since it was last fetched.\n* The `If-Match` header does not match the current operator version.\n* Concurrent updates to the same operator.",
    "solutions": "* Fetch the latest operator version before updating.\n* Use the current ETag value in the `If-Match` header.\n* Implement retry logic with fresh data on conflict errors.",
    "description": "The operator could not be updated due to a version conflict.",
    "date_created": "2026-04-14T14:05:23-05:00",
    "last_updated": "2026-04-14T14:05:23-05:00"
  },
  {
    "code": 95500,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Redaction field or category requires a HIPAA Account",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThe redaction configuration cannot be created or updated because it includes a field or category that contains protected health information (PHI), and your account is not enabled for Health Insurance Portability and Accountability Act (HIPAA).\n\n### Possible causes\n\n- The configuration selects the `HEALTH_DATA` category or one of its fields, such as `DRUG` or `MEDICAL_CONDITION`.\n- Your account is not enabled for HIPAA.\n\n### Possible solutions\n\n- Remove the PHI fields and categories from the configuration.\n- Contact Twilio Support to enable HIPAA for your account.\n",
    "causes": "* The configuration selects the `HEALTH_DATA` category or one of its fields, such as `DRUG` or `MEDICAL_CONDITION`.\n* Your account is not enabled for HIPAA.",
    "solutions": "* Remove the PHI fields and categories from the configuration.\n* Contact Twilio Support to enable HIPAA for your account.",
    "description": "The redaction configuration cannot be created or updated because it includes a field or category that contains protected health information (PHI), and your account is not enabled for Health Insurance Portability and Accountability Act (HIPAA).",
    "date_created": "2026-10-08T17:07:29+02:00",
    "last_updated": "2026-10-08T17:07:29+02:00"
  },
  {
    "code": 97001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Unable to retrieve OAuth access token",
    "secondary_message": "Unable to exchange OAuth client credentials for an access token in the authorization server.",
    "product": "Account",
    "products_used": [
      "api"
    ],
    "docs": "\n## Description\n\nTwilio will start dropping webhooks until the authorization server provides a valid token.\n\n### Possible causes\n\n- The authorization service is unavailable.\n- The authorization service is unreachable.\n- The client credentials you configured have been rotated or removed.\n- The authorization server has started issuing a token which is not of type `Bearer`.\n\n### Possible solutions\n\n- Verify your authorization server is running and healthy.\n- Verify your authorization server is not protected by a firewall which blocks the requests.\n- Update the webhook settings with valid client credentials.\n- Update the webhook settings to disable OAuth.\n- Verify the authorization server issues tokens of type `Bearer`.\n",
    "causes": "* The authorization service is unavailable.\n* The authorization service is unreachable.\n* The client credentials you configured have been rotated or removed.\n* The authorization server has started issuing a token which is not of type `Bearer`.",
    "solutions": "* Verify your authorization server is running and healthy.\n* Verify your authorization server is not protected by a firewall which blocks the requests.\n* Update the webhook settings with valid client credentials.\n* Update the webhook settings to disable OAuth.\n* Verify the authorization server issues tokens of type `Bearer`.",
    "description": "Twilio will start dropping webhooks until the authorization server provides a valid token.",
    "date_created": "2024-09-23T12:02:00Z",
    "last_updated": "2026-03-11T17:03:37-05:00"
  },
  {
    "code": 99001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Deprecated: AI Assistants has been discontinued",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated by AI Assistants. You will no\n  longer receive this error.\n</Warning>\n\n## Description\n\nThe discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.\n\n### Possible causes\n\nNot applicable. AI Assistants has been discontinued and no longer returns this error.\n\n### Possible solutions\n\nNot applicable.\n",
    "causes": "Not applicable. AI Assistants has been discontinued and no longer returns this error.",
    "solutions": "Not applicable.",
    "description": "The discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.",
    "date_created": "2024-10-28T17:50:40Z",
    "last_updated": "2026-08-04T12:11:23-04:00"
  },
  {
    "code": 99002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deprecated: AI Assistants has been discontinued",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated by AI Assistants. You will no\n  longer receive this error.\n</Warning>\n\n## Description\n\nThe discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.\n\n### Possible causes\n\nNot applicable. AI Assistants has been discontinued and no longer returns this error.\n\n### Possible solutions\n\nNot applicable.\n",
    "causes": "Not applicable. AI Assistants has been discontinued and no longer returns this error.",
    "solutions": "Not applicable.",
    "description": "The discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.",
    "date_created": "2024-10-28T17:52:01Z",
    "last_updated": "2026-08-04T12:11:23-04:00"
  },
  {
    "code": 99003,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deprecated: AI Assistants has been discontinued",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated by AI Assistants. You will no\n  longer receive this error.\n</Warning>\n\n## Description\n\nThe discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.\n\n### Possible causes\n\nNot applicable. AI Assistants has been discontinued and no longer returns this error.\n\n### Possible solutions\n\nNot applicable.\n",
    "causes": "Not applicable. AI Assistants has been discontinued and no longer returns this error.",
    "solutions": "Not applicable.",
    "description": "The discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.",
    "date_created": "2024-10-28T19:56:53Z",
    "last_updated": "2026-08-04T12:11:23-04:00"
  },
  {
    "code": 99004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Deprecated: AI Assistants has been discontinued",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated by AI Assistants. You will no\n  longer receive this error.\n</Warning>\n\n## Description\n\nThe discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.\n\n### Possible causes\n\nNot applicable. AI Assistants has been discontinued and no longer returns this error.\n\n### Possible solutions\n\nNot applicable.\n",
    "causes": "Not applicable. AI Assistants has been discontinued and no longer returns this error.",
    "solutions": "Not applicable.",
    "description": "The discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.",
    "date_created": "2024-10-29T19:20:19Z",
    "last_updated": "2026-08-04T12:11:23-04:00"
  },
  {
    "code": 99005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deprecated: AI Assistants has been discontinued",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated by AI Assistants. You will no\n  longer receive this error.\n</Warning>\n\n## Description\n\nThe discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.\n\n### Possible causes\n\nNot applicable. AI Assistants has been discontinued and no longer returns this error.\n\n### Possible solutions\n\nNot applicable.\n",
    "causes": "Not applicable. AI Assistants has been discontinued and no longer returns this error.",
    "solutions": "Not applicable.",
    "description": "The discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.",
    "date_created": "2024-11-18T21:13:31Z",
    "last_updated": "2026-08-04T12:11:23-04:00"
  },
  {
    "code": 99006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Deprecated: AI Assistants has been discontinued",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n<Warning>\n  This error code has been deprecated and is no longer generated by AI Assistants. You will no\n  longer receive this error.\n</Warning>\n\n## Description\n\nThe discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.\n\n### Possible causes\n\nNot applicable. AI Assistants has been discontinued and no longer returns this error.\n\n### Possible solutions\n\nNot applicable.\n",
    "causes": "Not applicable. AI Assistants has been discontinued and no longer returns this error.",
    "solutions": "Not applicable.",
    "description": "The discontinued AI Assistants product previously used this error code. We retain it here to avoid breaking existing links.",
    "date_created": "2024-12-16T20:39:53Z",
    "last_updated": "2026-08-04T12:11:23-04:00"
  },
  {
    "code": 180017,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Require domestic emergency address",
    "secondary_message": null,
    "product": "Phone Numbers",
    "products_used": [
      "phone-numbers"
    ],
    "docs": "\n## Description\n\nThis phone number type requires a valid domestic emergency address.\n\n### Possible causes\n\n- You may have submitted an international address.\n- Your address is not a valid address.\n\n### Possible solutions\n\nPlease resubmit with a valid domestic address or create a new bundle selecting the appropriate phone number type.\n",
    "causes": "* You may have submitted an international address.\n* Your address is not a valid address.",
    "solutions": "Please resubmit with a valid domestic address or create a new bundle selecting the appropriate phone number type.",
    "description": "This phone number type requires a valid domestic emergency address.",
    "date_created": "2024-07-04T10:07:31Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 181000,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Phone number provisioning failed - Unexpected Error",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nPhone number provisioning failed - Unexpected Error\n\n### Possible causes\n\nThe phone number provisioning failed due to an unexpected error, which may be related to issues originating from other parties within the ecosystem.\n\n### Possible solutions\n\nOur Support team has the means to obtain more detailed information about this specific error. Please contact Twilio Customer Support for assistance in understanding the underlying problem and finding a resolution.\n",
    "causes": "The phone number provisioning failed due to an unexpected error, which may be related to issues originating from other parties within the ecosystem.",
    "solutions": "Our Support team has the means to obtain more detailed information about this specific error. Please contact Twilio Customer Support for assistance in understanding the underlying problem and finding a resolution.",
    "description": "Phone number provisioning failed - Unexpected Error",
    "date_created": "2025-12-16T05:50:04.74Z",
    "last_updated": "2026-03-11T13:38:39-05:00"
  },
  {
    "code": 216602,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Content Type is not supported on this channel",
    "secondary_message": null,
    "product": "Branded Comms, Content",
    "products_used": [
      "messaging",
      "content"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a Content template whose available content types are not supported by the destination channel. Twilio supports different content types on SMS, MMS, RCS, WhatsApp, and Messenger, and each channel can send only the content types listed for that channel.\n\n### Possible causes\n\n- The template only includes content types that the target channel does not support. For example, some types are limited to specific channels in the channel support matrix.\n- You are sending the template through a sender for a different channel than the one the message is targeting. Twilio requires a sender that matches the destination channel, such as a phone number for SMS or MMS, a WhatsApp sender for WhatsApp, or a Messenger sender for Messenger.\n- The template does not include a supported fallback content type for channels with fewer rich messaging features. Twilio can fall back to `twilio/text` in some cross-channel scenarios, but a template without any content type supported by the selected channel can still fail.\n\n### Possible solutions\n\n- Review the channel support table and confirm that your template includes at least one content type supported by the channel you are using.\n- Add a simpler supported content type, such as `twilio/text`, when you need to send the same template across multiple channels.\n- Verify that your `From` value uses the correct sender format for the channel you are targeting and that the sender is configured for that channel.\n- If you created a template with a type that is available only through the API, create, manage, and send that template through the Content API.\n\n#### Additional resources\n\n- [Content Types Overview](/docs/content/content-types-overview)\n- [Content API Quickstart](/docs/content/create-and-send-your-first-content-api-template)\n- [Create templates with the Content Template Builder in Console](/docs/content/create-templates-with-the-content-template-builder)\n",
    "causes": "* The template only includes content types that the target channel does not support. For example, some types are limited to specific channels in the channel support matrix.\n* You are sending the template through a sender for a different channel than the one the message is targeting. Twilio requires a sender that matches the destination channel, such as a phone number for SMS or MMS, a WhatsApp sender for WhatsApp, or a Messenger sender for Messenger.\n* The template does not include a supported fallback content type for channels with fewer rich messaging features. Twilio can fall back to `twilio/text` in some cross-channel scenarios, but a template without any content type supported by the selected channel can still fail.",
    "solutions": "* Review the channel support table and confirm that your template includes at least one content type supported by the channel you are using.\n* Add a simpler supported content type, such as `twilio/text`, when you need to send the same template across multiple channels.\n* Verify that your `From` value uses the correct sender format for the channel you are targeting and that the sender is configured for that channel.\n* If you created a template with a type that is available only through the API, create, manage, and send that template through the Content API.",
    "description": "This error occurs when you send a Content template whose available content types are not supported by the destination channel. Twilio supports different content types on SMS, MMS, RCS, WhatsApp, and Messenger, and each channel can send only the content types listed for that channel.",
    "date_created": "2025-01-23T19:25:58Z",
    "last_updated": "2026-04-27T16:01:54-05:00"
  },
  {
    "code": 321401,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid credentials",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not authenticate the request because the `client_id` and `client_secret` you provided are invalid, do not match, or are not authorized for the requested operation.\n\n### Possible causes\n\n- The `client_id` value is incorrect.\n- The `client_secret` value is incorrect.\n- The `client_id` and `client_secret` do not belong to the same credential pair.\n- The client credentials were copied with extra spaces or formatting changes.\n- The request is using OAuth client credentials that are not valid for the Twilio account or resource you are trying to access.\n\n### Possible solutions\n\n- Confirm that you are sending the correct `client_id` and `client_secret` values.\n- Regenerate the client secret if you no longer have a trusted copy, then update your application with the new value.\n- Make sure the credentials are passed exactly as issued, with no extra whitespace or truncation.\n- Verify that your application is using the correct credentials for the correct Twilio account and environment.\n- If you are using Twilio APIs that support OAuth, review your authentication setup and token exchange flow in [Twilio IAM](/docs/iam).\n\n#### Additional resources\n\n- [Twilio IAM](/docs/iam)\n- [Verify API](/docs/verify/api)\n- [API authentication and security](/docs/iam)\n",
    "causes": "* The `client_id` value is incorrect.\n* The `client_secret` value is incorrect.\n* The `client_id` and `client_secret` do not belong to the same credential pair.\n* The client credentials were copied with extra spaces or formatting changes.\n* The request is using OAuth client credentials that are not valid for the Twilio account or resource you are trying to access.",
    "solutions": "* Confirm that you are sending the correct `client_id` and `client_secret` values.\n* Regenerate the client secret if you no longer have a trusted copy, then update your application with the new value.\n* Make sure the credentials are passed exactly as issued, with no extra whitespace or truncation.\n* Verify that your application is using the correct credentials for the correct Twilio account and environment.\n* If you are using Twilio APIs that support OAuth, review your authentication setup and token exchange flow in [Twilio IAM](/docs/iam).",
    "description": "Twilio could not authenticate the request because the `client_id` and `client_secret` you provided are invalid, do not match, or are not authorized for the requested operation.",
    "date_created": "2025-10-06T07:05:51.859Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 321402,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Empty client_id",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you call the OAuth Token API without a value for `client_id`. The Token API requires `client_id`, `client_secret`, and `grant_type` in an `application/x-www-form-urlencoded` `POST` request body, and `client_id` is the unique identifier of your OAuth app.\n\n### Possible causes\n\n- You omitted `client_id` from the Token API request body.\n- You sent `client_id` with an empty value. Twilio returns this condition as \"Empty client\\_id,\" and the parameter is required.\n- You did not send the request body as `application/x-www-form-urlencoded`, so Twilio could not read the required `client_id` parameter.\n\n### Possible solutions\n\n- Include `client_id` in the form-encoded request body and make sure the parameter name is exactly `client_id`.\n- Open your OAuth app in Console and copy the Client ID generated for that app. Twilio creates the Client ID and Client Secret when you create an OAuth app.\n- Send a complete token request to the OAuth token endpoint with `client_id`, `client_secret`, and `grant_type=client_credentials`.\n\n#### Additional resources\n\n- [OAuth apps overview](/docs/iam/oauth-apps/overview)\n- [OAuth Token API](/docs/iam/oauth-apps/oauth-access-token)\n- [Identity and Access Management](/docs/iam)\n",
    "causes": "* You omitted `client_id` from the Token API request body.\n* You sent `client_id` with an empty value. Twilio returns this condition as \"Empty client\\_id,\" and the parameter is required.\n* You did not send the request body as `application/x-www-form-urlencoded`, so Twilio could not read the required `client_id` parameter.",
    "solutions": "* Include `client_id` in the form-encoded request body and make sure the parameter name is exactly `client_id`.\n* Open your OAuth app in Console and copy the Client ID generated for that app. Twilio creates the Client ID and Client Secret when you create an OAuth app.\n* Send a complete token request to the OAuth token endpoint with `client_id`, `client_secret`, and `grant_type=client_credentials`.",
    "description": "This error occurs when you call the OAuth Token API without a value for `client_id`. The Token API requires `client_id`, `client_secret`, and `grant_type` in an `application/x-www-form-urlencoded` `POST` request body, and `client_id` is the unique identifier of your OAuth app.",
    "date_created": "2025-10-06T06:50:03.741Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 321403,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid grant_type",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio could not process the token request because the `grant_type` parameter is missing or contains an unsupported value. For Client Credentials authentication, set `grant_type` to `client_credentials`.\n\n### Possible causes\n\n- The request does not include the `grant_type` parameter.\n- The request includes a `grant_type` value other than `client_credentials`.\n- The request body is malformed, so Twilio cannot read the `grant_type` parameter.\n- The application is using a different OAuth flow than the endpoint supports.\n\n### Possible solutions\n\n- Include the `grant_type` parameter in the token request body.\n- Set `grant_type` to `client_credentials`.\n- Send the request using the expected content type and body format for the token endpoint.\n- Review your IAM authentication flow and confirm that your application is using Client Credentials where required.\n\n#### Additional resources\n\n- [IAM documentation](/docs/iam)\n- [Authenticate with Twilio APIs](/docs/iam/api)\n",
    "causes": "* The request does not include the `grant_type` parameter.\n* The request includes a `grant_type` value other than `client_credentials`.\n* The request body is malformed, so Twilio cannot read the `grant_type` parameter.\n* The application is using a different OAuth flow than the endpoint supports.",
    "solutions": "* Include the `grant_type` parameter in the token request body.\n* Set `grant_type` to `client_credentials`.\n* Send the request using the expected content type and body format for the token endpoint.\n* Review your IAM authentication flow and confirm that your application is using Client Credentials where required.",
    "description": "Twilio could not process the token request because the `grant_type` parameter is missing or contains an unsupported value. For Client Credentials authentication, set `grant_type` to `client_credentials`.",
    "date_created": "2025-10-06T07:00:26.64Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 321405,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Empty client_secret",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned this error because the Token API request did not include a value for `client_secret`. You must provide a valid `client_secret` when your request uses a confidential client that requires client authentication.\n\n### Possible causes\n\n- The request omitted the `client_secret` parameter.\n- The request included `client_secret` with an empty value.\n- Your application did not load the client secret from configuration before sending the request.\n- A deployment or environment variable issue caused your application to send a blank `client_secret`.\n\n### Possible solutions\n\n- Include the `client_secret` parameter in your Token API request.\n- Confirm that your application reads the correct client secret from your secure configuration or secret manager.\n- Verify that your request body sends a non-empty value for `client_secret`.\n- If you are using OAuth 2.0 client credentials managed in Twilio, review your client configuration in Twilio IAM and make sure you are using the correct secret.\n- Regenerate the client secret if needed, then update your application to use the new value.\n\n#### Additional resources\n\n- [Twilio IAM documentation](/docs/iam)\n- [API authentication and security](/docs/iam/api)\n",
    "causes": "* The request omitted the `client_secret` parameter.\n* The request included `client_secret` with an empty value.\n* Your application did not load the client secret from configuration before sending the request.\n* A deployment or environment variable issue caused your application to send a blank `client_secret`.",
    "solutions": "* Include the `client_secret` parameter in your Token API request.\n* Confirm that your application reads the correct client secret from your secure configuration or secret manager.\n* Verify that your request body sends a non-empty value for `client_secret`.\n* If you are using OAuth 2.0 client credentials managed in Twilio, review your client configuration in Twilio IAM and make sure you are using the correct secret.\n* Regenerate the client secret if needed, then update your application to use the new value.",
    "description": "Twilio returned this error because the Token API request did not include a value for `client_secret`. You must provide a valid `client_secret` when your request uses a confidential client that requires client authentication.",
    "date_created": "2025-10-06T07:08:07.856Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 321406,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Too Many Requests",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error is received when you've reached max requests allowed for an inbuilt time window (HTTP 429 Too Many Requests).\n\n### Possible causes\n\nMultiple requests for token generation for same oauth application, triggering safeguard (HTTP 429).\n\n### Possible solutions\n\nRequests that receive 429 responses aren't processed and are safe to retry after backing off.\n",
    "causes": "Multiple requests for token generation for same oauth application, triggering safeguard (HTTP 429).",
    "solutions": "Requests that receive 429 responses aren't processed and are safe to retry after backing off.",
    "description": "This error is received when you've reached max requests allowed for an inbuilt time window (HTTP 429 Too Many Requests).",
    "date_created": "2025-10-06T06:31:19.434Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 322401,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Too Many Requests",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error is received when you've reached max requests allowed for an inbuilt time window (HTTP 429 Too Many Requests).\n\n### Possible causes\n\nMultiple requests for token generation for same oauth application, triggering safeguard (HTTP 429).\n\n### Possible solutions\n\nRequests that receive 429 responses aren't processed and are safe to retry after backing off.\n",
    "causes": "Multiple requests for token generation for same oauth application, triggering safeguard (HTTP 429).",
    "solutions": "Requests that receive 429 responses aren't processed and are safe to retry after backing off.",
    "description": "This error is received when you've reached max requests allowed for an inbuilt time window (HTTP 429 Too Many Requests).",
    "date_created": "2025-10-06T06:31:21.916Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 322402,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid credentials",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when the Token API rejects the credentials in a token generation request for an OAuth app. To generate an access token, send the OAuth app's `client_id` and `client_secret` in the request body and set `grant_type` to `client_credentials`.\n\n### Possible causes\n\n- The `client_id` or `client_secret` in the request is incorrect, or the values do not belong to the same OAuth app.\n- The request is using a secret that was rotated and is no longer active. After you rotate a secret, the previous secret remains valid for 24 hours before becoming inactive.\n- The request was built with the wrong OAuth credentials for the app you intended to use. Twilio generates a Client ID and Client Secret for each OAuth app and uses those credentials to request an access token.\n\n### Possible solutions\n\n- Copy the current Client ID and Client Secret from the OAuth app in Console and send them as `client_id` and `client_secret` in the Token API request.\n- Set `grant_type` to `client_credentials` and submit the request as `application/x-www-form-urlencoded`.\n- If you recently rotated the secret, update your application to use the new secret. If more than 24 hours have passed since the rotation, stop using the previous secret.\n- If the credentials still fail, open the OAuth app in Console and verify that you are using the correct app before generating a new token.\n\n#### Additional resources\n\n- [OAuth Token API](/docs/iam/oauth-apps/oauth-access-token)\n- [OAuth apps](/docs/iam/oauth-apps/overview)\n",
    "causes": "* The `client_id` or `client_secret` in the request is incorrect, or the values do not belong to the same OAuth app.\n* The request is using a secret that was rotated and is no longer active. After you rotate a secret, the previous secret remains valid for 24 hours before becoming inactive.\n* The request was built with the wrong OAuth credentials for the app you intended to use. Twilio generates a Client ID and Client Secret for each OAuth app and uses those credentials to request an access token.",
    "solutions": "* Copy the current Client ID and Client Secret from the OAuth app in Console and send them as `client_id` and `client_secret` in the Token API request.\n* Set `grant_type` to `client_credentials` and submit the request as `application/x-www-form-urlencoded`.\n* If you recently rotated the secret, update your application to use the new secret. If more than 24 hours have passed since the rotation, stop using the previous secret.\n* If the credentials still fail, open the OAuth app in Console and verify that you are using the correct app before generating a new token.",
    "description": "This error occurs when the Token API rejects the credentials in a token generation request for an OAuth app. To generate an access token, send the OAuth app's `client_id` and `client_secret` in the request body and set `grant_type` to `client_credentials`.",
    "date_created": "2025-10-06T06:19:38.222Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 322403,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Bad Request",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returns this error when the OAuth Token API receives a malformed token generation request and cannot issue an access token. Send a `POST` request to the OAuth token endpoint with an `application/x-www-form-urlencoded` body that includes `client_id`, `client_secret`, and `grant_type=client_credentials`.\n\n### Possible causes\n\n- The request body was sent in a format the token endpoint does not accept. The OAuth Token API requires `application/x-www-form-urlencoded`, and unsupported content types can cause request errors.\n- The payload was malformed, so Twilio could not process the token generation request. This error usually points to the overall request format or structure. Twilio surfaces separate errors for invalid credentials, empty `client_id`, empty `client_secret`, and invalid `grant_type`.\n- The required form fields were not sent using the documented parameter names and values expected by the token endpoint.\n\n### Possible solutions\n\n- Rebuild the request to match the OAuth Token API requirements. Use `POST` and set `Content-Type` to `application/x-www-form-urlencoded`.\n- Include the required form fields exactly as documented: `client_id`, `client_secret`, and `grant_type=client_credentials`.\n- If you are building the request manually, send form-encoded fields such as `--data-urlencode` parameters instead of a JSON body.\n- Verify that you are using the Client ID and Client Secret from a Twilio OAuth app, then retry the request after correcting the payload format.\n\n#### Additional resources\n\n- [OAuth Token API](/docs/iam/oauth-apps/oauth-access-token)\n- [OAuth apps](/docs/iam/oauth-apps/overview)\n- [Twilio API requests](/docs/usage/requests-to-twilio)\n",
    "causes": "* The request body was sent in a format the token endpoint does not accept. The OAuth Token API requires `application/x-www-form-urlencoded`, and unsupported content types can cause request errors.\n* The payload was malformed, so Twilio could not process the token generation request. This error usually points to the overall request format or structure. Twilio surfaces separate errors for invalid credentials, empty `client_id`, empty `client_secret`, and invalid `grant_type`.\n* The required form fields were not sent using the documented parameter names and values expected by the token endpoint.",
    "solutions": "* Rebuild the request to match the OAuth Token API requirements. Use `POST` and set `Content-Type` to `application/x-www-form-urlencoded`.\n* Include the required form fields exactly as documented: `client_id`, `client_secret`, and `grant_type=client_credentials`.\n* If you are building the request manually, send form-encoded fields such as `--data-urlencode` parameters instead of a JSON body.\n* Verify that you are using the Client ID and Client Secret from a Twilio OAuth app, then retry the request after correcting the payload format.",
    "description": "Twilio returns this error when the OAuth Token API receives a malformed token generation request and cannot issue an access token. Send a `POST` request to the OAuth token endpoint with an `application/x-www-form-urlencoded` body that includes `client_id`, `client_secret`, and `grant_type=client_credentials`.",
    "date_created": "2025-10-06T06:15:06.644Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 322501,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Internal Server Error",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nTwilio returned an internal server error while processing a request to the OAuth applications token endpoint. This error indicates that Twilio could not complete the request because of an unexpected platform-side failure.\n\n### Possible causes\n\n- A temporary Twilio service issue affected the OAuth token endpoint\n- An unexpected internal dependency failed while Twilio was processing the token request\n- A transient platform error interrupted request handling before Twilio could return a successful response\n\n### Possible solutions\n\n- Retry the request after a short delay in case the failure was temporary\n- Confirm that your request is correctly formed and that required authentication and token parameters are present\n- Verify whether the error is consistent across repeated requests and capture the request details and response for troubleshooting\n- If the problem continues, contact support and include the error code, timestamp, Account SID, and any relevant request identifiers\n\n#### Additional resources\n\n- [Identity and Access Management](/docs/iam)\n- [Twilio API response and error dictionary overview](https://help.twilio.com/articles/223134387-Twilio-API-response-and-error-dictionary)\n- [Get help with Twilio support](https://help.twilio.com/hc/en-us)\n",
    "causes": "* A temporary Twilio service issue affected the OAuth token endpoint\n* An unexpected internal dependency failed while Twilio was processing the token request\n* A transient platform error interrupted request handling before Twilio could return a successful response",
    "solutions": "* Retry the request after a short delay in case the failure was temporary\n* Confirm that your request is correctly formed and that required authentication and token parameters are present\n* Verify whether the error is consistent across repeated requests and capture the request details and response for troubleshooting\n* If the problem continues, contact support and include the error code, timestamp, Account SID, and any relevant request identifiers",
    "description": "Twilio returned an internal server error while processing a request to the OAuth applications token endpoint. This error indicates that Twilio could not complete the request because of an unexpected platform-side failure.",
    "date_created": "2025-10-06T06:03:58.604Z",
    "last_updated": "2026-06-09T12:00:42+01:00"
  },
  {
    "code": 420001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge could not be created",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nKnowledge creation did not complete.\n\n### Possible causes\n\n- The data formatting is unrecognized\n- The knowledge size may have been out of bounds\n- The backend experienced a transient interruption\n\n### Possible solutions\n\n- Ensure knowledge is provided in supported format\n- Validate payload adheres to knowledge limits guidelines\n- Try again with restored network connectivity\n",
    "causes": "* The data formatting is unrecognized\n* The knowledge size may have been out of bounds\n* The backend experienced a transient interruption",
    "solutions": "* Ensure knowledge is provided in supported format\n* Validate payload adheres to knowledge limits guidelines\n* Try again with restored network connectivity",
    "description": "Knowledge creation did not complete.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420002,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Partial knowledge refresh",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nCertain knowledge sources failed to synchronize completely during a refresh.\n\n### Possible causes\n\n- Knowledge sources were temporarily unreachable during refresh cycle\n- Specific external knowledge sources were offline or actively syncing\n\n### Possible solutions\n\n- Wait for background synchronization processes to conclude before retrying\n- Note that some knowledge data could temporarily reflect an older state\n",
    "causes": "* Knowledge sources were temporarily unreachable during refresh cycle\n* Specific external knowledge sources were offline or actively syncing",
    "solutions": "* Wait for background synchronization processes to conclude before retrying\n* Note that some knowledge data could temporarily reflect an older state",
    "description": "Certain knowledge sources failed to synchronize completely during a refresh.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420003,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Search query failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nKnowledge Search query encountered an execution interruption and could not complete.\n\n### Possible causes\n\n- The query structure is unsupported or malformed\n\n### Possible solutions\n\n- Simplify the query syntax\n- Ensure query follows policy guideline on types of content\n",
    "causes": "* The query structure is unsupported or malformed",
    "solutions": "* Simplify the query syntax\n* Ensure query follows policy guideline on types of content",
    "description": "Knowledge Search query encountered an execution interruption and could not complete.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Content exceeds knowledge size limits",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nSubmitted content exceeds platform size limitations and was rejected.\n\n### Possible causes\n\n- Content payload size is larger than the maximum allowed by knowledge limits (210KB)\n\n### Possible solutions\n\n- Shorten the input text or divide the payload into smaller, paginated segments\n- Summarize the content before uploading\n- Use file upload instead of direct text content for larger documents\n",
    "causes": "* Content payload size is larger than the maximum allowed by knowledge limits (210KB)",
    "solutions": "* Shorten the input text or divide the payload into smaller, paginated segments\n* Summarize the content before uploading\n* Use file upload instead of direct text content for larger documents",
    "description": "Submitted content exceeds platform size limitations and was rejected.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-04-01T13:30:49-04:00"
  },
  {
    "code": 420005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Text resource ingest failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe submitted text payload did not pass content validation or was too large.\n\n### Possible causes\n\n- Text upload contains unexpected characters or unsupported formatting\n- The payload exceeds the hard limits for a single ingestion request\n\n### Possible solutions\n\n- Sanitize text inputs to remove unrecognized formatting\n- Split large text blobs into smaller entries prior to submission\n",
    "causes": "* Text upload contains unexpected characters or unsupported formatting\n* The payload exceeds the hard limits for a single ingestion request",
    "solutions": "* Sanitize text inputs to remove unrecognized formatting\n* Split large text blobs into smaller entries prior to submission",
    "description": "The submitted text payload did not pass content validation or was too large.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420006,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Failed to crawl or fetch the URL",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe ingestion crawler was unable to access the target URL.\n\n### Possible causes\n\n- URL is unreachable or exceeds standard timeout thresholds\n- The target site is restricted by robots.txt policy or firewall\n\n### Possible solutions\n\n- Ensure the target URL is publicly accessible, whitelisted, and responds promptly\n- Test connectivity using external tools like curl before initiating ingestion\n",
    "causes": "* URL is unreachable or exceeds standard timeout thresholds\n* The target site is restricted by robots.txt policy or firewall",
    "solutions": "* Ensure the target URL is publicly accessible, whitelisted, and responds promptly\n* Test connectivity using external tools like curl before initiating ingestion",
    "description": "The ingestion crawler was unable to access the target URL.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420007,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "URL crawl partially timed out",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe crawler reached its execution timeout limit prior to completing the full ingestion.\n\n### Possible causes\n\n- Slow-responding source URL\n- The target document is exceptionally large and deeply nested\n\n### Possible solutions\n\n- Increase the request timeout parameters\n- Divide large requests or fetch data from a more optimized endpoint\n",
    "causes": "* Slow-responding source URL\n* The target document is exceptionally large and deeply nested",
    "solutions": "* Increase the request timeout parameters\n* Divide large requests or fetch data from a more optimized endpoint",
    "description": "The crawler reached its execution timeout limit prior to completing the full ingestion.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420008,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "File input failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nFile did not pass content validation or was too large to process.\n\n### Possible causes\n\n- File upload contains unsupported formatting\n- The payload exceeds the hard limits for a single ingestion request\n\n### Possible solutions\n\n- Re-upload file based on supported formats\n- Split large files into smaller entries prior to submission\n",
    "causes": "* File upload contains unsupported formatting\n* The payload exceeds the hard limits for a single ingestion request",
    "solutions": "* Re-upload file based on supported formats\n* Split large files into smaller entries prior to submission",
    "description": "File did not pass content validation or was too large to process.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420009,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Partial update, content skipped",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nSpecific fields in the update request did not get applied due to validation constraints.\n\n### Possible causes\n\n- The update payload contained unsupported content or mismatched info\n- Partial update applied, remaining update gracefully skipped\n\n### Possible solutions\n\n- Validate all updated content, ensure update follows format and content sanity checks\n- Retry the skipped items\n",
    "causes": "* The update payload contained unsupported content or mismatched info\n* Partial update applied, remaining update gracefully skipped",
    "solutions": "* Validate all updated content, ensure update follows format and content sanity checks\n* Retry the skipped items",
    "description": "Specific fields in the update request did not get applied due to validation constraints.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420010,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge resource update failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe resource update was rejected by the backend.\n\n### Possible causes\n\n- Resource is currently locked by another process\n- The resource cannot be located\n- The payload did not pass data validation\n\n### Possible solutions\n\n- Retry the update request after the resource lock naturally expires\n- Check the edit history for potential version conflicts\n",
    "causes": "* Resource is currently locked by another process\n* The resource cannot be located\n* The payload did not pass data validation",
    "solutions": "* Retry the update request after the resource lock naturally expires\n* Check the edit history for potential version conflicts",
    "description": "The resource update was rejected by the backend.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420011,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge resource deletion failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe deletion request was rejected by the backend.\n\n### Possible causes\n\n- The requesting user lacks sufficient permissions\n- The resource has active downstream dependencies\n- A system interruption occurred\n\n### Possible solutions\n\n- Confirm RBAC permissions\n- Ensure the resource is not actively referenced by dependent systems before retrying the `DELETE` request\n",
    "causes": "* The requesting user lacks sufficient permissions\n* The resource has active downstream dependencies\n* A system interruption occurred",
    "solutions": "* Confirm RBAC permissions\n* Ensure the resource is not actively referenced by dependent systems before retrying the `DELETE` request",
    "description": "The deletion request was rejected by the backend.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420012,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge update validation failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe update request for a knowledge item contains invalid or missing required fields.\n\n### Possible causes\n\n- Missing required fields (name or source)\n- Name exceeds maximum length (30 characters)\n- Description exceeds maximum length (1024 characters)\n- Invalid source configuration\n\n### Possible solutions\n\n- Ensure all required fields are provided (name and source)\n- Verify field lengths are within allowed limits\n- Check that the source type and configuration are valid\n- Review the API error details for specific validation failures\n",
    "causes": "* Missing required fields (name or source)\n* Name exceeds maximum length (30 characters)\n* Description exceeds maximum length (1024 characters)\n* Invalid source configuration",
    "solutions": "* Ensure all required fields are provided (name and source)\n* Verify field lengths are within allowed limits\n* Check that the source type and configuration are valid\n* Review the API error details for specific validation failures",
    "description": "The update request for a knowledge item contains invalid or missing required fields.",
    "date_created": "2026-04-01T13:30:49-04:00",
    "last_updated": "2026-04-01T13:30:49-04:00"
  },
  {
    "code": 420013,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge base update failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nPayload for updating the knowledge base was rejected.\n\n### Possible causes\n\n- Specified knowledge base could not be located\n- The update included unsupported field modifications\n\n### Possible solutions\n\n- Verify the Knowledge Base ID is correct\n- Review the API error details for specific invalid fields\n",
    "causes": "* Specified knowledge base could not be located\n* The update included unsupported field modifications",
    "solutions": "* Verify the Knowledge Base ID is correct\n* Review the API error details for specific invalid fields",
    "description": "Payload for updating the knowledge base was rejected.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420014,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge base deletion failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nRequest to delete a knowledge base was declined.\n\n### Possible causes\n\n- Active AI agents or services are currently connected to the knowledge base\n- The active session lacks sufficient deletion privileges\n\n### Possible solutions\n\n- Unlink the knowledge base from all active agents before issuing the `DELETE` request\n- Confirm your access permissions\n",
    "causes": "* Active AI agents or services are currently connected to the knowledge base\n* The active session lacks sufficient deletion privileges",
    "solutions": "* Unlink the knowledge base from all active agents before issuing the `DELETE` request\n* Confirm your access permissions",
    "description": "Request to delete a knowledge base was declined.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 420015,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge search validation failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe search request contains invalid or malformed data and was rejected.\n\n### Possible causes\n\n- Invalid JSON format in request body\n- Invalid knowledge ID format in search filters\n- Malformed query parameters\n\n### Possible solutions\n\n- Verify the request body is valid JSON\n- Check that knowledge IDs follow the correct format (know_knowledge_*)\n- Review the API error details for specific validation failures\n",
    "causes": "* Invalid JSON format in request body\n* Invalid knowledge ID format in search filters\n* Malformed query parameters",
    "solutions": "* Verify the request body is valid JSON\n* Check that knowledge IDs follow the correct format (know\\_knowledge\\_\\*)\n* Review the API error details for specific validation failures",
    "description": "The search request contains invalid or malformed data and was rejected.",
    "date_created": "2026-04-01T13:30:49-04:00",
    "last_updated": "2026-04-01T13:30:49-04:00"
  },
  {
    "code": 420016,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge create validation failed",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe request to create a knowledge item contains invalid or malformed data and was rejected.\n\n### Possible causes\n\n- Invalid JSON format in request body\n- Missing required fields\n- Invalid field values that don't match specific validation rules (e.g., name length, description length)\n\n### Possible solutions\n\n- Verify the request body is valid JSON\n- Ensure all required fields are provided\n- Check field lengths and formats meet API requirements\n- Review the API error details for specific validation failures\n",
    "causes": "* Invalid JSON format in request body\n* Missing required fields\n* Invalid field values that don't match specific validation rules (e.g., name length, description length)",
    "solutions": "* Verify the request body is valid JSON\n* Ensure all required fields are provided\n* Check field lengths and formats meet API requirements\n* Review the API error details for specific validation failures",
    "description": "The request to create a knowledge item contains invalid or malformed data and was rejected.",
    "date_created": "2026-04-01T13:30:49-04:00",
    "last_updated": "2026-04-01T13:30:49-04:00"
  },
  {
    "code": 420017,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge not found",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe requested knowledge item could not be found or the knowledge ID is invalid.\n\n### Possible causes\n\n- Knowledge ID does not exist\n- Invalid knowledge ID format\n- Knowledge was deleted\n- Knowledge ID cannot be parsed\n\n### Possible solutions\n\n- Verify the knowledge ID is correct and follows the format (know_knowledge_*)\n- Check that the knowledge item has not been deleted\n- Use the List Knowledge endpoint to retrieve valid knowledge IDs\n- Review the API error details for specific validation failures\n",
    "causes": "* Knowledge ID does not exist\n* Invalid knowledge ID format\n* Knowledge was deleted\n* Knowledge ID cannot be parsed",
    "solutions": "* Verify the knowledge ID is correct and follows the format (know\\_knowledge\\_\\*)\n* Check that the knowledge item has not been deleted\n* Use the List Knowledge endpoint to retrieve valid knowledge IDs\n* Review the API error details for specific validation failures",
    "description": "The requested knowledge item could not be found or the knowledge ID is invalid.",
    "date_created": "2026-04-01T13:30:49-04:00",
    "last_updated": "2026-04-01T13:30:49-04:00"
  },
  {
    "code": 420018,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge base does not exist on this account or has been marked deleted",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe requested knowledge base doesn't exist in your account.\n\n### Possible causes\n\n- The knowledge base SID you provided is incorrect.\n- The knowledge base was previously deleted.\n\n### Possible solutions\n\n- List your knowledge bases and verify the SID for each.\n- If the knowledge base was deleted, create a new one and use its new SID.\n",
    "causes": "* The knowledge base SID you provided is incorrect.\n* The knowledge base was previously deleted.",
    "solutions": "* List your knowledge bases and verify the SID for each.\n* If the knowledge base was deleted, create a new one and use its new SID.",
    "description": "The requested knowledge base doesn't exist in your account.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420019,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge base resource version conflict",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nYour request failed because the `If-Match` ETag you supplied doesn't match the current version of the knowledge base resource.\n\n### Possible causes\n\n- Another client updated the knowledge base after you fetched it but before you attempted to update it.\n\n### Possible solutions\n\n- Fetch the knowledge base again to obtain the latest ETag, then retry the update request.\n",
    "causes": "* Another client updated the knowledge base after you fetched it but before you attempted to update it.",
    "solutions": "* Fetch the knowledge base again to obtain the latest ETag, then retry the update request.",
    "description": "Your request failed because the `If-Match` ETag you supplied doesn't match the current version of the knowledge base resource.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420020,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge base resource already exists",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nA knowledge base with the same unique identifier already exists.\n\n### Possible causes\n\n- The display name you provided is already associated with another knowledge base in this account.\n\n### Possible solutions\n\n- Choose a different display name.\n- Update the existing knowledge base instead of creating a new one.\n",
    "causes": "* The display name you provided is already associated with another knowledge base in this account.",
    "solutions": "* Choose a different display name.\n* Update the existing knowledge base instead of creating a new one.",
    "description": "A knowledge base with the same unique identifier already exists.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420021,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid knowledge base request",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe request payload does not conform to the API schema.\n\n### Possible causes\n\n- A required field is missing.\n- A field value is out of range or malformed.\n\n### Possible solutions\n\n- Compare your payload with the API reference, and update any invalid or missing fields listed in the error response.\n",
    "causes": "* A required field is missing.\n* A field value is out of range or malformed.",
    "solutions": "* Compare your payload with the API reference, and update any invalid or missing fields listed in the error response.",
    "description": "The request payload does not conform to the API schema.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420022,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge base resource limit exceeded",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe account has reached its knowledge base limit.\n\n### Possible causes\n\n- The account has reached the maximum number of knowledge bases allowed.\n\n### Possible solutions\n\n- Delete unused knowledge bases.\n",
    "causes": "* The account has reached the maximum number of knowledge bases allowed.",
    "solutions": "* Delete unused knowledge bases.",
    "description": "The account has reached its knowledge base limit.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420023,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid knowledge base identifier",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe supplied knowledge base ID is not a valid knowledge base identifier.\n\n### Possible causes\n\n- The knowledge base ID is not a well-formed TTID.\n- The TTID belongs to a different domain or resource type.\n\n### Possible solutions\n\n- Use the identifier of an existing knowledge base.\n",
    "causes": "* The knowledge base ID is not a well-formed TTID.\n* The TTID belongs to a different domain or resource type.",
    "solutions": "* Use the identifier of an existing knowledge base.",
    "description": "The supplied knowledge base ID is not a valid knowledge base identifier.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420024,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid knowledge base operation identifier",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe supplied operation ID is not a valid knowledge base operation identifier.\n\n### Possible causes\n\n- The operation ID is not a well-formed TTID.\n- The TTID belongs to a different product domain or resource type.\n\n### Possible solutions\n\n- Use the operation ID returned by the originating asynchronous write request.\n",
    "causes": "* The operation ID is not a well-formed TTID.\n* The TTID belongs to a different product domain or resource type.",
    "solutions": "* Use the operation ID returned by the originating asynchronous write request.",
    "description": "The supplied operation ID is not a valid knowledge base operation identifier.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420025,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge base operation not found",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe requested knowledge base operation does not exist on this account.\n\n### Possible causes\n\n- The operation ID is incorrect.\n- The operation result has expired and is no longer retained. Operations are queryable for 7 days after completion.\n\n### Possible solutions\n\n- Verify the operation ID returned by the originating asynchronous write request.\n- Query the operation within 7 days of completion.\n",
    "causes": "* The operation ID is incorrect.\n* The operation result has expired and is no longer retained. Operations are queryable for 7 days after completion.",
    "solutions": "* Verify the operation ID returned by the originating asynchronous write request.\n* Query the operation within 7 days of completion.",
    "description": "The requested knowledge base operation does not exist on this account.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420026,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source bad gateway",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `502 Bad Gateway` response when attempting to access the target URL during knowledge ingestion. The gateway or proxy server received an invalid response from an upstream server.\n\n### Possible causes\n\n- The target site's proxy or load balancer received an invalid response\n- Upstream server failures or misconfigurations\n- CDN or reverse proxy issues\n- Network routing problems\n- Temporary gateway or infrastructure issues\n\n### Possible solutions\n\n- Verify the target URL loads correctly in a web browser\n- Check if the target site is experiencing infrastructure or CDN issues\n- If the error is temporary, the crawler will retry on the next scheduled crawl\n- For persistent errors, contact the target site administrator or hosting provider\n- Consider using a different URL or CDN endpoint, if available\n- Review the knowledge source error details in the Twilio Console\n",
    "causes": "* The target site's proxy or load balancer received an invalid response\n* Upstream server failures or misconfigurations\n* CDN or reverse proxy issues\n* Network routing problems\n* Temporary gateway or infrastructure issues",
    "solutions": "* Verify the target URL loads correctly in a web browser\n* Check if the target site is experiencing infrastructure or CDN issues\n* If the error is temporary, the crawler will retry on the next scheduled crawl\n* For persistent errors, contact the target site administrator or hosting provider\n* Consider using a different URL or CDN endpoint, if available\n* Review the knowledge source error details in the Twilio Console",
    "description": "The web crawler received a `502 Bad Gateway` response when attempting to access the target URL during knowledge ingestion. The gateway or proxy server received an invalid response from an upstream server.",
    "date_created": "2026-07-24T09:46:08-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420027,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source service unavailable",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `503 Service Unavailable` response when attempting to access the target URL during knowledge ingestion. The target server is temporarily unable to handle the request.\n\n### Possible causes\n\n- The target site is undergoing maintenance\n- Server overload or resource exhaustion\n- Temporary service outages or disruptions\n- The site is intentionally down for upgrades\n- Backend services or databases are unavailable\n\n### Possible solutions\n\n- Verify the target URL loads correctly in a web browser\n- Check if the target site has announced maintenance windows or service issues\n- If the error is temporary, the crawler will automatically retry on the next scheduled crawl\n- For persistent unavailability, verify the URL is correct and the site is operational\n- Consider scheduling crawls during times when the site is less likely to be under maintenance\n- Review the knowledge source error details in the Twilio Console\n",
    "causes": "* The target site is undergoing maintenance\n* Server overload or resource exhaustion\n* Temporary service outages or disruptions\n* The site is intentionally down for upgrades\n* Backend services or databases are unavailable",
    "solutions": "* Verify the target URL loads correctly in a web browser\n* Check if the target site has announced maintenance windows or service issues\n* If the error is temporary, the crawler will automatically retry on the next scheduled crawl\n* For persistent unavailability, verify the URL is correct and the site is operational\n* Consider scheduling crawls during times when the site is less likely to be under maintenance\n* Review the knowledge source error details in the Twilio Console",
    "description": "The web crawler received a `503 Service Unavailable` response when attempting to access the target URL during knowledge ingestion. The target server is temporarily unable to handle the request.",
    "date_created": "2026-07-24T09:46:08-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420028,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source gateway timeout",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `504 Gateway Timeout` response when attempting to access the target URL during knowledge ingestion. The gateway or proxy server did not receive a timely response from an upstream server.\n\n### Possible causes\n\n- The upstream server is responding too slowly\n- Network latency between the gateway and upstream server\n- The target site's backend services are overloaded or slow\n- Database queries or processing taking too long\n- Network connectivity issues in the target site's infrastructure\n\n### Possible solutions\n\n- Verify the target URL loads within 30 seconds in a web browser\n- Check if the target site is experiencing performance degradation or high load\n- If the timeout is temporary, the crawler will retry on the next scheduled crawl\n- For consistently slow URLs, consider reducing crawl depth to limit processing\n- Contact the target site administrator if timeouts persist\n- Consider downloading the content manually and uploading as files if the issue continues\n- Review the knowledge source error details in the Twilio Console\n",
    "causes": "* The upstream server is responding too slowly\n* Network latency between the gateway and upstream server\n* The target site's backend services are overloaded or slow\n* Database queries or processing taking too long\n* Network connectivity issues in the target site's infrastructure",
    "solutions": "* Verify the target URL loads within 30 seconds in a web browser\n* Check if the target site is experiencing performance degradation or high load\n* If the timeout is temporary, the crawler will retry on the next scheduled crawl\n* For consistently slow URLs, consider reducing crawl depth to limit processing\n* Contact the target site administrator if timeouts persist\n* Consider downloading the content manually and uploading as files if the issue continues\n* Review the knowledge source error details in the Twilio Console",
    "description": "The web crawler received a `504 Gateway Timeout` response when attempting to access the target URL during knowledge ingestion. The gateway or proxy server did not receive a timely response from an upstream server.",
    "date_created": "2026-07-24T09:46:08-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420029,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source access forbidden",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `403 Forbidden` response when attempting to access the target URL during knowledge ingestion. The server understood the request but refuses to authorize access.\n\n### Possible causes\n\n- The target URL is restricted by IP address or geographic location\n- The site blocks automated crawlers or bots\n- The content requires specific permissions or roles\n- The site's `robots.txt` file disallows crawling\n- Rate limiting or anti-bot protection is blocking the crawler\n\n### Possible solutions\n\n- Verify the URL is publicly accessible from different locations and IP addresses\n- Check the site's `robots.txt` file to ensure crawling is allowed\n- If the site blocks crawlers, download the content manually and upload as a file\n- Use the File or Text knowledge source types for restricted content\n- Contact the site administrator to allowlist Twilio's crawler\n- Review the knowledge source error details in the Twilio Console\n",
    "causes": "* The target URL is restricted by IP address or geographic location\n* The site blocks automated crawlers or bots\n* The content requires specific permissions or roles\n* The site's `robots.txt` file disallows crawling\n* Rate limiting or anti-bot protection is blocking the crawler",
    "solutions": "* Verify the URL is publicly accessible from different locations and IP addresses\n* Check the site's `robots.txt` file to ensure crawling is allowed\n* If the site blocks crawlers, download the content manually and upload as a file\n* Use the File or Text knowledge source types for restricted content\n* Contact the site administrator to allowlist Twilio's crawler\n* Review the knowledge source error details in the Twilio Console",
    "description": "The web crawler received a `403 Forbidden` response when attempting to access the target URL during knowledge ingestion. The server understood the request but refuses to authorize access.",
    "date_created": "2026-07-29T11:16:50-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420030,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source URL not found",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `404 Not Found` response when attempting to access the target URL during knowledge ingestion. The requested resource does not exist on the target server.\n\n### Possible causes\n\n- The URL no longer exists\n- The URL path is incorrect\n- The target site has removed or renamed the content\n- The page was temporarily unavailable during crawling\n- The URL structure changed after the knowledge source was created\n\n### Possible solutions\n\n- Verify the URL is correct and accessible in a web browser\n- Check if the content has moved to a new URL and update your knowledge source\n- Remove the knowledge source if the content is permanently unavailable\n- If the URL is correct but temporarily unavailable, the crawler will retry on the next scheduled crawl\n- Review the knowledge source error details in the Twilio Console for specific URLs that failed\n",
    "causes": "* The URL no longer exists\n* The URL path is incorrect\n* The target site has removed or renamed the content\n* The page was temporarily unavailable during crawling\n* The URL structure changed after the knowledge source was created",
    "solutions": "* Verify the URL is correct and accessible in a web browser\n* Check if the content has moved to a new URL and update your knowledge source\n* Remove the knowledge source if the content is permanently unavailable\n* If the URL is correct but temporarily unavailable, the crawler will retry on the next scheduled crawl\n* Review the knowledge source error details in the Twilio Console for specific URLs that failed",
    "description": "The web crawler received a `404 Not Found` response when attempting to access the target URL during knowledge ingestion. The requested resource does not exist on the target server.",
    "date_created": "2026-07-29T11:16:50-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420031,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source request timeout",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `408 Request Timeout` response or the request timed out before the target URL could respond during knowledge ingestion.\n\n### Possible causes\n\n- The target server is responding too slowly\n- Network latency or connectivity issues\n- The target site is experiencing high load or performance problems\n- The page takes too long to generate or load\n- Temporary network interruptions during crawling\n\n### Possible solutions\n\n- Verify the target URL loads within 30 seconds in a web browser\n- Check if the target site is experiencing performance issues or outages\n- If the timeout is temporary, the crawler will retry on the next scheduled crawl\n- For consistently slow URLs, consider downloading the content manually and uploading as a file\n- Contact the target site administrator if the site is consistently slow\n- Review the knowledge source error details in the Twilio Console\n",
    "causes": "* The target server is responding too slowly\n* Network latency or connectivity issues\n* The target site is experiencing high load or performance problems\n* The page takes too long to generate or load\n* Temporary network interruptions during crawling",
    "solutions": "* Verify the target URL loads within 30 seconds in a web browser\n* Check if the target site is experiencing performance issues or outages\n* If the timeout is temporary, the crawler will retry on the next scheduled crawl\n* For consistently slow URLs, consider downloading the content manually and uploading as a file\n* Contact the target site administrator if the site is consistently slow\n* Review the knowledge source error details in the Twilio Console",
    "description": "The web crawler received a `408 Request Timeout` response or the request timed out before the target URL could respond during knowledge ingestion.",
    "date_created": "2026-07-29T11:16:50-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420032,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source rate limit exceeded",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `429 Too Many Requests` response when attempting to access the target URL during knowledge ingestion. The target server is rate limiting or throttling requests from the crawler.\n\n### Possible causes\n\n- The target site has rate limits that the crawler exceeded\n- The site detected automated crawling and blocked further requests\n- Too many pages were crawled in a short time period\n- The target site's API or CDN has request quotas\n- Anti-bot protection is limiting crawler access\n\n### Possible solutions\n\n- Reduce the crawl depth to limit the number of pages crawled\n- Increase the crawl period to spread requests over a longer time\n- Contact the target site administrator to allowlist Twilio's crawler\n- If rate limiting persists, download the content manually and upload as files\n- The crawler will automatically retry on the next scheduled crawl period\n- Review the knowledge source error details in the Twilio Console\n",
    "causes": "* The target site has rate limits that the crawler exceeded\n* The site detected automated crawling and blocked further requests\n* Too many pages were crawled in a short time period\n* The target site's API or CDN has request quotas\n* Anti-bot protection is limiting crawler access",
    "solutions": "* Reduce the crawl depth to limit the number of pages crawled\n* Increase the crawl period to spread requests over a longer time\n* Contact the target site administrator to allowlist Twilio's crawler\n* If rate limiting persists, download the content manually and upload as files\n* The crawler will automatically retry on the next scheduled crawl period\n* Review the knowledge source error details in the Twilio Console",
    "description": "The web crawler received a `429 Too Many Requests` response when attempting to access the target URL during knowledge ingestion. The target server is rate limiting or throttling requests from the crawler.",
    "date_created": "2026-07-29T11:16:50-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420033,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source internal server error",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `500 Internal Server Error` response when attempting to access the target URL during knowledge ingestion. The target server encountered an unexpected condition.\n\n### Possible causes\n\n- The target server is experiencing internal errors or bugs\n- Server-side application or script failures\n- Database or backend service failures on the target site\n- Server misconfigurations or resource exhaustion\n- Temporary server issues or maintenance\n\n### Possible solutions\n\n- Verify the target URL loads correctly in a web browser\n- Check if the target site is reporting service issues or outages\n- If the error is temporary, the crawler will retry on the next scheduled crawl\n- For persistent errors, contact the target site administrator\n- Consider using a different URL or downloading the content manually as a file\n- Review the knowledge source error details in the Twilio Console\n",
    "causes": "* The target server is experiencing internal errors or bugs\n* Server-side application or script failures\n* Database or backend service failures on the target site\n* Server misconfigurations or resource exhaustion\n* Temporary server issues or maintenance",
    "solutions": "* Verify the target URL loads correctly in a web browser\n* Check if the target site is reporting service issues or outages\n* If the error is temporary, the crawler will retry on the next scheduled crawl\n* For persistent errors, contact the target site administrator\n* Consider using a different URL or downloading the content manually as a file\n* Review the knowledge source error details in the Twilio Console",
    "description": "The web crawler received a `500 Internal Server Error` response when attempting to access the target URL during knowledge ingestion. The target server encountered an unexpected condition.",
    "date_created": "2026-07-29T11:16:50-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420034,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge web crawl error",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nA generic error occurred during web crawling for knowledge ingestion. Twilio returns this error when the specific HTTP status code is not available or not mapped to a specific error code.\n\n### Possible causes\n\n- Network connectivity issues during crawling\n- Unexpected error response from the target URL\n- Timeout or interruption during the crawl process\n- Unknown or unmapped HTTP status code from the target server\n\n### Possible solutions\n\n- Review the knowledge source error details in the Twilio Console for specific error information\n- Verify the target URL is accessible and responds\n- Check your network connectivity and firewall rules\n- Test the URL in a web browser to confirm it loads\n- Contact Twilio Support if the issue persists\n",
    "causes": "* Network connectivity issues during crawling\n* Unexpected error response from the target URL\n* Timeout or interruption during the crawl process\n* Unknown or unmapped HTTP status code from the target server",
    "solutions": "* Review the knowledge source error details in the Twilio Console for specific error information\n* Verify the target URL is accessible and responds\n* Check your network connectivity and firewall rules\n* Test the URL in a web browser to confirm it loads\n* Contact Twilio Support if the issue persists",
    "description": "A generic error occurred during web crawling for knowledge ingestion. Twilio returns this error when the specific HTTP status code is not available or not mapped to a specific error code.",
    "date_created": "2026-07-29T11:16:50-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420035,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source bad request",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `400 Bad Request` when attempting to access the target URL during knowledge ingestion.\n\n### Possible causes\n\n- The URL contains invalid query parameters or malformed request syntax\n- The target server rejected the crawler's request format\n- Required headers or authentication information are missing\n- The target site has strict validation that rejects automated crawlers\n\n### Possible solutions\n\n- Verify the URL is correctly formatted with valid query parameters\n- Ensure the URL is publicly accessible without special authentication requirements\n- Test the URL in a web browser to confirm it loads without errors\n- Remove the knowledge source if it requires authentication or special headers that the crawler cannot provide\n- Review the knowledge source error details in the Twilio Console for more information\n",
    "causes": "* The URL contains invalid query parameters or malformed request syntax\n* The target server rejected the crawler's request format\n* Required headers or authentication information are missing\n* The target site has strict validation that rejects automated crawlers",
    "solutions": "* Verify the URL is correctly formatted with valid query parameters\n* Ensure the URL is publicly accessible without special authentication requirements\n* Test the URL in a web browser to confirm it loads without errors\n* Remove the knowledge source if it requires authentication or special headers that the crawler cannot provide\n* Review the knowledge source error details in the Twilio Console for more information",
    "description": "The web crawler received a `400 Bad Request` when attempting to access the target URL during knowledge ingestion.",
    "date_created": "2026-07-29T11:16:50-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 420036,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Knowledge source authentication required",
    "secondary_message": null,
    "product": "Enterprise-Knowledge",
    "products_used": [
      "enterprise-knowledge"
    ],
    "docs": "\n## Description\n\nThe web crawler received a `401 Unauthorized` response when attempting to access the target URL during knowledge ingestion. The target URL requires authentication that the crawler cannot provide.\n\n### Possible causes\n\n- The target URL requires login credentials\n- The content is behind a paywall or authentication gate\n- The target site requires session-based authentication\n- API keys or authentication tokens are required\n\n### Possible solutions\n\n- Ensure the target URL is publicly accessible without authentication\n- If the content requires authentication, download it manually and upload as a file instead\n- Use the File or Text knowledge source types for authenticated content\n- Remove the knowledge source if the content cannot be made publicly accessible\n- Review the knowledge source error details in the Twilio Console\n",
    "causes": "* The target URL requires login credentials\n* The content is behind a paywall or authentication gate\n* The target site requires session-based authentication\n* API keys or authentication tokens are required",
    "solutions": "* Ensure the target URL is publicly accessible without authentication\n* If the content requires authentication, download it manually and upload as a file instead\n* Use the File or Text knowledge source types for authenticated content\n* Remove the knowledge source if the content cannot be made publicly accessible\n* Review the knowledge source error details in the Twilio Console",
    "description": "The web crawler received a `401 Unauthorized` response when attempting to access the target URL during knowledge ingestion. The target URL requires authentication that the crawler cannot provide.",
    "date_created": "2026-07-29T11:16:50-07:00",
    "last_updated": "2026-07-29T11:16:50-07:00"
  },
  {
    "code": 456001,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Approaching Flex Plugin creation limit",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nYou are approaching the limit of how many Flex Plugins you can have on your account. Once you reach the limit, you may need to archive old Plugins to create any new one.\n\n### Possible causes\n\nYou are approaching 25 Flex Plugins on your account.\n\n### Possible solutions\n\nArchive older Plugins if they are no longer used.\n",
    "causes": "You are approaching 25 Flex Plugins on your account.",
    "solutions": "Archive older Plugins if they are no longer used.",
    "description": "You are approaching the limit of how many Flex Plugins you can have on your account. Once you reach the limit, you may need to archive old Plugins to create any new one.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 456002,
    "log_level": "WARNING",
    "log_type": "APPLICATION",
    "message": "Approaching Flex Plugin Version creation limit",
    "secondary_message": null,
    "product": "Flex",
    "products_used": [
      "flex"
    ],
    "docs": "\n## Description\n\nYou are approaching the limit of how many Flex Plugin Versions you can have. Once you reach the limit, you may need to archive old Versions to create any new one.\n\n### Possible causes\n\nYou are approaching 500 Flex Plugin Versions on your account.\n\n### Possible solutions\n\nArchive older Plugin Versions if they are no longer used.\n",
    "causes": "You are approaching 500 Flex Plugin Versions on your account.",
    "solutions": "Archive older Plugin Versions if they are no longer used.",
    "description": "You are approaching the limit of how many Flex Plugin Versions you can have. Once you reach the limit, you may need to archive old Versions to create any new one.",
    "date_created": "2020-12-14T21:32:45Z",
    "last_updated": "2026-03-11T15:01:16-05:00"
  },
  {
    "code": 520001,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Observation creation failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nSystem experienced an interruption while attempting to store an observation.\n\n### Possible causes\n\n- Temporary interruption of observation creation\n\n### Possible solutions\n\n- Observation Creation delayed. Note that some observations could temporarily reflect an older state.\n",
    "causes": "* Temporary interruption of observation creation",
    "solutions": "* Observation Creation delayed. Note that some observations could temporarily reflect an older state.",
    "description": "System experienced an interruption while attempting to store an observation.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520002,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Observation update failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nSystem experienced an interruption while attempting to update an existing observation.\n\n### Possible causes\n\n- Invalid observation ID\n\n### Possible solutions\n\n- Validate the observation ID and then carefully re-attempt the update request\n",
    "causes": "* Invalid observation ID",
    "solutions": "* Validate the observation ID and then carefully re-attempt the update request",
    "description": "System experienced an interruption while attempting to update an existing observation.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520003,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Observation not found",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nObservation could not be located in the system.\n\n### Possible causes\n\n- Observation does not exist or has been removed or reconciled\n\n### Possible solutions\n\n- Verify the Profile ID and Observation ID\n- Review observation reconciliation logs for details\n",
    "causes": "* Observation does not exist or has been removed or reconciled",
    "solutions": "* Verify the Profile ID and Observation ID\n* Review observation reconciliation logs for details",
    "description": "Observation could not be located in the system.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Profile already exists",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nUnique constraint violation occurred during creation.\n\n### Possible causes\n\n- The client application submitted a `POST` request containing a profile identifier that is already mapped to an active user profile\n\n### Possible solutions\n\n- Execute a `GET` request to verify the availability of the identifier before attempting profile creation\n- Utilize globally unique identifiers like UUIDs\n",
    "causes": "* The client application submitted a `POST` request containing a profile identifier that is already mapped to an active user profile",
    "solutions": "* Execute a `GET` request to verify the availability of the identifier before attempting profile creation\n* Utilize globally unique identifiers like UUIDs",
    "description": "Unique constraint violation occurred during creation.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520005,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Profile schema validation failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nProfile creation failed due to an invalid schema or unexpected structure.\n\n### Possible causes\n\n- The provided JSON payload does not match the required profile schema\n- Parallel requests caused a race condition\n\n### Possible solutions\n\n- Validate the JSON payload against the designated profile schema\n- Implement idempotency keys to prevent race conditions\n",
    "causes": "* The provided JSON payload does not match the required profile schema\n* Parallel requests caused a race condition",
    "solutions": "* Validate the JSON payload against the designated profile schema\n* Implement idempotency keys to prevent race conditions",
    "description": "Profile creation failed due to an invalid schema or unexpected structure.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520006,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Profile created with defaults",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nProfile was created utilizing default values for missing fields.\n\n### Possible causes\n\n- The payload included only mandatory fields, which prompted the system to apply standard default values to the omitted optional columns\n\n### Possible solutions\n\n- This message is informational\n- To enforce specific values, include all relevant optional fields in your initial `POST` request\n",
    "causes": "* The payload included only mandatory fields, which prompted the system to apply standard default values to the omitted optional columns",
    "solutions": "* This message is informational\n* To enforce specific values, include all relevant optional fields in your initial `POST` request",
    "description": "Profile was created utilizing default values for missing fields.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520007,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid CSV format",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nCSV file did not conform to the expected schema.\n\n### Possible causes\n\n- Missing columns, unrecognized delimiters, or unsupported file encoding\n- Misordered headers\n\n### Possible solutions\n\n- Download and adhere to the standard CSV template\n- Ensure all required columns are present and encoded in UTF-8 before re-attempting the upload\n",
    "causes": "* Missing columns, unrecognized delimiters, or unsupported file encoding\n* Misordered headers",
    "solutions": "* Download and adhere to the standard CSV template\n* Ensure all required columns are present and encoded in UTF-8 before re-attempting the upload",
    "description": "CSV file did not conform to the expected schema.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520008,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Profile access denied",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nSystem cannot retrieve the targeted profile.\n\n### Possible causes\n\n- The Profile ID does not exist\n- The operator's active session lacks the necessary RBAC permissions\n\n### Possible solutions\n\n- Ensure the target Profile ID exists\n- Validate that the operator possesses the proper scopes for cross-domain data access\n",
    "causes": "* The Profile ID does not exist\n* The operator's active session lacks the necessary RBAC permissions",
    "solutions": "* Ensure the target Profile ID exists\n* Validate that the operator possesses the proper scopes for cross-domain data access",
    "description": "System cannot retrieve the targeted profile.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520009,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Profile not found",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nProfile targeted for deletion or retrieval could not be located.\n\n### Possible causes\n\n- The requested Profile ID does not exist in the active workspace\n- The profile has already been purged\n\n### Possible solutions\n\n- Fetch the profile record first to confirm its existence before invoking deletion protocols\n",
    "causes": "* The requested Profile ID does not exist in the active workspace\n* The profile has already been purged",
    "solutions": "* Fetch the profile record first to confirm its existence before invoking deletion protocols",
    "description": "Profile targeted for deletion or retrieval could not be located.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520010,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Bulk trait upsert failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nBulk trait upsert encountered validation discrepancies.\n\n### Possible causes\n\n- Missing fields, unmatched data types, or duplicate mapping keys within the batch payload\n- Malformed JSON structure\n- No valid traits\n- No Identifiers\n\n### Possible solutions\n\n- Validate the batch locally prior to submission\n- Implement granular error handling to process valid records while gracefully managing exceptions\n- Register trait in trait settings\n",
    "causes": "* Missing fields, unmatched data types, or duplicate mapping keys within the batch payload\n* Malformed JSON structure\n* No valid traits\n* No Identifiers",
    "solutions": "* Validate the batch locally prior to submission\n* Implement granular error handling to process valid records while gracefully managing exceptions\n* Register trait in trait settings",
    "description": "Bulk trait upsert encountered validation discrepancies.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520011,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait not found",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nTrait listing or retrieval operation did not return any traits.\n\n### Possible causes\n\n- Profile was generated without traits\n- All existing traits have been previously removed\n\n### Possible solutions\n\n- Ensure traits are configured and mapped during profile imports and upserts\n",
    "causes": "* Profile was generated without traits\n* All existing traits have been previously removed",
    "solutions": "* Ensure traits are configured and mapped during profile imports and upserts",
    "description": "Trait listing or retrieval operation did not return any traits.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520012,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Identifier merge conflict",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nIdentifier assignment failed due to an identity conflict, violating uniqueness constraints.\n\n### Possible causes\n\n- Identifier is currently exclusively linked to another profile within the workspace\n\n### Possible solutions\n\n- Query existing identifier ownership records\n- Manually resolve the conflict or execute a profile merge operation before attempting to re-assign the identifier\n",
    "causes": "* Identifier is currently exclusively linked to another profile within the workspace",
    "solutions": "* Query existing identifier ownership records\n* Manually resolve the conflict or execute a profile merge operation before attempting to re-assign the identifier",
    "description": "Identifier assignment failed due to an identity conflict, violating uniqueness constraints.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520013,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Identifier formatting error",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nIdentifier was added but does not strictly align with the expected schema pattern.\n\n### Possible causes\n\n- Identifier value does not follow the recognized pattern (e.g., missing an @ symbol in an email address)\n\n### Possible solutions\n\n- Validate the identifier string against backend or local regular expressions prior to submission to ensure formatting consistency\n",
    "causes": "* Identifier value does not follow the recognized pattern (e.g., missing an @ symbol in an email address)",
    "solutions": "* Validate the identifier string against backend or local regular expressions prior to submission to ensure formatting consistency",
    "description": "Identifier was added but does not strictly align with the expected schema pattern.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520014,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Identifier not found",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nIdentifier targeted for the update could not be located.\n\n### Possible causes\n\n- Identifier is not currently associated with the target profile\n\n### Possible solutions\n\n- Fetch the current identifier list for the profile to verify the identifier's existence before issuing `PATCH` or `PUT` update requests\n",
    "causes": "* Identifier is not currently associated with the target profile",
    "solutions": "* Fetch the current identifier list for the profile to verify the identifier's existence before issuing `PATCH` or `PUT` update requests",
    "description": "Identifier targeted for the update could not be located.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520015,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Bulk identifier add failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nBulk identifier assignment failed because the file contained unprocessable data.\n\n### Possible causes\n\n- Batch payload contained duplicated or incorrectly formatted identifiers\n\n### Possible solutions\n\n- Execute a strict data validation and refinement step to ensure data cleanliness before uploading the batch payload\n",
    "causes": "* Batch payload contained duplicated or incorrectly formatted identifiers",
    "solutions": "* Execute a strict data validation and refinement step to ensure data cleanliness before uploading the batch payload",
    "description": "Bulk identifier assignment failed because the file contained unprocessable data.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520016,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Identifiers skipped during bulk add",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nSome identifiers were skipped during bulk processing to preserve data integrity.\n\n### Possible causes\n\n- Batch file included some duplicate or improperly formatted identifier values\n\n### Possible solutions\n\n- Deduplicate the source data\n- Execute a format validation check on the batch to ensure all entries meet schema requirements before transmission\n",
    "causes": "* Batch file included some duplicate or improperly formatted identifier values",
    "solutions": "* Deduplicate the source data\n* Execute a format validation check on the batch to ensure all entries meet schema requirements before transmission",
    "description": "Some identifiers were skipped during bulk processing to preserve data integrity.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520017,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Identifier not found for deletion",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nIdentifier could not be found for deletion.\n\n### Possible causes\n\n- It may be invalid, previously removed, or never associated with the target profile\n\n### Possible solutions\n\n- Fetch the most recent identifier list for the target profile to confirm its presence before issuing a `DELETE` request\n",
    "causes": "* It may be invalid, previously removed, or never associated with the target profile",
    "solutions": "* Fetch the most recent identifier list for the target profile to confirm its presence before issuing a `DELETE` request",
    "description": "Identifier could not be found for deletion.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520018,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Identifier partially deleted",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nIdentifier was successfully removed from the profile, but downstream dependencies may remain.\n\n### Possible causes\n\n- Downstream or upstream systems may still be referencing this identifier\n\n### Possible solutions\n\n- Audit interconnected systems to ensure that deletion requests are fully propagated across all active environments\n",
    "causes": "* Downstream or upstream systems may still be referencing this identifier",
    "solutions": "* Audit interconnected systems to ensure that deletion requests are fully propagated across all active environments",
    "description": "Identifier was successfully removed from the profile, but downstream dependencies may remain.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520019,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait group name already exists",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nTrait group name violates uniqueness constraints.\n\n### Possible causes\n\n- The provided trait group name is already active within the workspace\n\n### Possible solutions\n\n- Query the API for existing trait group names prior to creation\n- If necessary, consider appending a unique suffix to the desired group name\n",
    "causes": "* The provided trait group name is already active within the workspace",
    "solutions": "* Query the API for existing trait group names prior to creation\n* If necessary, consider appending a unique suffix to the desired group name",
    "description": "Trait group name violates uniqueness constraints.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520020,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait group not found",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nTrait group could not be located during the update process.\n\n### Possible causes\n\n- An incorrect Group ID was provided or the group was previously deleted\n\n### Possible solutions\n\n- List and select existing trait groups by their verified IDs before attempting update operations\n",
    "causes": "* An incorrect Group ID was provided or the group was previously deleted",
    "solutions": "* List and select existing trait groups by their verified IDs before attempting update operations",
    "description": "Trait group could not be located during the update process.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520021,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait group deletion failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nTrait group could not be successfully deleted.\n\n### Possible causes\n\n- The trait group no longer exists\n\n### Possible solutions\n\n- Verify the existence of the trait group and ensure the requesting user account is granted the necessary deletion privileges\n",
    "causes": "* The trait group no longer exists",
    "solutions": "* Verify the existence of the trait group and ensure the requesting user account is granted the necessary deletion privileges",
    "description": "Trait group could not be successfully deleted.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520022,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Memory store did not get created",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nMemory store creation failed due to config or network error.\n\n### Possible causes\n\n- The orchestration workflow or operator supplied an incomplete or incorrectly structured configuration payload\n\n### Possible solutions\n\n- Suggest retrying with required parameters within the configuration object and confirm that integration mappings are accurate\n",
    "causes": "* The orchestration workflow or operator supplied an incomplete or incorrectly structured configuration payload",
    "solutions": "* Suggest retrying with required parameters within the configuration object and confirm that integration mappings are accurate",
    "description": "Memory store creation failed due to config or network error.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520023,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Memory store created with exceptions",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nMissing config fields led to system defaults.\n\n### Possible causes\n\n- Configuration object was accepted, skipped optional fields\n\n### Possible solutions\n\n- To maintain strict operational behavior, provide a comprehensive configuration object with all optional parameters explicitly defined\n",
    "causes": "* Configuration object was accepted, skipped optional fields",
    "solutions": "* To maintain strict operational behavior, provide a comprehensive configuration object with all optional parameters explicitly defined",
    "description": "Missing config fields led to system defaults.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520024,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Identity resolution config error",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nIdentity resolution configuration payload did not meet schema requirements.\n\n### Possible causes\n\n- Contains structural discrepancies, schema violations, or omits mandatory fields\n\n### Possible solutions\n\n- Validate the configuration payload against the strict JSON schema prior to transmission to ensure seamless acceptance\n",
    "causes": "* Contains structural discrepancies, schema violations, or omits mandatory fields",
    "solutions": "* Validate the configuration payload against the strict JSON schema prior to transmission to ensure seamless acceptance",
    "description": "Identity resolution configuration payload did not meet schema requirements.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520025,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Identity resolution settings defaulted",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nMissing configuration fields were populated with standardized system defaults.\n\n### Possible causes\n\n- Settings configuration skipped optional fields\n\n### Possible solutions\n\n- Review the applied defaults\n- If specific resolution settings are desired, apply all relevant optional configuration fields in your request\n",
    "causes": "* Settings configuration skipped optional fields",
    "solutions": "* Review the applied defaults\n* If specific resolution settings are desired, apply all relevant optional configuration fields in your request",
    "description": "Missing configuration fields were populated with standardized system defaults.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520026,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Profile merge failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nMerge operation was respectfully halted due to merge conflicts.\n\n### Possible causes\n\n- The profile data contains conflicting mandatory fields\n- The operation exceeds standard guidance on profile merge limits\n\n### Possible solutions\n\n- Review the conflicting profile data points to align the information before respectfully re-attempting the merge operation\n- Resend data in batches based on suggested profile limits in documentation\n",
    "causes": "* The profile data contains conflicting mandatory fields\n* The operation exceeds standard guidance on profile merge limits",
    "solutions": "* Review the conflicting profile data points to align the information before respectfully re-attempting the merge operation\n* Resend data in batches based on suggested profile limits in documentation",
    "description": "Merge operation was respectfully halted due to merge conflicts.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520027,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Profile merge completed with conflicts",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nConflict resolved when merging the profiles based on timestamp.\n\n### Possible causes\n\n- The system resolved these conflicts by defaulting to the most recently updated timestamp\n\n### Possible solutions\n\n- Review the merged profile object to ensure the automated resolutions align with your data expectations\n",
    "causes": "* The system resolved these conflicts by defaulting to the most recently updated timestamp",
    "solutions": "* Review the merged profile object to ensure the automated resolutions align with your data expectations",
    "description": "Conflict resolved when merging the profiles based on timestamp.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520032,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Profile skipped, bulk creation errors",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nRow level validation or duplication issues occurred during bulk profile creation.\n\n### Possible causes\n\n- Some entries in the file were duplicates or contained bad data\n\n### Possible solutions\n\n- Pre-validate the whole import\n- Log/fix errors and retry only the failed lines\n",
    "causes": "* Some entries in the file were duplicates or contained bad data",
    "solutions": "* Pre-validate the whole import\n* Log/fix errors and retry only the failed lines",
    "description": "Row level validation or duplication issues occurred during bulk profile creation.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520033,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Unmapped columns skipped",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe CSV contains extraneous or unmapped columns. Unmapped columns skipped as Traits.\n\n### Possible causes\n\n- The file includes unknown or unused headers due to schema change\n\n### Possible solutions\n\n- Remove extraneous headers before upload\n- Refresh mapping definitions with the backend schema\n",
    "causes": "* The file includes unknown or unused headers due to schema change",
    "solutions": "* Remove extraneous headers before upload\n* Refresh mapping definitions with the backend schema",
    "description": "The CSV contains extraneous or unmapped columns. Unmapped columns skipped as Traits.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520034,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Identifiers skipped during bulk add",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nSome batch items failed validation during a bulk upsert.\n\n### Possible causes\n\n- Identifiers clash with existing profiles\n\n### Possible solutions\n\n- Investigate failed records; fix conflicts and re-upload only those\n",
    "causes": "* Identifiers clash with existing profiles",
    "solutions": "* Investigate failed records; fix conflicts and re-upload only those",
    "description": "Some batch items failed validation during a bulk upsert.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520035,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait not deleted",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nTrait was not found on this profile.\n\n### Possible causes\n\n- Trait was never set, or was already deleted\n\n### Possible solutions\n\n- List available traits on the profile before sending `DELETE` requests\n",
    "causes": "* Trait was never set, or was already deleted",
    "solutions": "* List available traits on the profile before sending `DELETE` requests",
    "description": "Trait was not found on this profile.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520036,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "CSV import / upload error",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nMalformed CSV file, unsupported encoding, or missing headers.\n\n### Possible causes\n\n- Corrupt file, missing expected identifiers and format, or unsupported CSV delimiter\n\n### Possible solutions\n\n- Open the file in a text editor to compare the format to the import spec\n",
    "causes": "* Corrupt file, missing expected identifiers and format, or unsupported CSV delimiter",
    "solutions": "* Open the file in a text editor to compare the format to the import spec",
    "description": "Malformed CSV file, unsupported encoding, or missing headers.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520037,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Summary retrieval failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nConversation summary for the profile could not be found or accessed.\n\n### Possible causes\n\n- The summary does not exist or has been removed\n- The session does not have access to the target profile\n\n### Possible solutions\n\n- Double-check the Profile ID and Summary ID to ensure they are correct\n- Verify your RBAC permissions\n",
    "causes": "* The summary does not exist or has been removed\n* The session does not have access to the target profile",
    "solutions": "* Double-check the Profile ID and Summary ID to ensure they are correct\n* Verify your RBAC permissions",
    "description": "Conversation summary for the profile could not be found or accessed.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520038,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Summary update failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe target conversation summary could not be updated.\n\n### Possible causes\n\n- Invalid summary content or formatting\n- The Summary ID does not exist\n\n### Possible solutions\n\n- Validate the summary payload structure\n- Verify the Summary ID exists before attempting update\n",
    "causes": "* Invalid summary content or formatting\n* The Summary ID does not exist",
    "solutions": "* Validate the summary payload structure\n* Verify the Summary ID exists before attempting update",
    "description": "The target conversation summary could not be updated.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520039,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Summary deletion failed",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe target conversation summary could not be deleted from the profile.\n\n### Possible causes\n\n- The Summary ID is incorrect or has already been removed\n- The active session lacks sufficient deletion privileges\n\n### Possible solutions\n\n- Verify the Summary ID exists on the profile before issuing the `DELETE` request\n- Confirm your account privileges\n",
    "causes": "* The Summary ID is incorrect or has already been removed\n* The active session lacks sufficient deletion privileges",
    "solutions": "* Verify the Summary ID exists on the profile before issuing the `DELETE` request\n* Confirm your account privileges",
    "description": "The target conversation summary could not be deleted from the profile.",
    "date_created": "2026-03-26T09:31:25-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520040,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait not registered",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nTrait name for the trait group is not registered.\n\n### Possible causes\n\n- Trait Group or trait name isn't registered\n\n### Possible solutions\n\n- Register the trait group and trait name\n",
    "causes": "* Trait Group or trait name isn't registered",
    "solutions": "* Register the trait group and trait name",
    "description": "Trait name for the trait group is not registered.",
    "date_created": "2026-03-31T23:32:01-04:00",
    "last_updated": "2026-03-31T23:32:01-04:00"
  },
  {
    "code": 520041,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Memory store does not exist on this account or has been marked deleted",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe requested memory store does not exist on this account.\n\n### Possible causes\n\n- The provided store ID is incorrect.\n- The store was previously deleted.\n\n### Possible solutions\n\n- List available stores and verify the store ID.\n- If the store has been deleted, create a new store and use its identifier.\n",
    "causes": "* The provided store ID is incorrect.\n* The store was previously deleted.",
    "solutions": "* List available stores and verify the store ID.\n* If the store has been deleted, create a new store and use its identifier.",
    "description": "The requested memory store does not exist on this account.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520042,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Store record exists but its status is not ACTIVE",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe memory store is not in an active state and cannot serve requests.\n\n### Possible causes\n\n- The store is still being provisioned and is not yet ready.\n- Provisioning failed, and the store is in a terminal failed state.\n\n### Possible solutions\n\n- Wait for provisioning to complete, and then retry the request.\n- If provisioning failed, delete the store and create a new one.\n",
    "causes": "* The store is still being provisioned and is not yet ready.\n* Provisioning failed, and the store is in a terminal failed state.",
    "solutions": "* Wait for provisioning to complete, and then retry the request.\n* If provisioning failed, delete the store and create a new one.",
    "description": "The memory store is not in an active state and cannot serve requests.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520043,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Resource version conflict",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe supplied `If-Match` ETag does not match the current resource version.\n\n### Possible causes\n\n- The targeted store, identity-resolution settings, trait group, or data mapping was updated by another caller between fetch and update.\n\n### Possible solutions\n\n- Re-fetch the resource to obtain the latest ETag, and then retry the request.\n",
    "causes": "* The targeted store, identity-resolution settings, trait group, or data mapping was updated by another caller between fetch and update.",
    "solutions": "* Re-fetch the resource to obtain the latest ETag, and then retry the request.",
    "description": "The supplied `If-Match` ETag does not match the current resource version.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520044,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Memory store limit exceeded",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe account has reached the maximum number of memory stores allowed.\n\n### Possible causes\n\n- The account already has the maximum number of memory stores permitted.\n\n### Possible solutions\n\n- Delete unused memory stores before creating new ones.\n",
    "causes": "* The account already has the maximum number of memory stores permitted.",
    "solutions": "* Delete unused memory stores before creating new ones.",
    "description": "The account has reached the maximum number of memory stores allowed.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520045,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Memory store already exists",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nA memory store with the same display name already exists on this account.\n\n### Possible causes\n\n- Another memory store on this account already uses the requested display name. Display names are unique per account.\n\n### Possible solutions\n\n- Choose a different display name.\n- Update the existing memory store instead of creating a new one.\n",
    "causes": "* Another memory store on this account already uses the requested display name. Display names are unique per account.",
    "solutions": "* Choose a different display name.\n* Update the existing memory store instead of creating a new one.",
    "description": "A memory store with the same display name already exists on this account.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520046,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid request",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe request payload failed validation against the API schema.\n\n### Possible causes\n\n- A required field is missing.\n- A field value is out of range or malformed.\n\n### Possible solutions\n\n- Compare the payload against the API reference and correct the fields flagged in the response details.\n",
    "causes": "* A required field is missing.\n* A field value is out of range or malformed.",
    "solutions": "* Compare the payload against the API reference and correct the fields flagged in the response details.",
    "description": "The request payload failed validation against the API schema.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520047,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait group does not exist on the target memory store",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe requested trait group does not exist on the target memory store.\n\n### Possible causes\n\n- The provided trait group name is incorrect.\n- The trait group was previously deleted.\n\n### Possible solutions\n\n- List trait groups on the store to verify the correct name, and then retry.\n",
    "causes": "* The provided trait group name is incorrect.\n* The trait group was previously deleted.",
    "solutions": "* List trait groups on the store to verify the correct name, and then retry.",
    "description": "The requested trait group does not exist on the target memory store.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520048,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Data mapping does not exist on the target memory store",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe requested data mapping does not exist on the target memory store.\n\n### Possible causes\n\n- The provided data mapping ID is incorrect.\n- The data mapping was previously deleted.\n\n### Possible solutions\n\n- List data mappings on the store to verify the correct ID.\n- If the data mapping has been deleted, create a new one and use its identifier.\n",
    "causes": "* The provided data mapping ID is incorrect.\n* The data mapping was previously deleted.",
    "solutions": "* List data mappings on the store to verify the correct ID.\n* If the data mapping has been deleted, create a new one and use its identifier.",
    "description": "The requested data mapping does not exist on the target memory store.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520049,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid memory store identifier",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe supplied store ID is not a valid memory store identifier.\n\n### Possible causes\n\n- The store ID is not a well-formed TTID.\n- The TTID belongs to a different domain or resource type.\n\n### Possible solutions\n\n- Use the identifier of an existing memory store.\n",
    "causes": "* The store ID is not a well-formed TTID.\n* The TTID belongs to a different domain or resource type.",
    "solutions": "* Use the identifier of an existing memory store.",
    "description": "The supplied store ID is not a valid memory store identifier.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520050,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait or trait group is protected",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe targeted trait or trait group is system-protected and cannot be modified or deleted.\n\n### Possible causes\n\n- The request attempts to delete a protected trait or a protected trait group.\n\n### Possible solutions\n\n- Leave protected traits and trait groups in place.\n- Create new traits or trait groups for custom behavior.\n",
    "causes": "* The request attempts to delete a protected trait or a protected trait group.",
    "solutions": "* Leave protected traits and trait groups in place.\n* Create new traits or trait groups for custom behavior.",
    "description": "The targeted trait or trait group is system-protected and cannot be modified or deleted.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520051,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid operation identifier",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe supplied operation ID is not a valid operation identifier.\n\n### Possible causes\n\n- The operation ID is not a well-formed TTID.\n- The TTID belongs to a different product domain or resource type.\n\n### Possible solutions\n\n- Use the operation ID that the originating asynchronous write request returned.\n",
    "causes": "* The operation ID is not a well-formed TTID.\n* The TTID belongs to a different product domain or resource type.",
    "solutions": "* Use the operation ID that the originating asynchronous write request returned.",
    "description": "The supplied operation ID is not a valid operation identifier.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T15:04:39-04:00"
  },
  {
    "code": 520052,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Operation not found",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe requested operation does not exist on this account.\n\n### Possible causes\n\n- The operation ID is incorrect.\n- The operation result has expired and is no longer retained. Operations are queryable for 7 days after completion.\n\n### Possible solutions\n\n- Verify the operation ID returned by the originating asynchronous write request.\n- Query the operation within 7 days of completion.\n",
    "causes": "* The operation ID is incorrect.\n* The operation result has expired and is no longer retained. Operations are queryable for 7 days after completion.",
    "solutions": "* Verify the operation ID returned by the originating asynchronous write request.\n* Query the operation within 7 days of completion.",
    "description": "The requested operation does not exist on this account.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-29T15:04:39-04:00"
  },
  {
    "code": 520053,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait group limit exceeded",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe memory store has reached the maximum number of trait groups allowed.\n\n### Possible causes\n\n- The memory store already has the maximum number of trait groups permitted.\n\n### Possible solutions\n\n- Delete unused trait groups before creating new ones.\n",
    "causes": "* The memory store already has the maximum number of trait groups permitted.",
    "solutions": "* Delete unused trait groups before creating new ones.",
    "description": "The memory store has reached the maximum number of trait groups allowed.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520054,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait limit exceeded",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe trait group has reached the maximum number of traits allowed.\n\n### Possible causes\n\n- The trait group already contains the maximum number of traits permitted.\n- The request would push the trait group past the maximum number of traits permitted.\n\n### Possible solutions\n\n- Remove unused traits from the trait group.\n- Organize traits across additional trait groups.\n",
    "causes": "* The trait group already contains the maximum number of traits permitted.\n* The request would push the trait group past the maximum number of traits permitted.",
    "solutions": "* Remove unused traits from the trait group.\n* Organize traits across additional trait groups.",
    "description": "The trait group has reached the maximum number of traits allowed.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520055,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait group already exists",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nA trait group with the same name already exists on the target memory store.\n\n### Possible causes\n\n- Another trait group on this memory store already uses the requested name. Names are unique per store.\n\n### Possible solutions\n\n- Choose a different name.\n- Update the existing trait group instead of creating a new one.\n",
    "causes": "* Another trait group on this memory store already uses the requested name. Names are unique per store.",
    "solutions": "* Choose a different name.\n* Update the existing trait group instead of creating a new one.",
    "description": "A trait group with the same name already exists on the target memory store.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-07-23T11:11:41-04:00"
  },
  {
    "code": 520056,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Data mapping already exists",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nA data mapping for the same dataset already exists on the target memory store.\n\n### Possible causes\n\n- Another data mapping on this memory store already maps the requested dataset. Data mappings are unique per store and dataset (1:1).\n\n### Possible solutions\n\n- Update the existing data mapping instead of creating a new one.\n- Target a different dataset.\n",
    "causes": "* Another data mapping on this memory store already maps the requested dataset. Data mappings are unique per store and dataset (1:1).",
    "solutions": "* Update the existing data mapping instead of creating a new one.\n* Target a different dataset.",
    "description": "A data mapping for the same dataset already exists on the target memory store.",
    "date_created": "2026-07-23T11:11:41-04:00",
    "last_updated": "2026-08-04T05:11:35-04:00"
  },
  {
    "code": 520057,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid suggested mapping identifier",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe supplied suggestion ID is not a valid suggested mapping identifier.\n\n### Possible causes\n\n- The suggestion ID is not a well-formed TTID.\n- The TTID belongs to a different domain or resource type.\n\n### Possible solutions\n\n- Use the identifier returned by the create-suggestion request.\n",
    "causes": "* The suggestion ID is not a well-formed TTID.\n* The TTID belongs to a different domain or resource type.",
    "solutions": "* Use the identifier returned by the create-suggestion request.",
    "description": "The supplied suggestion ID is not a valid suggested mapping identifier.",
    "date_created": "2026-08-03T10:34:41-04:00",
    "last_updated": "2026-08-03T10:34:41-04:00"
  },
  {
    "code": 520058,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Suggested mapping does not exist on the target memory store",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe requested suggested mapping does not exist on the target memory store.\n\n### Possible causes\n\n- The provided suggestion ID is incorrect.\n- The suggestion has expired; suggested mappings are retained for 7 days.\n\n### Possible solutions\n\n- List suggested mappings on the store to verify the correct ID.\n- If the suggestion has expired, generate a new one and use its identifier.\n",
    "causes": "* The provided suggestion ID is incorrect.\n* The suggestion has expired; suggested mappings are retained for 7 days.",
    "solutions": "* List suggested mappings on the store to verify the correct ID.\n* If the suggestion has expired, generate a new one and use its identifier.",
    "description": "The requested suggested mapping does not exist on the target memory store.",
    "date_created": "2026-08-03T10:34:41-04:00",
    "last_updated": "2026-08-03T10:34:41-04:00"
  },
  {
    "code": 520059,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait extraction strategy already exists",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nA trait extraction strategy with the same display name already exists on this account.\n\n### Possible causes\n\n- Another trait extraction strategy on this account already uses the requested display name. Display names are unique per account.\n\n### Possible solutions\n\n- Choose a different display name.\n- Update the existing trait extraction strategy instead of creating a new one.\n",
    "causes": "* Another trait extraction strategy on this account already uses the requested display name. Display names are unique per account.",
    "solutions": "* Choose a different display name.\n* Update the existing trait extraction strategy instead of creating a new one.",
    "description": "A trait extraction strategy with the same display name already exists on this account.",
    "date_created": "2026-08-25T11:07:30-04:00",
    "last_updated": "2026-08-25T11:07:30-04:00"
  },
  {
    "code": 520060,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait extraction strategy limit exceeded",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe account has reached the maximum number of trait extraction strategies allowed.\n\n### Possible causes\n\n- The account already has the maximum number of trait extraction strategies permitted.\n\n### Possible solutions\n\n- Delete unused trait extraction strategies before creating new ones.\n",
    "causes": "* The account already has the maximum number of trait extraction strategies permitted.",
    "solutions": "* Delete unused trait extraction strategies before creating new ones.",
    "description": "The account has reached the maximum number of trait extraction strategies allowed.",
    "date_created": "2026-08-25T11:07:30-04:00",
    "last_updated": "2026-08-25T11:07:30-04:00"
  },
  {
    "code": 520061,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait extraction strategy does not exist on this account",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe requested trait extraction strategy does not exist on this account.\n\n### Possible causes\n\n- The provided trait extraction strategy ID is incorrect.\n- The trait extraction strategy was previously deleted.\n\n### Possible solutions\n\n- List trait extraction strategies on the account to verify the correct ID, and then retry.\n",
    "causes": "* The provided trait extraction strategy ID is incorrect.\n* The trait extraction strategy was previously deleted.",
    "solutions": "* List trait extraction strategies on the account to verify the correct ID, and then retry.",
    "description": "The requested trait extraction strategy does not exist on this account.",
    "date_created": "2026-08-25T11:07:30-04:00",
    "last_updated": "2026-08-25T11:07:30-04:00"
  },
  {
    "code": 520062,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid trait extraction strategy identifier",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe supplied trait extraction strategy ID is not a valid trait extraction strategy identifier.\n\n### Possible causes\n\n- The trait extraction strategy ID is not a well-formed TTID.\n- The TTID belongs to a different domain or resource type.\n\n### Possible solutions\n\n- Use the identifier of an existing trait extraction strategy.\n",
    "causes": "* The trait extraction strategy ID is not a well-formed TTID.\n* The TTID belongs to a different domain or resource type.",
    "solutions": "* Use the identifier of an existing trait extraction strategy.",
    "description": "The supplied trait extraction strategy ID is not a valid trait extraction strategy identifier.",
    "date_created": "2026-08-25T11:07:30-04:00",
    "last_updated": "2026-08-25T11:07:30-04:00"
  },
  {
    "code": 520063,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Trait is not registered in the memory store",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nOne or more traits named in the trait extraction strategy's definitions are not registered in the memory store's trait registry.\n\n### Possible causes\n\n- The trait group or trait name is misspelled.\n- The trait was never added to the memory store.\n- The trait group was deleted after the trait extraction strategy was created.\n\n### Possible solutions\n\n- List the memory store's trait groups to verify the trait group and trait names, and then retry.\n- Add the missing trait to the memory store before referencing it in a trait extraction strategy.\n",
    "causes": "* The trait group or trait name is misspelled.\n* The trait was never added to the memory store.\n* The trait group was deleted after the trait extraction strategy was created.",
    "solutions": "* List the memory store's trait groups to verify the trait group and trait names, and then retry.\n* Add the missing trait to the memory store before referencing it in a trait extraction strategy.",
    "description": "One or more traits named in the trait extraction strategy's definitions are not registered in the memory store's trait registry.",
    "date_created": "2026-09-04T13:52:38-04:00",
    "last_updated": "2026-09-04T13:52:38-04:00"
  },
  {
    "code": 520064,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Observation extraction strategy already exists",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nAn observation extraction strategy with the same display name already exists on this account.\n\n### Possible causes\n\n- Another observation extraction strategy on this account already uses the requested display name. Display names are unique per account.\n\n### Possible solutions\n\n- Choose a different display name.\n- Update the existing observation extraction strategy instead of creating a new one.\n",
    "causes": "* Another observation extraction strategy on this account already uses the requested display name. Display names are unique per account.",
    "solutions": "* Choose a different display name.\n* Update the existing observation extraction strategy instead of creating a new one.",
    "description": "An observation extraction strategy with the same display name already exists on this account.",
    "date_created": "2026-09-17T13:06:51-04:00",
    "last_updated": "2026-09-17T13:06:51-04:00"
  },
  {
    "code": 520065,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Observation extraction strategy limit exceeded",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe account has reached the maximum number of observation extraction strategies allowed.\n\n### Possible causes\n\n- The account already has the maximum number of observation extraction strategies permitted.\n\n### Possible solutions\n\n- Delete unused observation extraction strategies before creating new ones.\n",
    "causes": "* The account already has the maximum number of observation extraction strategies permitted.",
    "solutions": "* Delete unused observation extraction strategies before creating new ones.",
    "description": "The account has reached the maximum number of observation extraction strategies allowed.",
    "date_created": "2026-09-17T13:06:51-04:00",
    "last_updated": "2026-09-17T13:06:51-04:00"
  },
  {
    "code": 520066,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Observation extraction strategy does not exist on this account",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe requested observation extraction strategy does not exist on this account.\n\n### Possible causes\n\n- The provided observation extraction strategy ID is incorrect.\n- The observation extraction strategy was previously deleted.\n\n### Possible solutions\n\n- List observation extraction strategies on the account to verify the correct ID, and then retry.\n",
    "causes": "* The provided observation extraction strategy ID is incorrect.\n* The observation extraction strategy was previously deleted.",
    "solutions": "* List observation extraction strategies on the account to verify the correct ID, and then retry.",
    "description": "The requested observation extraction strategy does not exist on this account.",
    "date_created": "2026-09-17T13:06:51-04:00",
    "last_updated": "2026-09-17T13:06:51-04:00"
  },
  {
    "code": 520067,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Invalid observation extraction strategy identifier",
    "secondary_message": null,
    "product": "Conversation-Memory",
    "products_used": [
      "conversation-memory"
    ],
    "docs": "\n## Description\n\nThe supplied observation extraction strategy ID is not a valid observation extraction strategy identifier.\n\n### Possible causes\n\n- The observation extraction strategy ID is not a well-formed TTID.\n- The TTID belongs to a different domain or resource type.\n\n### Possible solutions\n\n- Use the identifier of an existing observation extraction strategy.\n",
    "causes": "* The observation extraction strategy ID is not a well-formed TTID.\n* The TTID belongs to a different domain or resource type.",
    "solutions": "* Use the identifier of an existing observation extraction strategy.",
    "description": "The supplied observation extraction strategy ID is not a valid observation extraction strategy identifier.",
    "date_created": "2026-09-17T13:06:51-04:00",
    "last_updated": "2026-09-17T13:06:51-04:00"
  },
  {
    "code": 530001,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Profile resolution skipped",
    "secondary_message": null,
    "product": "Conversation-Orchestrator",
    "products_used": [
      "conversation-orchestrator"
    ],
    "docs": "\n## Description\n\nProfile resolution was not attempted for this participant. This occurs when the participant type does not support profile resolution or when the participant's address cannot be mapped to a valid identifier.\n\n### Possible causes\n\n- The participant isn't a `CUSTOMER` type (such as `HUMAN_AGENT`, `AI_AGENT`, or `AGENT` participants don't undergo profile resolution).\n- `UNKNOWN` participants undergo lookup-only (no profile creation). Successful lookup upgrades the participant to `CUSTOMER` with a `profileId`; unsuccessful lookup leaves the participant as `UNKNOWN` with no `profileId`.\n- The participant's address type doesn't map to a supported identifier (e.g., chat addresses like `client:alice` have no phone or email identifier).\n\n### Possible solutions\n\n- This warning is informational and doesn't indicate a failure.\n- If profile resolution is expected, verify the participant type is `CUSTOMER` and the address is a phone number, email, or WhatsApp identifier.\n",
    "causes": "* The participant isn't a `CUSTOMER` type (such as `HUMAN_AGENT`, `AI_AGENT`, or `AGENT` participants don't undergo profile resolution).\n* `UNKNOWN` participants undergo lookup-only (no profile creation). Successful lookup upgrades the participant to `CUSTOMER` with a `profileId`; unsuccessful lookup leaves the participant as `UNKNOWN` with no `profileId`.\n* The participant's address type doesn't map to a supported identifier (e.g., chat addresses like `client:alice` have no phone or email identifier).",
    "solutions": "* This warning is informational and doesn't indicate a failure.\n* If profile resolution is expected, verify the participant type is `CUSTOMER` and the address is a phone number, email, or WhatsApp identifier.",
    "description": "Profile resolution was not attempted for this participant. This occurs when the participant type does not support profile resolution or when the participant's address cannot be mapped to a valid identifier.",
    "date_created": "2026-03-30T10:45:54+03:00",
    "last_updated": "2026-04-17T20:29:52+02:00"
  },
  {
    "code": 530002,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Profile lookup returned no matching profiles",
    "secondary_message": null,
    "product": "Conversation-Orchestrator",
    "products_used": [
      "conversation-orchestrator"
    ],
    "docs": "\n## Description\n\nA profile lookup was performed for the participant's identifier but no existing profile was found. The system will attempt to create a new profile.\n\n### Possible causes\n\n- This is the first interaction from this identifier and no profile has been created yet.\n- The memory store does not contain a profile matching the participant's phone number, email, or WhatsApp address.\n\n### Possible solutions\n\n- This warning is informational and indicates the system is proceeding to create a new profile.\n- No action is required unless profile creation also fails. For more information, see error [530004](/docs/api/errors/530004).\n",
    "causes": "* This is the first interaction from this identifier and no profile has been created yet.\n* The memory store does not contain a profile matching the participant's phone number, email, or WhatsApp address.",
    "solutions": "* This warning is informational and indicates the system is proceeding to create a new profile.\n* No action is required unless profile creation also fails. For more information, see error [530004](/docs/api/errors/530004).",
    "description": "A profile lookup was performed for the participant's identifier but no existing profile was found. The system will attempt to create a new profile.",
    "date_created": "2026-03-30T10:45:54+03:00",
    "last_updated": "2026-04-10T15:50:42+02:00"
  },
  {
    "code": 530003,
    "log_level": "WARNING",
    "log_type": "TWILIO",
    "message": "Profile lookup failed",
    "secondary_message": null,
    "product": "Conversation-Orchestrator",
    "products_used": [
      "conversation-orchestrator"
    ],
    "docs": "\n## Description\n\nThe system attempted to look up an existing profile for the participant but the request to the profile service failed. The system will attempt to create a new profile as a fallback.\n\n### Possible causes\n\n- The profile service experienced a temporary outage or timeout.\n- The memory store ID configured on the conversation is invalid or not accessible.\n- A client error occurred due to malformed request data.\n\n### Possible solutions\n\n- Check the `errorReason` field in the diagnostic event for the specific HTTP status and error message.\n- Verify the memory store ID in the conversation configuration is correct and accessible.\n- If the error is transient (5xx), the system will attempt profile creation as a fallback.\n",
    "causes": "* The profile service experienced a temporary outage or timeout.\n* The memory store ID configured on the conversation is invalid or not accessible.\n* A client error occurred due to malformed request data.",
    "solutions": "* Check the `errorReason` field in the diagnostic event for the specific HTTP status and error message.\n* Verify the memory store ID in the conversation configuration is correct and accessible.\n* If the error is transient (5xx), the system will attempt profile creation as a fallback.",
    "description": "The system attempted to look up an existing profile for the participant but the request to the profile service failed. The system will attempt to create a new profile as a fallback.",
    "date_created": "2026-03-30T10:45:54+03:00",
    "last_updated": "2026-04-10T15:50:42+02:00"
  },
  {
    "code": 530004,
    "log_level": "ERROR",
    "log_type": "TWILIO",
    "message": "Profile creation failed",
    "secondary_message": null,
    "product": "Conversation-Orchestrator",
    "products_used": [
      "conversation-orchestrator"
    ],
    "docs": "\n## Description\n\nThe system failed to create a new profile for the participant. The participant was still added to the conversation (fail-open behavior) but without a profile ID.\n\n### Possible causes\n\n- The profile service experienced a temporary outage or timeout.\n- The memory store ID configured on the conversation is invalid or not accessible.\n- A client error occurred due to malformed profile data or trait mapping.\n\n### Possible solutions\n\n- Check the `errorReason` field in the diagnostic event for the specific HTTP status and error message.\n- Verify the memory store ID in the conversation configuration is correct and accessible.\n- The participant was created without a profile ID and will function normally, but memory features that depend on profile resolution will not be available for this participant.\n",
    "causes": "* The profile service experienced a temporary outage or timeout.\n* The memory store ID configured on the conversation is invalid or not accessible.\n* A client error occurred due to malformed profile data or trait mapping.",
    "solutions": "* Check the `errorReason` field in the diagnostic event for the specific HTTP status and error message.\n* Verify the memory store ID in the conversation configuration is correct and accessible.\n* The participant was created without a profile ID and will function normally, but memory features that depend on profile resolution will not be available for this participant.",
    "description": "The system failed to create a new profile for the participant. The participant was still added to the conversation (fail-open behavior) but without a profile ID.",
    "date_created": "2026-03-30T10:45:54+03:00",
    "last_updated": "2026-04-10T15:50:42+02:00"
  },
  {
    "code": 572002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The 'From' number isn't assigned to this verified Messaging recipient",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a message from a trial account using a 'From' number that isn't the trial number assigned to the verified recipient you're messaging. During a trial, Twilio assigns a trial phone number to each verified recipient, and the assigned number can differ by product and by recipient.\n\n### Possible causes\n\n- The 'From' number in the request isn't the trial number assigned to this verified recipient for Messaging.\n- The request uses a trial number assigned to a different verified recipient or to a different product.\n\n### Possible solutions\n\n- Check the Twilio Console to find the trial number assigned to this verified recipient for Messaging.\n- Send the message again using the assigned trial number as the 'From' number.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Twilio trial numbers](/docs/usage/trials#twilio-trial-numbers)\n- [Try out SMS Messaging](/docs/usage/trials/try-out-sms)\n",
    "causes": "* The 'From' number in the request isn't the trial number assigned to this verified recipient for Messaging.\n* The request uses a trial number assigned to a different verified recipient or to a different product.",
    "solutions": "* Check the Twilio Console to find the trial number assigned to this verified recipient for Messaging.\n* Send the message again using the assigned trial number as the 'From' number.",
    "description": "This error occurs when you send a message from a trial account using a 'From' number that isn't the trial number assigned to the verified recipient you're messaging. During a trial, Twilio assigns a trial phone number to each verified recipient, and the assigned number can differ by product and by recipient.",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  },
  {
    "code": 572005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Destination number has not completed verification",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send an SMS message from a trial account to a destination number that you've added as a verified recipient but that hasn't completed verification yet. Trial accounts can send messages only to [verified recipients](/docs/usage/trials#verified-recipients).\n\n### Possible causes\n\n- You added the destination number, but you haven't entered the verification code Twilio sent to that number.\n- The verification code expired before you entered it.\n\n### Possible solutions\n\n- Complete verification by entering the code Twilio sent to the destination number.\n- If the code expired, request a new verification code for the number in the Twilio Console.\n- Send an SMS message to a number that has already completed verification.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Try out SMS Messaging](/docs/usage/trials/try-out-sms)\n",
    "causes": "* You added the destination number, but you haven't entered the verification code Twilio sent to that number.\n* The verification code expired before you entered it.",
    "solutions": "* Complete verification by entering the code Twilio sent to the destination number.\n* If the code expired, request a new verification code for the number in the Twilio Console.\n* Send an SMS message to a number that has already completed verification.",
    "description": "This error occurs when you send an SMS message from a trial account to a destination number that you've added as a verified recipient but that hasn't completed verification yet. Trial accounts can send messages only to [verified recipients](/docs/usage/trials#verified-recipients).",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  },
  {
    "code": 572006,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Invalid template name",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send an SMS message from a trial account using a template name that Twilio doesn't recognize. Trial accounts can use only predefined SMS templates.\n\n### Possible causes\n\n- The template name in the request doesn't match a predefined SMS template.\n- The request uses a custom message body or a custom template, which trial accounts don't support.\n\n### Possible solutions\n\n- Use one of the predefined SMS templates. See [Pre-defined content](/docs/usage/trials#pre-defined-content) and [Try out SMS Messaging](/docs/usage/trials/try-out-sms) for the available templates.\n- Check the template name for typos.\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to send custom message bodies.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Try out SMS Messaging](/docs/usage/trials/try-out-sms)\n",
    "causes": "* The template name in the request doesn't match a predefined SMS template.\n* The request uses a custom message body or a custom template, which trial accounts don't support.",
    "solutions": "* Use one of the predefined SMS templates. See [Pre-defined content](/docs/usage/trials#pre-defined-content) and [Try out SMS Messaging](/docs/usage/trials/try-out-sms) for the available templates.\n* Check the template name for typos.\n* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to send custom message bodies.",
    "description": "This error occurs when you send an SMS message from a trial account using a template name that Twilio doesn't recognize. Trial accounts can use only predefined SMS templates.",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  },
  {
    "code": 572007,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Adding verified recipients isn't available for this account",
    "secondary_message": null,
    "product": "Branded Comms",
    "products_used": [
      "messaging"
    ],
    "docs": "\n## Description\n\nThis error occurs when you try to add a verified recipient to an account that isn't allowed to add verified recipients. Whether you can add verified recipients depends on your account's trial status and account restrictions.\n\n### Possible causes\n\n- The trial has expired. Trial accounts expire 30 days after sign-up.\n- Your account has reached the maximum of five verified recipients.\n- The phone number you're adding is already a verified recipient on the maximum of three accounts.\n- Your account has restrictions that prevent it from adding verified recipients.\n\n### Possible solutions\n\n- Check your trial status in the Twilio Console and confirm that your trial hasn't expired.\n- Review the [verified recipients](/docs/usage/trials#verified-recipients) limits for trial accounts.\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to send messages and make calls without verified recipient restrictions.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Try out SMS Messaging](/docs/usage/trials/try-out-sms)\n",
    "causes": "* The trial has expired. Trial accounts expire 30 days after sign-up.\n* Your account has reached the maximum of five verified recipients.\n* The phone number you're adding is already a verified recipient on the maximum of three accounts.\n* Your account has restrictions that prevent it from adding verified recipients.",
    "solutions": "* Check your trial status in the Twilio Console and confirm that your trial hasn't expired.\n* Review the [verified recipients](/docs/usage/trials#verified-recipients) limits for trial accounts.\n* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to send messages and make calls without verified recipient restrictions.",
    "description": "This error occurs when you try to add a verified recipient to an account that isn't allowed to add verified recipients. Whether you can add verified recipients depends on your account's trial status and account restrictions.",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  },
  {
    "code": 572008,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Trial activation is not allowed for this organization",
    "secondary_message": null,
    "product": null,
    "products_used": null,
    "docs": "\n## Description\n\nThis error occurs when you try to activate a trial for an organization that has reached its account limit. An organization can have a maximum of two parent accounts with trial entitlements.\n\n### Possible causes\n\n- Your organization already has the maximum number of parent accounts with trial entitlements.\n\n### Possible solutions\n\n- Use one of your organization's existing trial accounts.\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to continue building without trial restrictions.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Account limits and fraud prevention](/docs/usage/trials#account-limits-and-fraud-prevention)\n",
    "causes": "* Your organization already has the maximum number of parent accounts with trial entitlements.",
    "solutions": "* Use one of your organization's existing trial accounts.\n* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to continue building without trial restrictions.",
    "description": "This error occurs when you try to activate a trial for an organization that has reached its account limit. An organization can have a maximum of two parent accounts with trial entitlements.",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  },
  {
    "code": 573002,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "The 'From' number isn't assigned to this verified Voice recipient",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when you place a Voice call from a trial account using a 'From' number that isn't the trial number assigned to the verified recipient you're calling. During a trial, Twilio assigns a trial phone number to each verified recipient, and the assigned number can differ by product and by recipient.\n\n### Possible causes\n\n- The 'From' number in the request isn't the trial number assigned to this verified recipient for Voice.\n- The request uses a trial number assigned to a different verified recipient or to a different product.\n\n### Possible solutions\n\n- Check the Twilio Console to find the trial number assigned to this verified recipient for Voice.\n- Place the call again using the assigned trial number as the 'From' number.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Twilio trial numbers](/docs/usage/trials#twilio-trial-numbers)\n- [Try out Voice](/docs/usage/trials/try-out-voice)\n",
    "causes": "* The 'From' number in the request isn't the trial number assigned to this verified recipient for Voice.\n* The request uses a trial number assigned to a different verified recipient or to a different product.",
    "solutions": "* Check the Twilio Console to find the trial number assigned to this verified recipient for Voice.\n* Place the call again using the assigned trial number as the 'From' number.",
    "description": "This error occurs when you place a Voice call from a trial account using a 'From' number that isn't the trial number assigned to the verified recipient you're calling. During a trial, Twilio assigns a trial phone number to each verified recipient, and the assigned number can differ by product and by recipient.",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  },
  {
    "code": 573005,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Destination number has not completed verification",
    "secondary_message": null,
    "product": "Programmable Voice",
    "products_used": [
      "voice"
    ],
    "docs": "\n## Description\n\nThis error occurs when you place a Voice call from a trial account to a destination number that you've added as a verified recipient but that hasn't completed verification yet. Trial accounts can only call [verified recipients](/docs/usage/trials#verified-recipients).\n\n### Possible causes\n\n- You added the destination number, but you haven't entered the verification code Twilio sent to the number.\n- The verification code expired before you entered it.\n\n### Possible solutions\n\n- Complete verification by entering the code Twilio sent to the destination number.\n- If the code expired, request a new verification code for the number in the Twilio Console.\n- Call a number that has already completed verification.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Try out Voice](/docs/usage/trials/try-out-voice)\n",
    "causes": "* You added the destination number, but you haven't entered the verification code Twilio sent to the number.\n* The verification code expired before you entered it.",
    "solutions": "* Complete verification by entering the code Twilio sent to the destination number.\n* If the code expired, request a new verification code for the number in the Twilio Console.\n* Call a number that has already completed verification.",
    "description": "This error occurs when you place a Voice call from a trial account to a destination number that you've added as a verified recipient but that hasn't completed verification yet. Trial accounts can only call [verified recipients](/docs/usage/trials#verified-recipients).",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  },
  {
    "code": 575001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Verify isn't available for this trial account",
    "secondary_message": null,
    "product": "Verify",
    "products_used": [
      "verify"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a request to the Verify API from a trial account that isn't allowed to use Verify. Verify availability on a trial account depends on the account's trial status and any Verify-related trial restrictions.\n\n### Possible causes\n\n- The trial has expired. Trial accounts expire 30 days after sign-up.\n- The trial account doesn't meet the requirements to use Verify.\n- The request uses a Verify feature that trial accounts don't support, such as a custom message body or custom code template.\n\n### Possible solutions\n\n- Check your trial status in the Twilio Console and confirm that your trial hasn't expired.\n- Review the [trial restrictions](/docs/usage/trials#trial-restrictions) and the [Try out Verify](/docs/usage/trials/try-out-verify) guide to confirm that your request uses a supported Verify configuration.\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove trial restrictions.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Try out Verify](/docs/usage/trials/try-out-verify)\n- [Verify overview](/docs/verify)\n",
    "causes": "* The trial has expired. Trial accounts expire 30 days after sign-up.\n* The trial account doesn't meet the requirements to use Verify.\n* The request uses a Verify feature that trial accounts don't support, such as a custom message body or custom code template.",
    "solutions": "* Check your trial status in the Twilio Console and confirm that your trial hasn't expired.\n* Review the [trial restrictions](/docs/usage/trials#trial-restrictions) and the [Try out Verify](/docs/usage/trials/try-out-verify) guide to confirm that your request uses a supported Verify configuration.\n* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove trial restrictions.",
    "description": "This error occurs when you send a request to the Verify API from a trial account that isn't allowed to use Verify. Verify availability on a trial account depends on the account's trial status and any Verify-related trial restrictions.",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  },
  {
    "code": 576001,
    "log_level": "ERROR",
    "log_type": "APPLICATION",
    "message": "Lookup isn't available for this trial account",
    "secondary_message": null,
    "product": "Lookup",
    "products_used": [
      "lookup"
    ],
    "docs": "\n## Description\n\nThis error occurs when you send a request to the Lookup API from a trial account that isn't allowed to use Lookup. Lookup availability on a trial account depends on the account's trial status, your remaining trial quota, and any Lookup-related trial restrictions.\n\n### Possible causes\n\n- The trial has expired. Trial accounts expire 30 days after sign-up.\n- You have used all of your remaining Lookup trial quota.\n- The request uses a Lookup feature that trial accounts don't support.\n\n### Possible solutions\n\n- Check your trial status and remaining Lookup quota in the Twilio Console.\n- Review the [trial restrictions](/docs/usage/trials#trial-restrictions) and the [Try out Lookup](/docs/usage/trials/try-out-lookup) guide to confirm that your request uses a supported Lookup configuration.\n- [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove trial restrictions and quota limits.\n\n#### Additional resources\n\n- [Twilio trial accounts](/docs/usage/trials)\n- [Try out Lookup](/docs/usage/trials/try-out-lookup)\n- [Lookup overview](/docs/lookup)\n",
    "causes": "* The trial has expired. Trial accounts expire 30 days after sign-up.\n* You have used all of your remaining Lookup trial quota.\n* The request uses a Lookup feature that trial accounts don't support.",
    "solutions": "* Check your trial status and remaining Lookup quota in the Twilio Console.\n* Review the [trial restrictions](/docs/usage/trials#trial-restrictions) and the [Try out Lookup](/docs/usage/trials/try-out-lookup) guide to confirm that your request uses a supported Lookup configuration.\n* [Upgrade your account](/docs/usage/trials#upgrade-your-account) to remove trial restrictions and quota limits.",
    "description": "This error occurs when you send a request to the Lookup API from a trial account that isn't allowed to use Lookup. Lookup availability on a trial account depends on the account's trial status, your remaining trial quota, and any Lookup-related trial restrictions.",
    "date_created": "2026-10-20T17:48:02-05:00",
    "last_updated": "2026-10-20T17:48:02-05:00"
  }
]