Quickstart
remail implements the Resend REST API. Any Resend SDK works once its base URL points to https://api.remail.host.eco.br.
1. Create an API key
In the dashboard, open API Keys and create a key. Copy it right away: it is shown only once.
2. Add and verify your domain
Open Domains, add the domain you send from, and publish the DNS records it shows:
- MX and TXT (SPF) on
send.yourdomain.com: the return path that receives bounces. - TXT (DKIM) on
rmail._domainkey.yourdomain.com: the public key used to sign your mail.
remail checks DNS every 10 minutes for up to 72 hours. Click Verify to check right away.
3. Send an email
Node.js with the official SDK:
import { Resend } from 'resend'; const resend = new Resend('re_123456789', { baseUrl: 'https://api.remail.host.eco.br' }); await resend.emails.send({ from: 'Acme <onboarding@acme.com>', to: ['delivered@example.com'], subject: 'Hello world', html: '<strong>It works!</strong>', });
Or with curl:
curl -X POST 'https://api.remail.host.eco.br/emails' \
-H 'Authorization: Bearer re_123456789' \
-H 'Content-Type: application/json' \
-d '{
"from": "Acme <onboarding@acme.com>",
"to": ["delivered@example.com"],
"subject": "Hello world",
"html": "<strong>It works!</strong>"
}'
Other SDKs read the base URL from the RESEND_BASE_URL environment variable or a constructor option.
Endpoints
POST /emails Send an email POST /emails/batch Send up to 100 emails GET /emails List emails GET /emails/:id Retrieve an email PATCH /emails/:id Reschedule a scheduled email POST /emails/:id/cancel Cancel a scheduled email POST /domains Add a domain GET /domains List domains GET /domains/:id Retrieve a domain and its DNS records PATCH /domains/:id Update tracking and TLS settings POST /domains/:id/verify Check DNS now DELETE /domains/:id Remove a domain POST /api-keys Create an API key GET /api-keys List API keys DELETE /api-keys/:id Delete an API key
Errors
Errors use Resend's shape: { "statusCode": 422, "name": "validation_error", "message": "…" }.
Plans and limits
Quotas count emails accepted by the API per calendar month and day (UTC). A request that would go over a limit is refused as a whole with HTTP 429:
daily_quota_exceeded: the Free plan sends up to 100 emails a day.monthly_quota_exceeded: Free 3,000, Pro 50,000, Scale 100,000 emails a month.
See your usage and change plans under Billing.
Not supported yet
Webhooks and delivery events, open and click tracking, templates, contacts and broadcasts. Receiving is set up in the dashboard, under Domains → Receiving, not through the API.