curl --request POST \
--url http://localhost:8080/outbound/blocklist \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"identity_value": "<string>",
"reason": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
'import requests
url = "http://localhost:8080/outbound/blocklist"
payload = {
"identity_value": "<string>",
"reason": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identity_value: '<string>',
reason: '<string>',
expires_at: '2023-11-07T05:31:56Z'
})
};
fetch('http://localhost:8080/outbound/blocklist', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/outbound/blocklist",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identity_value' => '<string>',
'reason' => '<string>',
'expires_at' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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 := "http://localhost:8080/outbound/blocklist"
payload := strings.NewReader("{\n \"identity_value\": \"<string>\",\n \"reason\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("http://localhost:8080/outbound/blocklist")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"identity_value\": \"<string>\",\n \"reason\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/outbound/blocklist")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identity_value\": \"<string>\",\n \"reason\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"identity_type": "<string>",
"identity_value": "<string>",
"channel": "<string>",
"reason": "<string>",
"source": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z"
}{
"statusCode": 123,
"message": "<string>",
"error": "<string>"
}Block an address from outbound contact
Add a phone number, email address or WhatsApp user id to the do-not-contact list, optionally until a date. Idempotent and only ever strengthens an existing block.
curl --request POST \
--url http://localhost:8080/outbound/blocklist \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"identity_value": "<string>",
"reason": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
'import requests
url = "http://localhost:8080/outbound/blocklist"
payload = {
"identity_value": "<string>",
"reason": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identity_value: '<string>',
reason: '<string>',
expires_at: '2023-11-07T05:31:56Z'
})
};
fetch('http://localhost:8080/outbound/blocklist', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/outbound/blocklist",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identity_value' => '<string>',
'reason' => '<string>',
'expires_at' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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 := "http://localhost:8080/outbound/blocklist"
payload := strings.NewReader("{\n \"identity_value\": \"<string>\",\n \"reason\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("http://localhost:8080/outbound/blocklist")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"identity_value\": \"<string>\",\n \"reason\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/outbound/blocklist")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identity_value\": \"<string>\",\n \"reason\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"identity_type": "<string>",
"identity_value": "<string>",
"channel": "<string>",
"reason": "<string>",
"source": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z"
}{
"statusCode": 123,
"message": "<string>",
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
What kind of address this is. "phone" is stored in international format, "email" is lowercased, and "whatsapp_user_id" is the WhatsApp id of a contact whose phone number is hidden.
phone, email, whatsapp_user_id The address itself — e.g. "+962790007001" or "[email protected]".
1 - 320Why this address is being blocked. Stored for your own auditing.
500When the block should lift automatically, as an ISO 8601 timestamp. Must be in the future. Omit for a permanent block.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$Response
Default Response
"phone", "email" or "whatsapp_user_id".
The address, as we stored it after normalizing.
The channel this entry covers. Null means every channel — that is what entries added through this API always are. A specific channel appears when someone opted out of that channel alone.
Why the address was blocked.
Where the entry came from. "api" is one you added. Anything else was recorded when the person opted out themselves, and is not removable by default.
When the block lifts automatically. Null means it never does.
Was this page helpful?