ユーザーを作成
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 の個人データでは、保存される内容、保存期間、削除方法について説明しています。どのフィールドにも、特別な種類の個人データ(健康、生体データ、宗教、政治的意見、性的指向)を送信しないでください。