---
title: "Create a new A2P Campaign Registration and initialize an embedded compliance session."
method: POST
path: "/v1/A2PCampaignRegistrations"
tags: ["TrusthubV1A2PCampaignRegistrations"]
---

# Create a new A2P Campaign Registration and initialize an embedded compliance session.

`POST /v1/A2PCampaignRegistrations`

## Request

- Base URL: `https://trusthub.twilio.com`
- URL: `https://trusthub.twilio.com/v1/A2PCampaignRegistrations`
- Auth: HTTP basic

Create a new A2P Campaign Registration and initialize an embedded compliance session.

## Request body

- TrusthubV1A2pCampaignRegistrationRequest
  - `a2pBrandRegistrationSid` string, required: The legacy Twilio A2P Brand SID (BN-prefixed) for the brand this campaign is registered under. This is a different identifier from the `id` returned by the Initialize Brand endpoint (which is formatted as `tri1.us1.account.AC.../registration.BU...`). Retrieve the BN brand SID via [GET /v1/a2p/BrandRegistrations/{Sid}](https://www.twilio.com/docs/messaging/api/brand-registration-resource) on `messaging.twilio.com`.
  - `messagingServiceSid` string: The SID of the Messaging Service.
  - `themeSetId` string: Theme ID for styling the inquiry form.
  - `useCaseCategories` string[]: The categories of the messaging use case.
  - `useCaseDescription` string: A description of the messaging use case.
  - `useCaseSampleMessage1` string: A sample message for the use case.
  - `useCaseSampleMessage2` string: A second sample message for the use case.
  - `useCaseSampleMessage3` string: A third sample message for the use case.
  - `useCaseSampleMessage4` string: A fourth sample message for the use case.
  - `useCaseSampleMessage5` string: A fifth sample message for the use case.
  - `useCaseOptInTypes` string[]: The opt-in methods for the use case.
  - `useCaseOptInDescription` string: A description of the opt-in process.
  - `hasEmbeddedLinks` boolean: Whether messages will contain embedded links.
  - `hasEmbeddedPhone` boolean: Whether messages will contain embedded phone numbers.
  - `embeddedUrlSample` string, uri: A sample URL that will be embedded in messages (must use https://).
  - `directLending` boolean: Whether the campaign involves direct lending.
  - `ageGated` boolean: Whether the content is age-gated.
  - `privacyPolicyUrl` string, uri: The URL to the privacy policy.
  - `termsAndConditionsUrl` string, uri: The URL to the terms and conditions.
  - `optInKeywords` string[]: Keywords users can text to opt in.
  - `optInMessageSample` string: A sample opt-in confirmation message.
  - `optOutKeywords` string[]: Keywords users can text to opt out.
  - `optOutMessageSample` string: A sample opt-out confirmation message.
  - `helpKeywords` string[]: Keywords users can text for help.
  - `helpMessageSample` string: A sample help message.

## Response `201`

Created

- TrusthubV1A2pEmbeddedSession
  - `id` string, nullable: The unique A2P Brand or Campaign Registration identifier, formatted as `tri1.us1.account.AC.../registration.BU...`.
  - `sessionId` string, nullable: The Persona inquiry ID used to start the embedded compliance session.
  - `sessionToken` string, nullable: The Persona session token for embedding the compliance UI. Expires in 24 hours.

## Other responses

- `400`: Bad Request - Validation failure or invalid request
- `401`: Unauthorized - Invalid credentials
- `403`: Forbidden - Account not enabled for A2P embeddable v2
- `500`: Internal Server Error

## Changes

- **2026-08-11** (v1) `efbeb2fac001`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/twilio/apis/trusthub-v1/changes/v1/A2PCampaignRegistrations/post.md)

---

[API](https://skmtc.dev/twilio/apis/trusthub-v1.md) - [All operations](https://skmtc.dev/twilio/apis/trusthub-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/twilio/apis/trusthub-v1/revisions/efbeb2fac001?raw)
