Reject a campaign launch pending approval
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reason": "Audience includes suppressed contacts; fix the segment before resubmitting."
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject"
payload = { "reason": "Audience includes suppressed contacts; fix the segment before resubmitting." }
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({
reason: 'Audience includes suppressed contacts; fix the segment before resubmitting.'
})
};
fetch('https://api.orbit.devotel.io/api/v1/campaigns/{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.orbit.devotel.io/api/v1/campaigns/{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' => 'Audience includes suppressed contacts; fix the segment before resubmitting.'
]),
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 := "https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject"
payload := strings.NewReader("{\n \"reason\": \"Audience includes suppressed contacts; fix the segment before resubmitting.\"\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("https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"Audience includes suppressed contacts; fix the segment before resubmitting.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"Audience includes suppressed contacts; fix the segment before resubmitting.\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"approval_id": "<string>",
"status": "<string>"
},
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Campaigns
Reject a campaign launch pending approval
Lets a supervisor (owner or admin) reject a campaign launch that is waiting in the approval queue. Rejecting flips the campaign back to draft so the operator can edit and resubmit it, and records the decision (with an optional reason) on the approval row. Use it as the counterpart to the approve action for launches gated by the org’s supervisor-approval policy. Requires a pending approval on a pending_approval campaign; returns 403 for non-supervisors, 404 when no pending approval exists, and 409 if the campaign is no longer pending approval.
POST
/
api
/
v1
/
campaigns
/
{id}
/
reject
Reject a campaign launch pending approval
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reason": "Audience includes suppressed contacts; fix the segment before resubmitting."
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject"
payload = { "reason": "Audience includes suppressed contacts; fix the segment before resubmitting." }
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({
reason: 'Audience includes suppressed contacts; fix the segment before resubmitting.'
})
};
fetch('https://api.orbit.devotel.io/api/v1/campaigns/{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.orbit.devotel.io/api/v1/campaigns/{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' => 'Audience includes suppressed contacts; fix the segment before resubmitting.'
]),
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 := "https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject"
payload := strings.NewReader("{\n \"reason\": \"Audience includes suppressed contacts; fix the segment before resubmitting.\"\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("https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"Audience includes suppressed contacts; fix the segment before resubmitting.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/campaigns/{id}/reject")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"Audience includes suppressed contacts; fix the segment before resubmitting.\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"approval_id": "<string>",
"status": "<string>"
},
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
BearerApiKey
Dashboard JWT token from Clerk
Path Parameters
Body
application/json
Optional reason shown to the operator who submitted the launch.
⌘I