Registrations
Reject registration
Reject a Sender ID registration for your network.
POST
/
v1
/
operator-registrations
/
{registration_id}
/
reject
Reject registration
curl --request POST \
--url https://api.example.com/v1/operator-registrations/{registration_id}/reject \
--header 'Content-Type: application/json' \
--data '
{
"reason": "<string>",
"detail": "<string>",
"notes": "<string>"
}
'import requests
url = "https://api.example.com/v1/operator-registrations/{registration_id}/reject"
payload = {
"reason": "<string>",
"detail": "<string>",
"notes": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({reason: '<string>', detail: '<string>', notes: '<string>'})
};
fetch('https://api.example.com/v1/operator-registrations/{registration_id}/reject', 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.example.com/v1/operator-registrations/{registration_id}/reject",
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([
'reason' => '<string>',
'detail' => '<string>',
'notes' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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 := "https://api.example.com/v1/operator-registrations/{registration_id}/reject"
payload := strings.NewReader("{\n \"reason\": \"<string>\",\n \"detail\": \"<string>\",\n \"notes\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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("https://api.example.com/v1/operator-registrations/{registration_id}/reject")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"<string>\",\n \"detail\": \"<string>\",\n \"notes\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/operator-registrations/{registration_id}/reject")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"<string>\",\n \"detail\": \"<string>\",\n \"notes\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"data": {
"id": "opreg_e5f6g7h8",
"sender_id": "SecurBank",
"status": "rejected",
"rejection": {
"reason": "use_case_unclear",
"detail": "Use case description does not specify the type of messages to be sent. Please provide specific examples of message content."
},
"rejected_at": "2026-07-17T15:15:00+10:00",
"rejected_by": "operator_api_key"
},
"meta": {
"request_id": "req_op004",
"timestamp": "2026-07-17T15:15:00+10:00"
}
}
Required permission:
operator:write
Rejects a registration that is currently in pending_operator_review or resubmitted status. The submitting brand or aggregator is notified with the rejection reason.
Returns 409 Conflict if the registration is not in an actionable status.
Path parameters
string
required
The operator registration ID (e.g.
opreg_e5f6g7h8).Request body
string
required
Structured rejection reason. One of:
brand_mismatch, use_case_unclear, duplicate_sid, restricted_term, compliance_concern, insufficient_evidence, other.string
required
Human-readable explanation of the rejection. This is shared with the submitting brand or aggregator.
string
Optional internal notes. Not visible to the submitting brand or aggregator.
Example
curl -X POST https://api.senderz.ai/v1/operator-registrations/opreg_e5f6g7h8/reject \
-H "Authorization: Bearer sz_live_xxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"reason": "use_case_unclear",
"detail": "Use case description does not specify the type of messages to be sent. Please provide specific examples of message content.",
"notes": "Brand is verified but use case needs more detail before we can approve."
}'
Response
{
"ok": true,
"data": {
"id": "opreg_e5f6g7h8",
"sender_id": "SecurBank",
"status": "rejected",
"rejection": {
"reason": "use_case_unclear",
"detail": "Use case description does not specify the type of messages to be sent. Please provide specific examples of message content."
},
"rejected_at": "2026-07-17T15:15:00+10:00",
"rejected_by": "operator_api_key"
},
"meta": {
"request_id": "req_op004",
"timestamp": "2026-07-17T15:15:00+10:00"
}
}
⌘I
Reject registration
curl --request POST \
--url https://api.example.com/v1/operator-registrations/{registration_id}/reject \
--header 'Content-Type: application/json' \
--data '
{
"reason": "<string>",
"detail": "<string>",
"notes": "<string>"
}
'import requests
url = "https://api.example.com/v1/operator-registrations/{registration_id}/reject"
payload = {
"reason": "<string>",
"detail": "<string>",
"notes": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({reason: '<string>', detail: '<string>', notes: '<string>'})
};
fetch('https://api.example.com/v1/operator-registrations/{registration_id}/reject', 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.example.com/v1/operator-registrations/{registration_id}/reject",
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([
'reason' => '<string>',
'detail' => '<string>',
'notes' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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 := "https://api.example.com/v1/operator-registrations/{registration_id}/reject"
payload := strings.NewReader("{\n \"reason\": \"<string>\",\n \"detail\": \"<string>\",\n \"notes\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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("https://api.example.com/v1/operator-registrations/{registration_id}/reject")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"<string>\",\n \"detail\": \"<string>\",\n \"notes\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/operator-registrations/{registration_id}/reject")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"<string>\",\n \"detail\": \"<string>\",\n \"notes\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"data": {
"id": "opreg_e5f6g7h8",
"sender_id": "SecurBank",
"status": "rejected",
"rejection": {
"reason": "use_case_unclear",
"detail": "Use case description does not specify the type of messages to be sent. Please provide specific examples of message content."
},
"rejected_at": "2026-07-17T15:15:00+10:00",
"rejected_by": "operator_api_key"
},
"meta": {
"request_id": "req_op004",
"timestamp": "2026-07-17T15:15:00+10:00"
}
}
.jpg?fit=max&auto=format&n=IhWYk8R5R6sdJ_7C&q=85&s=7e3194d82fa9653ad2a2449b4f1a3073)