メンバーを招待

POST /fapi/v1/organizations/{org_id}/invitations · 環境のサインインホストから呼び出し

メールアドレスを組織に招待します。招待メールは KeenAuth が送信します。招待トークンと承諾リンクがお客様に返されることはありません。同じアドレスに同じロールの保留中の招待がすでに存在する場合は、再送され、応答は 200 OK になります。新しい招待の場合は 201 Created になります。

認証済みユーザーの __Host-idp_session Cookie と、正確な Origin、または自社アプリのフロントAPIアクセストークン(DPoP 証明付きの Authorization: DPoP <token>。フロントAPIアクセストークン を参照)が必要です。ユーザーはその組織の有効なメンバーであり、idp_members:invite 権限を持っている必要があります。メンバーでないユーザーには 404 not_found を返します。権限のないメンバーには 403 insufficient_permissions を返します。特権ロールで招待できるのは、管理者ロールを持つメンバーのみです(403 role_not_assignable)。

@keenauth/js を使う場合:const { invitation, resent } = await keenauth.organizations.invite(orgId, { email, roleIds: [roleId] })。

リクエスト

ヘッダー:

ヘッダー 必須 説明
Idp-Client はい SDK の識別子。
Origin Cookie 使用時は必須 https://<sign-in host>。

org_id:組織の識別子(org_…)。

ボディ:

フィールド 必須 説明
email はい 招待するメールアドレス。254 文字以内。
role_ids いいえ 最大 10 件のロール(rol_…)。指定しない場合は、組織の既定ロールになります。
ttl_days いいえ 招待の有効期間。1〜30 日。省略時は環境の既定値。

レスポンス

201 Created と Location および ETag が返されます。保留中の招待が再送された場合は 200 OK が返されます。ボディは招待の内容です。

id(inv_…)、email(保留中の間のみ。それ以外は null)、role_ids、delivery、delivery_status(queued、sent、bounced、または not_sent)、status(pending、accepted、revoked、または expired)、send_count、last_sent_at、expires_at、accepted_user_id、accepted_at、revoked_at、created_at、updated_at、version。

エラー

ステータス コード 条件
400 unknown_field 上記にないフィールドがボディに含まれています。
401 unauthenticated 有効なセッション Cookie またはトークンがありません。
403 insufficient_permissions ユーザーにその組織での idp_members:invite 権限がありません。
403 role_not_assignable ロールが特権ロールであり、ユーザーが管理者ロールを持っていません。
403 origin_not_allowed Origin が一致しません。
404 not_found このユーザーに対応する組織またはロールが存在しません。
409 invitation_already_pending このアドレスに対する保留中の招待があり、ロールが異なります。
409 membership_already_exists このアドレスは、組織のメンバーにすでに属しています。
409 organization_membership_limit_reached 組織がメンバー数の上限に達しています。
409 organization_disabled 組織が無効化されているか、削除処理中です(organization_pending_deletion)。
422 validation_failed email、role_ids、または ttl_days が欠けているか、不正です。
429 invite_rate_limited 招待または再送の回数が多すぎます。Retry-After の後に再試行してください。
501 not_implemented この環境では招待メールが設定されていません。
503 service_unavailable 一時的に利用できません。Retry-After の後に再試行してください。

例

curl -X POST "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/invitations" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"email":"new.member@example.com","role_ids":["rol_01jbz6x8kq3m2n4p5r6s7t8v9w"],"ttl_days":7}'
{
  "id": "inv_01jbz6x8kq3m2n4p5r6s7t8v9d",
  "email": "new.member@example.com",
  "role_ids": ["rol_01jbz6x8kq3m2n4p5r6s7t8v9w"],
  "delivery": "email",
  "delivery_status": "queued",
  "status": "pending",
  "send_count": 1,
  "last_sent_at": "2026-11-03T10:00:00Z",
  "expires_at": "2026-11-10T10:00:00Z",
  "accepted_user_id": null,
  "accepted_at": null,
  "revoked_at": null,
  "created_at": "2026-11-03T10:00:00Z",
  "updated_at": "2026-11-03T10:00:00Z",
  "version": 1
}

個人データ

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