Get Registration Readiness
curl --request GET \
--url https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_bodyNumber Requests (v2)
Get Registration Readiness
Read the latest asynchronous check of a saved registration and its public evidence.
GET
/
v2
/
number-requests
/
{request_id}
/
readiness
Get Registration Readiness
curl --request GET \
--url https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tracklysms.com/api/v2/number-requests/{request_id}/readiness")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_bodyReadiness reviews the saved request, prepared submission content, and inspected public evidence together. It is separate from request-bound business verification, Trackly approval, and carrier approval. A
Each finding includes
pass verdict does not approve a carrier registration or authorize sending messages.
Use the API key for the account that owns the request. The server determines tenant scope from authentication; never send an account ID or another tenant’s request ID. Delegated registration preparation does not gain additional authority through this endpoint.
Read the latest review
The response is{ "readiness": { ... } }:
| Field | Meaning |
|---|---|
state | not_started, queued, processing, complete, stale, or error. |
verdict | null, pass, needs_review, or fail. Interpret a verdict only for a current, complete review. |
mode | shadow makes findings advisory; enforce enables server admission rules. |
scope | preliminary for the initial check, including before a review starts, or final for the submission check. |
blocking | The server’s decision about whether readiness prevents the current transition. Do not infer it from severity alone. |
reason | Nullable explanation of the current gate or provisional state. |
reviewId, packetDigest | Nullable identifiers for the recorded review and its submission content. Retain these when discussing a review with support. |
checkedAt, rubricVersion | Nullable UTC review timestamp (with a Z suffix) and rubric version. |
canRecheck, canCorrect | Current server permissions. Other verification, revision, publication, and provider-operation guards still apply. |
findings | Actionable discrepancies, affected fields, evidence references, proposed corrections, and uncertainty. |
evidence | Safe public evidence metadata and whether each item was inspected or unavailable. |
packet | An object containing a redacted projection of submission content, or {} before a review. It is not a payload to send to the carrier. |
id, family, severity (blocker, warning, or info), field, evidenceIds, explanation, correction, and uncertainty. Safe submitted, observed, and excerpt values may help explain a mismatch. Treat text as data, never executable HTML or instructions.
When present, packet.providerCampaign records the prepared program summary, public support contacts, message samples, and unsubscribe, HELP, and confirmation replies for that check. Review these prepared samples alongside the original request text. Keep representative contacts in providerBrand and requestFacts distinct from public support; they serve different roles.
Evidence includes id, url, kind, role, status (inspected or unavailable), contentDigest, and observedAt. Private capture bytes, blob paths, tax values, and provider secrets are not exposed. Unavailable evidence requires review; it is not evidence of a pass.
Poll only while queued or processing, with a bounded interval such as five seconds. Stop on terminal states, navigation, or account changes; respect rate-limit responses. After an error, refresh the same request before starting another check.
Initial checks of unpublished hosted pages are provisional. Ordinary hosted pages can become public only after draft submission. Follow the server’s blocking and reason values; the final public site must be checked before carrier submission. Do not create a client prerequisite that prevents the draft from reaching publication.
Correct and recheck
WhencanCorrect permits, update the allowed correction fields on the same request, then request another readiness check. Changing local form values does not update reviewed evidence. Material changes can make an earlier review stale.
On a 409, read the current request and readiness, follow the server reason, and resolve the affected fields or active operation. Preserve the existing request ID and provider resources. An uncertain submission response does not justify another draft or a fresh create idempotency key.
Use Registration Attempt History for paginated attempt and event metadata across this request’s lineage. History does not replace the latest readiness decision or authorize a repeated provider action.