Create a campaign for a profile's brand

Creates a new campaign scoped under the brand of the specified profile. Each campaign must include at least one use case with sample messages.

POST
/v3/profiles/{profileId}/campaigns

Path Parameters

profileId*string

Profile ID from route

Formatuuid

Header Parameters

Idempotency-Key?string

Unique key to ensure idempotent request processing. Must be 1-255 alphanumeric characters, hyphens, or underscores. Responses are cached for 24 hours per key per customer.

Match^[a-zA-Z0-9_-]+$
Lengthlength <= 255
x-profile-id?string

Profile UUID to scope the request to a child profile. Only organization API keys can use this header. The profile must belong to the calling organization.

Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://api.sent.dm/v3/profiles/770e8400-e29b-41d4-a716-446655440002/campaigns" \  -H "Idempotency-Key: req_abc123_retry1" \  -H "Content-Type: application/json" \  -d '{    "campaign": {      "name": "Customer Notifications",      "description": "Appointment reminders and account notifications",      "type": "App",      "useCases": [        {          "messagingUseCaseUs": "ACCOUNT_NOTIFICATION",          "sampleMessages": [            "Hi {name}, your appointment is confirmed for {date} at {time}.",            "Your order #{order_id} has been shipped. Track at {url}"          ]        }      ],      "messageFlow": "User signs up on website and opts in to receive SMS notifications",      "privacyPolicyLink": "https://acmecorp.com/privacy",      "termsAndConditionsLink": "https://acmecorp.com/terms",      "optinMessage": "You have opted in to Acme Corp notifications. Reply STOP to opt out.",      "optoutMessage": "You have been unsubscribed. Reply START to opt back in.",      "helpMessage": "Reply STOP to unsubscribe or contact support@acmecorp.com",      "optinKeywords": "YES, START, SUBSCRIBE",      "optoutKeywords": "STOP, UNSUBSCRIBE, END",      "helpKeywords": "HELP, INFO, SUPPORT"    },    "sandbox": false  }'
{
  "success": true,
  "data": {
    "useCases": [
      {
        "campaignId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "customerId": "00000000-0000-0000-0000-000000000000",
        "messagingUseCaseUs": "ACCOUNT_NOTIFICATION",
        "sampleMessages": [
          "Hi {name}, your appointment is confirmed for {date} at {time}.",
          "Your order #{order_id} has been shipped. Track at {url}"
        ],
        "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
        "createdAt": "0001-01-01T00:00:00+00:00",
        "updatedAt": null
      }
    ],
    "tcrSyncError": null,
    "kycSubmissionFormId": null,
    "type": "App",
    "customerId": "00000000-0000-0000-0000-000000000000",
    "name": "Customer Notifications",
    "description": "Appointment reminders and account notifications",
    "submittedToTCR": false,
    "submittedAt": null,
    "billedDate": null,
    "cost": null,
    "telnyxCampaignId": null,
    "tcrCampaignId": null,
    "cspId": null,
    "status": null,
    "brandId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "resellerId": null,
    "messageFlow": "User signs up on website and opts in to receive SMS notifications",
    "privacyPolicyLink": null,
    "termsAndConditionsLink": null,
    "optinMessage": null,
    "optoutMessage": null,
    "helpMessage": null,
    "optinKeywords": null,
    "optoutKeywords": null,
    "helpKeywords": null,
    "upstreamCnpId": null,
    "sharingStatus": null,
    "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "createdAt": "2026-03-11T21:50:50.2497025+00:00",
    "updatedAt": null
  },
  "error": null,
  "meta": {
    "request_id": "req_7X9zKp2jDw",
    "timestamp": "2026-03-11T21:50:50.2499689+00:00",
    "version": "v3"
  }
}
{
  "success": false,
  "data": null,
  "error": {
    "code": "VALIDATION_001",
    "message": "Cannot create campaigns when inherit_tcr_campaign=true. Set inherit_tcr_campaign=false to create your own campaigns.",
    "details": null,
    "doc_url": "https://docs.sent.dm/errors/VALIDATION_001"
  },
  "meta": {
    "request_id": "req_7X9zKp2jDw",
    "timestamp": "2026-03-11T21:50:50.2499732+00:00",
    "version": "v3"
  }
}
Empty
Empty
{
  "success": false,
  "data": null,
  "error": {
    "code": "RESOURCE_009",
    "message": "Brand not found for this profile",
    "details": null,
    "doc_url": "https://docs.sent.dm/errors/RESOURCE_009"
  },
  "meta": {
    "request_id": "req_7X9zKp2jDw",
    "timestamp": "2026-03-11T21:50:50.2499739+00:00",
    "version": "v3"
  }
}
{
  "success": false,
  "data": null,
  "error": {
    "code": "INTERNAL_001",
    "message": "Failed to create campaign. Please contact support with request ID: req_7X9zKp2jDw",
    "details": null,
    "doc_url": "https://docs.sent.dm/errors/INTERNAL_001"
  },
  "meta": {
    "request_id": "req_7X9zKp2jDw",
    "timestamp": "2026-03-11T21:50:50.2499745+00:00",
    "version": "v3"
  }
}