readyDocs Open the appOpen the app

Number health

How your numbers deliver, and the account settings that keep texts going out when a number struggles. Every role on the account can read these.

#Get a number’s delivery

How well one number’s texts deliver: rates over the last day, week and month, each carrier over the last week, and its most common carrier errors with what they mean.

Path parameters

idintegerRequired
The number id.
Returns
phoneobject
{ id, phone_number, friendly_name, status, health_score, total_delivered, total_failed, total_spam_reports, created_at }.
delivery_rate_24hobject
Texts from this number in the last 24 hours: delivered, failed, blocked, pending, total, and delivered_pct and failed_pct over the texts with a final status (null when none has one). delivery_rate_7d and delivery_rate_30d are the same over 7 and 30 days.
carrier_breakdown_7d[]object[]
Each { carrier, total, delivered, failed, pending }. carrier is the display name (T-Mobile, AT&T, Unknown carrier), not the slug the other carrier breakdowns return.
top_errors_7d[]object[]
Up to 5, most failures first. Each { error_name, carrier, count, explanation }. explanation is { title, body, reason, severity, fix_action }, or null when Ready has no explanation for that error.
sms_spamobject
The last saved web spam check: { spam_detected, reports, score, checked_at }. Run a new one with Check a number for spam reports.
Errors
HTTPCodeWhen
404NUMBER_NOT_FOUNDNo number with this id on your account.
500DELIVERABILITY_LOAD_FAILEDReady couldn’t load the figures. Try again in a minute.

#Check a number for spam reports

Searches the web for spam reports about one number and saves the result on the number (spam on Get a number). A number checked recently answers the saved result with cached: true instead of searching again.

Path parameters

idintegerRequired
The number id.
Returns
data.statusstring
clean, low_risk, medium_risk, high_risk, or unknown when Ready couldn’t finish the search. unknown isn’t a clean result, and isn’t saved. On a cached answer, read spam_detected and reports instead.
data.spam_scorenumber
Higher is worse.
data.text_reportsinteger
Reports about texts.
data.call_reportsinteger
Reports about calls.
data.spam_sources[]object[]
Up to 8 of the pages that mention the number.
data.checked_atstring
When it was checked, ISO 8601.
Errors
HTTPCodeWhen
404NUMBER_NOT_FOUNDNo number with this id on your account.
500SPAM_CHECK_FAILEDReady couldn’t run the check. Try again in a minute.

#Texts sent per number, last 7 days

How many texts each of your numbers sent on each of the last 7 UTC calendar days (a day ends at midnight UTC, not in your account’s time zone), oldest first, the chart on the Numbers page. Includes your sub-accounts’ numbers.

Returns
sparkobject
Keyed by phone number. Each value is 7 counts, oldest day first. A number that sent nothing in the 7 days isn’t listed.
Errors
HTTPCodeWhen
500no codeReady couldn’t load the counts. Try again.

#Get number protection

Whether Ready replaces a sending number automatically when it gets spam reports. A replacement is a new number with its own monthly fee, so the account holder turns this on in the app.

Returns
data.enabledboolean
Whether Ready replaces a flagged number now.
data.sourcestring
explicit_opt_in, explicit_opt_out, not_opted_in or unknown.
data.attestedboolean
Whether the account holder has authorized replacements.
data.attested_atstring | null
When they did.
Errors
HTTPCodeWhen
500SETTING_LOAD_FAILEDReady couldn’t load the setting. Try again in a minute.

#Get Smart delivery

Smart delivery (the smart-routing endpoint) moves a text to another of your numbers when its own number is delivering badly. On unless you turned it off.

Returns
data.enabledboolean
The setting now.
Errors
HTTPCodeWhen
500SETTING_LOAD_FAILEDReady couldn’t load the setting. Try again in a minute.

#Turn Smart delivery on or off

Turns Smart delivery on or off for the account. It only moves texts between numbers you already have, so it costs nothing. Needs the manage_phones permission.

Body parameters

enabledbooleanRequired
true or false.
Returns
data.enabledboolean
The setting now.
Errors
HTTPCodeWhen
400toggle_invalidenabled is missing, or isn’t true or false.
500SETTING_SAVE_UNCONFIRMEDReady couldn’t confirm the change. Read it back to check.

#Get local presence

Whether texts and calls go out from a number that is local to the contact, when your account has one. On unless you turned it off.

Returns
data.enabledboolean
The setting now.
data.opt_inboolean
false today. When true, local presence is on only for an account that turned it on itself.
data.price_per_text_usdnumber
What local presence costs the account for each segment of a delivered text, in dollars. A two-segment text costs twice this. 0 while it isn’t charged.
Errors
HTTPCodeWhen
500SETTING_LOAD_FAILEDReady couldn’t load the setting. Try again in a minute.

#Turn local presence on or off

Turns local presence on or off for the account. Off, a text or call to someone you haven’t reached yet goes out from the account’s default number instead, and from_strategy local does the same; a send that asks for even, deliverability or random still spreads across all your numbers. Each change is recorded in the account’s history, and sending it again with the value already set changes nothing. Needs the manage_phones permission.

Body parameters

enabledbooleanRequired
true or false.
Returns
data.enabledboolean
The setting now.
Errors
HTTPCodeWhen
400toggle_invalidenabled is missing, or isn’t true or false.
403products_lockedYour agency locked this switch for your account. Ask your agency to change it. Nothing changed.
500SETTING_SAVE_UNCONFIRMEDReady couldn’t confirm the change. Read it back to check.