문서로 건너뛰기
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: 키가 특정 주소나 도메인으로 제한되어 있습니다.

받은편지함을,
내 방식대로.

기업, AI, 에이전트, 개인 메일을 위한 이메일 인프라. 규모와 프라이버시, 통제권을 위해 만들었습니다. 이메일이 처음부터 갖췄어야 할 모든 것.

OpenEmail

기업, AI, 에이전트, 개인 메일을 위한 이메일 인프라. 규모와 프라이버시, 통제권을 위해 만들었습니다. 이메일이 처음부터 갖췄어야 할 모든 것.

© 2026 OpenEmail. 모든 권리 보유.