Why didn’t my text send?
When a text doesn’t send, RelayKit tells your app why, with a short code like recipient_not_verified. Every code is below, with what it means and what fixes it.
Most fixes are your AI tool’s to make. Usually it’s a small change to your code, like a missing value or a text called by the wrong name. Your AI tool sees the code RelayKit sends back, finds it on this page and makes the fix.
A few need you. Some fixes happen in your workspace, like adding a test phone. Some are your call, like turning a text back on. Those rows say so.
Setting things up
| Name | Code | What to do |
|---|---|---|
| Phone not verified | recipient_not_verified | Your test key only sends to verified test phones. Yours: add the phone under Test phones in your workspace, and have that person reply YES to the invite text RelayKit sends them. |
| Key not accepted | invalid_api_key | RelayKit didn’t get a key it knows: it’s missing, mistyped, or was revoked. Your AI tool can fix this: check that your app reads RELAYKIT_API_KEY. If the key was revoked, that part is yours: copy a new one from Connect your product into your .env or your tool’s secrets. |
| Text not found | template_not_found | Your app asked for a text RelayKit doesn’t have, usually a name that’s slightly off. Your AI tool can fix this: match the text’s name to the names in the RelayKit skill it installed. |
| Text can’t send | card_not_sendable | The text your app asked for can’t send from its card right now, most often because it’s turned off in your workspace. RelayKit’s reply names the reason. Your call: turn it back on in your workspace, or tell your AI tool to stop sending it. |
| Missing information | invalid_data | Your app’s request was missing something or had something in the wrong shape, most often a value the text needs, like the visit time. Your AI tool can fix this: RelayKit’s reply names what’s wrong, and the skill lists each text’s values. |
| Tone not available | tone_not_available | Your app asked for a tone on a text that comes in only one. Your AI tool can fix this: leave the tone out for that text. |
The person you’re texting
| Name | Code | What to do |
|---|---|---|
| Opted out | recipient_opted_out | This person texted STOP, so nothing goes to them. Nothing to fix: they can text START to opt back in. |
| Marketing flag missing | marketing_consent_required | A marketing text needs your app to confirm the person agreed to marketing texts. Your AI tool can fix this: send marketing_consent: true only for people who agreed. Never send it for anyone else. |
| No marketing consent | no_marketing_consent | RelayKit has no record that this person agreed to marketing texts. Your AI tool can fix this: record their consent when they give it. Until then, send them only texts that aren’t marketing. |
| Number not allowed | destination_not_allowed | RelayKit texts US numbers only, and this one isn’t: it’s in Canada or the Caribbean, or it’s a premium-rate line. Yours: check the number with the person. |
Going live
| Name | Code | What to do |
|---|---|---|
| Not approved right now | sender_not_provisioned | Live texts need an approved registration, and this account’s isn’t approved right now. Test texts still work with your test key. Yours: check your registration’s status in your workspace. If it says approved, email support@relaykit.ai with this code. |
| No brand name | brand_not_set | Every text opens with your brand name, and your account doesn’t have one yet. Yours: add it at the top of your workspace. |
Texting for other businesses
Only for apps that send texts on behalf of client businesses.
| Name | Code | What to do |
|---|---|---|
| Not set up for clients | platform_not_enabled | Your app named a client business, but this account isn’t set up to send for other businesses. Your call: before you register, choose that you send as a platform at the top of your workspace (already registered? email support@relaykit.ai), or tell your AI tool to stop sending the client name. |
| No client version | platform_body_not_available | Your app named a client business on a text that has no version for clients. Your AI tool can fix this: send it without the client name. To keep the name, write the text’s client version on its card in your workspace. |
Pace and delivery
| Name | Code | What to do |
|---|---|---|
| Too many to one phone | destination_rate_limited | This phone already got as many texts from you as RelayKit allows in an hour. Your AI tool can fix this: space the texts out, and send this one again as a new request after an hour. |
| Too many from your account | account_rate_limited | Your account sent more texts than RelayKit allows in an hour or a day. Your AI tool can fix this: look for code sending the same texts over and over, then send again as a new request after an hour. |
| Couldn’t check opt-out | opt_out_unavailable | RelayKit couldn’t confirm this person’s opt-out status just then, so the text didn’t go. Your AI tool can fix this: send it again as a new request after a minute. If it keeps happening, email support@relaykit.ai with this code. |
| Couldn’t check consent | consent_unavailable | RelayKit couldn’t confirm this person’s marketing consent just then, so the text didn’t go. Your AI tool can fix this: send it again as a new request after a minute. If it keeps happening, email support@relaykit.ai with this code. |
| Request still in progress | idempotency_conflict | Your app sent the same request twice, and the first is still being handled. Your AI tool can fix this: wait a moment, then send the same request with the same key; once the first is done, RelayKit replies with its result. |
| Couldn’t be delivered | send_failed | The phone network didn’t accept the text. Yours: check that the number is a mobile number in service. If it is, email support@relaykit.ai with this code. |
Texts that wait
Some texts wait instead of failing. Marketing texts and the reminder to book again only go out during allowed texting hours, so one sent late in the evening waits and goes out on its own when those hours begin. If something changes in the meantime, like the person opting out, it won’t go, and it shows as not sent.
Still stuck? Email support@relaykit.ai with the code and when it happened.