メインコンテンツへスキップ

プロセスの作成

MarkdownChatGPTClaude

このエンドポイントは、同じパスを共有しながらボディパラメータ、機能、レスポンスフィールドが異なる3つの製品を処理します:

  • オンボーディング - ユーザーの顔をUnicoの本人認証ベースと比較して本人確認を行います(subject.duiType + subject.code が必須)。
  • トランザクション - 以前のプロセスから同一人物であることを顔対顔の比較で検証します(referenceProcessId または セルフィー/プロセスIDを含む references 配列が必須)。
  • Cardholder Verification - セルフィーの撮影を伴わずに、カードがその宣言された所有者に属することを確認します(subject.code + card が必須)。オプションで、事前に検証済みのプロセスを referenceProcessId 経由で再利用し、再利用ゲートをトリガーできます。指定しない場合、レスポンスは標準の unsure 結果にデフォルトします。Cardholder Verification ケイパビリティを参照してください。

アクティブな製品は、リクエストヘッダーで送信されるAPIKEYによって決定されます。

完全なインテグレーションフローについては、API概要を参照してください。

エンドポイント​

環境URL
本番POST https://api.id.unico.app/processes/v1
サンドボックスPOST https://api.id.uat.unico.app/processes/v1

リクエスト​

ヘッダー
ヘッダー値
AuthorizationBearer <access_token>(認証を参照)
APIKEYプロビジョニング済みAPIキー - アクティブな製品と有効な機能を定義します。
Content-Typeapplication/json
ボディパラメータ
フィールド型必須説明
subject.duiTypeintegerはいドキュメントタイプ識別子。以下のduiType の値を参照してください。
subject.codestringはいsubject.duiType で定義された識別子の値。ドットやダッシュは使用しないでください。
subject.namestringいいえフルネーム。
subject.genderstringいいえM または F。
subject.birthDatestring (ISO 8601)いいえ生年月日(YYYY-MM-DD)。
subject.emailstringいいえメールアドレス。
subject.phonestringいいえE.164形式の電話番号。
subject.clientReferencestring条件付きあなたのシステムにおけるユーザーの一意の識別子。マルチアカウントケイパビリティに必須です。 自社ベース内で一意、最大 256 文字、スペース不可。
useCasestringいいえ操作コンテキスト、例: Onboarding。
subsidiaryIdstringいいえブランチID — 複数のブランチが存在する場合にのみ必要です。
imageBase64stringはいフロントエンドでキャプチャしたセルフィー(base64形式)。
duiType の値
国コード説明
AR6アルゼンチン パスポート
AR7アルゼンチン DNI
AR49アルゼンチン 運転免許証(Licencia Nacional de Conducir)
AT34オーストリア 納税者番号(STNR)
BE36ベルギー 国民番号(NN)
BR1ブラジル CPF
BR5ブラジル パスポート
BR14ブラジル CNPJ
CA28カナダ SIN
CH33スイス AHV/AVS番号
CL9チリ RUN
CL52チリ パスポート
CL57チリ 運転免許証(Licencia de Conducir)
CO26コロンビア NIT
CO53コロンビア パスポート
CO55コロンビア 運転免許証(Licencia de Conducción)
CO56コロンビア 市民証(Cédula de Ciudadanía)
DE41ドイツ 税務識別番号(IdNr)
DK29デンマーク CPR
EC10エクアドル NI
ES50スペイン 外国人識別番号(NIE)
ES51スペイン 国民身分証明書(DNI)
FI35フィンランド 個人識別番号(HETU)
FR46フランス 税務参照番号(SPI)
GB30英国 国民保険番号(NINO)
GT12グアテマラ CUI
ID16インドネシア NIK
IE47アイルランド 個人公共サービス番号(PPSN)
IT37イタリア 税務番号(CF)
LU48ルクセンブルク 国民識別番号(Matricule)
MX2メキシコ CURP
MX25メキシコ RFC(個人)
MX58メキシコ 運転免許証(Licencia de Conducir)
NG8ナイジェリア NIN
NG20ナイジェリア 銀行認証番号(BVN)
NG43ナイジェリア BVNトークン(ハッシュ化)
NG44ナイジェリア NINトークン(ハッシュ化)
NL42オランダ 市民サービス番号(BSN)
NO39ノルウェー 国民識別番号(Fødselsnummer)
PE27ペルー RUC
PE40ペルー DNI
PE54ペルー パスポート
PL31ポーランド PESEL
PT45ポルトガル 納税者番号(NIF)
SE32スウェーデン 個人番号(PNR)
SE38スウェーデン 調整番号(Samordningsnummer)
TR24トルコ 国民識別番号(TCKN)
US4アメリカ合衆国 SSN
US11アメリカ合衆国 パスポート
US18アメリカ合衆国 運転免許証
US21アメリカ合衆国 パスポートカード
US22アメリカ合衆国 ポリカーボネートパスポート
US23アメリカ合衆国 IDカード
UY13ウルグアイ CI
ZZ15メールアドレス
ZZ17電話番号
—0未指定
—3Unico 内部識別子
画像要件
  • 最小解像度: 640 × 480(HD標準)
  • 最大ファイルサイズ: 800 KB(JPEG92圧縮推奨)
  • 受け入れ可能なフォーマット: PNG、JPEG、WebP
  • SDKからのJWTトークンは10分後に期限切れとなり、1回のみ使用可能
