POST Send Subscriber SMS​
Send a one-off SMS to a contact's phone number immediately (controller method sendCustomSMS). The send runs inline and the response reflects the real outcome rather than "queued". A Custom SMS to {name} campaign record is created and referenced so the send appears in campaign reporting; the message is recorded in the contact's SMS thread.
This endpoint is SMS only: it does not read a channel parameter. WhatsApp sends go through POST /whatsapp/subscribers/{id}/send (templates, 24-hour session) or, for an existing conversation, POST /messaging/threads/{id}/messages.
Checks, in order: SMS channel enabled, contact exists, message present, contact has a phone, contact is subscribed for SMS (consent lives on threads), message at most 1600 characters. Every one of these failures is returned as HTTP 422; the body carries {message, code} where code is 400 (or 404 for a missing contact), so branch on the body code, not the HTTP status. If the provider rejects the message the response is 422 with the provider's text. If the message is still claimable (another worker owns it) the response is 200 with Queued - it will be sent as soon as its queue worker runs. Replaces POST /sms/subscribers/{id}/send. PRO (FluentCampaign Pro Messaging module).
Required capability: fcrm_read_emails or fcrm_manage_emails — which one applies depends on the action being performed.
Enforced by MessagePolicy::verifyRequest(), the policy default for this route group.
Requires: FluentCampaign Pro with the Messaging module enabled. While no messaging channel (SMS or WhatsApp) is switched on the route is not registered at all and returns a 404.
Authorizations​
WordPress Application Passwords — use Basic auth with your WordPress username and an application password in the format: username:application_password
Parameters​
Path Parameters
Subscriber (contact) ID.
Request Body​
Responses​
SMS sent (or queued).