canonical: https://jentic.com/apis/nexmo.com/sms

# Nexmo SMS API

Jentic publishes the only available OpenAPI specification for SMS API, keeping it validated and agent-ready. The Vonage SMS API sends one-way SMS messages from a Vonage virtual number or alphanumeric sender ID to mobile recipients in E.164 format, with support for text, Unicode, binary, WAP push, and vCard payloads. A single POST endpoint accepts the message, optional message class, status report request, callback URL, and TTL, and returns delivery status and message reference IDs for each segment. API key and secret are passed as query parameters or form fields per Vonage's documented auth flow.

## For AI agents

Send transactional and notification SMS messages from a Vonage virtual number or alphanumeric sender to E.164 phone numbers worldwide, with optional Unicode, binary, and delivery-receipt support.

## Scope

Does not handle inbound SMS reception, voice calls, or WhatsApp delivery - use for outbound SMS sending only.

## Capabilities

- Send transactional SMS messages from a Vonage virtual number or alphanumeric sender ID to any E.164 mobile number
- Deliver Unicode (UCS-2) text for non-Latin alphabets and emoji-bearing notifications
- Send binary SMS payloads with user data header support for application-to-handset delivery
- Request delivery receipts via the status-report-req flag and receive callbacks at a configured URL
- Set per-message time-to-live to drop SMS that have not been delivered within a freshness window
- Tag outgoing messages with a client reference so downstream callbacks can be correlated to source records

## Use cases

### One-Time Password Delivery

Send numeric or alphanumeric OTP codes to customers during sign-up or step-up authentication. The single POST /{format} endpoint accepts to, from, and text fields and returns a per-segment delivery status. For locales requiring Unicode digits or non-Latin disclaimers, set type=unicode. Use a short time-to-live so codes that fail to deliver are not retried after they have expired in the application layer.

Example prompt: POST /json with to=+15551234567, from=Acme, text='Your code is 482913', and ttl=300000 to send a five-minute OTP and return the message reference

### Operational Alert Notifications

Push deployment, monitoring, or on-call alerts directly to engineer mobile numbers. The SMS API takes the alert text and routes it through Vonage's global carrier network, with delivery receipts callbacks to a webhook so the alerting system can confirm receipt. Alphanumeric sender IDs make alerts identifiable in supported countries, while numeric senders are used where alphanumeric is restricted.

Example prompt: POST /json with to=+447700900123, from=Monitor, text='CPU at 95% on web-03', and status-report-req=1 to send the alert and request a delivery receipt

### Marketing Notification Campaign

Deliver order confirmations, shipping updates, and promotional messages to customers globally. The SMS API supports Unicode for international markets, message-class control for class 0 flash SMS, and client-ref tagging so each send can be reconciled against the source CRM record. Long messages are segmented automatically and the response lists each segment's delivery status.

Example prompt: POST /json with to=+819012345678, from=Shop, type=unicode, text containing the kana confirmation message, and client-ref='order-9821' to send a shipping update

### AI Agent SMS Delivery

Through Jentic, an AI agent sends SMS without storing the Vonage API key or secret. The agent searches Jentic with the intent 'send an SMS message', loads the input schema for POST /{format}, and executes with to, from, and text. Jentic injects the API key and secret as request parameters from your Jentic One instance, so the credentials never enter the agent's prompt context.

Example prompt: Use Jentic search query 'send an SMS message' to load POST /json, then execute with to, from, and text parameters to deliver a notification to a single recipient

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /{format} | Send an SMS in JSON or XML response format |

## Key resources

- **SMS** — Submit outbound SMS messages with text, Unicode, binary, or vCard content

## Why Jentic

- **Setup:** Wiring the Vonage SMS API by hand means passing your api_key and api_secret as request parameters, sending to the rest.nexmo.com host, and building the to, from, and text payload yourself. Through Jentic you install once, import the SMS API from the API Directory, store the key and secret once, and your agent calls it.
- **Permission scoping:** The recipient number travels in the request body, not the URL path, so scope your agent to the operations it needs: this API exposes only outbound message sending, and you decide whether that single send operation is in the allowed set.
- **Credential handling:** Your Vonage api_key and api_secret are stored once, encrypted, by your own Jentic One instance and injected as request parameters at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'send an SMS message' and Jentic returns the POST /{format} operation with its input schema so the agent populates to, from, and text without browsing the reference docs.

## Related APIs

- **Vonage Messages API** — Vonage's multi-channel Messages API sends SMS, MMS, WhatsApp, and Viber from one endpoint.
- **Twilio REST API** — Twilio's Messages resource provides equivalent global SMS sending.
- **Vonage Verify API** — Verify orchestrates OTP delivery and code-checking instead of asking the developer to build it on top of SMS.

## FAQ

### Why is there no official OpenAPI spec for SMS API?

Vonage does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call SMS API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Vonage SMS API use?

The SMS API authenticates with your Vonage API key and API secret passed as api_key and api_secret request parameters on POST /{format}. Jentic stores both in your Jentic One instance and injects them at execution time, so agents never handle the raw secret.

### Can I send Unicode SMS for non-Latin alphabets?

Yes. Set type=unicode on POST /{format} to send UCS-2 encoded text for languages such as Japanese, Arabic, Hindi, or messages containing emoji. Note that Unicode segments hold 70 characters instead of 160, so longer messages will be split into multiple billed parts.

### How do I receive delivery receipts for outbound SMS?

Set status-report-req=1 on the POST /{format} request and configure a delivery receipt callback URL in your Vonage account dashboard. Vonage will POST status updates to that URL once the carrier confirms delivery. Use the message-id field in the response to correlate receipts to the original send.

### Can I send SMS from an alphanumeric sender ID?

Yes - pass an 11-character alphanumeric string in the from parameter on POST /{format}. Some destination countries (including the United States and Canada) require a numeric long code or short code instead, so check the Vonage country support matrix before relying on alphanumeric for global traffic.

### How do I send an SMS through Jentic?

Run pip install jentic, then use the Jentic search query 'send an SMS message' to discover POST /{format}. Load the schema, then execute with to, from, and text - Jentic resolves the api_key and api_secret from the vault. Run it through Jentic One, the self-hosted execution layer.

### Can I limit what my agent is allowed to do with the Vonage SMS API?

Yes. Because you run Jentic One yourself, your own rules decide which operations the agent may call, and this API exposes only a single outbound-send operation (POST /{format}), so you choose whether that one send is in the agent's allowed set. The recipient number, sender, and text travel in the request body rather than the URL, and your Vonage api_key and api_secret stay in your own instance and are injected at execution time, so the agent can send messages without ever holding the raw credentials. If sending SMS is outside the agent's job, you simply leave that operation out of its permitted set.
