Domani Email API

The Email API from Domani — 57 operation(s) for email.

Operations 74

GET /api/domains/{domain}/email/check Check email DNS health (MX, SPF, DMARC, DKIM) #
GET /api/domains/{domain}/email/deliverability Get owner-scoped email deliverability health #
POST /api/domains/{domain}/email/setup Set up email on a domain #
DELETE /api/domains/{domain}/email/setup Remove email from a domain #
GET /api/domains/{domain}/email/status Check email DNS status #
POST /api/email Create a mailbox on domani.run #
GET /api/email List all mailboxes #
POST /api/emails Create a mailbox #
GET /api/emails List all mailboxes #
GET /api/email/bootstrap Read cold inbox metadata and its first message page #
GET /api/emails/{address} Get mailbox details #
PATCH /api/emails/{address} Update mailbox #
DELETE /api/emails/{address} Delete a mailbox #
POST /api/emails/{address}/send Send an email #
POST /api/emails/{address}/deliverability-check Preflight an outbound email #
GET /api/emails/{address}/messages List emails #
GET /api/emails/search Search mail by meaning and by words #
POST /api/emails/connect/gmail Start connecting a Gmail inbox #
POST /api/emails/connect/outlook Start connecting an Outlook inbox #
GET /api/emails/connect/providers List the ways an inbox can be connected #
POST /api/emails/connect/forwarding Connect an inbox by forwarding #
POST /api/emails/{address}/connector/verify Send a probe through the forwarding rule #
GET /api/emails/{address}/connector Read the connection of a connected mailbox #
DELETE /api/emails/{address}/connector Disconnect a connected mailbox #
POST /api/emails/{address}/import Import older mail of a connected mailbox #
GET /api/emails/{address}/search Search one mailbox by meaning and by words #
GET /api/emails/{address}/threads List the conversations of a mailbox #
GET /api/emails/{address}/threads/{id} Read one conversation, oldest message first #
GET /api/emails/{address}/events Stream mailbox events (server-sent events) #
GET /api/emails/{address}/folders List email folders and counts #
GET /api/emails/{address}/drafts List a mailbox's drafts #
GET /api/emails/{address}/drafts/{id} Get one of a mailbox's drafts #
POST /api/emails/{address}/messages/actions Apply a lifecycle action to messages #
PATCH /api/emails/{address}/messages/read Mark messages as read or unread #
POST /api/emails/{address}/messages/delete Bulk delete messages #
GET /api/emails/{address}/messages/{id} Get a message #
DELETE /api/emails/{address}/messages/{id} Delete a message #
POST /api/emails/{address}/messages/{id}/reply Reply to a message #
POST /api/emails/{address}/messages/{id}/forward Forward a message #
GET /api/emails/{address}/avatar Get mailbox avatar info #
GET /api/emails/{address}/webhook Get mailbox webhook config #
PUT /api/emails/{address}/webhook Set mailbox webhook #
DELETE /api/emails/{address}/webhook Remove mailbox webhook #
POST /api/emails/{address}/webhook/rotate Rotate webhook signing secret #
POST /api/emails/{address}/webhook/test Test mailbox webhook #
GET /api/emails/{address}/aliases List mailbox aliases #
POST /api/emails/{address}/aliases Add a mailbox alias #
DELETE /api/emails/{address}/aliases/{alias} Remove a mailbox alias #
GET /api/emails/{address}/client-settings Get mail client settings (hosted) #
GET /api/emails/{address}/credentials List app passwords (hosted) #
POST /api/emails/{address}/credentials Create an app password (hosted) #
DELETE /api/emails/{address}/credentials/{id} Revoke an app password (hosted) #
POST /api/emails/{address}/messages/{id}/escalate Flag a message for a human #
POST /api/emails/{address}/messages/{id}/remind Set a follow-up reminder #
GET /api/contacts List contacts #
POST /api/contacts Create or update a contact #
DELETE /api/contacts/{address} Delete a contact #
GET /api/emails/{address}/rules List inbound mail rules #
POST /api/emails/{address}/rules Add an inbound mail rule #
DELETE /api/emails/{address}/rules/{ruleId} Remove an inbound mail rule #
PUT /api/domains/{domain}/email/catch-all Set domain catch-all #
DELETE /api/domains/{domain}/email/catch-all Clear domain catch-all #
GET /api/email/changes Incrementally synchronize one mailbox #
GET /api/suppressions List suppressed addresses #
POST /api/suppressions Add a suppression #
DELETE /api/suppressions/{address} Remove a suppression #
POST /api/emails/{address}/messages/{id}/spam Mark a message as spam #
POST /api/emails/{address}/messages/{id}/not-spam Mark a message as not spam #
GET /api/sender-rules List learned sender rules #
POST /api/sender-rules Add a sender rule #
DELETE /api/sender-rules/{id} Remove a sender rule #
PUT /api/emails/{address}/messages/{id}/kind Correct a message's kind #
GET /api/emails/{address}/messages/{id}/unsubscribe Get a message's unsubscribe options #
POST /api/emails/{address}/messages/{id}/unsubscribe Unsubscribe from a message's mailing list #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/domani-run:domani-run-email-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

domani-run-email-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: domani.run Email API
  version: 1.0.0
  description: 'Domain infrastructure for AI agents. One API to search, register, and connect domain names.


    ## Authentication


    All authenticated endpoints require a Bearer token:


    ```

    Authorization: Bearer domani_sk_xxx

    ```


    Get your API key by registering:


    ```bash

    curl -X POST https://domani.run/api/auth/register \

    -H "Content-Type: application/json" \

    -d ''{"email": "you@example.com"}''

    ```


    ## Rate Limits


    Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` headers. When rate limited (HTTP 429), check the `Retry-After` header for seconds to wait.


    ## Error Handling


    All errors return a consistent JSON envelope with `error`, `code`, `hint`, and `documentation_url` fields. Use the `code` field for programmatic handling and the `hint` field for recovery guidance.


    ## MCP Server


    A real-time MCP (Model Context Protocol) server is available at `POST /mcp` using Streamable HTTP transport. Connect any MCP-compatible agent (Claude Code, Cursor, etc.) with your Bearer token for typed tool access (search, buy, DNS, etc.).


    ## Pagination


    The `GET /api/tlds` endpoint supports `limit` and `offset` query parameters. When paginated, the response includes a `Link` header with `rel="next"` for the next page.'
  contact:
    name: domani.run
    url: https://domani.run
servers:
- url: https://domani.run
  description: Production
security:
- BearerAuth: []
tags:


# --- truncated at 32 KB (289 KB total) ---
# Full source: https://artifacts.apis.io/domani-run/openapi/domani-run-email-api-openapi.yml