圧縮リクエスト

このAPIは、標準の Content-Encoding HTTPヘッダーを使用して、圧縮されたリクエストボディを送信することをサポートしています。これはオプションであり、完全に後方互換性があります。このヘッダーを送信しないクライアントは、これまでと同様に動作し続けます。

サポートされているフォーマット
エンコーディングContent-Encoding ヘッダーステータス
Gzipgzip✅ 推奨
Deflatedeflate✅ サポート対象
圧縮なし(ヘッダーなし)✅ サポート対象(デフォルトの動作)
推奨

gzip を使用してください。言語やHTTPライブラリを問わず最も広くサポートされており、他のフォーマットに見られる実装上の曖昧さを回避できます。

圧縮は、ボディが大きいリクエスト(大規模なJSONペイロード、base64エンコードされた画像アップロード、バッチ送信など)で推奨されます。小さなリクエストの場合、圧縮のオーバーヘッドが適切なメリットをもたらさない場合があります。

圧縮されたリクエストを送信する方法
  1. 選択したアルゴリズムを使用して、リクエストボディ(例: シリアライズされたJSON)を圧縮します。
  2. 圧縮されたボディをバイナリバイトとしてリクエストに送信します。
  3. 対応する値(gzip または deflate)を指定した Content-Encoding ヘッダーを含めます。
  4. Content-Type は、転送時のエンコーディングではなく、元のコンテンツ形式(例: application/json)を示すままにしてください。
echo '{"subject":{"code":"12345678909"},"useCase":"Onboarding","imageBase64":"/9j/4AAQSkZJR..."}' | gzip > body.json.gz

curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-H "Content-Encoding: gzip" \
--data-binary @body.json.gz
ヒント

Pythonの例では、json=ではなくdata=パラメータを使用してください。json=パラメータはペイロードを自動的にシリアライズしますが、圧縮はしません。

deflate を使う場合: 上記の流れは同じです。変わるのは圧縮処理と Content-Encoding の値だけです。

言語deflate
Bash / cURLzlib-flate -compress < body.json > body.json.deflate(qpdf に含まれる)を使い、その後 -H "Content-Encoding: deflate" を指定
Pythongzip.compress(data) の代わりに zlib.compress(data) を使用
.NET (C#)GZipStream の代わりに System.IO.Compression.DeflateStream を使用
deflate は実運用では曖昧

HTTP の deflate コンテンツエンコーディングは zlib ストリーム(RFC 1950)として規定されていますが、一部のクライアントやサーバーは歴史的に raw DEFLATE(RFC 1951)を送信・期待する場合があります。この API は標準の zlib でラップされたストリームを想定しています — これは Python の zlib.compress() や .NET の DeflateStream がデフォルトで生成する出力と同じものです。判断に迷う場合は、こうした曖昧さのない gzip を優先してください。

エラー時の挙動

Content-Encoding にサポートされていない値が指定されている場合、またはボディが破損しているか宣言されたエンコーディングに対して無効な場合、APIは、リクエストボディの解凍に失敗したことを示すメッセージとともに 400 Bad Request を返します。

FAQ

圧縮を使用したくない場合、何か変更する必要がありますか? いいえ。Content-Encoding のサポートは追加的なものです — このヘッダーがないリクエストは、これまでと同様に正常に処理されます。

これはAPIレスポンスに影響しますか? いいえ。この機能は、クライアントが送信するボディ(リクエスト)のみに関係します。レスポンスの圧縮(APIが返すもの)は、Accept-Encoding ヘッダーによって別途制御されます。

どのフォーマットを選択すべきですか? 特定の環境上の制約で他のフォーマットが必要な場合を除き、gzip を使用してください。

例​

curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": {
"duiType": 1,
"code": "12345678909",
"name": "Luke Skywalker",
"gender": "M",
"birthDate": "2000-05-20",
"email": "[email protected]",
"phone": "5519725570707"
},
"useCase": "Onboarding",
"imageBase64": "/9j/4AAQSkZJR..."
}'

