> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.pinnacle.sh/v-2/api-reference/rcs-agents/test/get-whitelist-status/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pinnacle.sh/_mcp/server. # Get Whitelist Status GET https://api.pinnacle.sh/rcs/test/agents/{agentId}/numbers Check the current whitelist status of a phone number for a specific test agent.Use this endpoint to poll the status of a previously whitelisted number and determine whether the recipient has accepted or rejected the tester invite.## Status Values- **`PENDING`** — The tester invite was sent but the recipient has not yet responded. Ask the recipient to check their messages and accept the invite. - **`ACCEPTED`** — The recipient accepted the invite. Messages can be exchanged. - **`REJECTED`** — The recipient rejected the invite or the invite could not be delivered since the carrier does not support test agents. If the user rejected the invite, they can accept it again by tapping "Make me a tester" in the same message from "RBM Tester Management".Accepting the inviteDeclining the invite Reference: https://docs.pinnacle.sh/api-reference/rcs-agents/test/get-whitelist-status ## Authentication - `PINNACLE-API-KEY` header (required) — API Key authentication via header ## Request ### Path parameters - `agentId` (string, required) — The RCS agent ID (must be prefixed with `agent_`). ### Query parameters - `phoneNumber` (string, required) — The phone number to check whitelist status for (E.164 format). ## Response ### 200 The current whitelist status of the phone number. - `status` (enum, required) — Status of a whitelisted phone number for RCS testing. - `PENDING` — The tester invite has been sent but the recipient has not yet accepted or rejected it. - `ACCEPTED` — The recipient accepted the tester invite and can send/receive messages with the test agent. - `REJECTED` — The recipient rejected the tester invite or the invite could not be delivered. - Allowed values: `PENDING`, `ACCEPTED`, `REJECTED` ## Errors ### 400 Bad Request Error Validation failed. The payload has missing required fields and/or invalid types. See [https://zod.dev/error-formatting](https://zod.dev/error-formatting) for more information. - `description` (string, required) — Human-readable summary of validation failures. - `errors` (ZodErrorErrors, required) — Structured dictionary of issues containing two main sections: - `errors`: Array of global validation errors not tied to specific fields - `properties`: Object mapping field names to their specific validation errors, where each field contains an `errors` array ### 401 Unauthorized Error The request lacks valid authentication credentials or the provided credentials are invalid. Ensure you're including a valid API key in the request headers and that your account has the necessary permissions to access this endpoint. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ### 403 Forbidden Error Your subscription does not include access to this feature. This occurs when attempting to use functionality that requires a higher subscription tier. Please upgrade your subscription to access this feature. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ### 404 Not Found Error The phone number has not been whitelisted for this test agent. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ### 500 Internal Server Error An unexpected error occurred on Pinnacle's servers while processing your request. If this error persists, please contact support with the request details. - `error` (string, required) — Human-readable description of the error that occurred, corresponding to the HTTP status code. ## Types ### ZodErrorErrors Structured dictionary of issues containing two main sections: - `errors`: Array of global validation errors not tied to specific fields - `properties`: Object mapping field names to their specific validation errors, where each field contains an `errors` array ## Examples ### Pending **Response** ```json { "status": "PENDING" } ``` **SDK Code** ```python Pending import requests url = "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers" querystring = {"phoneNumber":"+12345678901"} headers = {"PINNACLE-API-KEY": ""} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```javascript Pending const url = 'https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901'; const options = {method: 'GET', headers: {'PINNACLE-API-KEY': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Pending package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("PINNACLE-API-KEY", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Pending require 'uri' require 'net/http' url = URI("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["PINNACLE-API-KEY"] = '' response = http.request(request) puts response.read_body ``` ```java Pending import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901") .header("PINNACLE-API-KEY", "") .asString(); ``` ```php Pending request('GET', 'https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901', [ 'headers' => [ 'PINNACLE-API-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp Pending using RestSharp; var client = new RestClient("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901"); var request = new RestRequest(Method.GET); request.AddHeader("PINNACLE-API-KEY", ""); IRestResponse response = client.Execute(request); ``` ```swift Pending import Foundation let headers = ["PINNACLE-API-KEY": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### Accepted **Response** ```json { "status": "ACCEPTED" } ``` **SDK Code** ```python Accepted import requests url = "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers" querystring = {"phoneNumber":"+12345678901"} headers = {"PINNACLE-API-KEY": ""} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```javascript Accepted const url = 'https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901'; const options = {method: 'GET', headers: {'PINNACLE-API-KEY': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Accepted package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("PINNACLE-API-KEY", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Accepted require 'uri' require 'net/http' url = URI("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["PINNACLE-API-KEY"] = '' response = http.request(request) puts response.read_body ``` ```java Accepted import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901") .header("PINNACLE-API-KEY", "") .asString(); ``` ```php Accepted request('GET', 'https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901', [ 'headers' => [ 'PINNACLE-API-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp Accepted using RestSharp; var client = new RestClient("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901"); var request = new RestRequest(Method.GET); request.AddHeader("PINNACLE-API-KEY", ""); IRestResponse response = client.Execute(request); ``` ```swift Accepted import Foundation let headers = ["PINNACLE-API-KEY": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### Rejected **Response** ```json { "status": "REJECTED" } ``` **SDK Code** ```python Rejected import requests url = "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers" querystring = {"phoneNumber":"+12345678901"} headers = {"PINNACLE-API-KEY": ""} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```javascript Rejected const url = 'https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901'; const options = {method: 'GET', headers: {'PINNACLE-API-KEY': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Rejected package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("PINNACLE-API-KEY", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Rejected require 'uri' require 'net/http' url = URI("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["PINNACLE-API-KEY"] = '' response = http.request(request) puts response.read_body ``` ```java Rejected import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901") .header("PINNACLE-API-KEY", "") .asString(); ``` ```php Rejected request('GET', 'https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901', [ 'headers' => [ 'PINNACLE-API-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp Rejected using RestSharp; var client = new RestClient("https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901"); var request = new RestRequest(Method.GET); request.AddHeader("PINNACLE-API-KEY", ""); IRestResponse response = client.Execute(request); ``` ```swift Rejected import Foundation let headers = ["PINNACLE-API-KEY": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.pinnacle.sh/rcs/test/agents/agent_abc123def456/numbers?phoneNumber=%2B12345678901")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` > One API for RCS, iMessage, MMS, and SMS. Build, test, and scale every channel — send your first message in minutes, not weeks.