Revendiquer un domaine pour une organisation
POST /v1/organization-domains · autorisation organization-domains:write
Ajoute un domaine à une organisation. domain peut être en Unicode ou en A-label et est stocké en A-label minuscule. Avec dns_txt (valeur par défaut), le domaine commence à pending ; publiez l'enregistrement TXT renvoyé, et le domaine est vérifié par :verify ou par la vérification planifiée ; un domaine non vérifié dans les 72 heures passe à expired. manual enregistre votre propre déclaration de propriété : le domaine passe immédiatement à verified et la déclaration est écrite dans le journal d'audit de gestion. Chaque organisation peut détenir au maximum 100 domaines.
Requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
Idempotency-Key |
en-tête | non | Clé facultative (16 à 64 caractères) qui rend sûre une requête renvoyée. |
organization_id |
string | oui | L'organisation qui revendique le domaine (org_…). |
domain |
string | oui | Nom de domaine, 253 caractères au maximum. Les suffixes publics et les fournisseurs de messagerie gratuits ne peuvent pas être revendiqués. |
verification_method |
string | non | dns_txt (par défaut) ou manual. |
Corps de la requête :
{
"organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
"domain": "acme.com"
}
Réponse
201 Created avec le domaine et un en-tête ETag.
{
"id": "odm_01j9xk3m7q8r2s4t6v8w0y2z4c",
"organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
"domain": "acme.com",
"status": "pending",
"verification_method": "dns_txt",
"txt_record_name": "_akp-verify.acme.com",
"txt_record_value": "idp-verify=EXAMPLEtokenEXAMPLEtokenEXAMPLEtokenEXAMPLEtok",
"verification_started_at": "2026-10-12T09:30:00.123456Z",
"verified_at": null,
"last_checked_at": null,
"unverified_at": null,
"next_check_at": "2026-10-12T09:31:00.123456Z",
"last_failure_code": null,
"capture_mode": "off",
"sso_routing_enabled": false,
"created_at": "2026-10-12T09:30:00.123456Z",
"updated_at": "2026-10-12T09:30:00.123456Z",
"version": 1
}
Erreurs
| HTTP | code | Quand |
|---|---|---|
| 400 | unknown_field |
Le corps contient un champ absent du schéma ou en lecture seule. |
| 404 | not_found |
Aucune organisation avec cet identifiant n'existe dans cet environnement. |
| 409 | conflict |
Cette organisation possède déjà ce domaine. |
| 409 | domain_already_verified |
Une autre organisation a déjà vérifié ce domaine. |
| 409 | domain_limit_reached |
L'organisation possède déjà 100 domaines. |
| 409 | organization_disabled |
L'organisation est désactivée. |
| 409 | organization_pending_deletion |
L'organisation attend une suppression en libre-service ; annulez d'abord la suppression. |
| 422 | domain_not_claimable |
Le domaine est un suffixe public ou un fournisseur de messagerie gratuit. |
| 422 | validation_failed |
Un champ est invalide (organization_id, domain, verification_method). |
| 401 | unauthenticated |
L'identifiant est absent, invalide ou révoqué. |
| 403 | insufficient_permissions |
L'identifiant ne dispose pas de l'autorisation requise. |
| 429 | rate_limited |
La limite de débit a été dépassée ; réessayez après la période Retry-After. |
| 503 | service_unavailable |
Une dépendance est temporairement indisponible ; réessayez après la période Retry-After. |
Exemple
curl -X POST https://api.eu.keenauth.com/v1/organization-domains \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"organization_id":"org_01j9xk3m7q8r2s4t6v8w0y2z4a","domain":"acme.com"}'