Send SMS
vonage.send_sms
ActionVoice & SMSconnection required
Calls the Vonage API with the connection's credentials.
Send an SMS through the Vonage SMS API. Vonage splits a long message into parts and reports a status for each one, so the output carries the per-part ids, prices and refusals rather than a single success flag; the step fails only when every part was refused.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- Username & password
- Providers
- Vonage
- Secret shape
- {"api_key": "…", "api_secret": "…"}
- Config it needs
- api_region, from_number
- Resolved by
- config.connection_id, else node.connection_id
Configuration
12 fields, 2 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
to The recipient's phone number in E.164 format, 7 to 15 digits. | string | Yes | — | 7–15 characters | 447700900000 |
text The body of the message the handset will show. | string | Yes | — | — | Your order has shipped. |
from_number The sender shown on the handset — a Vonage number, or an alphanumeric sender id where the destination country allows one. Overrides the connection's default sender. | string | No | — | — | Acme |
message_type How the body is encoded: text for GSM-7, or unicode for non-Latin characters and emoji. Binary SMS is not offered here because it carries its payload in body/udh, not text. | string | No | text | one of "text", "unicode" | — |
ttl How long, in milliseconds, Vonage keeps trying to deliver the message before giving up. | number | No | — | 20000–604800000 | — |
status_report_req Ask Vonage to send a delivery receipt to the account's callback URL once the carrier reports the outcome. | boolean | No | — | — | — |
callback A URL to receive the delivery receipt for this message only, overriding the account-wide one. | string | No | — | ≤ 100 characters; url format | — |
message_class The GSM data-coding class: 0 sends a flash message that is shown but not stored, 1 to 3 store it normally. | number | No | — | 0–3 | — |
client_ref Your own reference for this message, echoed back on the response and the delivery receipt. | string | No | — | ≤ 100 characters | — |
account_ref A sub-account reference for billing, on accounts that have the reference-billing feature enabled. | string | No | — | — | — |
entity_id The registered entity id some regulators require, such as the DLT principal-entity id used in India. | string | No | — | — | — |
content_id The registered template id some regulators require, such as the DLT content template id used in India. | string | No | — | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"from_number": "Acme",
"message_type": "text",
"text": "Your order has shipped.",
"to": "447700900000"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
status 'sent' when Vonage accepted every part of the message, 'partial' when some parts were refused. It never means the handset received it — a delivery receipt reports that later. | string | — |
message_count How many parts Vonage split the message into. | number | — |
sent_count How many of those parts Vonage accepted. | number | — |
failed_count How many of those parts Vonage refused. | number | — |
message_ids The Vonage message id of each accepted part. | array | — |
remaining_balance The account balance Vonage reported after the last accepted part. | string | — |
parts Every part, with its to, message_id, status, status_text, error_text, message_price, remaining_balance, network, client_ref and account_ref. | array | — |
failed_parts Only the parts Vonage refused, so a partial send names the number that was rejected instead of hiding it behind a success. | array | — |
{
"failed_count": 0,
"failed_parts": [],
"message_count": 0,
"message_ids": [],
"parts": [],
"remaining_balance": "",
"sent_count": 0,
"status": ""
}See Send SMS run in a workflow.
In a technical demo we add the Vonage connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.