Skip to content

Introduction ​

The ACE SEND API lets your systems — a CRM, a game platform, a payment backend — send WhatsApp and SMS messages through ACE SEND, follow their delivery and keep the contacts of your account up to date.

Everything you do in the API belongs to your account in the console: the balance that pays for messages, the templates your team created, the contacts and the stop lists.

What you can do ​

TaskHow
Send a WhatsApp or SMS messagePOST /v1/messages with a template of your account
Send a one-time code or an own SMS textPOST /v1/messages with channel: "sms" and text — when your account allows own texts
Know what happened to a messagewebhooks, or GET /v1/messages/{id}
Find messages by your own id, number or statusGET /v1/messages
See which templates you can sendGET /v1/templates
Keep contacts and their fields in sync for campaignsPOST /v1/contacts

Campaigns, template editing and moderation, contact imports, reports and billing stay in the console.

The basics ​

  • Base URL: https://api.ace-send.com/v1. HTTPS only.
  • Authentication: every request carries an API key: Authorization: Bearer ak_live_…. See Authentication.
  • Test and live: a test key (ak_test_…) sends through a free sandbox that never reaches a phone. Build and test your integration with it, then switch the key.
  • JSON: send Content-Type: application/json; answers are JSON. Errors are application/problem+json with a stable machine-readable code — see Errors.
  • Asynchronous delivery: POST /v1/messages answers 202 Accepted once the message is queued. Its statuses come later, as webhooks.

Conventions ​

WhatFormatExample
Phone numbersE.164: +, country code, number — no spaces or dashes+5521998120937
Idsa type prefix and a random part; treat them as opaque strings up to 64 charactersmsg_CgdWeHQN4sPaZnXfh7kP5
TimestampsISO 8601 in UTC, seconds precision2026-11-02T12:00:04+00:00
Moneyan object with a decimal string (6 digits after the point) and an ISO 4217 currency{"amount": "0.062500", "currency": "USD"}
CountriesISO 3166-1 alpha-2BR
Template languagesas in the template: en, pt, pt_BR…pt

Id prefixes: msg_ message, cnt_ contact, cmp_ campaign, whd_ webhook delivery, whe_ webhook address.

Languages of texts. Error titles, field messages and failure texts follow the Accept-Language header: English (default), Portuguese, Spanish, Turkish or Russian. Codes never change with the language — build your logic on codes, show titles to people. Webhooks are always in English.

Compatibility. Within v1 we add things without notice: new fields in answers and webhook bodies, new endpoints, new optional request fields, new webhook events, error codes, failure codes and enum values. Ignore what you do not know rather than failing on it. Removing or renaming a field, or changing its meaning, would be a new version. See the changelog.

Machine-readable spec ​

The whole API is described in OpenAPI 3.1, examples and webhooks included: https://docs.ace-send.com/openapi.json. Import it into Postman, Insomnia or a client generator.

ACE SEND API v1