Developer docs

A clean REST API with an OpenAPI spec and official SDKs. Grab an API key in the console (Developers), then send your first email.

Quickstart (cURL)

POST /v1/send
curl -X POST https://api.aryasend.com/v1/send \
  -H "Authorization: Bearer $ARYASEND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from_email": "hello@yourdomain.com",
    "to": "someone@example.com",
    "subject": "Hello from AryaSend",
    "text": "It works."
  }'

Official SDKs

Six languages, all thin and dependency-light.

Nodenpm install @aryasend/sdk
Pythonpip install aryasend
Rubygem install aryasend
PHPcomposer require aryasend/sdk
Gogo get github.com/rackset/aryasend-go
Elixir{:aryasend, "~> 1.0"}
Node.js
npm install @aryasend/sdk

import { AryaSend } from "@aryasend/sdk";
const arya = new AryaSend(process.env.ARYASEND_API_KEY);
await arya.send({ from: "hi@you.com", to: "a@b.com", subject: "Hi", text: "Yo" });
Python
pip install aryasend

from aryasend import AryaSend
arya = AryaSend(os.environ["ARYASEND_API_KEY"])
arya.send(from_email="hi@you.com", to="a@b.com", subject="Hi", text="Yo")

Core endpoints

POST/v1/sendSend a message
GET/v1/messages/List messages
GET/v1/messages/{id}/Message status + events
POST/v1/contactsUpsert a contact
POST/v1/contacts/batchBulk upsert (≤2000)
POST/v1/eventsTrack an event (automations + revenue)
POST/v1/domains/Add a sending domain (returns DNS)
POST/v1/suppressions/Suppress an address

Full reference: OpenAPI spec →

Verify webhooks

X-AryaSend-Signature (HMAC-SHA256)
// Verify the HMAC-SHA256 signature on every webhook (Node)
import crypto from "crypto";
const sig = req.headers["x-aryasend-signature"];        // "sha256=…"
const expected = "sha256=" + crypto.createHmac("sha256", WEBHOOK_SECRET)
  .update(rawBody).digest("hex");
if (sig !== expected) return res.status(401).end();

Guides

Ready to build?
Get your API key