---
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`

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

---

[API](https://skmtc.net/twilio/apis/trusthub-v1.md) · [All operations](https://skmtc.net/twilio/apis/trusthub-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/twilio/trusthub-v1/revisions/efbeb2fac001/schema)
