Alternativesvs UltraMsg

An UltraMsg alternative with a residential proxy on every number

UltraMsg next to wuapi: the per-instance price, send delays, groups, webhook checks and retries, and how instances and settings map if you move.

wuapiAlternativeschecked 27 September 20265 min read
Two webhook requests: UltraMsg's carries a unique hash id and no documented signature, wuapi's carries Wuapi-Signature with the body and time verified, and wuapi's number exits through a sticky residential proxy.[ULTRAMSG]POST /your-webhookhash: <unique id>no signature documentedEXITnot documented[WUAPI]POST /your-webhookWuapi-Signature:t=1727445731,v1=5f2c...body and time verifiedEXITresidential, sticky, co/bogota[ALTERNATIVES]RETRIES 30S 2M 10M 1H 6H

UltraMsg is a hosted WhatsApp API from the UAE that links a number to an instance by QR code, the same linked-device model wuapi uses. It is simple to start with: one price per number, one token, one endpoint per message type. This page puts it next to wuapi on the parts that decide a long-running integration.

Pros and cons
wuapi
Advantages
  • Advantage: $6 a month for the first number, against $39 an instance.
  • Advantage: A residential exit per number in the country you choose.
  • Advantage: Signed webhooks with a published schedule: 30s, 2m, 10m, 1h, 6h.
  • Advantage: Create groups and manage participants through the API.
Disadvantages
  • Disadvantage: Proxy traffic is metered past 0.5 GB a month per number.
  • Disadvantage: No annual plan: billing is monthly, per number.
  • Disadvantage: One official SDK, for TypeScript.
UltraMsg
Advantages
  • Advantage: One price per instance, with nothing metered.
  • Advantage: A plain token and one endpoint per message type.
  • Advantage: Messages wait in a queue while an instance is disconnected.
  • Advantage: Examples in many languages, and PHP and Node.js libraries.
Disadvantages
  • Disadvantage: $39 a month per number.
  • Disadvantage: The trial lasts 3 days, at 100 messages a day.
  • Disadvantage: No webhook signature or shared secret is documented.
  • Disadvantage: Groups are created and filled from the phone, per its FAQ.

#What UltraMsg is

You sign up, create an instance, scan its QR code from the phone, and send with:

POST https://api.ultramsg.com/{instance_id}/messages/chat

with token, to and body as parameters. The token travels as a parameter rather than a header. If the instance is not connected, the message waits in a queue and goes out when it is, and a message still unsent after 24 hours expires. Logs are kept for 60 days.

It covers text, images, documents, audio, voice notes, video up to 32 MB, stickers, locations, contacts and reactions, and it can send to groups and read them. Its FAQ says creating a group and adding members has to be done from the phone.

UltraMsg also documents two send delays per instance: a delay between messages, 1 second by default, and a longer one, 15 seconds by default, that applies once 10 or more messages are waiting. Its FAQ suggests sending no more than 6 to 12 messages a minute when you start.

#What it costs

From the UltraMsg site, in US dollars:

  • Monthly is $39 per instance, valid for 30 days, with no charge per message.
  • Annual is $390 per instance for 365 days.
  • Trial is a free account for 3 days, with 100 messages a day and every feature on.

One instance is one number, and an account can hold as many instances as you pay for.

#What wuapi costs

$6 for the first number, $4.50 for each from the second to the fiftieth, and $3.50 from the fifty-first, with no charge per message. Every paid number includes a residential proxy and 0.5 GB of its traffic a month, pooled across the organization; past that, $0.99 per GB.

The Free plan has no time limit: 1 number, 2,000 messages a month counting sent and received, and 0.5 GB of proxy traffic, with no card. When a limit is reached the number pauses until the month turns or you upgrade.

#A month at three sizes

On list prices, before any proxy traffic past the included pool on wuapi:

numbersUltraMsg monthlywuapi
1$39$6
5$195$24
10$390$46.50

The wuapi figure includes a residential proxy on every number, with 0.5 GB of its traffic a month per number pooled across the organization, so ten numbers share 5 GB. Text barely touches that. Photos, voice notes and video use more, and anything past the pool is $0.99 per GB, shown in the dashboard as it accrues and capped by a monthly spend limit you set.

UltraMsg's annual price works out to ten months for twelve. wuapi has no annual plan; it bills monthly for the exact number of linked numbers, prorated when you add one mid-month.

#The differences that matter

#The network exit

We did not find a residential proxy per instance, or a way to choose where an instance connects from, in UltraMsg's docs. On wuapi you pick a country and city for each number from 134 countries, the number keeps a sticky residential exit there, and if the proxy is down the number waits offline and never falls back to a datacenter address. Why WhatsApp bans numbers explains why a stable exit matters.

#Webhooks you can verify

UltraMsg added webhook retries in 2024 and a hash field that gives each webhook a unique id. Its docs do not describe a signature or a shared secret, so your server cannot prove a request came from UltraMsg.

wuapi signs each delivery with Wuapi-Signature: t=<unix>,v1=<hex>, an HMAC-SHA256 of the timestamp and the raw body. A failed delivery is retried at 30s, 2m, 10m, 1h and 6h, six attempts, and every attempt is in the dashboard for 30 days with a resend button. The signature check takes a few lines.

#Pacing

UltraMsg's two delays apply to the whole instance. wuapi splits the controls: a per-minute cap, a separate lower cap for people who never wrote to the number, and a typing indicator before each message, sized to its length. They are off by default so a reply is never held, and we recommend 12 a minute and 5 to new contacts for sending that starts with you. The guide covers when to turn them on.

