العربيةGet API Access
Get API Access →العربية
Skip to content
Scale Developer Platform

The WhatsApp API for the software you build

Send one-time codes, notifications and conversations from your customers' own WhatsApp numbers — every customer and every number under one API key, with signed webhooks for everything that comes back.

  • Official Meta Embedded Signup
  • No Scale per-message fee
  • English and Arabic docs
Send a one-time codeHTTP
POST /wp-json/scale/v1/messages
Authorization: Bearer sk_live_…
Idempotency-Key: login-attempt-7731
Content-Type: application/json

{
  "number_id": "num_XXXX",
  "to": "201012345678",
  "type": "template",
  "template": {
    "name": "otp_code",
    "language": "en_US",
    "components": [
      {
        "type": "body",
        "parameters": [{ "type": "text", "text": "482913" }]
      },
      {
        "type": "button",
        "sub_type": "url",
        "index": "0",
        "parameters": [{ "type": "text", "text": "482913" }]
      }
    ]
  }
}
Who it is for

For developers — a different product from Scale AI

Scale AI answers a business's own customers with an AI agent. The Developer Platform is for teams who build their own product and need WhatsApp inside it.

Scale Developer Platform
  • A REST API and webhooks — your code decides every message
  • Many customers, each with their own WhatsApp numbers
  • Transport only: no AI ever replies on a customer's number
  • A flat subscription, no Scale per-message fee
Scale AI
  • An AI agent that answers WhatsApp, Instagram and Messenger
  • A shared inbox and CRM for your own team
  • Campaigns, follow-ups and Meta ad conversions
  • One plan with unlimited platform messages; AI on prepaid AI Credits

Looking for the AI agent for your own business?

Use cases

What teams build with it

Anything your software needs to say on WhatsApp — sent from the right business's number, followed to delivery.

OTP and verification

Send sign-in and verification codes with an approved authentication template, then follow delivery on your webhook.

Transactional notifications

Order confirmations, shipping updates, booking reminders and receipts — triggered by events in your system.

Custom alerts and messages

Text, images, video, audio, documents and templates, to anyone who has written to the number in the last 24 hours or with an approved template.

API automation

Idempotent sends, cursor pagination, usage counts and signed events — built to run from jobs and queues.

Inside your SaaS, CRM, website or app

Add WhatsApp to the product your customers already use, under your own interface.

Many customers, one integration

Agencies and platforms connect each client's number once and send for all of them through one key.

How it works

From sign-up to the first message

You create the account and write the code; each business connects its own number through Meta.

  1. 1

    Create your Developer account

    Sign up and verify your email. Your account starts in setup mode: the API key, webhooks, customers, your two included numbers, templates and tests work straight away; real messages are sent once the first payment is confirmed.

  2. 2

    Add a customer

    One customer per business you serve — from the dashboard or POST /customers — with your own reference stored next to it.

  3. 3

    The business connects its number

    Create an onboarding link and send it. It opens Scale's hosted page running Meta's official Embedded Signup: the business signs in to Facebook, picks or creates its WhatsApp Business Account and verifies the number.

  4. 4

    Send and receive

    Call POST /messages from the connected number_id. Replies and delivery statuses arrive on your webhook, signed.

One key, many customers

Built for products with many customers

One API key reaches every customer and number on your account — and nothing on anyone else's.

One API key

Issued, rotated and revoked in your dashboard. Scale stores only its SHA-256 and shows it once.

Stable ids

Scale's own ids never change and are never reused — store them next to your records.

Customer isolation

Every customer, number, message and link belongs to exactly one Developer account. Another account's id answers 404, like one that does not exist.

Several numbers per customer

A customer can connect more than one number, all on its own WhatsApp Business Account. Your subscription includes two numbers for the whole account; each one more is an additional-number subscription.

The ids you store
dev_…
Your Developer account
ws_…
A customer — one business you serve
num_…
One of a customer's WhatsApp numbers
msg_…
A message you sent
onb_…
An onboarding link
evt_…
A webhook event
Webhooks

Webhooks for everything that comes back

One HTTPS endpoint receives the events of all your customers and numbers.

  • message.receivedSomeone wrote to one of your numbers
  • message.sentWhatsApp accepted a message
  • message.deliveredDelivered to the phone
  • message.readRead by the recipient
  • message.failedCould not be delivered — with the reason
  • number.connectedA customer connected a number
  • number.disconnectedA number stopped routing
  • onboarding.completedAn onboarding link finished
  • onboarding.failedAn onboarding link failed
  • Signed with HMAC-SHA256 over the timestamp and the raw body
  • Retried for up to 8 attempts, over about four hours
  • At least once: deduplicate on the event id
  • The endpoint is set in your dashboard — a leaked API key cannot redirect it
The API

A small, predictable REST API

JSON in, JSON out, one envelope for every answer and a stable code for every error.

Authentication

Send your key in the Authorization header on every request. A key in the URL is refused.

Authorization: Bearer sk_live_…

Errors you can branch on

Every failure carries an HTTP status, a stable code, a readable message and a request_id to quote to support.

  • 403 SUBSCRIPTION_INACTIVESetup mode: sending opens with your first payment
  • 422 OUTSIDE_MESSAGING_WINDOWSend an approved template instead
  • 429 RATE_LIMITEDWait Retry-After seconds

In the docs

