# Save the organization's TFV business profile (/docs/api/routing/toll-free-verification/saveTfvProfile)

> For the complete documentation index, see [llms.txt](https://docs.tandemcx.ai/llms.txt). Any page on this site can be fetched as Markdown by appending `.md` to its URL.

`PUT /v1/sms-registration/profile`

Save the organization's TFV business profile

Save (or overwrite) the profile future submissions prefill from. A successful POST /tfv or PUT /tfv/:id already saves the profile it used — call this directly to update the saved profile without submitting a number.

## Request

**Base URL:** `https://api.tandemcx.ai`

**Authentication:** `Authorization: Bearer <token>` — A Tandem bearer token. Requests are scoped to the organization the token belongs to; no organization header is required.

### Body (`application/json`) — required

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `profile` | object | Yes | The business information a toll-free verification request carries. One profile applies to every number in the same request. |
| `profile.businessName` | string | Yes | The business's legal name. |
| `profile.businessDba` | string | No | Doing-business-as name, if different. |
| `profile.businessEntityType` | enum: `SOLE_PROPRIETOR` \| `PRIVATE_PROFIT` \| `PUBLIC_PROFIT` \| `NON_PROFIT` \| `GOVERNMENT` | Yes | The submitting business's legal structure. |
| `profile.businessRegistrationNumber` | string | No | e.g. an EIN. Required, with businessRegistrationType and businessRegistrationIssuingCountry, for every entity type except SOLE_PROPRIETOR. A SOLE_PROPRIETOR's three are not sent to the carrier. |
| `profile.businessRegistrationType` | enum (18 values): `EIN`, `CBN`, `NEQ`, `PROVINCIAL_NUMBER`, `CRN`, `VAT`, `ACN`, `ABN`, `BRN`, `SIREN`, `SIRET`, `NZBN`, … | No | What kind of number businessRegistrationNumber is. |
| `profile.businessRegistrationIssuingCountry` | string | No | The country that issued businessRegistrationNumber, as an ISO-3166-1 alpha-3 code such as USA. |
| `profile.businessAddress` | object | Yes | — |
| `profile.businessAddress.addressLine1` | string | Yes | — |
| `profile.businessAddress.addressLine2` | string | No | — |
| `profile.businessAddress.city` | string | Yes | — |
| `profile.businessAddress.state` | string | Yes | — |
| `profile.businessAddress.zip` | string | Yes | — |
| `profile.businessAddress.websiteUrl` | string | Yes | — |
| `profile.businessContact` | object | Yes | — |
| `profile.businessContact.firstName` | string | Yes | — |
| `profile.businessContact.lastName` | string | Yes | — |
| `profile.businessContact.email` | string | Yes | — |
| `profile.businessContact.phone` | string | Yes | E.164 format. |
| `profile.useCase` | string | Yes | One of the values GET /v1/sms-registration/use-cases returns. |
| `profile.useCaseSummary` | string | Yes | A sentence or two describing what these messages are for. |
| `profile.productionMessageContent` | string | Yes | A representative message customers actually receive. |
| `profile.estimatedMonthlyVolume` | integer | Yes | — |
| `profile.optIn` | object | Yes | — |
| `profile.optIn.description` | string | Yes | How customers agree to receive these messages. |
| `profile.optIn.images` | array of one of: object \| object | Yes | Screenshots showing where and how customers opt in. |
| `profile.optIn.confirmationResponse` | string | No | The confirmation message sent back after a customer opts in. |
| `profile.privacyPolicyUrl` | string | No | — |
| `profile.termsUrl` | string | No | — |
| `profile.additionalInformation` | string | No | — |

## Responses

### 200 — The saved profile.

The business information a toll-free verification request carries. One profile applies to every number in the same request.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `businessName` | string | Yes | The business's legal name. |
| `businessDba` | string | No | Doing-business-as name, if different. |
| `businessEntityType` | enum: `SOLE_PROPRIETOR` \| `PRIVATE_PROFIT` \| `PUBLIC_PROFIT` \| `NON_PROFIT` \| `GOVERNMENT` | Yes | The submitting business's legal structure. |
| `businessRegistrationNumber` | string | No | e.g. an EIN. Required, with businessRegistrationType and businessRegistrationIssuingCountry, for every entity type except SOLE_PROPRIETOR. A SOLE_PROPRIETOR's three are not sent to the carrier. |
| `businessRegistrationType` | enum (18 values): `EIN`, `CBN`, `NEQ`, `PROVINCIAL_NUMBER`, `CRN`, `VAT`, `ACN`, `ABN`, `BRN`, `SIREN`, `SIRET`, `NZBN`, … | No | What kind of number businessRegistrationNumber is. |
| `businessRegistrationIssuingCountry` | string | No | The country that issued businessRegistrationNumber, as an ISO-3166-1 alpha-3 code such as USA. |
| `businessAddress` | object | Yes | — |
| `businessAddress.addressLine1` | string | Yes | — |
| `businessAddress.addressLine2` | string | No | — |
| `businessAddress.city` | string | Yes | — |
| `businessAddress.state` | string | Yes | — |
| `businessAddress.zip` | string | Yes | — |
| `businessAddress.websiteUrl` | string | Yes | — |
| `businessContact` | object | Yes | — |
| `businessContact.firstName` | string | Yes | — |
| `businessContact.lastName` | string | Yes | — |
| `businessContact.email` | string | Yes | — |
| `businessContact.phone` | string | Yes | E.164 format. |
| `useCase` | string | Yes | One of the values GET /v1/sms-registration/use-cases returns. |
| `useCaseSummary` | string | Yes | A sentence or two describing what these messages are for. |
| `productionMessageContent` | string | Yes | A representative message customers actually receive. |
| `estimatedMonthlyVolume` | integer | Yes | — |
| `optIn` | object | Yes | — |
| `optIn.description` | string | Yes | How customers agree to receive these messages. |
| `optIn.images` | array of one of: object \| object | Yes | Screenshots showing where and how customers opt in. |
| `optIn.confirmationResponse` | string | No | The confirmation message sent back after a customer opts in. |
| `privacyPolicyUrl` | string | No | — |
| `termsUrl` | string | No | — |
| `additionalInformation` | string | No | — |

### 400 — The request was malformed.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `error` | object | No | — |
| `error.code` | string | No | — |
| `error.message` | string | No | — |

### 401 — Missing, malformed, or expired bearer token.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `error` | object | No | — |
| `error.code` | string | No | — |
| `error.message` | string | No | — |
