Appearance
HTTP endpoints & webhooks
For developers
Admin API
All three require an Admin API token and the sms.manage privilege (in 0.9.0-beta.1 effectively: an Administrator user or an integration with full access — see Known issues).
POST /api/_action/kommandhub-sms/sms-template/{templateId}/test-message
Sends a saved template to one number, rendered with sample data. Used by the Send test message button.
| Body field | Required | Description |
|---|---|---|
recipient | yes | Phone number; international format recommended |
salesChannelId | no | Which sales channel's provider settings to use |
Response 200:
json
{
"success": true,
"reason": null,
"detail": null,
"messageId": "3017xxxxxxxx",
"renderedBody": "Hi Jane, thanks for your order 10001."
}On failure success is false and reason is one of templateNotFound, templateEmpty, renderFailed, invalidRecipient, noProviderConfigured, providerRejected, providerUnavailable, with a human-readable detail.
GET /api/_action/kommandhub-sms/provider
Lists providers and whether each is configured.
| Query | Description |
|---|---|
salesChannelId | Optional; evaluate that sales channel's settings |
json
{ "providers": [ { "name": "termii", "label": "Termii", "configured": true }, … ] }POST /api/_action/kommandhub-sms/provider/{providerName}/verify
Checks a provider's credentials against the provider. Always 200 with {"valid": bool, "message": string}; 404 for an unknown provider name. Body: optional salesChannelId.
POST /notifications/webhook
Delivery reports (Termii). See Architecture for the signature.
| Status | When |
|---|---|
200 {"status":"ok"} | Handled |
200 {"status":"ignored"} | Authentic but unknown event type |
400 | Body is not JSON |
403 | Missing/invalid x-termii-signature or no secret configured |