Skip to main content
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.

JavaScript / TypeScript

Python

Go

Ruby

PHP

Java

Rust

.NET

Elixir

Every client lives at github.com/dairo-app.

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. Repository: dairo-app/dairo-js.

Python

Requires Python 3.10 or later. Repository: dairo-app/dairo-python.

Go

Repository: dairo-app/dairo-go.

Ruby

Repository: dairo-app/dairo-ruby.

PHP

Repository: dairo-app/dairo-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. Repository: dairo-app/dairo-java.

Rust

The library is separate from the CLI, which ships as its own binary. Repository: dairo-app/dairo-rust.

.NET

Repository: dairo-app/dairo-dotnet.

Elixir

Requires Elixir 1.18+ on Erlang/OTP 27+. Repository: dairo-app/dairo-elixir.

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 from DAIRO_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.