# Create 10DLC brand

> Create a 10DLC brand registration. The brand starts in draft status. Submit it for review using the submit endpoint.

`POST https://api.zavu.dev/v1/10dlc/brands`

Create a 10DLC brand registration. The brand starts in draft status. Submit it for review using the submit endpoint.

## Body

- `entityType` (string, required): Business entity type for 10DLC brand registration. One of: `PRIVATE_PROFIT`, `PUBLIC_PROFIT`, `NON_PROFIT`, `GOVERNMENT`, `SOLE_PROPRIETOR`.
- `displayName` (string, required): Display name of the brand.
- `companyName` (string): Legal company name.
- `ein` (string): Tax id of the business. For a US brand (`country` `US`), the 9-digit Employer Identification Number, as `XX-XXXXXXX` or `XXXXXXXXX`. For a brand outside the US, the tax id exactly as it appears in its country's business register (for example a Swiss UID, `CHE-123.456.789`): 4 to 30 characters, starting with a letter or digit, made of letters, digits, spaces, `.`, `-` and `/`. Any other value is refused with `400`. Required to submit every entity type except `SOLE_PROPRIETOR`: a brand without it can be created as a draft, and `POST /v1/10dlc/brands/{brandId}/submit` refuses it with `400`.
- `firstName` (string)
- `lastName` (string)
- `email` (string<email>, required)
- `phone` (string, required): Contact phone in E.164 format. For a `SOLE_PROPRIETOR`, a mobile number: the carrier texts a verification code to it.
- `street` (string, required)
- `city` (string, required)
- `state` (string, required)
- `postalCode` (string, required)
- `country` (string, required): Two-letter ISO country code.
- `website` (string<uri>)
- `vertical` (string, required): Industry vertical.
- `stockSymbol` (string)
- `stockExchange` (string)

## Responses

### 201

Brand created in draft status.

- `brand` (object, required)
  - `id` (string, required)
  - `entityType` (string, required): Business entity type for 10DLC brand registration. One of: `PRIVATE_PROFIT`, `PUBLIC_PROFIT`, `NON_PROFIT`, `GOVERNMENT`, `SOLE_PROPRIETOR`.
  - `displayName` (string, required): Display name of the brand.
  - `companyName` (string, nullable): Legal company name.
  - `ein` (string, nullable): Tax id of the business: the Employer Identification Number (EIN) for a US brand, or the tax id from its own country's business register for a brand outside the US.
  - `firstName` (string, nullable)
  - `lastName` (string, nullable)
  - `email` (string<email>, required)
  - `phone` (string, required): Contact phone number in E.164 format.
  - `street` (string, required)
  - `city` (string, required)
  - `state` (string, required)
  - `postalCode` (string, required)
  - `country` (string, required): Two-letter ISO country code.
  - `website` (string<uri>, nullable)
  - `vertical` (string, required): Industry vertical.
  - `stockSymbol` (string, nullable)
  - `stockExchange` (string, nullable)
  - `status` (string, required): Status of a 10DLC brand registration. - `draft`: created, not yet submitted to the carrier. - `pending`: submitted, awaiting the carrier's answer. - `verified`: the carrier registered the brand AND verified the business behind it. - `unverified`: the carrier registered the brand but did not verify the business — the registration exists, the identity check did not pass or has not been resolved. Campaigns are allowed, with lower daily limits. Read `identityStatus` for the carrier's own wording. - `rejected`: refused by the carrier. - `failed`: the registration never reached the carrier; the fee is refunded. One of: `draft`, `pending`, `verified`, `unverified`, `rejected`, `failed`.
  - `identityStatus` (string, nullable): The carrier's raw identity verdict on the business, as the carrier spells it (`VERIFIED`, `VETTED_VERIFIED`, `SELF_DECLARED`, `UNVERIFIED`). Null while the identity has not been resolved — which is not the same as verified, and is why such a brand reports `status: unverified`.
  - `brandScore` (integer, nullable): Trust score assigned by TCR after vetting.
  - `brandRelationship` (string, nullable)
  - `failureReason` (string, nullable): Reason for rejection, if applicable.
  - `submittedAt` (string<date-time>, nullable)
  - `verifiedAt` (string<date-time>, nullable)
  - `createdAt` (string<date-time>, required)
  - `updatedAt` (string<date-time>, required)

### 400

Invalid request.

- `code` (string, required)
- `message` (string, required)
- `details` (object)

### 401

Unauthorized.

- `code` (string, required)
- `message` (string, required)
- `details` (object)

## Example

```bash
curl -X POST "https://api.zavu.dev/v1/10dlc/brands" \
  -H "Authorization: Bearer $ZAVUDEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "entityType": "PRIVATE_PROFIT",
  "displayName": "Acme Corp",
  "companyName": "Acme Corporation",
  "ein": "12-3456789",
  "email": "compliance@acme.com",
  "phone": "+14155551234",
  "street": "123 Main St",
  "city": "San Francisco",
  "state": "CA",
  "postalCode": "94102",
  "country": "US",
  "website": "https://acme.com",
  "vertical": "Technology"
}'
```

```typescript
import Zavudev from "@zavudev/sdk";

const zavu = new Zavudev({ apiKey: process.env.ZAVUDEV_API_KEY });

const result = await zavu.number10dlc.brands.create({
  entityType: "PRIVATE_PROFIT",
  displayName: "Acme Corp",
  companyName: "Acme Corporation",
  ein: "12-3456789",
  email: "compliance@acme.com",
  phone: "+14155551234",
  street: "123 Main St",
  city: "San Francisco",
  state: "CA",
  postalCode: "94102",
  country: "US",
  website: "https://acme.com",
  vertical: "Technology",
});

console.log(result);
```
