A2P SMS, without the busywork

Message delivery
you can build on.

Send OTPs, notifications, and campaigns through one dependable API—with clear delivery states from acceptance to final receipt.

Typed Node & Python SDKs Safe retries with idempotency Delivery webhooks
schedule-message.ts
import { EcoWave } from "@ecowave/node";

const ecowave = new EcoWave({
  apiKey: process.env.ECOWAVE_API_KEY!,
  organizationId: process.env.ECOWAVE_ORG_ID!,
});

const schedule = await ecowave.messages.schedule({
  to: "+251911234567",
  from: "EcoWave",
  text: "Your appointment is tomorrow.",
  scheduleType: "once",
  startsAt: new Date("2026-09-03T09:00:00Z"),
});

console.log(schedule.nextRunAt);
The platform

Messaging that fits
your product.

EcoWave gives your team one reliable place to send, coordinate, and understand every SMS.

Explore the developer docs
01

Send with intent

Start a verification, notification, or campaign from the same dependable API.

Transactional sendsContacts and campaigns
02

Orchestrate the timing

Use templates, schedules, and safe retries to make the right message arrive at the right moment.

One-time and recurring schedulesIdempotent requests
03

See every outcome

Follow delivery as it progresses and use the data to improve the next send.

Delivery events and webhooksAnalytics and exports
Built for steady delivery

Reliable by design,
not by accident.

Every message is recorded before it moves, handled by the right worker, and kept within the delivery limits that protect your traffic.

  • Workloads stay separateTransactional, scheduled, bulk, and delivery work do not compete.
  • Throughput stays controlledShared rate limits help keep carrier traffic predictable.
  • State is ready to recoverPersistent records and queues support safe retries.
Message pathAccepted → Delivered
Your app
EcoWave API
Message queue
Mobile network
AcceptedSentDelivered
Ship the message, not the plumbing

Start building with EcoWave.

Create an organization, generate an API key, and send your first SMS in minutes.