レスポンス​

200 OK

このコントラクトは単一で、idCloud.result フィールドが使用されたケイパビリティの統合された判定結果を保持します。

Unicoは、実行されたケイパビリティの結果を単一の idCloud.result に統合します。個々の結果をオーケストレーションする必要はなく、フローの次のステップをすぐに判断できます。

{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"idCloud": {
"result": "approved"
}
}
フィールド型説明
idstring (UUID)プロセス識別子。再クエリにはプロセスの取得で使用します。
statusinteger1(処理中)、3(成功で完了)、5(エラー)。
可能な結果の値
idCloud.result意味推奨アクション
approved実在の人物であり、本人確認済み。フローを継続します。
denied本人確認が完了しなかった、ライブネスチェックに失敗した、または重大なリスクが検出された。フローを終了するか、代替フローにリダイレクトします。
critical-risk重大なリスクレベルが検出された。フローを終了するか、手動レビューに振り分けます。
high-risk高いリスクレベルが検出された。手動レビューまたは代替フローに振り分けます。
retry評価に十分なキャプチャまたはスコアが得られなかった。ユーザーに新しいキャプチャを依頼します。
inconclusive判定に十分な証拠がない。手動レビューまたは代替フローに振り分けます。

返される値は、APIKeyに設定されたレシピによって異なります。各レシピが返す結果値については、フローを参照してください。

Brazilブラジルのクライアントはケイパビリティ単位のレスポンスを受け取る場合があります

全体のレスポンス構造は変わらず、単一の結果がデフォルトです。

ブラジルの統合はケイパビリティごとに開かれた結果を受け取る場合があります。APIKeyで有効化された各ケイパビリティがレスポンスに独自のブロックを追加し、無効なケイパビリティのフィールドは省略されます。

{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"unicoId": { "result": "yes" },
"riskLevel": { "result": "inconclusive" },
"idFace": {
"personId": "a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890",
"result": "FOUND"
},
"government": { "serpro": 87 },
"liveness": 1
}
レスポンスフィールドはAPIKeyによって異なります

上記の例は、すべての可能な機能フィールドを示しています。実際のレスポンスには、APIKey設定で有効になっている機能のフィールドのみが含まれます。無効な機能のフィールドは完全に省略されます。機能の有効化または調整については、Unicoのプロジェクトマネージャーにお問い合わせください。

フィールド型説明
unicoId.resultstringyes、no、inconclusive - 本人確認を参照。
riskLevel.resultstringapproved、reproved、risk-critical、risk-high、inconclusive — 下記の使用可能な値または不正リスク分類を参照。
idFace.resultstringFOUND — 顔識別子を参照。
idFace.personIdstring顔の安定した不透明な識別子。idFace.result = FOUND とともに返されます。画像内で顔を識別できない場合、リクエストは idFace ブロックを返す代わりにエラー 20532 で失敗します。
identityFraudsters.resultstring非推奨。 代わりに riskLevel を使用してください。現在インテグレーションを進行中のクライアントは、プロジェクトチームと移行を調整しながら引き続き使用できます。
government.serprointegerSerpro類似度スコア(0-100、-1、-2)。ブラジルのみで利用可能。Serpro類似度返却を参照。
livenessinteger1(合格)、2(不合格) - ライブネスを参照。
riskLevel.result — 使用可能な値
値意味
approved本人の顔であり、不正に関連する証拠は見つかりませんでした。
reproved複数の不正指標が検出されたため、拒否を推奨します。
risk-critical拒否を推奨しますが、最終的な判断はお客様の裁量に委ねられます。クリティカルリスクは、強力な不正証拠が少なくとも2つ見つかったことを示します。
risk-high拒否も推奨されますが、判断はお客様に委ねられます。ハイリスクは、強力な不正証拠が少なくとも1つ見つかったことを示します。
inconclusive強力な不正証拠は見つかりませんでした。そのため、関連するリスクが存在するかどうかを判断することはできません。
情報

unicoId.result = inconclusive かつリスクスコアオーケストレーションがアクティブな場合、プロセスは status: 1(処理中)を返す場合があります。最終結果を取得するには、プロセスの取得をポーリングするか、Webhookを使用してください。

MexicoメキシコのクライアントはRENAPO検証ブロックを受け取る場合があります

レスポンスの構造は同じままで、idGov ブロックが追加されます。

RENAPO検証が有効なメキシコの統合は、ユーザーのCURPについてRENAPOが保有するレコードを含む追加の idGov ブロックを受け取ります。これは本人確認の結果とは別個の回答です。