Send a messagecURL
curl -X POST https://getscale.me/wp-json/scale/v1/messages \
  -H "Authorization: Bearer $SCALE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1001-shipped" \
  -d '{"number_id":"num_XXXX","to":"201012345678","type":"text","text":{"body":"Your order 1001 has shipped."}}'
The answerJSON
{
  "success": true,
  "message": {
    "id": "msg_…",
    "wamid": "wamid.…",
    "status": "accepted",
    "type": "text",
    "to": "201012345678",
    "created_at": "2026-11-10T12:00:00Z",
    "number_id": "num_XXXX",
    "customer_id": "ws_…",
    "phone_number_id": "1234567890"
  },
  "replayed": false
}
SUBSCRIPTION_INACTIVE · 403JSON
{
  "success": false,
  "error": {
    "code": "SUBSCRIPTION_INACTIVE",
    "message": "Your account is in setup mode: keys, webhooks, numbers and templates can be configured and tested, but real messages are sent only once your Scale Developer subscription is active. Test with POST /test/messages and POST /test/webhook.",
    "details": {
      "status": "pending_payment",
      "mode": "setup",
      "grace_ends_at": null,
      "migration": null
    }
  },
  "request_id": "req_…"
}
Pricing

One flat subscription

For the whole account — every customer, with two WhatsApp numbers included.

Monthly
EGP 1,200/ month
Start monthly
Annual
EGP 12,000/ year
Start yearly
  • No Scale per-message fee — usage is counted, never charged
  • No message credits deducted
  • Two WhatsApp numbers included; no Scale limit on customers or messages
  • API, webhooks, dashboard and both languages of the docs

Each additional WhatsApp number: EGP 300 a month or EGP 3,000 a year, its own subscription, added from your dashboard (Billing) — for example 3 numbers on the monthly plan come to EGP 1,500 a month.

WhatsApp's own conversation charges are Meta's, billed to each business under its own WhatsApp Business account arrangement. Scale adds nothing on top.

When you pay

  1. 1Sign up, create your API key, set your webhooks, add customers, connect your two included numbers, write templates and test your integration — all before paying.
  2. 2Real messages are sent once your first payment is confirmed — until then the API answers 403 SUBSCRIPTION_INACTIVE (mode setup), and buying an additional number 402 PAYMENT_REQUIRED. You pay by InstaPay at checkout, and a person at Scale verifies each transfer before anything is activated; your dashboard shows each payment as awaiting review, approved or not verified.
  3. 3If a renewal is missed, everything keeps working for 3 calendar days; after that, sending pauses until you renew. Incoming messages keep reaching your webhook for 14 more days — time to renew or move your numbers — and are still stored after that. Nothing is deleted.
Questions

Questions developers ask

Is this the same as Scale AI?

No. Scale AI is an AI agent and CRM a business uses for its own customers. The Developer Platform is an API for your software: Scale's AI never replies on, or acts on, a Developer customer's number.

Does Scale charge per message?

No. You pay the flat subscription only; Scale counts your usage but charges nothing per message and deducts no credits. WhatsApp's own conversation charges are Meta's and follow each business's billing with Meta.

Whose WhatsApp number sends the messages?

Your customer's. Each business connects its own number to its own WhatsApp Business Account through Meta's Embedded Signup on Scale's hosted page; you never handle its Meta password or token.

Can I add customers before paying?

Yes — your account starts in setup mode. Create your API key and webhooks, add customers, connect your two included numbers, write templates and test with POST /test/webhook and POST /test/messages before paying. What waits for your first confirmed payment is sending real messages (403 SUBSCRIPTION_INACTIVE, mode setup, until then) and buying additional numbers (402 PAYMENT_REQUIRED).

How do I pay?

By InstaPay, at checkout: transfer the exact amount shown, then upload the transfer receipt with the number you sent it from and the reference. A person at Scale verifies each transfer, and nothing is activated until then. Your dashboard (Billing → Payments) shows each payment as awaiting review, approved or not verified — with the reason and what to do next.

What happens if my subscription lapses?

Sending keeps working for 3 calendar days after the paid period. After that every send answers 403 SUBSCRIPTION_INACTIVE, with the deadline in details.migration: for 14 days incoming messages keep reaching your webhook (time to renew or move your numbers); after that they are still stored but no longer forwarded. Read routes keep working, nothing is deleted, and renewing restores everything with the same ids.

What happens if I delete my Developer account?

You confirm the deletion from a link sent to your account's email. For the next 14 days the account is receive-only — incoming messages keep reaching your webhook, while sending, new customers and new onboarding links are refused (403 ACCOUNT_RECEIVE_ONLY) — so you can move your customers' numbers; Scale does not transfer them. You can cancel until then. After the 14 days your data is erased; billing records are kept as tax law requires.

Which message types can I send?

Text, image, video, audio, document and approved templates. Free-form messages go to people who wrote to that number in the last 24 hours; outside that window, send an approved template.

How many WhatsApp numbers can I connect?

Two are included in your subscription, across all your customers. Each further number is an additional-number subscription you add from your dashboard; Scale may also agree a maximum for your account. If an additional number's subscription ends, that number stays connected and keeps receiving, but cannot send until you renew.

Build WhatsApp into your product

Create your Developer account, read the docs in English or Arabic, and send your first message today.

Create a Developer account