---
title: "Appeal a rejected campaign"
method: POST
path: "/v1/sms/registrations/{id}/appeal"
tags: ["SMS"]
---

# Appeal a rejected campaign

`POST /v1/sms/registrations/{id}/appeal`

Appeals a rejected 10DLC campaign with the carrier registry. Only a
registration that reached campaign creation can be appealed; a
brand-level rejection should be fixed and re-verified instead. On
success the registration returns to `pending`.

Content rejections (e.g. an opt-in flow without a verifiable form link,
or unrealistic samples) should be FIXED in the same call: pass the
corrected `messageFlow` / `sample1` / `sample2` and the campaign is
updated before the appeal is filed, so the reviewer sees the new
content. The current content is on `GET /v1/sms/registrations/{id}`
(`campaignContent`).

## Path parameters

- `id` string, required

## Request body

- object
  - `appealReason` string, required — Goes verbatim to the carrier reviewer — address the decline reason directly.
  - `messageFlow` string — Corrected opt-in flow; include a link to the opt-in page/form.
  - `sample1` string
  - `sample2` string

## Response `200`

Appeal submitted; the registration is pending again.

- object
  - `status` 'pending'

## Other responses

- `400` — Malformed `id`, or the registration has no campaign to appeal (fix the brand and re-verify instead).
- `401` — Unauthorized
- `404` — Registration not found

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/f81ca70ea6b9/schema)
