Skip to content
WeZend

Getting started

Quickstart: send your first message

Go from zero to a delivered message in about five minutes with the WeZend API.

This guide sends your first message in about five minutes.

1. Get your API key

Sign in to the dashboard, open Settings → API keys, and create a key. It authenticates every request you send and should never be exposed in a browser or mobile app — call it from your own backend.

The confirmation link is what creates your account. POST /v1/auth/signup answers 202 and creates nothing: the account, and its first API key, come into existence when you follow the link WeZend emails you. Sign up with a work email address — personal mailboxes (Gmail, Outlook, Yahoo, Proton) and temporary addresses are rejected — and expect the company fields to be required; POST /v1/auth/signup/lookup-vat fills them from the VAT registry. Lost the link? POST /v1/auth/send-verify-email sends a new one, valid 24 hours. An older account that never confirmed its address cannot send until it does: those messages are created with status suppressed and a reason, not queued.

2. Send a message

curl https://api.wezend.com/v1/messages/send \
  -H "X-API-Key: $WEZEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+4512345678",
    "channel": "sms",
    "message": "Hello from WeZend"
  }'

The example deliberately sends without a sender field, so the message uses your account's default sender — which works on a fresh account as soon as your email address is confirmed. A custom sender (your brand name) must be approved under Settings → Sender IDs first; an unapproved value is rejected with 403.

A successful call returns 201 with the message record:

{
  "message_id": "3fa1e2c0-...",
  "status": "queued",
  "channel": "sms",
  "to": "+4512345678",
  "cost": 0.045,
  "currency": "EUR",
  "created_at": "2026-07-08T10:00:00.000Z"
}

3. Check delivery

Poll GET /v1/messages/:message_id, or — better at any real volume — pass a webhook_url in the send request and receive delivery updates as they happen. See Webhooks.

Before your first real email: verify your domain

The send above goes out under WeZend's shared default sender. To send as your own domain — and to stay out of spam — add it under Settings → Domains first (GET /v1/account/email-domains). WeZend generates the exact records for your account: an SPF include:, a DKIM CNAME under WeZend's own selector, and a recommended DMARC starting at p=none.

Publish the DKIM record under the selector WeZend gives you — not one your mailbox host already uses for its own mail. They are different keys, and only WeZend's selector matches the signature we apply. Then call POST /v1/account/email-domains/:id/verify; the checks object says per record what passed and, if not, why. Keep DMARC at p=none until DKIM verifies, then tighten it. Full walkthrough: Email: domains, DNS & sending.

What needs enabling

Not everything is self-serve, and it's better to know now than to debug it later.

CapabilityWhat it takes
An account and an API key at allFollow the confirmation link from signup (step 1). Signup on its own creates nothing.
Email under your own domainVerify the domain (above). Until then, the shared default sender is used.
SMS, RCS, WhatsApp, voiceA sender ID and routing, provisioned with you during onboarding — not self-serve.
Inbound email (replies to a campaign)Enabled per reply-subdomain during onboarding.
AI subject lines and rewritesOn every plan. Degrades gracefully if the AI backend is unavailable.
AI Email Writer, Performance CoachPaid add-ons — enable them in Billing.
Predictive scores (churn, CLV, propensity)Business and above. Heuristic scores work immediately; no training data needed.

You don't need a list to see it work. The dashboard's first step sends one real message to the address you confirmed at signup — one click, no import, no contacts. It goes through the ordinary send path (POST /v1/onboarding/send-test), so it is quota-counted, routed, billed and on the timeline exactly like production traffic: what you see is what a customer would get, not a simulation. Importing contacts can wait until after something has visibly worked — which is the order that turns out to matter, because whoever sends at all sends within hours of signing up.

Next steps

Build the request

Fill in the fields you need and copy the request in cURL, Node, Python or PHP — this builds the code, it does not send anything.

On SMS and RCS this must be a sender ID approved under Settings → Sender IDs — an unapproved value is rejected with 403. Leave it empty to use your account default, which always works.

Empty fields are left out of the request. Email-only fields appear when the channel is email.

curl https://api.wezend.com/v1/messages/send \
  -H "X-API-Key: $WEZEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+4512345678",
    "channel": "sms",
    "message": "Hello from WeZend"
  }'

One platform. Every customer interaction.

Replace your patchwork of messaging APIs, CDP and automation tools with a single engagement platform built for scale.

No credit card required · EU data residency · 99.99% uptime SLA