Eine Organisation erstellen

POST /v1/organizations · Berechtigung organizations:write

Erstellt eine Organisation in der Umgebung. Die Antwort enthält einen ETag. Ein Ereignis organization.created wird veröffentlicht und die Änderung wird im Audit-Log der Management-API protokolliert.

Anfrage

Feld Typ Pflicht Beschreibung
Idempotency-Key header nein Optional. 16–64 Zeichen [A-Za-z0-9_-]; die Wiederholung desselben Schlüssels mit derselben Anfrage liefert dieselbe Antwort.
name string ja Anzeigename, 1–256 Zeichen, ohne Steuerzeichen.
slug string nein 3–64 Zeichen a-z, 0-9 und einzelne Bindestriche; in der Umgebung eindeutig. Wird aus dem Namen abgeleitet, wenn er fehlt.
external_id string | null nein Ihr eigener Bezeichner, bis zu 255 Zeichen; in der Umgebung eindeutig. null entfernt ihn.
metadata object | null nein JSON-Objekt, höchstens 16 KiB, 5 Ebenen und 100 Schlüssel auf oberster Ebene. Wird nur von der Management-API zurückgegeben.
brand_color string | null nein Markenfarbe #RRGGBB; wird in Großbuchstaben gespeichert. null entfernt sie.
max_memberships integer | null nein Obergrenze für Mitgliedschaften, mindestens 1; null bedeutet unbegrenzt.
default_zoneinfo string | null nein Standard-IANA-Zeitzone (zum Beispiel Europe/Istanbul), die für Registrierung, Einladung, JIT-SSO und SCIM im Organisationskontext verwendet wird, wenn Browser oder IdP keine liefern. null entfernt sie (der Standard der Umgebung gilt).

Anfragetext:

{
  "name": "Acme Corp",
  "slug": "acme",
  "external_id": "crm-4821",
  "metadata": {
    "tier": "gold"
  },
  "brand_color": "#1F6FEB"
}

Antwort

201 Created mit der neuen Organisation.

{
  "id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "name": "Acme Corp",
  "slug": "acme",
  "external_id": "crm-4821",
  "status": "active",
  "metadata": {
    "tier": "gold"
  },
  "brand_color": "#1F6FEB",
  "max_memberships": null,
  "default_zoneinfo": null,
  "created_via": "admin_api",
  "disabled_at": null,
  "deletion_requested_at": null,
  "deletion_due_at": null,
  "created_at": "2026-10-12T09:30:00.123456Z",
  "updated_at": "2026-10-12T09:30:00.123456Z",
  "version": 1
}

Fehler

HTTP Code Wann
400 unknown_field Der Anfragetext enthält ein Feld, das nicht im Schema vorkommt oder schreibgeschützt ist (id, status …).
401 unauthenticated Die Anmeldedaten fehlen, sind ungültig oder widerrufen.
403 insufficient_permissions Den Anmeldedaten fehlt die erforderliche Berechtigung.
403 quota_exceeded Das Organisationslimit des Tarifs der Umgebung (organizations_per_environment_max) ist erreicht.
409 slug_taken Der Slug wird bereits von einer anderen Organisation verwendet.
409 slug_reserved Der Slug ist ein reserviertes Wort oder der frühere Slug einer anderen Organisation (90 Tage reserviert).
409 external_id_taken Die external_id wird bereits von einer anderen Organisation verwendet.
422 validation_failed Ein Feld ist ungültig (name, slug, external_id, metadata, brand_color, max_memberships, default_zoneinfo).
422 idempotency_key_reuse Der Idempotency-Key wurde bereits mit einer anderen Anfrage verwendet.
429 rate_limited Das Rate-Limit wurde überschritten; wiederholen Sie die Anfrage nach Ablauf der Zeit aus Retry-After.
503 service_unavailable Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach Ablauf der Zeit aus Retry-After.

Beispiel

curl -X POST "https://api.eu.keenauth.com/v1/organizations" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Acme Corp","slug":"acme"}'