variables against the ones the template references. Nothing is sent and no message record is created.variables.missing is the value here: template-variable typos are the most common transactional integration bug.type: marketing it answers "would this actually go out?" before you send. With type: transactional it reports consent.required=false and shows you exactly which check you are exempting yourself from.curl --location '/messages/sms/validate' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"type": "transactional",
"basis": "contract_performance",
"to": {
"contactId": "string",
"clientContactId": "string",
"phoneNumber": "string"
},
"from": "string",
"templateId": 0,
"content": "string",
"language": "string",
"variables": {},
"tags": [
"string"
],
"metadata": {},
"sendAt": "string",
"createContact": true,
"retainBody": true,
"event": "string",
"permId": "string"
}'{
"channel": "email",
"type": "transactional",
"recipient": {
"contactId": "string",
"resolved": "string",
"deliverable": true
},
"suppression": {
"suppressed": true,
"reason": "string"
},
"consent": {
"required": true,
"granted": true,
"lists": [
"string"
]
},
"sender": {
"from": "string",
"verified": true,
"domainId": 0
},
"template": {
"templateId": 0,
"language": "string",
"resolved": true
},
"variables": {
"missing": [
"string"
],
"unused": [
"string"
]
},
"sms": {
"length": 0,
"encoding": "GSM7",
"segments": 0,
"estimate": true
}
}