Skip to content
Developers

A developer-first API for agent email.

Provision inboxes and reply through the REST API; receive inbound events through webhooks. Python SDK, CLI and a local MCP server are on PyPI.

Self-serve · no waitlist
//Get an API key

Two requests and your agent has an address.

Onboarding is the API itself — there is no signup form to fill in. These run against production as written.

01

Ask for a key

One request. You get an API key back straight away, and a six-digit code goes to the address you gave.

curl -X POST https://api.daknode.com/v1/public/agents/signup \
  -H 'content-type: application/json' \
  -d '{"email": "you@example.com", "username": "your-agent"}'

201 · agent_id · api_key · verified: false

02

Confirm the code

Read the code from your inbox and send it back with the agent_id you were given. That is the whole of verification.

curl -X POST https://api.daknode.com/v1/public/agents/verify \
  -H 'content-type: application/json' \
  -d '{"agent_id": "<agent_id>", "code": "123456"}'

200 · verified: true

Outbound mail waits for verification

Before you confirm the code the key already provisions inboxes and reads mail. A send is accepted and then refused when it is dispatched, with the reason account_unverified — so nothing leaves and there is no error on the send call itself.

Signing up twice revokes your first key

A repeat signup for the same address does not create a second account. It replaces the outstanding code and revokes the key you were issued first, immediately and with no overlap. Keep only the newest api_key.

Signup is rate limited

Per origin and across the platform. A 429 means wait rather than retry harder.

The full contract is the OpenAPI specification. Building with an AI coding assistant? The DakNode skill teaches it this flow and the rest of the API.

//Access surfaces

Meet your agents where they build.

SDKs

Python client: pip install daknode. TypeScript type definitions from the OpenAPI spec.

Private beta

CLI

pip install daknode-cli — inboxes, threads, search and send from a terminal.

Private beta

Webhooks

Signed, retry-safe delivery of inbound events.

Private beta

REST API

A predictable, paginated HTTP interface.

Private beta

MCP

Local MCP server over stdio: uvx daknode-mcp. Inboxes, threads, search and send as tools.

Private beta
Install the DakNode skillClaude Code · Cursor

Building with an AI coding assistant? Drop in the DakNode skill and it picks up the API instantly — inbox provisioning, inbound events, and reading threads, without leaving your editor. Works with Claude Code and Cursor.

$ npx skills add https://daknode.com/skill

One line. No SDK docs to hunt down.

//Developer preview

Three calls from empty to answering.

Create an inbox, listen for inbound messages, and reply — with context preserved.

REST APIWebhooks

[note] Frontend demonstration only. Examples are illustrative and not connected to a live API.

create.ts
1import { DakNode } from "@daknode/sdk";
2
3const dak = new DakNode({ apiKey: process.env.DAKNODE_API_KEY });
4
5// Provision a persistent inbox for an agent
6const inbox = await dak.inboxes.create({
7 agent: "onboarding-agent",
8 domain: "agents.daknode.com",
9});
10
11console.log(inbox.address);
12// => onboarding-agent@agents.daknode.com
200 · Response
{
  "id": "ibx_9f2c41a7",
  "address": "onboarding-agent@agents.daknode.com",
  "agent": "onboarding-agent",
  "status": "active",
  "created_at": "2026-01-08T10:24:00Z"
}
//Reliability & scale

Built on architecture, not adjectives.

We don't publish invented statistics. Here is the direction the infrastructure is designed around.

Architecture direction

Horizontally scalable APIs

Architecture direction

Queue-backed message processing

Designed for

Idempotent send operations

Designed for

Retry-safe webhook delivery

Designed for

Paginated message access

Designed for

Observable delivery lifecycle

Architecture direction

Regional infrastructure options

Designed for

Usage controls

Give your next agent an identity it can use.

API access is self-serve: two requests and your agent has an address. Follow the developer guide to get started.