Update a campaign
Updates an existing campaign under the brand of the specified profile. Cannot update campaigns that have already been submitted to TCR.
Path Parameters
Profile ID from route
uuidCampaign 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 PUT "https://api.sent.dm/v3/profiles/770e8400-e29b-41d4-a716-446655440002/campaigns/b2c3d4e5-f6a7-8901-bcde-f12345678901" \ -H "Idempotency-Key: req_abc123_retry1" \ -H "Content-Type: application/json" \ -d '{ "campaign": { "name": "Customer Notifications Updated", "description": "Updated 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": null, "termsAndConditionsLink": null, "optinMessage": null, "optoutMessage": null, "helpMessage": null, "optinKeywords": null, "optoutKeywords": null, "helpKeywords": null }, "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 Updated",
"description": "Updated 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": null,
"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-04T21:50:50.265702+00:00",
"updatedAt": "2026-03-11T21:50:50.2657035+00:00"
},
"error": null,
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2026-03-11T21:50:50.2657498+00:00",
"version": "v3"
}
}{
"success": false,
"data": null,
"error": {
"code": "VALIDATION_001",
"message": "These campaigns are read-only. Set inherit_tcr_campaign to false to manage 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.2657533+00:00",
"version": "v3"
}
}{
"success": false,
"data": null,
"error": {
"code": "RESOURCE_010",
"message": "Campaign not found for this profile",
"details": null,
"doc_url": "https://docs.sent.dm/errors/RESOURCE_010"
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2026-03-11T21:50:50.265754+00:00",
"version": "v3"
}
}{
"success": false,
"data": null,
"error": {
"code": "INTERNAL_001",
"message": "Failed to update 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.2657546+00:00",
"version": "v3"
}
}Create a campaign for a profile's brand POST
Creates a new campaign scoped under the brand of the specified profile. Each campaign must include at least one use case with sample messages.
Delete a campaign DELETE
Deletes a campaign by ID from the brand of the specified profile. The profile must belong to the authenticated organization.