Illustration of a terminal showing a curl request to the API and the JSON response with a wa.me link

We launched a free API for generating WhatsApp links

July 5, 2026

What we just shipped

Starting today, everything WhatsUsernames.link does on the website is also available as an API: generate WhatsApp links from usernames or phone numbers, validate inputs, and create customized QR codes — all through plain HTTP GET requests.

Three decisions define this API:

  • No API key and no signup. You call the endpoint and get the response. No dashboards, tokens, or confirmation emails.
  • Free, with rate limits generous enough for normal use.
  • CORS enabled on every endpoint — you can call it straight from the browser, on a static site, with no backend.

Full documentation lives at whatsusernames.link/developers, and there is a machine-readable OpenAPI 3.1 specification — handy for generating clients automatically or giving context to AI assistants.

The seven endpoints

EndpointWhat it does
GET /api/v1/username-linkWhatsApp link + short link from a username
GET /api/v1/phone-linkOfficial wa.me link from a phone number
GET /api/v1/validate/usernameValidates the structure of a username
GET /api/v1/validate/keyValidates a Username Key (4-8 letters/numbers)
GET /api/v1/validate/phoneValidates an international phone number
GET /api/v1/qrQR code (PNG or SVG) with custom size and colors
GET /api/v1/openapi.jsonThe API's own OpenAPI 3.1 specification

Quick examples

Generate a link from a username, with curl:

curl "https://whatsusernames.link/api/v1/username-link?username=joao.silva"

Response:

{
  "username": "joao.silva",
  "link": "https://wa.me/joao.silva",
  "shortLink": "https://whatsusernames.link/joao.silva",
  "notice": "As of 2026-07-04, wa.me/<username> links do not yet open a chat for most accounts..."
}

From the browser or Node.js, no library needed:

const res = await fetch(
  "https://whatsusernames.link/api/v1/phone-link?phone=351912345678&text=hello"
);
const data = await res.json();
console.log(data.link); // https://wa.me/351912345678?text=hello

A WhatsApp-green QR code as SVG, ready to drop into a page:

https://whatsusernames.link/api/v1/qr?username=joao.silva&format=svg&color=25d366

Rate limits and errors

Limits are per IP: 60 requests per minute on JSON endpoints and 20 per minute on the QR endpoint. Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers; exceeding the limit returns HTTP 429 with Retry-After. Identical requests are served from the CDN cache and don't count against the limit.

Errors are always JSON with a stable, machine-readable code:

{
  "error": {
    "code": "username_length",
    "message": "Username must be 3-35 characters."
  }
}

Error codes never change within v1 — you can safely build logic on top of them.

An honest note about username links

As we explained in another article, wa.me/username links don't open a chat for most accounts yet — WhatsApp's username rollout is phased and regional. That's why the username-link endpoint's response always includes a notice field with the current status, so your application (or your user) is never caught off guard.

Phone-number links (wa.me/<number>) are officially documented and work for everyone, today.

What it's useful for in practice

  • Websites and landing pages that generate the contact link dynamically, with no backend.
  • Internal tools and CRMs that validate numbers before creating outreach campaigns.
  • Print-material generators that need SVG QR codes in brand colors.
  • Bots and automations (n8n, Zapier, scripts) that build WhatsApp links on the fly.
  • AI assistants — point an agent at the OpenAPI spec and it knows how to generate correct WhatsApp links.

Start at whatsusernames.link/developers. If you build something with the API, we'd love to hear about it.

Got your WhatsApp link ready?

Create my link
We launched a free API for generating WhatsApp links