Submit campaign appeal for manual review
Submits an appeal for rejected native campaigns in TELNYX_FAILED or MNO_REJECTED status. The appeal is recorded for manual compliance team review and the campaign status is reset to TCR_ACCEPTED. Note: Appeal forwarding is handled manually to allow proper review before incurring upstream charges.
POST
/
10dlc
/
campaign
/
{campaignId}
/
appeal
JavaScript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.messaging10dlc.campaign.submitAppeal(
'5eb13888-32b7-4cab-95e6-d834dde21d64',
{
appeal_reason:
'The website has been updated to include the required privacy policy and terms of service.',
},
);
console.log(response.appealed_at);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.messaging_10dlc.campaign.submit_appeal(
campaign_id="5eb13888-32b7-4cab-95e6-d834dde21d64",
appeal_reason="The website has been updated to include the required privacy policy and terms of service.",
)
print(response.appealed_at)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Messaging10dlc.Campaign.SubmitAppeal(
context.TODO(),
"5eb13888-32b7-4cab-95e6-d834dde21d64",
telnyx.Messaging10dlcCampaignSubmitAppealParams{
AppealReason: "The website has been updated to include the required privacy policy and terms of service.",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AppealedAt)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.messaging10dlc.campaign.CampaignSubmitAppealParams;
import com.telnyx.sdk.models.messaging10dlc.campaign.CampaignSubmitAppealResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
CampaignSubmitAppealParams params = CampaignSubmitAppealParams.builder()
.campaignId("5eb13888-32b7-4cab-95e6-d834dde21d64")
.appealReason("The website has been updated to include the required privacy policy and terms of service.")
.build();
CampaignSubmitAppealResponse response = client.messaging10dlc().campaign().submitAppeal(params);
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.messaging_10dlc.campaign.submit_appeal(
"5eb13888-32b7-4cab-95e6-d834dde21d64",
appeal_reason: "The website has been updated to include the required privacy policy and terms of service."
)
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->messaging10dlc->campaign->submitAppeal(
'5eb13888-32b7-4cab-95e6-d834dde21d64',
appealReason: 'The website has been updated to include the required privacy policy and terms of service.',
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx messaging-10dlc:campaign submit-appeal \
--api-key 'My API Key' \
--campaign-id 5eb13888-32b7-4cab-95e6-d834dde21d64 \
--appeal-reason 'The website has been updated to include the required privacy policy and terms of service.'curl --request POST \
--url https://api.telnyx.com/v2/10dlc/campaign/{campaignId}/appeal \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"appeal_reason": "The website has been updated to include the required privacy policy and terms of service."
}
'{
"appealed_at": "2025-08-06T15:30:45.123456+00:00"
}{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"errors": [
{
"code": "string",
"title": "string",
"detail": "string",
"source": {
"pointer": "string",
"parameter": "string"
}
}
]
}Authorizations
Path Parameters
Body
application/json
Appeal request payload
Was this page helpful?
JavaScript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.messaging10dlc.campaign.submitAppeal(
'5eb13888-32b7-4cab-95e6-d834dde21d64',
{
appeal_reason:
'The website has been updated to include the required privacy policy and terms of service.',
},
);
console.log(response.appealed_at);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.messaging_10dlc.campaign.submit_appeal(
campaign_id="5eb13888-32b7-4cab-95e6-d834dde21d64",
appeal_reason="The website has been updated to include the required privacy policy and terms of service.",
)
print(response.appealed_at)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Messaging10dlc.Campaign.SubmitAppeal(
context.TODO(),
"5eb13888-32b7-4cab-95e6-d834dde21d64",
telnyx.Messaging10dlcCampaignSubmitAppealParams{
AppealReason: "The website has been updated to include the required privacy policy and terms of service.",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AppealedAt)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.messaging10dlc.campaign.CampaignSubmitAppealParams;
import com.telnyx.sdk.models.messaging10dlc.campaign.CampaignSubmitAppealResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
CampaignSubmitAppealParams params = CampaignSubmitAppealParams.builder()
.campaignId("5eb13888-32b7-4cab-95e6-d834dde21d64")
.appealReason("The website has been updated to include the required privacy policy and terms of service.")
.build();
CampaignSubmitAppealResponse response = client.messaging10dlc().campaign().submitAppeal(params);
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.messaging_10dlc.campaign.submit_appeal(
"5eb13888-32b7-4cab-95e6-d834dde21d64",
appeal_reason: "The website has been updated to include the required privacy policy and terms of service."
)
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->messaging10dlc->campaign->submitAppeal(
'5eb13888-32b7-4cab-95e6-d834dde21d64',
appealReason: 'The website has been updated to include the required privacy policy and terms of service.',
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx messaging-10dlc:campaign submit-appeal \
--api-key 'My API Key' \
--campaign-id 5eb13888-32b7-4cab-95e6-d834dde21d64 \
--appeal-reason 'The website has been updated to include the required privacy policy and terms of service.'curl --request POST \
--url https://api.telnyx.com/v2/10dlc/campaign/{campaignId}/appeal \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"appeal_reason": "The website has been updated to include the required privacy policy and terms of service."
}
'{
"appealed_at": "2025-08-06T15:30:45.123456+00:00"
}{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}{
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"errors": [
{
"code": "string",
"title": "string",
"detail": "string",
"source": {
"pointer": "string",
"parameter": "string"
}
}
]
}