Docs
The main flows, with examples you can copy.
Send with the API
This is the main path. Your app already using Resend keeps its code: set the base URL to this instance and use a cs_ key from API Keys. The message is queued, signed with the domain’s DKIM key, and delivered by the worker.
import { Resend } from 'resend';
const resend = new Resend('cs_...', { baseUrl: 'https://api.cloudysend.ru' });
await resend.emails.send({
from: 'Acme <hello@acme.com>',
to: ['ada@example.com'],
subject: 'Welcome',
html: '<p>Hello</p>',
});Send with SMTP
Use this when the other product only has host, port, username, and password. Verify a domain, open SMTP, create a mailbox, and paste the values. Username is the full address (alerts@your domain). Encryption is STARTTLS on port 587. The message then follows the same quotas, suppressions, and logs as the API, with source smtp.
Host: mail.your-domain
Port: 587
Encryption: STARTTLS
Username: alerts@your-domain
Password: csmtp_... # shown once
Verify a domain
Add the domain in Domains and publish the records the page shows: SPF, DKIM, and the return-path. Verification checks public DNS. Until the domain is verified, both the API and SMTP refuse that From address. Open and click tracking, if you turn them on, use the track host from the same page.
Webhooks
Create an endpoint under Webhooks and choose events (sent, delivered, bounced, complained, opened, clicked). Deliveries are signed. The signed content is id.timestamp.body, HMAC-SHA256, Base64, with headers svix-id, svix-timestamp, and svix-signature. The secret starts with whsec_.
Quotas
Three ceilings can apply at once. The workspace limit is yours alone. The general quota is a shared platform pool for every workspace (0 means that pool is off). A group quota is a separate shared pool for people an admin put in that group; mail from their workspaces counts toward it. A send needs room in every ceiling that is turned on. Over quota, the API returns 429 rate_limit_exceeded.
Sign-in
Password sign-in is always available for accounts that have a password. If an admin enables SSO, the sign-in page shows a second button. That is OpenID Connect: Authentik, Keycloak, Zitadel, Authelia, or another provider with the same flow. A new person is created only when the admin turned on “create a user if they do not exist”. Groups from the provider are matched to quota groups, and membership follows the provider on the next sign-in.