セッションを作成する
const url = 'https://api.trust.supa-stg.ai/v1/verification-sessions';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"callbackUrl":"https://example.com/kyc/return","state":"c2FtcGxlLXN0YXRl","metadata":{"userId":"user_0001"},"preRegisteredInfo":{"birthDate":"1990-01-01","lastName":"見本","firstName":"花子","address":"東京都見本区見本町1-2-3","gender":"male"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.trust.supa-stg.ai/v1/verification-sessions \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "callbackUrl": "https://example.com/kyc/return", "state": "c2FtcGxlLXN0YXRl", "metadata": { "userId": "user_0001" }, "preRegisteredInfo": { "birthDate": "1990-01-01", "lastName": "見本", "firstName": "花子", "address": "東京都見本区見本町1-2-3", "gender": "male" } }'本人確認のセッションを作る。応答の verificationUrl へ利用者を送ると、利用者がスマートフォンで手続きを進める。結果は webhook で届き、個人情報を含む詳細は GET /v1/verification-sessions/{id} で取得する。verificationUrl はこの応答でしか返らない。API キーはサーバー側だけで使う
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
利用者が手続きを終えたあとに戻す URL。テナントの許可リストに載った https の URL で、クエリ・フラグメントは付けない。戻すときにクエリ sessionId と state を付ける。このクエリは結果ではないので、結果は webhook か GET で確かめる
CallbackUrl へ戻すときにそのまま付ける値(自社側の相関や CSRF 対策に使う)。state を付けた復帰 URL 全体で 8000 バイトまで(callbackUrl が無ければ state 単体で)
自社側の相関用に渡す任意の JSON オブジェクト(自社のユーザー ID など)。JSON にして 8192 バイトまで。webhook にもそのまま載るので個人情報を入れない
object
事前に把握している本人の情報。書類の読み取り値・利用者の入力と照合する。1 項目以上。個人情報 — ログに出さない
object
生年月日(YYYY-MM-DD)
姓
名
住所
性別
Responses
Section titled “Responses”作成したセッション。verificationUrl へ利用者を送る
object
セッション ID(vs_ + 32 桁の 16 進)
セッションの進み具合。created = 作成済み(利用者が未着手)/ collecting = 利用者が提出中 / deciding = 判定中 / reviewing = 手動レビュー待ち / completed = 判定が確定 / expired = 利用者が終えないまま期限切れ / failed = 回復できないエラーで終了。承認か否認かは status ではなく outcome.verdict で見る
利用者を送る URL。1 回だけ開ける秘密の URL で、この応答でしか返らない(GET では返らない)。ログに出さず、本人以外に渡さない
VerificationUrl を開ける期限
セッションの期限。created / collecting のままこの時刻を過ぎると expired になる
作成日時
Example
{ "id": "vs_00000000000000000000000000000001", "status": "created", "verificationUrlExpiresAt": "2026-08-02T12:34:56.000Z", "expiresAt": "2026-08-02T12:34:56.000Z", "createdAt": "2026-08-02T12:34:56.000Z"}CallbackUrl を受け付けられない(テナントの許可リストに無い・https でない・クエリかフラグメントが付いている) | テナントの設定ではセッションを作れない。settings_missing = 設定が無い / no_steps_enabled = 有効な確認手順が 1 つも無い。管理画面で確認の設定を見直す
API キーが無い・正しくない・失効している(理由は区別しない)。Authorization: Bearer <API キー> を確かめる
object
Example
{ "_tag": "Unauthorized"}テナントの IP 許可リストに無いアドレスからの呼び出し。API キーは有効。許可リストの設定を確かめる
object
Example
{ "_tag": "IpNotAllowed"}セッション作成の上限に当たった。時間をおいて作り直す(上限値と Retry-After は返さない)
object
Example
{ "_tag": "RateLimited"}