ドキュメントプロセスの作成
このエンドポイントは、同じパスを共有しながらもボディパラメーターが異なる 2 つのドキュメントフローを処理します:
- 新規キャプチャ — 処理のために base64 でドキュメント画像を送信します(
document.files必須)。 - 再利用 — 以前にキャプチャされたドキュメントを参照することでキャプチャをスキップします(
document.documentId必須)。
有効なフローは、リクエストボディに document.documentId が指定されているかどうかによって決まります。
ドキュメントプロセスを作成する前に、再利用可能なドキュメントの取得を使用して、ユーザーがすでに再利用可能なドキュメントを保有しているか確認してください。
完全なインテグレーションフローについては、API 概要をご覧ください。
エンドポイント
| 環境 | URL |
|---|---|
| 本番 | POST https://api.id.unico.app/processes/v1 |
| サンドボックス | POST https://api.id.uat.unico.app/processes/v1 |
リクエスト
ヘッダー
| ヘッダー | 値 |
|---|---|
Authorization | Bearer <access_token>(認証を参照) |
APIKEY | ドキュメントキャプチャおよび再利用が有効なプロビジョニング済み API キー。 |
Content-Type | application/json |
ボディパラメーター
- 新規キャプチャ
- 再利用
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
subject.duiType | integer | はい | ドキュメントタイプ識別子。以下のduiType の値を参照してください。 |
subject.code | string | はい | subject.duiType で定義されたユーザー識別子の値。ドットやダッシュなし。 |
subject.name | string | いいえ | フルネーム。 |
subject.gender | string | いいえ | M または F。 |
subject.birthDate | string (ISO 8601) | いいえ | 生年月日(YYYY-MM-DD)。 |
subject.email | string | いいえ | メールアドレス。 |
subject.phone | string | いいえ | E.164 形式の電話番号。 |
document.purpose | string | はい | ビジネス目的。値: creditprocess、carpurchase、paybypaycheck、onboarding、fgts。 |
document.authProcessId | string | はい | このドキュメントキャプチャに紐付けられた生体認証プロセスの ID。 |
document.files | array | はい | base64 形式のドキュメント画像(表面および/または裏面)。 |
document.files[].data | string | はい | base64 形式のドキュメント画像(PNG、JPEG、WebP、最大 800 KB)。 |
subsidiaryId | string | いいえ | 支店 ID — 複数の支店が存在する場合のみ必須。 |
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
subject.duiType | integer | はい | ドキュメントタイプ識別子。以 下のduiType の値を参照してください。 |
subject.code | string | はい | subject.duiType で定義されたユーザー識別子の値。ドットやダッシュなし。 |
subject.name | string | いいえ | フルネーム。 |
subject.gender | string | いいえ | M または F。 |
subject.birthDate | string (ISO 8601) | いいえ | 生年月日(YYYY-MM-DD)。 |
subject.email | string | いいえ | メールアドレス。 |
subject.phone | string | いいえ | E.164 形式の電話番号。 |
document.purpose | string | はい | ビジネス目的。値: creditprocess、carpurchase、paybypaycheck、onboarding、fgts。 |
document.authProcessId | string | はい | このドキュメントに紐付けられた生体認証プロセスの ID。 |
document.documentId | string | はい | 以前にキャプチャされたドキュメントの ID(再利用可能なドキュメントの取得から取得)。指定する場合、document.files は省略可能。 |
subsidiaryId | string | いいえ | 支店 ID — 複数の支店が存在する場合のみ必須。 |
duiType の値
| 国 | コード | 説明 |
|---|---|---|
| AR | 6 | アルゼンチン パスポート |
| AR | 7 | アルゼンチン DNI |
| AR | 49 | アルゼンチン 運転免許証(Licencia Nacional de Conducir) |
| AT | 34 | オーストリア 納税者番号(STNR) |
| BE | 36 | ベルギー 国民番号(NN) |
| BR | 1 | ブラジル CPF |
| BR | 5 | ブラジル パスポート |
| BR | 14 | ブラジル CNPJ |
| CA | 28 | カナダ SIN |
| CH | 33 | スイス AHV/AVS番号 |
| CL | 9 | チリ RUN |
| CL | 52 | チリ パスポート |
| CL | 57 | チリ 運転免許証(Licencia de Conducir) |
| CO | 26 | コロンビア NIT |
| CO | 53 | コロンビア パスポート |
| CO | 55 | コロンビア 運転免許証(Licencia de Conducción) |
| CO | 56 | コロンビア 市民証(Cédula de Ciudadanía) |
| DE | 41 | ドイツ 税務識別番号(IdNr) |
| DK | 29 | デンマーク CPR |
| EC | 10 | エクアドル NI |
| ES | 50 | スペイン 外国人識別番号(NIE) |
| ES | 51 | スペイン 国民身分証明書(DNI) |
| FI | 35 | フィンランド 個人識別番号(HETU) |
| FR | 46 | フランス 税務参照番号(SPI) |
| GB | 30 | 英国 国民保険番号(NINO) |
| GT | 12 | グアテマラ CUI |
| ID | 16 | インドネシア NIK |
| IE | 47 | アイルランド 個人公共サービス番号(PPSN) |
| IT | 37 | イタリア 税務番号(CF) |
| LU | 48 | ルクセンブルク 国民識別番号(Matricule) |
| MX | 2 | メキシコ CURP |
| MX | 25 | メキシコ RFC(個人) |
| MX | 58 | メキシコ 運転免許証(Licencia de Conducir) |
| NG | 8 | ナイジェリア NIN |
| NG | 20 | ナイジェリア 銀行認証番号(BVN) |
| NG | 43 | ナイジェリア BVNトークン(ハッシュ化) |
| NG | 44 | ナイジェリア NINトークン(ハッシュ化) |
| NL | 42 | オランダ 市民サービス番号(BSN) |
| NO | 39 | ノルウェー 国民識別番号(Fødselsnummer) |
| PE | 27 | ペルー RUC |
| PE | 40 | ペルー DNI |
| PE | 54 | ペルー パスポート |
| PL | 31 | ポーランド PESEL |
| PT | 45 | ポルトガル 納税者番号(NIF) |
| SE | 32 | スウェーデン 個人番号(PNR) |
| SE | 38 | スウェーデン 調整番号(Samordningsnummer) |
| TR | 24 | トルコ 国民識別番号(TCKN) |
| US | 4 | アメリカ合衆国 SSN |
| US | 11 | アメリカ合衆国 パスポート |
| US | 18 | アメリカ合衆国 運転免許証 |
| US | 21 | アメリカ合衆国 パスポートカード |
| US | 22 | アメリカ合衆国 ポリカーボネートパスポート |
| US | 23 | アメリカ合衆国 IDカード |
| UY | 13 | ウルグアイ CI |
| ZZ | 15 | メールアドレス |
| ZZ | 17 | 電話番号 |
| — | 0 | 未指定 |
| — | 3 | Unico 内部識別子 |
例
- 新規キャプチャ — cURL
- 新規キャプチャ — Node.js
- 再利用 — cURL
- 再利用 — Node.js
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"
},
"document": {
"purpose": "onboarding",
"authProcessId": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"files": [
{ "data": "/9j/4AAQSkZJR..." }
]
}
}'
import fetch from 'node-fetch';
const res = await fetch('https://api.id.unico.app/processes/v1', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.UNICO_ACCESS_TOKEN}`,
'APIKEY': process.env.UNICO_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
subject: {
duiType: 1,
code: '12345678909',
name: 'Luke Skywalker'
},
document: {
purpose: 'onboarding',
authProcessId: '80371b2a-3ac7-432e-866d-57fe37896ac6',
files: [{ data: documentImageBase64 }]
}
})
});
const result = await res.json();
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"
},
"document": {
"purpose": "onboarding",
"authProcessId": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"documentId": "doc-abc-123"
}
}'
import fetch from 'node-fetch';
const res = await fetch('https://api.id.unico.app/processes/v1', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.UNICO_ACCESS_TOKEN}`,
'APIKEY': process.env.UNICO_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
subject: {
duiType: 1,
code: '12345678909'
},
document: {
purpose: 'onboarding',
authProcessId: '80371b2a-3ac7-432e-866d-57fe37896ac6',
documentId: 'doc-abc-123'
}
})
});
const result = await res.json();
レスポンス
200 OK
{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"document": {
"id": "doc-abc-123",
"type": "unico.moja.dictionary.br.cnh.v2.Cnh",
"cpfMatch": true,
"faceMatch": true,
"content": {
"numero": "12345678",
"nomeCivil": "Luke Skywalker",
"dataNascimento": "2000-05-20T00:00:00Z",
"categoria": "B",
"dataExpiracao": "2030-05-20T00:00:00Z"
},
"fileUrls": [
"https://storage.unico.app/documents/doc-abc-123/front.jpg"
]
}
}
| フィールド | 型 | 説明 |
|---|---|---|
id | string (UUID) | プロセス識別子。 |
status | integer | 3(正常終了)、5(失敗終了)。 |
document.id | string | キャプチャされたドキュメントの識別子。今後の再利用のため document.documentId リクエストでこの値を使用してください。 |
document.type | string | 識別されたドキュメントタイプ(完全修飾ディクショナリ名) 。以下のdocument.type の値を参照してください。 |
document.cpfMatch | boolean | ドキュメントから抽出された識別子が subject.code と一致する場合 true。 |
document.faceMatch | boolean | ドキュメントの顔写真が document.authProcessId の生体認証セルフィーと一致する場合 true。 |
document.content | object | OCR で抽出されたフィールド。構造はドキュメントタイプによって異なります — フィールドの詳細はこちらをご覧ください。 |
document.fileUrls | array | ドキュメント画像ダウンロード用の一時 URL(有効期限 10 分)。 |
正常に抽出されたフィールドのみが document.content に含まれます。OCR が読み取れなかった項目は、空の値として返されるのではなく省略されます。
document.type の値
統合スキーマ
統合スキーマ(フィールドリファレンス の unified_schema)を使用するすべてのドキュメントタイプは、document.type に unico.moja.dictionary.<country>.generic.v1.<DocumentType> として返されます。<country> は小文字の ISO 3166-1 alpha-2 コード、<DocumentType> は識別されたタイプです。例:
unico.moja.dictionary.ar.generic.v1.IdCard: アルゼンチンの身分証明書unico.moja.dictionary.us.generic.v1.PolycarbonatePassport: 米国のポリカーボネート製パスポート
個別スキーマ
独自のフィールドスキーマを使用するドキュメントタイプ(フィールドリファレンス の specific_document_schemas に記載)は、以下の表のとおりです。
| 国 | 値 | ドキュメント |
|---|---|---|
| BR | unico.moja.dictionary.br.rg.v2.Rg | RG |
| BR | unico.moja.dictionary.br.cnh.v2.Cnh | CNH(運転免許証) |
| BR | unico.moja.dictionary.br.cin.v1.Cin | CIN |
| BR | unico.moja.dictionary.br.passaporte.v1.Passaporte | パスポート |
| MX | unico.moja.dictionary.mx.ine.v1.Ine | INE 選挙人証 |
| MX | unico.moja.dictionary.mx.lpc.v1.Lpc | Licencia para conducir(運転免許証) |
| MX | unico.moja.dictionary.mx.pasaporte.v1.Pasaporte | パスポート |
| — | unico.moja.dictionary.other.unknown.v1.Unknown | タイプを識別できませんでし た — document.content は空です |
document.type が unico.moja.dictionary.other.unknown.v1.Unknown の場合、OCR 抽出は行われず、フィールドは返されません。
エラーコード
- 400 Bad Request
- 403 Forbidden
- 409 Conflict
- 500 Internal Server Error
| コード | メッセージ | 説明 |
|---|---|---|
99989 | The document is invalid. | document オブジェクトの構造が無効です。 |
99988 | The document is empty. | リクエストボディに document オブジェクトが欠落しています。 |
20900 | O base64 informado não é válido. | base64 パラメーターが無効です。画像ではないか、インジェクションの試みの可能性があります。 |
20807 | A imagem precisa estar no padrão HD ou possuir uma resolução superior a 640 x 480. | アップロードされた画像の解像度が低すぎます。 |
20509 | The subject.name field is invalid. | subject.name に無効な文字が含まれています。 |
20508 | The subject.gender field is invalid. | subject.gender は M または F である必要があります。 |
20507 | O parâmetro subject.code é inválido. | 非標準または存在しない識別子の値。 |
20506 | O base64 informado é muito grande. O tamanho máximo suportado é até 800kb. | 画像サイズが 800 KB を超えています。JPEG92 に圧縮してください。 |
20505 | O base64 informado não é suportado. Os formatos aceitos são png, jpeg e webp. | base64 のフォーマットが無効またはサポートされていません。 |
20068 | The document.documentId or document.files parameter must be present. | document.documentId も document.files も指定されていません。 |
20067 | The document.purpose parameter is invalid. | document.purpose に認識されない値が含まれています。 |
20066 | The document.authProcessId parameter is invalid. | document.authProcessId の値が無効です。 |
20062 | The useCase field is invalid. | useCase フィールドに認識されない値が含まれています。 |
20021 | The subject.phone field is invalid. | subject.phone の形式が無効です(国番号 + 市外局番 + 番号、13 文字)。 |
20019 | The subject.birthDate field is invalid. | subject.birthDate が ISO 8601 形式(YYYY-MM-DD)を外れています。 |
20009 | O parâmetro imagebase64 não foi informado. | ドキュメント画像パラメーターが欠落しています。 |
20008 | The subject.email field is invalid. | subject.email のメール形式が無効です。 |
20005 | O parâmetro subject.code não foi informado. | subject.code パラメーターが欠落しています。 |
20004 | O parâmetro subject não foi informado. | subject パラメーターが欠落しています。 |
20003 | The request body is missing or invalid. | ペイロードが null または無効です。 |
20002 | O parâmetro APIKey não foi informado. | リクエストヘッダーに APIKEY パラメーターが欠落しています。 |
20001 | O parâmetro authtoken não foi informado. | リクエストヘッダーに統合トークンパラメーターが欠落しています。 |
10508 | The JWT with the captured face has already been used. | JWT は一度しか使用できません。 |
10507 | The JWT with the captured face is expired. | JWT の期限が切れています。10 分以内に送信する必要があります。 |
10506 | The imageBase64 field is not a valid JWT from SDK. | imageBase64 が SDK によって生成された有効な JWT ではありません。 |
Bearer トークンまたは APIKEY が欠落、期限切れ、または無効です。認証を参照してください。
| コード | メッセージ | 説明 |
|---|---|---|
30017 | User does not have permission to perform this action. | JWT が不正またはこの操作を実行する権限を持たないユーザーです。 |
10502 | O token informado está expirado. | アクセストークンの期限が切れています。 |
10501 | O token informado é inválido. | 認証トークンが無効です。 |
10201 | O AppKey informado é inválido. | APIKEY が無効または存在しません。 |
| コード | メッセージ | 説明 |
|---|---|---|
20073 | The processID already exists. | 指定された processId がこのテナントにすでに存在します。 |
| コード | メッセージ | 説明 |
|---|---|---|
99999 | Internal failure! Try again later | 内部エラーが発生しました。 |
次のステップ
- この呼び出しの前にドキュメントが利用可能かどうかを確認するには、再利用可能なドキュメントの取得を参照してください。
- 生体認証プロセスの作成(
document.authProcessIdに必要)については、プロセスの作成を参照してください。