Set which numbers a member sees
Sets which WhatsApp numbers of the workspace an AGENT or ANALYST sees and acts on, without changing the role. Works on pending invitations too.
allowedNumberIds is required and replaces the whole list. [] means all numbers, including numbers connected later — not none. A member restricted to specific numbers does not gain new numbers automatically.
The member’s OAuth refresh tokens are revoked, so a narrower scope applies on their next call.
OAuth required, ADMIN or OWNER. A classic key (x-api-key) is refused with MACHINE_CREDENTIAL_CANNOT_MANAGE_MEMBERS: an x-api-key request has no user behind it, and allowing writes to the member list would turn any key of the workspace into a path to account takeover. To change the role, use PATCH /v1/workspace/members/{id} (OWNER only).
curl --request PATCH \
--url https://pilotstatus.com.br/v1/workspace/members/{id}/numbers \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"allowedNumberIds": [
"wa_abc"
]
}
'import requests
url = "https://pilotstatus.com.br/v1/workspace/members/{id}/numbers"
payload = { "allowedNumberIds": ["wa_abc"] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({allowedNumberIds: ['wa_abc']})
};
fetch('https://pilotstatus.com.br/v1/workspace/members/{id}/numbers', 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://pilotstatus.com.br/v1/workspace/members/{id}/numbers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'allowedNumberIds' => [
'wa_abc'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://pilotstatus.com.br/v1/workspace/members/{id}/numbers"
payload := strings.NewReader("{\n \"allowedNumberIds\": [\n \"wa_abc\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://pilotstatus.com.br/v1/workspace/members/{id}/numbers")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"allowedNumberIds\": [\n \"wa_abc\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pilotstatus.com.br/v1/workspace/members/{id}/numbers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"allowedNumberIds\": [\n \"wa_abc\"\n ]\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Your ps_ API key
Path Parameters
Membership id (the id the list returns), NOT the user id.
Body
Number ids this AGENT/ANALYST may see. Replaces the whole list. [] = all numbers of the workspace, including numbers connected later.
["wa_abc"]
Response
Member updated. Body: { "member": { ... } }, same shape as the list.
Was this page helpful?
curl --request PATCH \
--url https://pilotstatus.com.br/v1/workspace/members/{id}/numbers \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"allowedNumberIds": [
"wa_abc"
]
}
'import requests
url = "https://pilotstatus.com.br/v1/workspace/members/{id}/numbers"
payload = { "allowedNumberIds": ["wa_abc"] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({allowedNumberIds: ['wa_abc']})
};
fetch('https://pilotstatus.com.br/v1/workspace/members/{id}/numbers', 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://pilotstatus.com.br/v1/workspace/members/{id}/numbers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'allowedNumberIds' => [
'wa_abc'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://pilotstatus.com.br/v1/workspace/members/{id}/numbers"
payload := strings.NewReader("{\n \"allowedNumberIds\": [\n \"wa_abc\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://pilotstatus.com.br/v1/workspace/members/{id}/numbers")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"allowedNumberIds\": [\n \"wa_abc\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pilotstatus.com.br/v1/workspace/members/{id}/numbers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"allowedNumberIds\": [\n \"wa_abc\"\n ]\n}"
response = http.request(request)
puts response.read_body