Generated from Postwind commit a19b2e4 OpenAPI 0.1.0 synced

Documentation

Postwind is controlled through two interfaces that do the same things: an HTTP API for your code and MCP tools for your agents. Each operation has one name, operationId in OpenAPI and the tool name in MCP, and one set of rules.

HTTP API

REST JSON under /api/v1. 57 operations on 38 paths: projects, keys, sending domains, lists, subscribers, suppressions, templates, campaigns. Bearer keys with scopes, problem+json errors with stable codes, Idempotency-Key, cursor pagination, per-key rate limits. The reference is rendered from the OpenAPI 3.1 document that the server itself serves at /api/openapi.json.

bashCheck your key
# set POSTWIND_URL and POSTWIND_KEY first
curl "$POSTWIND_URL/api/v1/whoami" \
  -H "Authorization: Bearer $POSTWIND_KEY"

Read the API docs

MCP

57 tools over Streamable HTTP at /mcp, on the same listener and with the same keys as the API. One tool per API operation. Irreversible tools need confirm: true and run as a dry run without it. The reference is rendered from the server’s tools/list answer, with every input schema.

jsonThe same check as a tool call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whoami",
    "arguments": {}
  }
}

Read the MCP docs

Operations

Guides for the operator: one server with Docker Compose or a Kubernetes cluster with the Helm chart, the DNS records for deliverability, the Helm values files. They are in Russian; an English version is pending.

Read the operator guides

Where to start

  1. Get a key. On the node, postwind keys create-admin prints an admin key once. Keys look like pw_adm_… (admin) or pw_prj_… (project) and go in Authorization: Bearer.
  2. Check it. GET /api/v1/whoami or the whoami tool returns the key’s kind, project and scopes. GET /api/v1/server or get_server_info returns the node’s version, enabled subservices and available transports.
  3. Create a project and a project key with the scopes you need: read, write, send, keys.
  4. Add a sending domain. Get the required DNS records, create them (through Porkbun or by hand), then verify. A campaign sends only from a verified domain.
  5. Create a list, add subscribers, create a template. Preview the template, send a test email to yourself.
  6. Create a campaign, preflight it, launch it. Preflight shows the recipient count after deduplication and suppression and every unmet precondition. Launch needs scope send; in MCP it also needs confirm: true.

The normative specification lives in the Postwind repository under docs/spec/ and is written in Russian. Everything on these pages is in English and is generated from, or checked against, the code.