---
title: "Resubmit a toll-free verification"
description: "Resubmit a toll-free number's verification carriers sent back (action_required; feedback on List SMS numbers), or that failed before review. `POST /api/v1/sms/numbers/{id}/resubmit`"
url: https://www.unitpost.com/docs/sms/post-sms-numbers-id-resubmit
section: "SMS API reference"
updated: 2026-11-11
---
# Resubmit a toll-free verification

`POST /api/v1/sms/numbers/{id}/resubmit`

Resubmit a toll-free number's verification carriers sent back (`action_required`; `feedback` on [List SMS numbers](https://www.unitpost.com/docs/sms/get-sms-numbers)), or that failed before review. The form is composed again from the number's brand and a messaging program (default: the one it was registered from), so fix what carriers flagged there first. The evidence on file is reused unless `opt_in_evidence_file_id` replaces it; when carriers flagged the evidence, a new file (or `reuse_opt_in_evidence`) is required. Free while the number's monthly fee is committed, else `409 quote_required`. Flagged values resent unchanged are refused (`flagged_fields_unchanged`) unless `acknowledge_unchanged`. Takes an `Idempotency-Key`. Requires the `sms:manage` capability.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | — |
| `Idempotency-Key` | header | string | no | 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 body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `messaging_program_id` | string | no | The messaging program (`prog_…`) the corrected use case, samples and opt-in come from; fix what carriers flagged there (or on the brand) first. Defaults to the program the number was registered from. |
| `opt_in_evidence_file_id` | string | no | New opt-in evidence (POST /files, purpose `sms_opt_in_evidence`). Required when carriers flagged the evidence, unless `reuse_opt_in_evidence`. |
| `reuse_opt_in_evidence` | boolean | no | Send the evidence on file again although carriers flagged it (it was fixed where it lives, e.g. the page it shows changed). |
| `business_registration_document_file_id` | string | no | A new business registration document (POST /files, purpose `sms_document`, up to 2 MB): required when carriers flagged it. |
| `consent_source_url` | string | no | The public https page where people opt in. |
| `acknowledge_unchanged` | boolean | no | Resubmit fields carriers flagged unchanged, because the cause was fixed outside Unitpost. Without it they're refused (`flagged_fields_unchanged`). |

## Response fields (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | — |
| `number_id` | string | yes | — |
| `status` | string | yes | The verification went back to carriers; the number reads `pending` on GET /sms/numbers until they answer. |
| `resubmitted` | boolean | yes | — |

## Responses

| Status | Description |
| --- | --- |
| 200 | Resubmitted. |
| 400 | The body isn't JSON. |
| 401 | Missing or invalid API key. |
| 403 | Insufficient scope, SMS isn't on this plan, or the account is under review. |
| 404 | Toll-free number, program or file not found, or SMS is not enabled. |
| 409 | Not awaiting corrections, flagged values unchanged (`flagged_fields_unchanged`), a use-case change across the leased number's type, the fee lapsed (`quote_required`), or the number limit. |
| 413 | A file larger than its field takes. |
| 415 | A file of the wrong type. |
| 422 | A form field carriers would refuse (`details[]`), a bad or missing file, or an unknown key. |
| 429 | Too many carrier submissions; retry after the wait. |
| 502 | The provisioning service didn't answer; try again. |

## Example request

```bash
curl -X POST 'https://www.unitpost.com/api/v1/sms/numbers/sms_123/resubmit' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0' \
  -H 'Content-Type: application/json' \
  -d '{ }'
```

## Example response (200)

```json
{
  "object": "sms_number_resubmission",
  "number_id": "number_123",
  "status": "resubmitted",
  "resubmitted": true
}
```

## Links

- HTML reference (with Node.js, Python, Ruby, PHP, Laravel, Go, Java, Rust, .NET and CLI examples): https://www.unitpost.com/docs/sms/post-sms-numbers-id-resubmit
- OpenAPI 3.1 (full schemas): https://www.unitpost.com/api/v1/openapi.json
