Send mail, verify domains, read inboxes, and tail events from your terminal. The
Dairo CLI is built for scripts, CI pipelines, and coding agents. It uses the same
API key as the SDKs and keeps complaint safety on by default.
Install
Native binaries ship for macOS (arm64/x64), Linux (arm64/x64), and Windows (x64).
Authenticate
Sign in with your browser, or set a key directly. Either way the credential is
the same one the SDKs use — see Authentication.
The CLI checks DAIRO_API_KEY first, then a local config file.
Add --json to most commands for machine-readable output — ready to pipe into
jq or parse in a script or agent.
Send your first email
A send that is blocked because a recipient reported your mail as spam returns an
error; pass --ignore-complaints only to override it deliberately. See
Land in the inbox.
Command reference
Account and usage
dairo whoami identifies your key and project and returns the plan, limits,
usage, billing period, storage, and the key’s allowedIps (an IP allowlist,
or null for any IP). Check it before a large send to see your headroom.
Domains
dairo domain recheck re-reads your DNS records and reports whether the domain is
verified.
Inboxes
Sending
At least one --to and one body (--text, --html, or --react-source) are
required. Add --attachment ./file.pdf (repeatable) and
--attachment-delivery attachment|auto|link. Use --ignore-complaints only to
deliberately override complaint suppression.
--send-at takes an RFC 3339 timestamp with an explicit timezone offset (for
example 2026-07-01T09:00:00Z or 2026-07-01T11:00:00+02:00), in the future and
at most 30 days out. A scheduled send returns status: scheduled with a
scheduledAt timestamp; cancel it with dairo outbound cancel <messageId>.
Track delivery
Each email carries a status (including scheduled and canceled) plus
scheduledAt and canceledAt timestamps when set. dairo outbound get returns
the email with its full delivery timeline; dairo outbound events lists only the
events. dairo outbound cancel works only while the email is still scheduled —
once it is no longer scheduled (already sent, queued, or canceled) it returns a
409 conflict.
Physical mail (letters)
Fairo turns a PDF into a real, posted letter. Reads use
letters:read; sending and canceling use letters:send. Cancel works only while
the letter has not been dispatched yet.
Messages, threads, attachments
Webhooks
API keys
Pass --scope once per scope. Add --allowed-ip (repeatable, up to 50) to lock a
key to specific source IPs or ranges; omit it to allow any IP. A correct secret
presented from an unlisted IP is rejected with 403. The allowlist shows up in
dairo api-key list, dairo whoami, and the create output.
Audiences
dairo audiences add adds or updates members; dairo audiences import-csv
bulk-imports from a CSV. dairo audiences send runs the same outbound pipeline as
dairo send, fanning out to every member of the list with complaint suppression
applied automatically. Listing and reading use audiences:read; creating a list
and adding members use audiences:write; dairo audiences send requires
messages:send.
Templates
Author versioned React-email templates (scopes templates:read and
templates:write), then send with one by passing a template reference
({ id, version?, variables }) instead of an inline body.
Wait for one-time codes
Give an inbox a schema so incoming mail arrives as clean fields, or register a wait
that resolves with the extracted code the moment a matching email lands. See
Wait for one-time codes.
The event stream
Pull, tail, and replay your event stream. Reading uses events:read; replay uses
events:write. See The event stream.
Agents, reputation, budgets
Signed agent identities, fleet send-health, and per-agent send ceilings. Reads use
agents:read and budgets:read; changes use the matching :write scope;
provenance verification is public.
Compliance
Erasure jobs use compliance:read and compliance:write; residency and audit-log
reads use account:read.
MCP install
See the MCP server.
Scripting example
A CI script that waits for a domain to verify, then sends a build notification:
Next steps
Build reliable mail agents with the patterns in
Why Dairo is agent-native. For the same surface as
copy-paste agent tool calls, see MCP recipes.