Official libraries & CLI
Typed Dairo clients for nine languages, plus a CLI for the terminal and a hosted MCP server for AI agents.
Dairo ships typed, idiomatic clients for nine languages, plus a CLI for your terminal and an MCP server for AI agents. They all line up: the methods, fields, and IDs you learn in one carry over to the rest.
Choose an interface
SDKs
Typed, idiomatic clients for your application code. Start here when you're writing a service or agent in a supported language.
CLI
Scripting, CI, and quick manual operations from any shell.
MCP server
Native tool access for Claude, Cursor, and other MCP-capable agents.
JavaScript / TypeScript
The JavaScript SDK takes apiKey explicitly so browser and edge runtimes stay
predictable; pass a custom baseUrl or fetch for testing.
Python
Requires Python 3.10 or later.
Go
Ruby
PHP
Java
The Java SDK returns raw JSON strings so your code stays forward-compatible,
and ships typed shapes such as SendWarning and OutboundEventData that
document the contract.
Rust
The library is separate from the CLI, which ships as its own binary.
.NET
Elixir
Requires Elixir 1.18+ on Erlang/OTP 27+.
The same in every language
Whatever client you pick, these things work identically — learn them once.
- One authentication model. Every client takes the same
dairo_live_…API key; most examples read it fromDAIRO_API_KEY. - One resource model. Each area of the API maps to a namespace —
messages(send, list, get, cancel, events),threads,inboxes,domains,webhooks,apiKeys,templates,audiences,letters, and more — snake_case in Python, PascalCase methods in .NET. - Stable IDs.
messageId,inboxId,threadId, and event IDs are identical across every SDK, the REST API, the CLI, and webhook payloads.
Cross-cutting behaviors — the response envelope, idempotency, scopes, send warnings, and one-time secrets — are the same everywhere and documented once in Foundations.