Resubmit a 10DLC campaign
POST/api/v1/sms/registrations/{id}/resubmit
POST /sms/registrations/{id}/resubmit
curl -X POST 'https://www.unitpost.com/api/v1/sms/registrations/123/resubmit' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'User-Agent: my-app/1.0' \
-H 'Content-Type: application/json' \
-d '{ }'Response · 200
{
"object": "sms_registration_resubmission",
"registration_id": "registration_123",
"status": "queued",
"resubmitted": true
}Resubmit a 10DLC campaign carriers sent back (requires_updates, requires_authentication), or whose first submit never reached them, from a messaging program: fix what carriers flagged there first (feedback on List carrier registrations). Free: the same registration and committed fee; the fee tier can't change. A new opt_in_screenshot_file_id replaces the screenshot on file. An identical resubmission is refused (registration_unchanged) unless acknowledge_unchanged. Takes an Idempotency-Key. Requires the sms:manage capability.
Parameters2 fields
| Field | Type | Description |
|---|---|---|
idrequired | string · path | — |
Idempotency-Key | string · header | Any unique string (1–256 characters, e.g. a UUID). Retrying with the same key and the same body within 24 hours returns the first result instead of sending again; the same key with a different body is `409 invalid_idempotent_request`, and one still in flight is `409 concurrent_idempotent_requests`. |
Request body3 fields
| Field | Type | Description |
|---|---|---|
messaging_program_idrequired | string | The messaging program (`prog_…`) holding the corrected use case: fix what carriers flagged there first (PATCH /sms/messaging-programs/{id}), then resubmit from it. Its fee tier must match the campaign's (a low-volume campaign stays low-volume). |
opt_in_screenshot_file_id | string | A new opt-in screenshot (POST /files, purpose `sms_opt_in_evidence`). Without one, the screenshot carriers already have is sent again. |
acknowledge_unchanged | boolean | Resubmit although nothing changed since carriers sent it back, because the cause was fixed outside Unitpost (the privacy page now loads). Without it an identical resubmission is refused (`registration_unchanged`). |
Response · 200 fields4 fields
| Field | Type | Description |
|---|---|---|
objectrequired | string | — |
registration_idrequired | string | — |
statusrequired | string | null | The registration's state after the resubmission (`submitted`, `reviewing`, …); follow it on GET /sms/registrations. |
resubmittedrequired | boolean | — |
200400401403404409422429502