組織に人を招待する

POST /v1/invitations · 権限 invitations:write

メールアドレスに対して、組織に参加するための招待を作成します。organization_id を指定しない場合、招待は環境招待になります。これは招待制サインインモードのサインアップリンクであり、メンバーシップは作成されず、ロールを含めることもできません(role_ids は 422 validation_failed を返します)。レスポンスには organization_id: null が含まれます。delivery は必須です。email を指定すると、環境の招待テンプレート(delivery_status: queued)を使って招待メールが送信されます。リンクはメールにのみ含まれ、レスポンスに accept_url は含まれません。link_only を指定するとメールは送信されず、共有用のリンクが返されます。承諾リンク(accept_url)はこのレスポンスでのみ一度返され、以降どのエンドポイントも返しません。レスポンスには Cache-Control: no-store が含まれます。同じ Idempotency-Key に対してリプレイされたレスポンスではリンクが省略され、secret_redacted: true が含まれます。招待メールがデプロイで設定されていない場合(非本番環境の設定のみ)、email の配信は 501 not_implemented を返し、何も書き込まれません。同じロールを持つ未承諾の招待が、組織とメールアドレスについてすでに存在する場合は、新しいリンクで再送され、レスポンスは 200 になります。期限切れだがまだ処理されていない未承諾の招待は、同じリクエスト内で expired とマークされ、新しい招待が書き込まれます(invitation.expired として監査されます)。同じロールを持つ未承諾の email 招待は、メールで再送されます。レスポンスは 200 で、delivery: email を含み、accept_url は含みません。書き込みは invitation.created として監査されます。

リクエスト

フィールド 型 必須 説明
organization_id string いいえ 組織 ID(org_…)。環境招待(ロールなし)にする場合は省略してください。
email string はい 招待される人のメールアドレス。320 文字まで。
delivery string はい email(リンクはメールにのみ含まれます)または link_only(リンクはこのレスポンスにのみ含まれます)。
role_ids string[] いいえ 承諾時に付与されるロール(rol_…)。最大 10 件。空の場合はデフォルトのメンバーロール。
application_id string いいえ 招待された人が着地するアプリケーション(app_…)。この環境に存在している必要があります。
ttl_days integer いいえ 1〜30。デフォルトは環境の invitation_ttl_days(7)。

レスポンス

201 Created を、招待と承諾リンク(未承諾の招待を再送した場合は 200 OK)とともに返します。

{
  "id": "inv_01j9xt9v3w4y8z0a2b4c6d8e0g",
  "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "email": "ada@example.com",
  "role_ids": [
    "rol_01j9xr7s1t2w6x8y0z2a4b6c8e"
  ],
  "application_id": null,
  "delivery": "link_only",
  "delivery_status": "not_sent",
  "status": "pending",
  "send_count": 1,
  "last_sent_at": "2026-10-12T09:31:00.123456Z",
  "expires_at": "2026-10-19T09:31:00.123456Z",
  "accepted_user_id": null,
  "accepted_at": null,
  "revoked_at": null,
  "created_at": "2026-10-12T09:31:00.123456Z",
  "updated_at": "2026-10-12T09:31:00.123456Z",
  "version": 1,
  "accept_url": "https://acme.eu.keenauth.app/u/login?invitation=<token>"
}

エラー

HTTP code 発生条件
404 not_found 組織またはアプリケーションがこの環境に存在しない。
409 invitation_already_pending このメールアドレスに、異なるロールを持つ未承諾の招待が存在する。
409 membership_already_exists このメールアドレスはすでにメンバーに属している。
409 organization_disabled 組織が無効になっている。
422 invitation_invalid これらの値では招待を作成できない。
422 validation_failed フィールドが不足しているか、無効である。
429 invite_rate_limited 招待が、10 分以内に再送されたか、すでに 5 回再送されている。
501 not_implemented delivery が email で、デプロイに招待メールが設定されていない。
401 unauthenticated 認証情報がない、無効、または取り消されている。
403 insufficient_permissions 認証情報に必要な権限がない。特権(is_privileged)ロールの割り当てには roles:write も必要です。これがない場合は何も書き込まれず、required_permissions には両方の権限が一覧されます。
429 rate_limited レート制限を超えた。Retry-After の期間の後に再試行してください。
503 service_unavailable 依存先が一時的に利用できない。Retry-After の期間の後に再試行してください。

例

curl -i -X POST "https://api.eu.keenauth.com/v1/invitations" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"organization_id":"org_01j9xk3m7q8r2s4t6v8w0y2z4a","email":"ada@example.com","delivery":"link_only","role_ids":["rol_01j9xr7s1t2w6x8y0z2a4b6c8e"]}'

個人データ

このエンドポイントは個人データを扱います: 組織のメンバーシップと招待。KeenAuth API における個人データでは、保存される内容、保存期間、削除方法を説明しています。いかなるフィールドにも、特別な種類の個人データ(健康、生体情報、宗教、政治的意見、性的指向)を送信しないでください。