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.
Path Parameters
Profile ID from route
uuidHeader Parameters
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.
^[a-zA-Z0-9_-]+$length <= 255Profile 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.
uuidRequest 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"
}
}{
"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"
}
}Get campaigns for a profile's brand GET
Retrieves all campaigns linked to the profile's brand, including use cases and sample messages. Returns inherited campaigns if inherit_tcr_campaign=true.
Update a campaign PUT
Updates an existing campaign under the brand of the specified profile. Cannot update campaigns that have already been submitted to TCR.