{
"id": "11111111-2222-3333-4444-555555555555",
"status": 3,
"idCloud": { "result": "approved" },
"idGov": {
"government_valid": true,
"curp": "PUEA880304MDFRJN04",
"government_name": "ANA PRUEBA EJEMPLO",
"date_of_birth": "1988-03-04",
"age": 38,
"gender": "F",
"deceased": false,
"is_mexican": true,
"citizenship": "MEXICO",
"state_of_birth": "Ciudad de México",
"state_iso": "MX-CMX",
"issuing_entity_code": "DF",
"municipality_registration": ""
}
}
フィールド型説明
idGovobjectCURPに対するRENAPOのレコード。ケイパビリティが有効でない場合は存在しません。RENAPOが応答しなかった場合は {}。メキシコのみで利用可能。RENAPO検証を参照してください。

エラーコード​

コードメッセージ説明
40221This flow does not support reusing a prior process (referenceProcessId or bioTokenId) without an image; send an image (imageBase64, or references[0] with type IMAGE_BASE64) instead.再利用フロー(referenceProcessId/bioTokenId、画像なし)は、このAPIキーでプロセスの再利用が有効になっていないため拒否されました。
20900O base64 informado não é válido.base64パラメータが無効です。画像でないか、インジェクションの試みの可能性があります。
20807A imagem precisa estar no padrão HD ou possuir uma resolução superior a 640 x 480.アップロードされた画像の解像度が低すぎます。
20532No face detected in image.送信された画像内に顔を検出できませんでした。
20513The referenced process was not found.referenceProcessId が存在しないか、アクセスできなくなったプロセスを指しています。
20512The referenced process is not available for reuse.リファレンスプロセスは存在しますが、再利用できません。
20509The subject.name field is invalid.subject.name に無効な文字が含まれています。
20508The subject.gender field is invalid.subject.gender は M または F でなければなりません。
20507O parâmetro subject.code é inválido.非標準または存在しないCPF。
20506O base64 informado é muito grande. O tamanho máximo suportado é até 800kb.画像サイズが800 KBを超えています。JPEG92に圧縮してください。
20505O base64 informado não é suportado. Os formatos aceitos são png, jpeg e webp.base64フォーマットが無効またはサポートされていません。
20065The referenceProcessId field is invalid.referenceProcessId が有効なUUIDではありません。
20062The useCase field is invalid.useCase フィールドの値が認識されません。
20024The referenceProcessId field is missing.referenceProcessId パラメータが提供されておらず、代替として references も送信されていません。Cardholder Verificationには適用されません — その referenceProcessId は必須として検証されることはなく、再利用の条件が満たされない場合は unsure が返されます。
20533The card field is missing.Cardholder Verification: card オブジェクトが提供されていません。
20534The card.bin field is missing.Cardholder Verification: card.bin が提供されていません。
20535The card.last4 field is missing.Cardholder Verification: card.last4 が提供されていません。
20536The card data is invalid.Cardholder Verification: カードデータが無効として拒否されました。
20021The subject.phone field is invalid.subject.phone のフォーマットが無効です(IDD + 市外局番 + 番号、13文字)。
20019The subject.birthDate field is invalid.subject.birthDate がISO 8601フォーマット(YYYY-MM-DD)の範囲外です。
20009O parâmetro imagebase64 não foi informado.セルフィー画像パラメータが欠落しています。
20008The subject.email field is invalid.subject.email のメールフォーマットが無効です。
20006O parâmetro subject.name não foi informado.subject.nameパラメータが欠落しています。
20005O parâmetro subject.code não foi informado.subject.codeパラメータが欠落しています。
20004O parâmetro subject não foi informado.subjectパラメータが欠落しています。
20003The request body is missing or invalid.ペイロードがnullまたは無効です。
20002O parâmetro APIKey não foi informado.リクエストヘッダーにAPIKEYパラメータが欠落しています。
20001O parâmetro authtoken não foi informado.リクエストヘッダーにインテグレーショントークンパラメータが欠落しています。
10508The JWT with the captured face has already been used.JWTは1回のみ使用可能です。
10507The JWT with the captured face is expired.JWTが期限切れです。10分以内に送信する必要があります。
10506The imageBase64 field is not a valid JWT from SDK.imageBase64 がSDKで生成された有効なJWTではありません。

次のステップ​

  • オンボーディングプロセスの結果をクエリするには、プロセスの取得を参照してください。
  • すべてのレシピの組み合わせとその可能な結果値を確認するには、フローを参照してください。
  • ドキュメントおよび年齢確認の操作については、このセクションのそれぞれのページを参照してください。