このページでは、現在稼働しているPush! Passkeyの実装を正式仕様として、APIの接続先、HTTPメソッド、リクエスト項目、レスポンス項目、ステータス、エラー形式を説明します。
Push! Passkey APIは、登録URL発行、認証URL発行、登録結果照会、認証結果照会の4つで構成されます。
すべてのAPIは、顧客サイトのバックエンドからHTTPSで呼び出します。
現在の正式仕様では、APIキーはHTTPの専用ヘッダーではなく、JSON本文のapi_key項目へ設定します。
APIキーをHTML、JavaScript、data属性、URL、ブラウザへ返すJSONへ含めてはいけません。
| 用途 | URL | Method |
|---|---|---|
| 登録URL発行 | https://auth.jintec.com/regist_url |
POST |
| 認証URL発行 | https://auth.jintec.com/auth_url |
POST |
| 登録結果照会 | https://auth.jintec.com/regist_result |
POST |
| 認証結果照会 | https://auth.jintec.com/auth_result |
POST |
Push! Passkey APIへの接続にはHTTPSを使用します。
TLS証明書の検証と接続先ホスト名の検証を有効にしてください。
すべてのAPIでPOSTを使用します。
Content-Type: application/json Accept: application/json
JSON本文はUTF-8で送信します。
APIキーは、管理ツールで対象ドメイン用に発行した値を使用します。
現在の正式仕様では、APIキーをJSON本文のapi_keyへ設定します。
{
"api_key": "管理ツールで発行したAPIキー"
}
APIキーをHTTPのAuthorizationヘッダーやX-API-Keyヘッダーへ設定する方式ではありません。
顧客サイト側では、接続タイムアウトと通信全体のタイムアウトを設定してください。
APIレスポンスはJSON形式です。
HTTPステータスが2xxであっても、ok、必要項目、処理状態を確認してください。
POST https://auth.jintec.com/regist_url
顧客サイトのユーザーへ、パスキー登録を開始するための登録URLを発行します。
{
"api_key": "xxxxxxxxxxxxxxxx",
"user_key": "customer_user_123",
"return_page_url": "https://example.com/mypage/passkey"
}
| 項目 | 型 | 必須 | 内容 |
|---|---|---|---|
api_key |
string | 必須 | 対象ドメイン用APIキー |
user_key |
string | 必須 | 顧客サイトのユーザーを一意に識別する値 |
return_page_url |
string | 必須 | 登録処理後に戻るhttps://から始まるURL |
{
"ok": true,
"kind": "regist",
"user_key": "customer_user_123",
"tenant_id": 1,
"domain_id": 10,
"personal_id": 100,
"domain_name": "example.com",
"request_id": "u_1234567890abcdef1234567890abcdef",
"regist_url": "https://auth.jintec.com/regist?u=u_1234567890abcdef1234567890abcdef",
"expire_at": "2026-07-17T08:30:00+09:00"
}
| 項目 | 型 | 内容 |
|---|---|---|
ok |
boolean | API処理が正常に完了したか |
kind |
string | regist |
user_key |
string | 登録対象ユーザーの識別子 |
tenant_id |
integer | Push! Passkey内部のテナント識別子 |
domain_id |
integer | 登録ドメインの識別子 |
personal_id |
integer | 対象ユーザーの内部識別子 |
domain_name |
string | APIキーに対応するドメイン名 |
request_id |
string | 結果照会に使用するリクエスト識別子 |
regist_url |
string | 利用者を遷移させるパスキー登録URL |
expire_at |
string | 登録URLの有効期限 |
登録URLの有効期限は、発行から10分間です。
期限切れ後は同じURLを再利用せず、新しい登録URLを発行してください。
POST https://auth.jintec.com/auth_url
登録済みパスキーを使った認証を開始するための認証URLを発行します。
{
"api_key": "xxxxxxxxxxxxxxxx",
"return_page_url": "https://example.com/login/callback"
}
認証開始時にuser_keyは送信しません。認証成功後、提示されたCredential IDからPush! Passkeyがユーザーを特定します。
| 項目 | 型 | 必須 | 内容 |
|---|---|---|---|
api_key |
string | 必須 | 対象ドメイン用APIキー |
return_page_url |
string | 必須 | 認証処理後に戻るhttps://から始まるURL |
{
"ok": true,
"kind": "auth",
"request_id": "u_1234567890abcdef1234567890abcdef",
"auth_url": "https://auth.jintec.com/auth?u=u_1234567890abcdef1234567890abcdef",
"expire_at": "2026-07-17T08:30:00+09:00"
}
認証URL発行時点では利用者がまだ特定されていないため、user_key、tenant_id、domain_id、personal_id、domain_nameは返しません。認証成功後、/auth_resultのレスポンスで確認します。
| 項目 | 型 | 内容 |
|---|---|---|
ok |
boolean | API処理が正常に完了したか |
kind |
string | auth |
request_id |
string | 結果照会に使用するリクエスト識別子 |
auth_url |
string | 利用者を遷移させるパスキー認証URL |
expire_at |
string | 認証URLの有効期限(ISO 8601形式) |
認証URLの有効期限は、発行から10分間です。
POST https://auth.jintec.com/regist_result
登録URL発行APIから取得したrequest_idを使い、パスキー登録の処理状態と結果を確認します。
{
"api_key": "xxxxxxxxxxxxxxxx",
"request_id": "u_1234567890abcdef1234567890abcdef"
}
| 項目 | 型 | 必須 | 内容 |
|---|---|---|---|
api_key |
string | 必須 | 登録URL発行時と同じドメイン用APIキー |
request_id |
string | 必須 | 登録URL発行APIから返されたrequest_id |
{
"ok": true,
"kind": "regist",
"request_id": "u_1234567890abcdef1234567890abcdef",
"status": "success",
"user_key": "customer_user_123",
"tenant_id": 1,
"domain_id": 10,
"personal_id": 100,
"issued_at": "2026-07-17T08:10:00+09:00",
"started_at": "2026-07-17T08:10:05+09:00",
"completed_at": "2026-07-17T08:10:12+09:00",
"expire_at": "2026-07-17T08:20:00+09:00",
"return_page_url": "https://example.com/mypage/passkey",
"return_to": {
"regist_success": "",
"regist_failed": "",
"auth_success": "",
"auth_failed": ""
},
"fallback_url": "/passkey_callback.html",
"error_code": "",
"error_message": "",
"is_completed": true,
"is_success": true,
"is_failed": false,
"is_expired": false
}
POST https://auth.jintec.com/auth_result
認証URL発行APIから取得したrequest_idを使い、パスキー認証の処理状態と結果を確認します。
{
"api_key": "xxxxxxxxxxxxxxxx",
"request_id": "u_1234567890abcdef1234567890abcdef"
}
{
"ok": true,
"kind": "auth",
"request_id": "u_1234567890abcdef1234567890abcdef",
"status": "success",
"user_key": "customer_user_123",
"tenant_id": 1,
"domain_id": 10,
"personal_id": 100,
"issued_at": "2026-07-17T08:10:00+09:00",
"started_at": "2026-07-17T08:10:05+09:00",
"completed_at": "2026-07-17T08:10:12+09:00",
"expire_at": "2026-07-17T08:20:00+09:00",
"return_page_url": "https://example.com/login/callback",
"return_to": {
"regist_success": "",
"regist_failed": "",
"auth_success": "",
"auth_failed": ""
},
"fallback_url": "/passkey_callback.html",
"error_code": "",
"error_message": "",
"is_completed": true,
"is_success": true,
"is_failed": false,
"is_expired": false
}
issued_at、started_at、completed_at、expire_atは、URL発行APIと同じISO 8601形式で返します。日本標準時の場合は2026-09-02T14:34:02+09:00のようにタイムゾーンオフセットを含みます。日時が未設定の項目は空文字列です。
| 項目 | 型 | 内容 |
|---|---|---|
ok |
boolean | 結果照会API自体が正常に処理されたか |
kind |
string | registまたはauth |
request_id |
string | 対象トランザクションの識別子 |
status |
string | 現在の処理状態 |
user_key |
string | 顧客サイトから連携されたユーザー識別子 |
tenant_id |
integer | Push! Passkey内部のテナント識別子 |
domain_id |
integer | 登録ドメインの識別子 |
personal_id |
integer | 対象ユーザーの内部識別子 |
issued_at |
string | URL発行日時(ISO 8601形式) |
started_at |
string | 利用者が登録・認証を開始した日時(ISO 8601形式、未設定時は空文字列) |
completed_at |
string | 処理が完了した日時(ISO 8601形式、未設定時は空文字列) |
expire_at |
string | 処理の有効期限(ISO 8601形式) |
return_page_url |
string | 顧客サイトから指定された戻り先URL |
return_to |
object | 処理種別と結果別の戻り先情報 |
fallback_url |
string | フォールバック時の戻り先 |
error_code |
string | 失敗時のエラーコード |
error_message |
string | 失敗時のエラーメッセージ |
is_completed |
boolean | 処理が完了状態か |
is_success |
boolean | 処理が成功したか |
is_failed |
boolean | 処理が失敗したか |
is_expired |
boolean | 処理が期限切れか |
| status | 内容 | 推奨処理 |
|---|---|---|
issued |
URL発行済み、処理開始前 | 待機または再照会 |
in_progress |
登録・認証処理中 | 待機または再照会 |
success |
正常終了 | 照合後に成功処理を実行 |
failed |
失敗 | error_codeを記録し再試行を案内 |
expired |
有効期限切れ | 新しいURLを発行 |
if (
$response['status'] === 'success'
&& $response['is_completed'] === true
&& $response['is_success'] === true
) {
// 成功時の処理
}
ok=trueは、結果照会API自体が正常に応答したことを示します。
パスキー処理の成功は、statusと判定用フラグで確認してください。
Push! Passkeyの共通JavaScriptから顧客サイトのバックエンドエンドポイントへ送信されるactionは次の4種類です。
| action | 処理 | 接続先API |
|---|---|---|
regist_start |
登録URL発行 | /regist_url |
auth_start |
認証URL発行 | /auth_url |
regist_result |
登録結果照会 | /regist_result |
auth_result |
認証結果照会 | /auth_result |
Push! Passkey認証画面から顧客サイトへ戻る際、次のURLパラメータが使用されます。
| パラメータ | 内容 |
|---|---|
pp_kind |
登録または認証の処理種別 |
pp_request_id |
結果照会に使用するrequest_id |
pp_status |
認証画面側での処理状態 |
pp_error_code |
失敗時のエラーコード |
これらのURLパラメータだけで成功判定を行わず、顧客サイトのバックエンドから結果照会APIを呼び出してください。
{
"ok": false,
"error_code": "invalid_api_key",
"message": "APIキーが正しくありません。"
}
| 項目 | >型 | 内容 |
|---|---|---|
ok |
boolean | エラー時はfalse |
error_code |
string | プログラム側で判定するエラーコード |
message |
string | エラー内容 |
| error_code | 内容 |
|---|---|
api_key_required |
APIキー未指定 |
user_key_required |
登録URL発行時にユーザー識別子が未指定(認証URL発行では使用しません) |
invalid_api_key |
APIキー不正または対象ドメイン無効 |
DB_DOMAIN_SELECT_ERROR |
ドメイン情報取得エラー |
DB_REQUEST_INSERT_ERROR |
リクエスト保存エラー |
| error_code | 内容 |
|---|---|
api_key_required |
APIキー未指定 |
request_id_required |
request_id未指定 |
invalid_api_key |
APIキー不正 |
request_not_found |
対象request_idが存在しない |
request_domain_mismatch |
APIキーとリクエストのドメイン不一致 |
request_kind_mismatch |
登録・認証の処理種別不一致 |
REQUEST_EXPIRED |
リクエスト有効期限切れ |
DB_REQUEST_SELECT_ERROR |
リクエスト情報取得エラー |
| HTTP | 内容 |
|---|---|
200 |
API処理成功。レスポンスJSONを確認する |
400 |
必須項目不足、形式不正、入力エラー |
401 |
認証情報不正 |
403 |
権限、契約、ドメインなどの条件不一致 |
404 |
APIまたはrequest_idが存在しない |
405 |
HTTPメソッド不正 |
500 |
Push! Passkey側またはDB処理の内部エラー |
HTTPステータスだけでなく、JSON本文のokとerror_codeも確認してください。
$request_body = [ 'api_key' => $config['api_key'], 'return_page_url' => 'https://example.com/login/callback', ]; $json_body = json_encode( $request_body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR ); $curl = curl_init( 'https://auth.jintec.com/auth_url' ); curl_setopt_array($curl, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 15, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Accept: application/json', ], CURLOPT_POSTFIELDS => $json_body, ]); $response_body = curl_exec($curl); $http_status = (int) curl_getinfo( $curl, CURLINFO_RESPONSE_CODE ); curl_close($curl);
$request_body = [ 'api_key' => $config['api_key'], 'request_id' => $request_id, ];
各エラーコードの発生条件、利用者向け表示、開発者が確認する項目を案内します。
request_idの保存、結果照合、セッション発行、結果の再利用防止を確認します。
HTTP 405、JSONではない応答、APIキー不正、結果を取得できない場合の確認方法を案内します。
Push! Passkey APIは、登録URL発行、認証URL発行、登録結果照会、認証結果照会の4つで構成されます。
登録URL発行APIではapi_key、user_key、return_page_urlを、認証URL発行APIではapi_keyとreturn_page_urlを必須項目として設定します。
結果照会APIでは、JSON本文へapi_keyとrequest_idを設定します。
APIキーは顧客サイトのバックエンドだけで保持し、ブラウザへ出力しないでください。
認証結果は、request_id、kind、user_key、status、判定用フラグを確認した後に利用します。