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

NameCodeWhat to do
Phone not verifiedrecipient_not_verifiedYour 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 acceptedinvalid_api_keyRelayKit 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 foundtemplate_not_foundYour 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 sendcard_not_sendableThe 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 informationinvalid_dataYour 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 availabletone_not_availableYour 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

NameCodeWhat to do
Opted outrecipient_opted_outThis person texted STOP, so nothing goes to them. Nothing to fix: they can text START to opt back in.
Number not alloweddestination_not_allowedRelayKit 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

NameCodeWhat to do
Not approved right nowsender_not_provisionedLive 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 namebrand_not_setEvery 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.

NameCodeWhat to do
Not set up for clientsplatform_not_enabledYour 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 versionplatform_body_not_availableYour 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

NameCodeWhat to do
Too many to one phonedestination_rate_limitedThis 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 accountaccount_rate_limitedYour 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-outopt_out_unavailableRelayKit 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.
Request still in progressidempotency_conflictYour 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 deliveredsend_failedThe 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.