---
title: "SMS messaging programs"
description: "What your SMS registrations are built from: the reusable purpose, opt-in, help and stop copy and sample messages a registration copies when a person submits it. Writing a program never changes a registration. Registrations, vetting and numbers are bought through a quote and its confirm (`sms:purchase`, within the owner's monthly API spend cap); identity documents, a toll-free number and releasing a number stay in the dashboard."
url: https://www.unitpost.com/docs/api/sms-messaging-programs
section: API reference
updated: 2026-10-13
---
# SMS messaging programs

## SMS messaging programs

> What your SMS registrations are built from: the reusable purpose, opt-in, help and stop copy and sample messages a registration copies when a person submits it. Writing a program never changes a registration. Registrations, vetting and numbers are bought through a quote and its confirm (`sms:purchase`, within the owner's monthly API spend cap); identity documents, a toll-free number and releasing a number stay in the dashboard.

Full schemas: [OpenAPI 3.1](https://www.unitpost.com/api/v1/openapi.json). HTML reference: https://www.unitpost.com/docs/sms#sms-messaging-programs.

## Operations

### `GET /api/v1/sms/messaging-programs`

List messaging programs

Your messaging programs: what a sender registration says your texts are for, how people opt in, the help and stop replies and sample messages. Registrations copy a program when submitted; writing a program never changes one. `archived=true` includes archived ones. Requires the `sms:read` capability.

Reference: https://www.unitpost.com/docs/sms/get-sms-messaging-programs ([Markdown](https://www.unitpost.com/docs/sms/get-sms-messaging-programs.md))

### `POST /api/v1/sms/messaging-programs`

Create a messaging program

Create a program (`name` required). Each field is checked by the carriers' rules (the dashboard's own): lengths, help and stop replies that are a sentence and not just a keyword, links to a real web address (no localhost, bare IP or other scheme). Pass an `Idempotency-Key` so a retry never makes a second one. Requires the `sms:manage` capability.

Reference: https://www.unitpost.com/docs/sms/post-sms-messaging-programs ([Markdown](https://www.unitpost.com/docs/sms/post-sms-messaging-programs.md))

### `GET /api/v1/sms/messaging-programs/{id}`

Retrieve a messaging program

Retrieve one program, archived ones too. Requires the `sms:read` capability.

Reference: https://www.unitpost.com/docs/sms/get-sms-messaging-programs-id ([Markdown](https://www.unitpost.com/docs/sms/get-sms-messaging-programs-id.md))

### `PATCH /api/v1/sms/messaging-programs/{id}`

Update a messaging program

Edit a program: only the fields sent change, `null` clears one, and the result must still pass the carriers' rules. `revision` moves on a material change; registrations keep the copy they made. An archived program is a `409`: duplicate it to keep editing. Requires the `sms:manage` capability.

Reference: https://www.unitpost.com/docs/sms/patch-sms-messaging-programs-id ([Markdown](https://www.unitpost.com/docs/sms/patch-sms-messaging-programs-id.md))

### `DELETE /api/v1/sms/messaging-programs/{id}`

Archive a messaging program

Archive a program. Registrations that copied it keep their copy; [Duplicate a messaging program](https://www.unitpost.com/docs/sms/post-sms-messaging-programs-id-duplicate) to use it again. Requires the `sms:manage` capability.

Reference: https://www.unitpost.com/docs/sms/delete-sms-messaging-programs-id ([Markdown](https://www.unitpost.com/docs/sms/delete-sms-messaging-programs-id.md))

### `POST /api/v1/sms/messaging-programs/{id}/duplicate`

Duplicate a messaging program

Copy a program (an archived one too) into a new editable one named "… (copy)" at revision 1, its consent setup and recipe included. Takes no body. Pass an `Idempotency-Key` so a retry returns the same copy. Requires the `sms:manage` capability.

Reference: https://www.unitpost.com/docs/sms/post-sms-messaging-programs-id-duplicate ([Markdown](https://www.unitpost.com/docs/sms/post-sms-messaging-programs-id-duplicate.md))

## Related

- [SMS consent setups](https://www.unitpost.com/docs/api/sms-consent-setups): Where and how people opt in to your texts; a messaging program points at one.
- [SMS test numbers](https://www.unitpost.com/docs/api/sms-test-numbers): The numbers a template's test text may go to besides the simulator. Adding and verifying one happens in the dashboard (a code is texted to the phone).
- [SMS registrations](https://www.unitpost.com/docs/api/sms-registrations): Carrier registrations and their review state. Submitting a 10DLC one is an SMS quote, then its confirm.
