POST
/
v1
/
campaign
/
create
curl --request POST \
  --url https://api.sendo.dev/v1/campaign/create \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "displayName": "<string>",
  "usecase": {
    "2FA": "<string>",
    "ACCOUNT_NOTIFICATION": "<string>",
    "CUSTOMER_CARE": "<string>",
    "DELIVERY_NOTIFICATION": "<string>",
    "FRAUD_ALERT": "<string>",
    "MARKETING": "<string>",
    "POLLING_VOTING": "<string>",
    "SECURITY_ALERT": "<string>",
    "HIGHER_EDUCATION": "<string>",
    "K12_EDUCATION": "<string>"
  },
  "brandId": "<string>",
  "description": "<string>",
  "consentFlow": "<string>",
  "screenshotUrl": "<string>",
  "sample1": "<string>",
  "sample2": "<string>",
  "sample3": "<string>",
  "sample4": "<string>",
  "sample5": "<string>",
  "isLowVolume": true
}'
{
  "success": true,
  "campaign": {
    "id": "U7fQ39nX",
    "brandId": "A8wm4k2s",
    "displayName": "Internal Testing",
    "createdAt": "2023-09-21T00:42:01.007Z",
    "updatedAt": "2023-09-21T00:42:01.007Z",
    "status": "ACTIVE",
    "monthlyFee": null,
    "usecase": "MIXED",
    "subUsecases": [
      "CUSTOMER_CARE",
      "ACCOUNT_NOTIFICATION"
    ],
    "details": {
      "description": "This campaign will be used for 2FA login codes.",
      "consentFlow": "Users consent to receive SMS when making an account.",
      "screenshotUrl": "https://sendo-images.s3.amazonaws.com/OTPVerification-7bf5878dc5.png",
      "sample1": "Your Sendo login code is 123456.",
      "sample2": "Your Sendo login code is 987654.",
      "sample3": null,
      "sample4": null,
      "sample5": null,
      "optinKeywords": [
        "START",
        "SUBSCRIBE"
      ],
      "optoutKeywords": [
        "STOP"
      ],
      "helpKeywords": [
        "HELP"
      ],
      "optinMessage": "You've subscribed to receive messages from this number. Reply STOP to unsubscribe.",
      "optoutMessage": "You will no longer receive messages from this number. Reply START to subscribe again.",
      "helpMessage": "Text STOP to unsubscribe. Email support@sendo.dev with any questions."
    },
    "limits": {
      "smsTpmAtt": null,
      "mmsTpmAtt": null,
      "dailyTmoCap": null
    }
  }
}

This endpoint lets customers create campaigns programatically. New campaigns will be reviewed by the Sendo team and the cell carriers for compliance. This process takes an average of 2-5 business days. It is important that your submission is fully compliant in order to avoid rejections, which can delay the launch of your campaign.

When creating a campaign programatically, we will deduct the $20 creation fee from your account balance. If you do not have enough funds in your account, the request will fail. The $10 monthly renewal fee will not be charged until the campaign is approved by the Sendo team.

NOTE: Newly created campaigns will start with no phone numbers. You can add phone numbers to the campaign using the API endpoint to buy a number, or you can add them manually on the Sendo dashboard.

API support for creating webhooks is coming soon! 🚀

Body

displayName
string

The display name for the campaign.

usecase
enum

The usecase for the campaign, i.e. MARKETING.

brandId
string

The ID of the associated brand (for resellers)

description
string

A of the messaging campaign.

An explanation of how consent is obtained.

screenshotUrl
string

A screenshot of the consent flow (optional).

sample1
string

A sample message for the campaign.

sample2
string

A sample message for the campaign.

sample3
string

A sample message for the campaign (optional).

sample4
string

A sample message for the campaign (optional).

sample5
string

A sample message for the campaign (optional).

isLowVolume
boolean

Whether to register the campaign as .

Response

success
boolean

Whether the campaign was created successfully.

campaign
object

The contents of the campaign.

The monthlyFee and carrier limits will be null until the campaign is approved by Sendo and submitted to the cell carriers for review.
error
string

Error message if the request fails.

Errors

If the request fails, it will return an HTTP error status code and an error field in the body with details. Full list of status codes here.

{
  "success": true,
  "campaign": {
    "id": "U7fQ39nX",
    "brandId": "A8wm4k2s",
    "displayName": "Internal Testing",
    "createdAt": "2023-09-21T00:42:01.007Z",
    "updatedAt": "2023-09-21T00:42:01.007Z",
    "status": "ACTIVE",
    "monthlyFee": null,
    "usecase": "MIXED",
    "subUsecases": [
      "CUSTOMER_CARE",
      "ACCOUNT_NOTIFICATION"
    ],
    "details": {
      "description": "This campaign will be used for 2FA login codes.",
      "consentFlow": "Users consent to receive SMS when making an account.",
      "screenshotUrl": "https://sendo-images.s3.amazonaws.com/OTPVerification-7bf5878dc5.png",
      "sample1": "Your Sendo login code is 123456.",
      "sample2": "Your Sendo login code is 987654.",
      "sample3": null,
      "sample4": null,
      "sample5": null,
      "optinKeywords": [
        "START",
        "SUBSCRIBE"
      ],
      "optoutKeywords": [
        "STOP"
      ],
      "helpKeywords": [
        "HELP"
      ],
      "optinMessage": "You've subscribed to receive messages from this number. Reply STOP to unsubscribe.",
      "optoutMessage": "You will no longer receive messages from this number. Reply START to subscribe again.",
      "helpMessage": "Text STOP to unsubscribe. Email support@sendo.dev with any questions."
    },
    "limits": {
      "smsTpmAtt": null,
      "mmsTpmAtt": null,
      "dailyTmoCap": null
    }
  }
}