curl + any HTTP client
The API is standard REST JSON. Any language that can make HTTP calls can consume it.
REST over JSON, JWT authentication, 11 modules, more than 100 documented endpoints. Connect arrobaMail to your stack in minutes.
The Free Plan works as a sandbox: a real account with all features, API and MCP included, no card required.
# 1. Get your JWT token
curl -X POST https://envios.arrobamail.com/v3/api/auth/getToken \
-H "Content-Type: application/json" \
-d '{"username":"youraccount","pass":"***"}'
# 2. List active campaigns
curl https://envios.arrobamail.com/v3/api/campaigns?status=active \
-H "Authorization: Bearer eyJhbGciOi..."
# 3. Launch a campaign to your lists
curl -X POST https://envios.arrobamail.com/v3/api/campaigns \
-H "Authorization: Bearer eyJhbGciOi..." \
-d '{"camp_name":"April promo","asunto":"Your promo is here","html":"<h1>Hi</h1>","from_name":"Your company","from_mail":"[email protected]","list_id":["1A2B3C"]}'No SDK or proprietary libraries needed: REST over JSON from your stack. Pick your language and follow the three steps.
With your username and password, POST /auth/getToken returns a Bearer token you'll use for the rest of your calls. Supports rememberMe so it lasts up to 365 days.
curl -X POST https://envios.arrobamail.com/v3/api/auth/getToken \
-H "Content-Type: application/json" \
-d '{"username":"tucuenta","pass":"***"}'
# 200 OK
# { "token": "eyJhbGciOi..." }The sender (from) must be verified before sending. When you create it, arrobaMail runs DNS checks (SPF/DKIM) unless it's a free email address.
curl -X POST https://envios.arrobamail.com/v3/api/senders \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"from_name":"Tu empresa","from_mail":"[email protected]"}'
# 200 OK
# { "status": "ok", "spf": true, "dkim": true }A single POST call with the name, subject, HTML, sender, and list queues the send. Add track_reads and track_links to measure opens and clicks.
curl -X POST https://envios.arrobamail.com/v3/api/campaigns \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"camp_name": "Promo abril",
"asunto": "Llegó la promo",
"html": "<h1>Hola</h1>",
"from_mail": "[email protected]",
"list_id": ["1A2B3C"]
}'
# 200 OK → { "ok": true }Full coverage of the platform. Tap a module to see its reference: endpoints, parameters, responses, and examples in curl, Node, PHP, and Python.
JWT Bearer Token, rate limiting by IP and username, multi-language support (es/en), and rememberMe for 365-day sessions.
Create, schedule, and send campaigns. Custom HTML, visual editor, templates, and tracking of opens, clicks, conversions, and bounces.
Lists, CSV/Excel import, custom fields, double opt-in, cleanup tools, and management of unsubscribes and bounces.
Segmentation V2 with advanced condition groups, behavior-based segmentation (opens, clicks), and custom field segmentation.
Admin / Reseller / User roles. Sub-account management, reseller hierarchy, public endpoint for demo signup.
Sender verification, with configurable from name, from email, and reply_to per sender.
Reusable templates, with import and export between accounts.
Consolidated metrics for the authenticated user: sends, opens, clicks, and bounces.
Cross-cutting search across campaigns, lists, and contacts.
Public endpoints (no auth) for subscriber self-service. Usable in forms embedded on external sites.
Automated flows with nodes and edges. Event-based triggers, chainable actions, and configurable delays.
Looking for something specific? Explore the full reference with an endpoint search.
You configure a URL for your app and we send HTTP POSTs with events as they happen: a campaign finished, a contact opened, an email bounced, someone unsubscribed, an automation flow triggered.
Receiving endpoint
POST https://tudominio.com/webhooks/arrobamailcampaign.sentPOST{ "campaign_id": 9821, "sent_at": "2026-05-26T14:32:00Z", "recipients": 8420 }A campaign finished sending.
contact.openPOST{ "campaign_id": 9821, "contact_id": 555012, "opened_at": "..." }A contact opened an email.
contact.bouncePOST{ "contact_id": 555013, "type": "hard", "reason": "user_not_found" }An email bounced.
contact.complaintPOST{ "contact_id": 555014, "campaign_id": 9821 }A recipient reported spam.
contact.unsubscribePOST{ "contact_id": 555015, "list_id": 1234 }A contact unsubscribed.
automation.triggeredPOST{ "automation_id": 88, "contact_id": 555016, "node": "welcome" }A contact entered an automation flow.
The API is REST JSON: you don't depend on a proprietary library to get started.
The API is standard REST JSON. Any language that can make HTTP calls can consume it.
Use native fetch, Axios, or another HTTP client. The examples show headers, payload, and response.
Consume the API with requests, httpx, or the HTTP client your stack already uses.
Works with cURL, Guzzle, or PSR-18 clients. You don't need a proprietary library.
With a JWT token. You request the token with POST /auth/getToken (your username and password) and send it in the Authorization header of every call. You can enable rememberMe for sessions of up to 365 days. One clarification: creating accounts isn't part of the public API — signups are managed by the reseller.
Yes, we apply limits by IP and by user. They're generous for normal use; if we detect abuse, we automatically slow down the rate. If your integration needs a higher quota, write to us and we'll look at your case.
REST. JSON over HTTP, with the usual verbs (GET, POST, PUT, DELETE) and standard status codes. We chose REST because it's the most universal and easiest to consume from any language.
Yes. You configure a URL in your account and arrobaMail notifies you when something happens: a campaign finished sending, someone opened an email, a message bounced, someone complained or unsubscribed, or a contact entered an automation. It's how your system reacts in real time.
No need. The API is REST/JSON and works with curl, fetch, Axios, requests, httpx, Guzzle, or the HTTP client your stack already uses. The quickstart includes ready-to-copy examples in curl, Node, PHP, and Python. If your team needs a specific library, tell us about your stack.
Yes. arrobaMail has an MCP server so assistants like Claude or Cursor can query data, prepare drafts, and execute actions, always within the permissions you define. It's complementary to the API: MCP for assisted day-to-day work, the API for custom integrations.
Yes: the Free Plan account works as a sandbox. You do everything you'd do in production — with monthly sends and AI generations included, no card required. For a larger testing volume before going to production, talk to us.
Free plan, AI generations included, no credit card required — and real support from a real team.