curl --request POST \
--url https://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"etag": "<string>",
"appealReason": "<string>"
}
'import requests
url = "https://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit"
payload = {
"etag": "<string>",
"appealReason": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({etag: '<string>', appealReason: '<string>'})
};
fetch('https://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit', 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.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit",
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([
'etag' => '<string>',
'appealReason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit"
payload := strings.NewReader("{\n \"etag\": \"<string>\",\n \"appealReason\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"etag\": \"<string>\",\n \"appealReason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"etag\": \"<string>\",\n \"appealReason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"retryAfterSeconds": 2,
"status": "pending"
}{
"code": "IDEMPOTENCY_KEY_REQUIRED",
"status": 400,
"title": "Idempotency Key Required",
"type": "https://photon.codes/docs/problems/idempotency-key-required"
}{
"code": "NOT_AUTHENTICATED",
"status": 401,
"title": "Not Authenticated",
"type": "https://photon.codes/docs/problems/not-authenticated"
}{
"code": "CAMPAIGN_REGISTRATION_PAYMENT_FAILED",
"status": 402,
"title": "Campaign Registration Payment Failed",
"type": "https://photon.codes/docs/problems/campaign-registration-payment-failed",
"detail": "<string>",
"failureDetail": "<string>",
"instance": "<string>",
"remediation": "<unknown>",
"requestId": "<string>"
}{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"type": "https://photon.codes/docs/problems/forbidden"
}{
"code": "BRAND_NOT_FOUND",
"status": 404,
"title": "Brand Not Found",
"type": "https://photon.codes/docs/problems/brand-not-found"
}{
"code": "IDEMPOTENCY_CONFLICT",
"status": 409,
"title": "Idempotency Conflict",
"type": "https://photon.codes/docs/problems/idempotency-conflict"
}{
"code": "PAYLOAD_TOO_LARGE",
"status": 413,
"title": "Payload Too Large",
"type": "https://photon.codes/docs/problems/payload-too-large"
}{
"code": "VALIDATION_FAILED",
"issues": [
{
"code": "invalid_type",
"location": "json",
"message": "Expected a string.",
"path": "/name"
}
],
"status": 422,
"title": "Request Validation Failed",
"type": "https://photon.codes/docs/problems/validation-failed"
}{
"code": "RATE_LIMITED",
"status": 429,
"title": "Too Many Requests",
"type": "https://photon.codes/docs/problems/rate-limited"
}{
"code": "INTERNAL_ERROR",
"status": 500,
"title": "Internal Server Error",
"type": "https://photon.codes/docs/problems/internal-error"
}{
"code": "SERVICE_FAILURE",
"status": 502,
"title": "Service Failure",
"type": "https://photon.codes/docs/problems/service-failure"
}{
"code": "SERVICE_UNAVAILABLE",
"status": 503,
"title": "Service Temporarily Unavailable",
"type": "https://photon.codes/docs/problems/service-unavailable"
}{
"code": "REQUEST_TIMEOUT",
"status": 504,
"title": "Request Timeout",
"type": "https://photon.codes/docs/problems/request-timeout"
}Resubmit a rejected campaign
Resubmits saved campaign corrections, with an optional appeal explanation. An explanation is required when content has not changed. Each accepted resubmission incurs the existing non-refundable registration amount. Replay pending requests with the same body and Idempotency-Key.
curl --request POST \
--url https://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"etag": "<string>",
"appealReason": "<string>"
}
'import requests
url = "https://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit"
payload = {
"etag": "<string>",
"appealReason": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({etag: '<string>', appealReason: '<string>'})
};
fetch('https://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit', 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.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit",
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([
'etag' => '<string>',
'appealReason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit"
payload := strings.NewReader("{\n \"etag\": \"<string>\",\n \"appealReason\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"etag\": \"<string>\",\n \"appealReason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/organizations/{organization_id}/10dlc/campaigns/{campaignId}/resubmit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"etag\": \"<string>\",\n \"appealReason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"retryAfterSeconds": 2,
"status": "pending"
}{
"code": "IDEMPOTENCY_KEY_REQUIRED",
"status": 400,
"title": "Idempotency Key Required",
"type": "https://photon.codes/docs/problems/idempotency-key-required"
}{
"code": "NOT_AUTHENTICATED",
"status": 401,
"title": "Not Authenticated",
"type": "https://photon.codes/docs/problems/not-authenticated"
}{
"code": "CAMPAIGN_REGISTRATION_PAYMENT_FAILED",
"status": 402,
"title": "Campaign Registration Payment Failed",
"type": "https://photon.codes/docs/problems/campaign-registration-payment-failed",
"detail": "<string>",
"failureDetail": "<string>",
"instance": "<string>",
"remediation": "<unknown>",
"requestId": "<string>"
}{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"type": "https://photon.codes/docs/problems/forbidden"
}{
"code": "BRAND_NOT_FOUND",
"status": 404,
"title": "Brand Not Found",
"type": "https://photon.codes/docs/problems/brand-not-found"
}{
"code": "IDEMPOTENCY_CONFLICT",
"status": 409,
"title": "Idempotency Conflict",
"type": "https://photon.codes/docs/problems/idempotency-conflict"
}{
"code": "PAYLOAD_TOO_LARGE",
"status": 413,
"title": "Payload Too Large",
"type": "https://photon.codes/docs/problems/payload-too-large"
}{
"code": "VALIDATION_FAILED",
"issues": [
{
"code": "invalid_type",
"location": "json",
"message": "Expected a string.",
"path": "/name"
}
],
"status": 422,
"title": "Request Validation Failed",
"type": "https://photon.codes/docs/problems/validation-failed"
}{
"code": "RATE_LIMITED",
"status": 429,
"title": "Too Many Requests",
"type": "https://photon.codes/docs/problems/rate-limited"
}{
"code": "INTERNAL_ERROR",
"status": 500,
"title": "Internal Server Error",
"type": "https://photon.codes/docs/problems/internal-error"
}{
"code": "SERVICE_FAILURE",
"status": 502,
"title": "Service Failure",
"type": "https://photon.codes/docs/problems/service-failure"
}{
"code": "SERVICE_UNAVAILABLE",
"status": 503,
"title": "Service Temporarily Unavailable",
"type": "https://photon.codes/docs/problems/service-unavailable"
}{
"code": "REQUEST_TIMEOUT",
"status": 504,
"title": "Request Timeout",
"type": "https://photon.codes/docs/problems/request-timeout"
}Authorizations
Account Service Key, prefixed with pho_ask_, sent as Authorization: Bearer <key>. Acts on behalf of its owning account, subject to the permissions and credential restrictions of each operation. Account access tokens and OAuth grants also use the Bearer header. In organizations that require SSO, Account Service Keys are not accepted for managing the organization's SSO settings, deleting the organization, or checking whether it can be deleted.
Headers
Identifies one campaign mutation across retries. UUIDs are recommended.
8 - 128^[!-~]{8,128}$Path Parameters
^pho_cmp_[0-9a-z]{26}$^pho_org_[0-9a-z]{26}$Body
Was this page helpful?