Ajouter un domaine
Ajoute un domaine à l'espace de travail et le renvoie avec chaque enregistrement DNS dont il a besoin. Le domaine démarre non vérifié, avec son catch-all activé, et se vérifie de lui-même dès que les enregistrements répondent dans le DNS public.
Exécute le véritable appel sur votre espace de travail, avec votre propre clé.
POST /domains
Ajoute un domaine à l'espace de travail et le renvoie avec chaque enregistrement DNS dont il a besoin. Le domaine démarre non vérifié, avec son catch-all activé, et se vérifie de lui-même dès que les enregistrements répondent dans le DNS public.
La requête
Paramètres
domainstringobligatoire- Un domaine nu comme `acme.com` ou `mail.acme.com`. Il est débarrassé de ses espaces et mis en minuscules, et un nom international est stocké sous sa forme ASCII. Un schéma, un chemin ou une adresse est refusé.
Exemple
Nécessite domains:write et une clé sans restriction d'adresse ni de domaine, car un nouveau domaine touche tout l'espace de travail.
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}L'exemple abrège records. Une vraie réponse liste chaque enregistrement dont le domaine a besoin, y compris DMARC, les CNAME de signature et les enregistrements de return-path, et GET /domains/{id} décrit chaque champ.
Publiez les enregistrements exactement tels qu'indiqués, puis appelez POST /domains/{id}/verify ou attendez : le domaine est vérifié à nouveau à chaque lecture et par un passage en arrière-plan, et domain.verified se déclenche dès qu'il est validé.
Quand c'est refusé
409domain_already_added: le propriétaire de cet espace de travail a déjà le domaine.409domain_claimed: un autre compte l'a.409related_domain_owned: un domaine parent ou l'un de ses sous-domaines appartient à un autre compte, il ne peut donc pas être partagé entre les deux.409operator_domain: le domaine appartient à OpenEmail lui-même.403domain_allowance_reached: le forfait ne peut pas contenir plus de domaines. Le message nomme le forfait qui en contient davantage.422capability_unsupported: la clé est limitée à certaines adresses ou certains domaines.