Перейти к документации
API

Добавление домена

Добавляет домен в рабочее пространство и возвращает его со всеми нужными ему DNS-записями. Домен начинает неверифицированным, с включённым catch-all, и верифицируется сам, как только записи начинают отвечать в публичном DNS.

POST/domains

Выполняет настоящий запрос в вашем рабочем пространстве, с вашим собственным ключом.

POST /domains

Добавляет домен в рабочее пространство и возвращает его со всеми нужными ему DNS-записями. Домен начинает неверифицированным, с включённым catch-all, и верифицируется сам, как только записи начинают отвечать в публичном DNS.

Запрос

Параметры

domainstringобязательно
Голый домен, например `acme.com` или `mail.acme.com`. Пробелы по краям обрезаются, домен приводится к нижнему регистру, а международное имя хранится в форме ASCII. Схема, путь или адрес отклоняются.

Пример

Требуется domains:write и ключ без ограничения по адресам или доменам, потому что новый домен охватывает всё рабочее пространство.

curl
curl -X POST "$OE/domains" -H "$AUTH" -H "Content-Type: application/json" \  -d '{ "domain": "acme.com" }'
Ответ
{  "object": "domain",  "id": "b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f",  "domain": "acme.com",  "receiving": {    "verified": false,    "verifiedAt": null,    "catchAll": true,    "lastCheckedAt": "2026-09-25T10:00:02.000Z",    "error": "No MX records yet. DNS changes can take a few minutes to spread."  },  "sending": {    "status": "no_identity",    "canSend": false,    "checkedAt": null,    "error": null,    "note": "Sending is not set up yet. Publish the signing record listed for this domain, and sending switches on shortly after it answers in DNS."  },  "tracking": { "host": null, "status": "none", "active": false, "target": "", "record": null, "checkedAt": null, "verifiedAt": null, "error": null },  "storage": { "host": null, "status": "none", "active": false, "target": "", "record": null, "checkedAt": null, "verifiedAt": null, "error": null },  "addresses": [],  "createdAt": "2026-09-25T10:00:00.000Z",  "records": [    { "type": "MX", "name": "acme.com", "value": "inbound.mail.example", "priority": 10, "purpose": null, "status": "missing" },    { "type": "TXT", "name": "acme.com", "value": "v=spf1 include:_spf.openemail.uk ~all", "priority": null, "purpose": null, "status": "missing" },    { "type": "TXT", "name": "_openemail-challenge.acme.com", "value": "oe-verify=4f1c9a2b7e8d6053a1c4", "priority": null, "purpose": "Proves you own this domain", "status": "missing" }  ],  "dmarc": null}

В примере records сокращён. Реальный ответ перечисляет все записи, нужные домену, включая DMARC, CNAME подписи и записи return-path, а GET /domains/{id} описывает каждое поле.

Опубликуйте записи точно в том виде, в каком они даны, затем вызовите POST /domains/{id}/verify или подождите: домен проверяется снова при каждом чтении и фоновым обходом, а domain.verified срабатывает в тот момент, когда проверка пройдена.

Когда запрос отклоняется

  • 409 domain_already_added: у владельца этого рабочего пространства уже есть этот домен.
  • 409 domain_claimed: он есть у другого аккаунта.
  • 409 related_domain_owned: родительский домен или его поддомен принадлежит другому аккаунту, поэтому его нельзя разделить между двумя.
  • 409 operator_domain: домен принадлежит самому OpenEmail.
  • 403 domain_allowance_reached: тариф не допускает больше доменов. В сообщении назван тариф, который допускает больше.
  • 422 capability_unsupported: ключ ограничен определёнными адресами или доменами.

Ваши входящие,
на ваших условиях.

Почтовая инфраструктура для бизнеса, ИИ, агентов и личной почты. Создана для масштаба, приватности и контроля. Всё, что должно было быть в почте с первого дня.

OpenEmail

Почтовая инфраструктура для бизнеса, ИИ, агентов и личной почты. Создана для масштаба, приватности и контроля. Всё, что должно было быть в почте с первого дня.

© 2026 OpenEmail. Все права защищены.