# Events

Most 10DLC status changes are asynchronous; you can create a webhook subscription to listen to status change events (see API details [here](https://docs.messagebird.com/api/notifications-api/api-reference/webhooks/create-a-webhook-subscription))&#x20;

10dlc supports the following webhook types:

* `10dlc.brand`
* `10dlc.campaign`
* `10dlc.vetting`

### 10dlc.brand

This event refers to changes in brand status (you can read more about brand status here).

```
  "brand": {
    "service": "numbers",
    "event": "10dlc.brand",
    "payload": {
      "id": "example-brand-id",
      "organizationId": "example-org-id",
      "workspaceId": [
        "example-workspace-id"
      ],
      "status": "PENDING",
      "entityType": "PRIVATE_PROFIT",
      "firstName": "Example",
      "lastName": "User",
      "displayName": "Example SMS Brand",
      "companyName": "Example Company",
      "ein": "123456789",
      "einIssuingCountry": "XX",
      "phone": "+15551234567",
      "street": "Example Street 123",
      "city": "Example City",
      "state": "Example State",
      "postalCode": "12345",
      "country": "XX",
      "email": "example@example.com",
      "website": "http://www.example.com",
      "vertical": "TECHNOLOGY",
      "altBusinessId": "",
      "altBusinessIdType": "NONE",
      "stockExchange": "NONE",
      "stockSymbol": "",
      "createdAt": "2025-03-27T08:39:48.091Z",
      "updatedAt": "2025-03-27T08:39:48.091Z"
    }
  }
```

To get more information about the reason for`REJECTED` brand status it is possible to fetch the rejection reason [by getting the brand object](https://docs.bird.com/api/numbers-api/api-reference/10dlc-compliance/brands-workspace/get-a-brand). Rejection reasons are not always available for all brand rejections.&#x20;

```
  "rejection": {
    "description": "text"
  }
```

{% hint style="info" %}
Rejection descriptions are part of the brand objects but NOT the brand status events
{% endhint %}

### 10dlc.campaign

This event refers to the campaign status changes (you can read more about campaign status [here](https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/united-states-sms-registration/sms-10dlc/campaign-registration#campaign-status) )  .

```
  "campaign": {
    "service": "numbers",
    "event": "10dlc.campaign",
    "payload": {
      "id": "example-campaign-id",
      "organizationId": "example-org-id",
      "workspaceId": "example-workspace-id",
      "name": "Example SMS Campaign",
      "status": "PENDING",
      "usecase": "LOW_VOLUME",
      "subUsecases": [
        "2FA",
        "ACCOUNT_NOTIFICATION"
      ],
      "description": "This is an example campaign description.",
      "embeddedLink": false,
      "embeddedPhone": false,
      "numberPool": false,
      "ageGated": false,
      "directLending": false,
      "subscriberOptin": true,
      "subscriberOptout": true,
      "subscriberHelp": true,
      "samples": [
        "Example: your OTP is 123456. Send STOP to unsubscribe",
        "Example: your wallet needs to be topped up. Send STOP to unsubscribe"
      ],
      "messageFlow": "Users can share their number as part of the notification setting. Only transactional events generate SMS notifications. See example terms: https://www.example.com/terms",
      "helpMessage": "Example: For help write to example@example.com. Reply STOP to opt out of SMS, START to subscribe. Msg&data rates may apply",
      "optoutKeywords": "STOP",
      "helpKeywords": "HELP",
      "optinKeywords": "START",
      "optinMessage": "Example: You opted in to receive SMS. Reply HELP for help; STOP to opt-out. Msg&Data rates may apply",
      "optoutMessage": "Example: You have OPTED-OUT from SMS. Send START to OPT-IN. Msg&data rates may apply.",
      "termsAndConditions": true,
      "brandId": "example-brand-id",
      "createdAt": "2025-03-27T09:01:30.716Z",
      "updatedAt": "2025-03-27T09:01:30.716Z"
    }
  }
}
```

To get more information about the reason for `DECLINED` the campaign status it is possible to fetch the rejection reason [by getting the campaign object](https://docs.bird.com/api/numbers-api/api-reference/10dlc-compliance/campaigns/get-a-campaign)&#x20;

For rejected campaigns only campaigns with `DECLINED` status are eligible to be resubmitted. All other campaign rejections will require a new campaign to be created.

Campaign rejections are always accompanied by a reason (the full list of reasons can be found [here](https://docs.bird.com/applications/enable-channels/sms/sms-10dlc/campaign-registration#campaign-decline-reasons));&#x20;

```
  "rejection": {
    "description": "text"
  }
```

{% hint style="info" %}
Rejection descriptions are part of the campaign objects but NOT of the campaign status events
{% endhint %}

### 10dlc.vetting

This event refers to brand vetting status changes (you can read more about vetting status [here](https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/united-states-sms-registration/sms-10dlc/brand-registration#vetting-status) )  .

```
{
  "brandVetting": {
    "service": "numbers",
    "event": "10dlc.brandVetting",
    "payload": {
      "ID": "example-brand-vetting-id",
      "OrganizationID": "example-org-id",
      "BrandID": "example-brand-id",
      "ExternalID": "",
      "Status": "PENDING",
      "VettingProviderID": "",
      "Token": "",
      "Score": "",
      "Class": "STANDARD",
      "Reasons": null,
      "createdAt": "2025-03-27T08:39:48.942Z",
      "updatedAt": "2025-03-27T08:39:48.942Z"
    }
  }
```

To get more information about the reason for`REJECTED` vetting status it is possible to fetch the rejection reason [by listing all vetting](https://docs.bird.com/api/numbers-api/api-reference/10dlc-compliance/brands-workspace/list-brand-vettings) for a given brand

```
  "rejection": {
    "description": "text"
  }
```

{% hint style="info" %}
Rejection descriptions are part of the Vetting objects but NOT of the rejection events
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bird.com/api/numbers-api/api-reference/10dlc-compliance/events.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