#Groups

A wuapi number can create groups, add, remove, promote and demote participants, manage invite links and join requests, and post, all from the API. If your product runs groups for customers, that removes the trip to the phone.

#Safe retries and a typed contract

An Idempotency-Key on any wuapi POST is remembered for 24 hours, so a retried send never goes out twice. The API is described in an OpenAPI 3.1 file, wrapped by the @wuapidev/sdk TypeScript package, and exposed to agents through an MCP server. UltraMsg publishes code examples in many languages and PHP and Node.js libraries.

#When a number drops

Linked numbers lose their connection and get it back by themselves several times a day, usually in seconds. UltraMsg queues messages while an instance is disconnected. wuapi does the same and goes a step further on the edges: a send made during a drop is retried with the same WhatsApp message id, so it cannot arrive twice, and account.disconnected only fires if the number is still down after a 20 second grace, so your alerting is not woken by every blip.

When a drop is final, because the phone logged the device out or WhatsApp restricted the number, the engine stops trying and reports it at once. The dashboard can email you, and post to Slack, when a number stays offline past a threshold you set, 10 minutes by default.

#Who should stay on UltraMsg

If your integration sends text to people who wrote to you, runs one or two numbers, and already works, there is no urgent reason to move. UltraMsg's single price with nothing metered is easy to budget, and its queue holds messages while an instance reconnects.

The reasons to move are specific. You want the network exit handled in each number's own country. You need to prove a webhook came from your provider. You manage groups for customers and do not want to reach for the phone. Or your number count is growing and the per-number price has started to matter. If none of those is true today, bookmark this page for the day one of them is.

#Side by side

UltraMsgwuapi
modellinked device, hostedlinked device, hosted
price per number$39 a month, $390 a year$6 first, $4.50 each to 50, $3.50 after
per-message feesnonenone
free option3 day trial, 100 messages a dayFree plan: 1 number, 2,000 messages a month
residential proxy per numbernot documentedincluded, sticky, 0.5 GB a month per number
pacingtwo delays per instanceper-minute cap, first-contact cap, typing, opt-in
create groups and add members by APIfrom the phone only, per its FAQyes
signed webhooksnot documentedHMAC-SHA256 over timestamp and raw body
webhook retriesyes, schedule not published30s, 2m, 10m, 1h, 6h
idempotent sendsnot documentedIdempotency-Key, 24 hours
authtoken as a parameterbearer key in a header
SDKs and specPHP and Node.js libraries, examplesOpenAPI 3.1, TypeScript SDK
MCP servernone official foundlocal and hosted

#Moving from UltraMsg

UltraMsgwuapi
instanceaccount
instance_id in the path, token as a parameteraccountId in the body, key in Authorization
/{instance_id}/messages/chat with to, bodyPOST /v1/messages with accountId, to, text
/{instance_id}/instance/settings with webhook_urlPOST /v1/webhook-endpoints
webhook_message_receivedmessage.received event
webhook_message_ackmessage.delivered, message.read events
sendDelay, sendDelayMaxpacing.messagesPerMinute, pacing.firstContactPerMinute
// UltraMsg
await fetch(`https://api.ultramsg.com/${INSTANCE_ID}/messages/chat`, {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({ token: ULTRAMSG_TOKEN, to: "+971501234567", body: "Your parcel is on its way." }),
})

// wuapi
await wuapi.messages.send({ accountId, to: "+971501234567", text: "Your parcel is on its way." })

To plan:

  1. Relink each number. Unlink it from UltraMsg on the phone, then link it to wuapi with a QR code or a pairing code. The number does not change.
  2. Verify deliveries. Add the signature check from the docs to your webhook handler and treat each event id as unique.
  3. Set pacing where you had delays. If you relied on UltraMsg's delays for outbound campaigns, turn on the caps and typing on the accounts that send them.

#Questions people ask

How much does UltraMsg cost?

On the day we checked, $39 a month per instance, or $390 a year, with no charge per message and a free 3 day trial limited to 100 messages a day. One instance is one WhatsApp number.

Does UltraMsg sign its webhooks?

Its docs describe retries and a hash that gives each webhook a unique id, but no signature or shared secret. wuapi signs every delivery with an HMAC-SHA256 over the timestamp and the raw body, so you can check who sent it and when.

Can I create WhatsApp groups with UltraMsg's API?

Its FAQ says creating a group and adding members must be done from the phone. On wuapi a linked number can create groups, add and remove participants, and manage invite links through the API.

Is wuapi cheaper than UltraMsg?

On list price, yes: $6 a month for one number against $39, and less per number as you add more. Proxy traffic past 0.5 GB a month per number costs $0.99 per GB on wuapi.

Will moving to wuapi change my number?

No. You unlink the number from UltraMsg and link the same number to wuapi with a QR code or a pairing code. It keeps working in the WhatsApp app on the phone throughout.

wuapi is an independent service. It is not affiliated with, endorsed or sponsored by WhatsApp. WhatsApp is a trademark of its respective owner.

03/What to read next

Try it

Link a number and send your first message.

One REST call, a typed SDK, and webhooks signed with HMAC-SHA256 over the raw body. No per-message fees.

The whole API is in the docs, and the docs are in one file if you are handing the work to a coding agent.

All alternatives · openapi.json