Review a draft campaign before submitting
Runs the AI vetting assistant against a draft 10DLC campaign and returns severity-tagged findings with suggested fixes, before you submit the campaign for registration. This is an optional, button-triggered pre-check: deterministic checks (privacy-policy and terms reachability, required-language scans, sample-message and content-toggle checks) always run; an AI layer adds use-case fit, opt-in, and red-flag findings when enabled.
Nothing is persisted and no campaign is created, the draft is
reviewed inline. Only findings with severity block should gate
submission; warn and info are advisory. The assistant does
not certify legal compliance; have your own counsel confirm your
policy language.
Requires the campaigns:write scope.
Authenticate by sending your API key as a bearer token:
Authorization: Bearer am_live_.... Every request is automatically
scoped to the organization that owns the key and to the scopes granted
to that key.
In: header
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://example.com/v1/campaigns/review" \ -H "Content-Type: application/json" \ -d '{}'{
"success": true,
"error": {
"code": "string",
"message": "string",
"request_id": "string",
"details": {
"property1": "string",
"property2": "string"
}
},
"meta": {
"total": 0,
"limit": 0,
"offset": 0,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wNC0yNlQxMjowMDowMFoiLCJpZCI6IjAxOTAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMSJ9",
"last_event_at": "2019-08-24T14:15:22Z"
},
"data": {
"can_submit": true,
"llm_used": true,
"generated_at": "2019-08-24T14:15:22Z",
"counts": {
"property1": 0,
"property2": 0
},
"findings": [
{
"id": "string",
"severity": "info",
"category": "string",
"field": "string",
"title": "string",
"detail": "string",
"suggested_fix": "string",
"source": "deterministic",
"docs_url": "string"
}
],
"checked_urls": [
{
"url": "string",
"field": "string",
"reachable": true,
"status": 0,
"error": "string"
}
]
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "authentication failed",
"request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
}
}{
"success": false,
"error": {
"code": "FORBIDDEN",
"message": "missing required scope",
"request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
}
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "validation failed",
"request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM",
"details": {
"to": "must be E.164",
"body": "must be 1..1600 chars"
}
}
}