10DLCv4

Create a campaign

POST/10dlc/campaigns

Register a campaign under the organization's registered brand. The registry and carriers review it asynchronously; registration.campaign.updated fires as its status changes. Once a campaign reaches mno_provisioned, Blooio assigns the organization's unassigned SMS numbers to its oldest provisioned campaign. OAuth apps need numbers:manage.

Headers

AuthorizationRequiredstring

Your API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.

Bearer

Body parameters

JSON
usecaseRequiredstring

Use case code; one of the use_cases values from GET /10dlc/options, e.g. MARKETING.

sub_usecasesoptionalstring[]

Sub use case codes, for use cases that take them (MIXED, for one). GET /10dlc/usecases/{usecase}/qualification says how many.

samplesRequiredstring[]

Example messages, as recipients will see them.

descriptionRequiredstring

What the campaign sends and why.

message_flowRequiredstring

How recipients opt in: where they give consent and what they're told.

help_messageoptionalstring

The reply to HELP.

optin_messageoptionalstring

The reply when someone opts in.

optout_messageoptionalstring

The reply to STOP.

help_keywordsoptionalstring[]

Keywords that get the HELP reply.

optin_keywordsoptionalstring[]

Keywords that opt a recipient in.

optout_keywordsoptionalstring[]

Keywords that opt a recipient out.

subscriber_optinRequiredboolean

Recipients opt in before they're messaged.

subscriber_optoutRequiredboolean

Recipients can opt out.

subscriber_helpRequiredboolean

Recipients can get help by replying HELP.

terms_and_conditionsRequiredboolean

You accept the carriers' 10DLC terms. Must be true.

embedded_phoneoptionalboolean

Messages contain phone numbers.

number_pooloptionalboolean

The campaign sends from a pool of more than 49 numbers.

age_gatedoptionalboolean

Content is age-gated (alcohol, for example).

direct_lendingoptionalboolean

The campaign is about direct lending or loans.

Returns

dataoptionalTenDlcCampaign
campaign_idRequiredstring

Campaign id (camp_...).

brand_idRequiredstring
usecaseRequiredstring
statusRequiredstring

tcr_* is the registry's review, review_* the carriers' vetting, and mno_* the carriers' own. Numbers send once the campaign is mno_provisioned. A review_failed or mno_rejected campaign can be appealed.

"submitting""tcr_pending""tcr_accepted""tcr_failed""tcr_suspended""tcr_expired""review_accepted""review_failed""mno_pending""mno_accepted""mno_rejected""mno_provisioned""mno_provisioning_failed"
detailsRequiredTenDlcCampaignDetails

What the campaign sends. Creating one needs usecase, samples, description, message_flow, subscriber_optin, subscriber_optout, subscriber_help, and terms_and_conditions (which must be true).

usecaseoptionalstring

Use case code; one of the use_cases values from GET /10dlc/options, e.g. MARKETING.

sub_usecasesoptionalstring[]

Sub use case codes, for use cases that take them (MIXED, for one). GET /10dlc/usecases/{usecase}/qualification says how many.

samplesoptionalstring[]

Example messages, as recipients will see them.

descriptionoptionalstring

What the campaign sends and why.

message_flowoptionalstring

How recipients opt in: where they give consent and what they're told.

help_messageoptionalstring

The reply to HELP.

optin_messageoptionalstring

The reply when someone opts in.

optout_messageoptionalstring

The reply to STOP.

help_keywordsoptionalstring[]

Keywords that get the HELP reply.

optin_keywordsoptionalstring[]

Keywords that opt a recipient in.

optout_keywordsoptionalstring[]

Keywords that opt a recipient out.

subscriber_optinoptionalboolean

Recipients opt in before they're messaged.

subscriber_optoutoptionalboolean

Recipients can opt out.

subscriber_helpoptionalboolean

Recipients can get help by replying HELP.

terms_and_conditionsoptionalboolean

You accept the carriers' 10DLC terms. Must be true.

embedded_phoneoptionalboolean

Messages contain phone numbers.

number_pooloptionalboolean

The campaign sends from a pool of more than 49 numbers.

age_gatedoptionalboolean

Content is age-gated (alcohol, for example).

direct_lendingoptionalboolean

The campaign is about direct lending or loans.

failure_reasonsRequiredstring | null

Why the campaign was rejected.

created_atRequiredinteger

Epoch ms.

updated_atRequiredinteger

Epoch ms.

Response codes

201The campaign
400`missing_fields` (with the missing `fields`), `invalid_field` (with the `field`), or `terms_not_accepted`.
401Your API key is missing or invalid. Pass it as a bearer token.
403`feature_not_enabled`: Blooio SMS and Blooio Voice aren't enabled on this organization.
404`brand_not_found`.
409`brand_not_registered`, `campaign_limit_reached` (a sole proprietor brand holds one campaign), or `campaign_submission_in_progress` (the brand has a campaign still `submitting`; one is submitted at a time).
422`campaign_rejected`: the registry refused the campaign.
502`upstream_unavailable`: the carrier network couldn't be reached. The campaign may still have been registered: it's listed as `submitting` until the registry confirms it or, after a few minutes, the next submission finds it was never received. Retry with backoff.

Sends a live request with your values and shows the real response below. Your key is stored only in this browser.

Request
curl -X POST https://api.blooio.com/v4/10dlc/campaigns \
Body object
Response objectexample
{  "data": {    "campaign_id": "obj_a1b2c3d4",    "brand_id": "obj_a1b2c3d4",    "usecase": "MARKETING",    "status": "submitting",    "details": {      "usecase": "string",      "sub_usecases": [        "string"      ],      "samples": [        "string"      ],      "description": "Example description",      "message_flow": "string",      "help_message": "string",      "optin_message": "string",      "optout_message": "string",      "privacy_policy_link": "https://example.com",      "terms_and_conditions_link": "https://example.com",      "embedded_link_sample": "https://example.com",      "help_keywords": [        "string"      ],      "optin_keywords": [        "string"      ],      "optout_keywords": [        "string"      ],      "subscriber_optin": false,      "subscriber_optout": false,      "subscriber_help": false,      "terms_and_conditions": false,      "embedded_link": false,      "embedded_phone": false,      "number_pool": false,      "age_gated": false,      "direct_lending": false    },    "failure_reasons": "string",    "created_at": 0,    "updated_at": 0  }}