Xurel Docs

Quickstart

Go from zero to a delivered transactional email in six steps.

1

Create an account

Sign up at dashboard.xurel.co/signup. No credit card required — Free includes 3,000 emails/month.

2

Add and verify your domain

Add your domain in the dashboard, add the DNS records (SPF, DKIM, DMARC), then Verify. Full walkthrough: Domain verification.

3

Create an API key

Dashboard › API Keys › New API key. Copy the key (xrl_prd_…) — it is shown only once.

4

Install an SDK

Node.js
npm install xurel
Python
pip install xurel
Go
go get github.com/xurel/xurel-go
PHP
composer require xurel/xurel-php
5

Send your first email

Node.js
import { Xurel } from 'xurel';

const xurel = new Xurel(process.env.XUREL_API_KEY);

const email = await xurel.emails.send({
  from: 'hello@yourdomain.com',
  to: 'user@example.com',
  subject: 'Hello from Xurel',
  html: '<p>Your first email.</p>',
  type: 'transactional',
});

console.log(email.id); // em_...
Python
import os
import xurel

client = xurel.Client(api_key=os.environ["XUREL_API_KEY"])

email = client.emails.send(
    from_="hello@yourdomain.com",
    to=["user@example.com"],
    subject="Hello from Xurel",
    html="<p>Your first email.</p>",
    type="transactional",
)

print(email["id"])
Go
package main

import (
  "context"
  "fmt"
  "os"

  "github.com/xurel/xurel-go"
)

func main() {
  client := xurel.New(os.Getenv("XUREL_API_KEY"))
  email, err := client.Emails.Send(context.Background(), &xurel.SendParams{
    From:    "hello@yourdomain.com",
    To:      []string{"user@example.com"},
    Subject: "Hello from Xurel",
    HTML:    "<p>Your first email.</p>",
    Type:    "transactional",
  })
  if err != nil {
    panic(err)
  }
  fmt.Println(email.ID)
}
cURL
curl https://api.xurel.co/v1/emails \
  -H "Authorization: Bearer $XUREL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "hello@yourdomain.com",
    "to": ["user@example.com"],
    "subject": "Hello from Xurel",
    "html": "<p>Your first email.</p>",
    "type": "transactional"
  }'
6

Check delivery

The response returns { "id": "em_...", "status": "queued" }. Track status via GET /v1/emails/{id} or webhooks.

Response
{
  "id": "em_a1b2c3d4",
  "status": "queued"
}