Skip to main content

Step 1: Create an API key

Sign in to the Pulsewave dashboard and create a key from Settings → API Keys, or create one via the API itself once you have a starter key:
curl -X POST https://api.pulsewave.dev/v1/api-keys \
  -H "Authorization: Bearer pw_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "name": "Quickstart", "mode": "test" }'
Start with a test key (pw_test_...) — it behaves identically to a live key but only delivers to addresses you’ve verified as test recipients, and never bills your account. See Authentication.

Step 2: Install an SDK

npm install pulsewave

Step 3: Send a message

import Pulsewave from 'pulsewave';

const pulsewave = new Pulsewave(process.env.PULSEWAVE_API_KEY);

const message = await pulsewave.messages.send({
  channel: 'email',
  to: 'you@example.com',
  from: 'onboarding@notifications.acme.com',
  subject: 'Hello from Pulsewave',
  html: '<p>This is your first message.</p>',
});

console.log(message.id, message.status);
You’ll get back a message in queued status:
{
  "id": "msg_3p2k9q",
  "object": "message",
  "channel": "email",
  "status": "queued",
  "to": "you@example.com",
  "from": "onboarding@notifications.acme.com",
  "subject": "Hello from Pulsewave",
  "created_at": "2024-06-01T14:32:00Z"
}

Step 4: Track delivery

Poll Retrieve a message with the returned id:
curl https://api.pulsewave.dev/v1/messages/msg_3p2k9q \
  -H "Authorization: Bearer pw_test_..."
Or, better, set up a webhook endpoint once and get delivery, bounce, open, and click events pushed to you automatically — see Webhooks.

Next steps

Use a domain you own

Verify a sending domain for better email deliverability.

Build with templates

Move message content out of your codebase and into reusable templates.

Add SMS and push

Send to other channels with the same endpoint.

Go live

Switch from a test key to a live key when you’re ready.