ユーザーを作成

POST /v1/users · 権限 users:write

API キーの環境にユーザーを作成します。ユーザーはその環境にのみ属します。同じメールアドレスでも、2 つの環境にあれば別々のユーザーになります。一意の値(email、phone_number、username、external_id)は環境ごとにチェックされます。再試行を安全に行うには Idempotency-Key ヘッダーを送信してください。

リクエスト

ボディは JSON オブジェクトです。スキーマにないフィールドがあると、unknown_field で拒否されます。

フィールド 型 必須 説明
email string いいえ* 主要メールアドレス。
email_verified boolean いいえ メールアドレスを確認済みとしてマークします。既定値は false。
phone_number string いいえ* E.164 形式の主要電話番号。
phone_verified boolean いいえ 電話番号を確認済みとしてマークします。既定値は false。
phone_country_code string いいえ ISO 3166-1 alpha-2 コード。空の場合は電話番号のプレフィックスから導出されます。
username string いいえ* 3〜64 文字。環境内で一意である必要があります。
external_id string いいえ お客様独自の識別子。1〜255 文字。環境内で一意である必要があります。
name、given_name、family_name、middle_name、nickname string いいえ プロフィールの名前。
picture、website、profile_url string いいえ https:// の URL。最大 2048 文字。
locale、zoneinfo、gender、birthdate string いいえ プロフィール属性。birthdate は YYYY-MM-DD 形式です。
address object いいえ OIDC の address オブジェクト。最大 2048 バイト。
user_metadata、app_metadata object いいえ 自由形式の JSON オブジェクト。最大 16 KiB、深さ 5、トップレベルのキーは 100 個まで。

* email、phone_number、username のうち少なくとも 1 つが必要です。

レスポンス

201 Created。ボディはユーザーオブジェクトです。ETag ヘッダーにはユーザーのバージョンが含まれます。

API キーに users:read_pii 権限がない場合、個人データはマスクされます。email は a***@e***.com になり、phone_number は末尾 2 桁のみ残ります(+**********67)。name、given_name、family_name、middle_name、nickname はイニシャル(A. L.)になり、username は先頭の 1 文字のみ残ります(a***)。birthdate は ****-**-** になり、address は {"redacted": true} になります。user_metadata と app_metadata はマスクされません。

{
  "id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
  "kind": "regular",
  "status": "active",
  "external_id": null,
  "username": null,
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "email_verified": true,
  "phone_number": null,
  "phone_verified": false,
  "user_metadata": {},
  "app_metadata": {},
  "created_via": "admin_api",
  "created_at": "2026-01-15T09:30:00Z",
  "updated_at": "2026-01-15T09:30:00Z",
  "last_sign_in_at": null,
  "deletion_requested_at": null,
  "deletion_due_at": null
}

エラー

すべてのエラーは、安定した code を含む application/problem+json ボディで返されます。

HTTP code 発生条件
400 malformed_request、unknown_field ボディが有効な JSON ではない、またはスキーマにないフィールドがある。
409 conflict 値がすでに使用されている。errors[] にフィールドと理由(email_taken、phone_taken、username_taken、external_id_taken)が示されます。
415 unsupported_media_type Content-Type が application/json ではない。
422 validation_failed 値が無効。errors[].pointer にフィールドが示されます。
401 unauthenticated API キーが存在しない、無効、または取り消されている。
403 insufficient_permissions キーに users:write 権限がない。
429 rate_limited レート制限を超えた。Retry-After に従ってください。
503 service_unavailable 依存サービスが一時的に利用できない。後で再試行してください。

例

curl -X POST https://api.eu.keenauth.com/v1/users \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"email": "ada@example.com", "email_verified": true, "name": "Ada Lovelace"}'

個人データ

このエンドポイントは個人データを扱います:エンドユーザーのプロフィール。KeenAuth APIs の個人データでは、保存される内容、保存期間、削除方法について説明しています。どのフィールドにも、特別な種類の個人データ(健康、生体データ、宗教、政治的意見、性的指向)を送信しないでください。