---
title: "Replace a 10DLC brand registration"
description: "Archive an APPROVED 10DLC brand registration (us_ten_dlc_brand) so the brand can be registered again (corrected legal details, a new owner of the EIN): the brand unlocks for Update an SMS brand, and a new registration is a quote and its confirm (product ten_dlc_brand_registration). `POST /api/v1/sms/registrations/{id}/replace`"
url: https://www.unitpost.com/docs/sms/post-sms-registrations-id-replace
section: "SMS API reference"
updated: 2026-11-11
---
# Replace a 10DLC brand registration

`POST /api/v1/sms/registrations/{id}/replace`

Archive an APPROVED 10DLC brand registration (`us_ten_dlc_brand`) so the brand can be registered again (corrected legal details, a new owner of the EIN): the brand unlocks for [Update an SMS brand](https://www.unitpost.com/docs/sms/patch-sms-brands-id), and a new registration is a quote and its confirm (product `ten_dlc_brand_registration`). Nothing changes at the carrier and nothing is charged here. Refused while any number on the brand isn't released or any of its 10DLC setups isn't removed (`resource_in_use`; each one in `error.details[]`, its public id first). When all that's left is a release in flight: `sms_release_pending` with `Retry-After`. 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`. |

## Response fields (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | — |
| `id` | string | yes | — |
| `type` | string | yes | `us_ten_dlc_brand`, `us_ten_dlc_campaign`, or a toll-free verification. |
| `brand_id` | string \| null | yes | — |
| `status` | string | yes | The carrier review state: `draft`, `submitted`, `reviewing`, `requires_updates`, `complete`, `closed`, … |
| `requires_action` | boolean | yes | The customer must act (the carrier asked for changes). |
| `feedback` | object[] \| null | yes | The carrier's reasons when it asks for changes or closes it (`reason`, `description`, `field_path`, `link`). |
| `use_case` | string \| null | yes | — |
| `message_type` | string \| null | yes | — |
| `parent_registration_id` | string \| null | yes | — |
| `auto_provision_number` | boolean \| null | yes | 10DLC campaigns: a number is leased when carriers approve. |
| `sender` | object \| null | yes | 10DLC campaigns: the number it backs, once one exists. |
| `setup_state` | string \| null | yes | 10DLC campaigns: one customer-facing state over the campaign and its number. |
| `number_withheld_reason` | string \| null | yes | Why an approved campaign's number isn't being leased (e.g. the plan has no carrier resources). |
| `archived_at` | string \| null | yes | — |
| `submitted_at` | string \| null | yes | — |
| `completed_at` | string \| null | yes | — |
| `created_at` | string | yes | — |

## Responses

| Status | Description |
| --- | --- |
| 200 | The brand registration, archived. |
| 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 | Brand registration not found, or SMS is not enabled. |
| 409 | Not approved, numbers or setups still on the brand (`resource_in_use`), their release still in flight (`sms_release_pending`, with `Retry-After`), or the `Idempotency-Key` is in use. |
| 422 | An unknown key. |

## Example request

```bash
curl -X POST 'https://www.unitpost.com/api/v1/sms/registrations/123/replace' \
  -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_registration",
  "id": "id_123",
  "type": "string",
  "brand_id": "brand_123",
  "status": "queued",
  "requires_action": false,
  "feedback": [
    {}
  ],
  "use_case": "string",
  "message_type": "string",
  "parent_registration_id": "parent_registration_123",
  "auto_provision_number": false,
  "sender": {
    "id": "id_123",
    "status": "queued",
    "phone_number": "string"
  },
  "setup_state": "string",
  "number_withheld_reason": "string",
  "archived_at": "2026-01-01T00:00:00.000Z",
  "submitted_at": "2026-01-01T00:00:00.000Z",
  "completed_at": "2026-01-01T00:00:00.000Z",
  "created_at": "2026-01-01T00:00:00.000Z"
}
```

## 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-registrations-id-replace
- OpenAPI 3.1 (full schemas): https://www.unitpost.com/api/v1/openapi.json
