# Documentation

Sendora is a transactional email API, run in Sweden. Start with the [Quickstart](https://sendora.se/docs/quickstart.md), which takes you from an approved account to a delivered message.

Every code sample comes in cURL, TypeScript, Python and PHP. Pick a language on any sample, and every page shows that language. Sendora's tests run every sample's request against the real API, so each works as written.

## Get started

- [Quickstart](https://sendora.se/docs/quickstart.md): Send your first message and read it in the log.
- [Test servers](https://sendora.se/docs/test-servers.md): Send from staging and CI without delivering anything, and act out bounces, complaints, opens and clicks.

## Sending

- [Sending](https://sendora.se/docs/sending.md): Single sends, batches, attachments, headers and idempotency.
- [Streams](https://sendora.se/docs/streams.md): Keep kinds of mail apart, each with its own suppression list.
- [Broadcasts](https://sendora.se/docs/broadcasts.md): One message to many recipients, each with their own unsubscribe link.

## After sending

- [Messages and events](https://sendora.se/docs/messages.md): Statuses, timelines and searching the log.
- [Webhooks](https://sendora.se/docs/webhooks.md): Events pushed to your endpoint, how to verify them, and retries and replays.
- [Suppressions](https://sendora.se/docs/suppressions.md): Addresses a stream no longer sends to, why they are there, and how to lift one, and the list of addresses a server never tracks.

## Receiving

- [Inbound](https://sendora.se/docs/inbound.md): Receive mail on an inbound stream or on your own domain, and read it.

## Account

- [Domains](https://sendora.se/docs/domains.md): Verify a sending domain with two DNS records.
- [Keys](https://sendora.se/docs/keys.md): The two kinds of API key, and how to rotate one.
- [SSO and SCIM](https://sendora.se/docs/sso.md): Sign your organisation's people in through its own identity provider, by SAML or OpenID Connect, and keep the account's users in step with SCIM.

## Tools

- [SMTP submission](https://sendora.se/docs/smtp.md): Send from a system that only speaks SMTP, with the same key and rules.
- [Move from Microsoft 365](https://sendora.se/docs/microsoft-365.md): Move a system that sends through a Microsoft 365 mailbox with a password to Sendora's SMTP.
- [MCP server](https://sendora.se/docs/mcp.md): Connect claude.ai, ChatGPT, Claude Code, Cursor, VS Code, Codex or Claude Desktop to Sendora's docs and tools.

## Reference

- [API reference](https://sendora.se/docs/api.md): Every route, with its fields, responses and error codes.
- [Errors](https://sendora.se/docs/errors.md): The error body, every error code, and what stops an account from sending.
- [Limits](https://sendora.se/docs/limits.md): Every limit an account meets, and its number.
- [Changelog](https://sendora.se/docs/changelog.md): What each release of the SDKs changed, and what to change in your code when you upgrade.

## Where things are

- API: `https://api.sendora.se`, HTTPS and JSON. The OpenAPI document is at [/docs/openapi.json](https://sendora.se/docs/openapi.json).
- SMTP: `smtp.sendora.se` on port 465 (TLS) or 587 (STARTTLS), with a server key as user name and password.
- TypeScript SDK: `npm install @sendora/sdk`, with no dependencies, for Node 20.19 or newer and any runtime with `fetch`.
- Python SDK: `pip install sendora`, with one dependency, for Python 3.11 or newer.
- PHP SDK: `composer require sendora/sendora-php`, with no package beyond ext-curl and ext-json, for PHP 8.2 or newer.
- Dashboard: `https://app.sendora.se`, where keys, domains, webhooks and the message log live.
- For agents: [/llms.txt](https://sendora.se/llms.txt) indexes these pages, and [/llms-full.txt](https://sendora.se/llms-full.txt) holds them all in one Markdown file.
