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.

Confirm your email address before your first send. Click the link in the welcome email WeZend sent when you signed up. Until someone on the account has confirmed, every send is rejected: the message is created with status suppressed and a reason, and it is not queued — confirming afterwards does not deliver it, you send again. One confirmed user covers the whole account, transactional: true does not bypass it, and accounts created before 15 August 2026 are unaffected. Lost the email? Resend it from Settings → Security, or call POST /v1/auth/send-verify-email with { "email": "you@example.com" }; the link is valid for 24 hours.

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
Sending at all, on a new accountConfirm your email address (step 1). Until then every send is suppressed.
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.

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