프로세스 생성
이것은 모든 Unico API 통합의 진입점입니다. 백엔드가 이를 호출하여 프로세스를 생성하고, 프론트엔드는 반환된 토큰을 사용하여 iFrame을 렌더링하거나 사용자를 리디렉션하거나 네이티브 SDK를 초기화합니다.
전체 통합 플로우는 플로우를 참조하세요.
Endpoint
| 환경 | URL |
|---|---|
| 프로덕션 | POST https://api.idcloud.unico.app/client/v1/process |
| 샌드박스 | POST https://api.idcloud.uat.unico.app/client/v1/process |
요청
헤더
| 헤더 | 값 |
|---|---|
Authorization | Bearer <access_token>(인증 참조) |
Content-Type | application/json |
본문 매개변수
필드 요구사항은 flow에 따라 다릅니다
필드가 필수인지, 선택인지, 해당되지 않는지는 통합하는 flow에 따라 다릅니다 — 이 표만으로 필드의 요구사항을 단정하기 전에, 사용 중인 특정 레시피에 대해 플로우를 확인하세요.
| 필드 | 유형 | 설명 |
|---|---|---|
callbackUri | string | 여정이 끝난 후 사용자가 리디렉션되는 URL입니다. 콜백이 앱 내부에서 처리되는 네이티브 SDK flow의 경우 /를 사용하세요. |
flow | string | flow 식별자입니다 — 실행될 기능을 결정합니다. 예: idunicodocs, idunicosign, idchecktrust, idtoken, idsmart. 사용 가능한 플로우를 참조하세요. |
purpose | string | 비즈니스 목적입니다. 허용되는 값: creditprocess, biometryonboarding, carpurchase, ageverification. |
person.duiType | enum | 문서 유형입니다. 아래의 duiType 값을 참조하세요. |
person.duiValue | string | 형식 없는 문서 번호입니다. |
person.friendlyName | string | 여정 UI에 표시되는 사용자의 표시 이름입니다. 최대 50자. |
person.phone | string | 구분자 없는 DDI + DDD + 번호 형식의 전화번호입니다. SMS 또는 WhatsApp으로 알림을 보낼 때 필수입니다. |
person.email | string | 이메일 주소입니다. 전자서명이 포함된 flow에서는 필수입니다. |
person.notifications | array | 여정 링크를 전송할 알림 채널입니다. 각 항목은 NOTIFICATION_CHANNEL_WHATSAPP, NOTIFICATION_CHANNEL_SMS, 또는 NOTIFICATION_CHANNEL_EMAIL 값을 가진 notificationChannel을 포함합니다. |
references | array | 1:1 검증 및 스마트 재검증 flow를 위한 참조 입력입니다. 각 항목은 referenceType(REFERENCE_TYPE_IMAGE_BASE64 또는 REFERENCE_TYPE_PROCESS_ID)과 referenceContent(base64로 인코딩된 이미지 또는 프로세스 UUID)를 포함합니다. 항목은 최대 1개까지만 전송하세요 — 더 긴 배열은 400으로 거부되며, referenceContent는 비어 있으면 안 됩니다. |
useCase | string | 스마트 재검증 시나리오입니다. 🇧🇷 idsmart, idsmart_r2, idsmart_tp1에서 필수입니다. 예: USE_CASE_LOGIN, USE_CASE_FIN_TRANSACTIONS. |
clientReference | string | 귀사 시스템 내 사용자의 고유 식별자입니다. 다중 계정 기능에는 필수입니다. 귀사 기준으로 고유해야 하며, 최대 256자, 공백 없음. |
companyBranchId | string (UUID) | 지점 ID입니다. 서비스 계정에 연결된 지점이 두 개 이상인 경우에만 필수입니다. |
expiresIn | string | 생성 시점부터의 프로세스 유효 기간입니다. 형식: "3600s". 생략하면 기본값은 7일입니다. |
flowConfig | object | flow별 설정 오버라이드입니다. |
flowConfig.biometryCapture.enabledBackCamera | boolean | 기기의 후면 카메라를 사용합니다. 문서 캡처 또는 전자서명 flow와는 호환되지 않습니다. |
contextualization | object | 캡처를 설명하기 위해 여정 중 사용자에게 표시되는 거래 컨텍스트입니다. 특정 국가에 국한되지 않고 모든 지역의 고객이 사용할 수 있습니다. |
contextualization.company_name | string | 여정 중 표시되는 회사 이름입니다. 최대 20자. |
contextualization.currency | string | 사용자에게 표시되는 통화 코드입니다. 허용되는 값: BRL, MXN, USD. |
contextualization.price | number | 사용자에게 표시되는 거래 금액입니다. |
contextualization.locale | object | 여정 중 표시되는 현지화된 텍스트입니다. 키: ptBr, enUs, esMx — 고객의 지역과 관계없이 텍스트에 지원되는 언어는 이것뿐입니다. |
contextualization.locale.{ptBr|enUs|esMx}.reason | string | 여정 중 표시되는 캡처에 대한 짧은 이유입니다. 최대 50자. |
contextualization.locale.{ptBr|enUs|esMx}.title | string | 여정 중 표시되는 고객 안내문의 제목입니다. 최대 100자. text와 함께 제공해야 합니다. HTML 태그는 제거됩니다. |
contextualization.locale.{ptBr|enUs|esMx}.text | string | 여정 중 표시되는 고객 안내문의 본문입니다. 최대 210자. title과 함께 제공해야 합니다. HTML 태그는 제거됩니다. |
imageBase64 | string | 직접 전송되는 셀피입니다. SDK의 캡처 JWT를 받습니다. |
document.purpose | enum | 문서의 용도입니다. 고정된 값: DOCUMENT_PURPOSE_ONBOARDING, DOCUMENT_PURPOSE_CREDIT_PROCESS, DOCUMENT_PURPOSE_CAR_PURCHASE, DOCUMENT_PURPOSE_PAY_BY_PAYCHECK, DOCUMENT_PURPOSE_FGTS. Face Document Match flow에서만 사용됩니다. |
document.files[].data | bytes | 새로운 문서 캡처로, base64로 인코딩됩니다. 브라질에 국한되지 않고 전 세계적으로 사용 가능합니다. document.documentId와는 상호 배타적입니다. |
document.documentId | string (UUID) | 새로운 캡처 대신 동일한 사용자가 이미 캡처한 문서를 재사용합니다. document.files[]와는 상호 배타적입니다. |
expectedResult | object | 테스트/샌드박스 환경에서 기능의 결과를 모의(mock)하고 응답에 simulated: true를 표시합니다. 결과 시뮬레이션(Test Mock)을 참조하세요. |
duiType 값
| 국가 | 값 | 설명 |
|---|---|---|
| AR | DUI_TYPE_AR_PASSPORT | 아르헨티나 여권 |
| AR | DUI_TYPE_AR_DNI | 아르헨티나 DNI |
| AR | DUI_TYPE_AR_LNC | 아르헨티나 운전면허증(Licencia Nacional de Conducir) |
| AT | DUI_TYPE_AT_STNR | 오스트리아 납세자 번호(STNR) |
| BE | DUI_TYPE_BE_NN | 벨기에 국민 번호(NN) |
| BR | DUI_TYPE_BR_CPF | 브라질 CPF |
| BR | DUI_TYPE_BR_PASSPORT | 브라질 여권 |
| BR | DUI_TYPE_BR_CNPJ | 브라질 CNPJ |
| CA | DUI_TYPE_CA_SIN | 캐나다 SIN |
| CH | DUI_TYPE_CH_AHV | 스위스 AHV/AVS 번호 |
| CL | DUI_TYPE_CL_RUN | 칠레 RUN |
| CL | DUI_TYPE_CL_PASSPORT | 칠레 여권 |
| CL | DUI_TYPE_CL_LICENCIA_CONDUCIR | 칠레 운전면허증(Licencia de Conducir) |
| CO | DUI_TYPE_CO_NIT | 콜롬비아 NIT |
| CO | DUI_TYPE_CO_PASSPORT | 콜롬비아 여권 |
| CO | DUI_TYPE_CO_LICENCIA_CONDUCCION | 콜롬비아 운전면허증(Licencia de Conducción) |
| CO | DUI_TYPE_CO_CC | 콜롬비아 시민증(Cédula de Ciudadanía) |
| DE | DUI_TYPE_DE_IDNR | 독일 세무 식별 번호(IdNr) |
| DK | DUI_TYPE_DK_CPR | 덴마크 CPR |
| EC | DUI_TYPE_EC_NI | 에콰도르 NI |
| ES | DUI_TYPE_ES_NIE | 스페인 외국인 식별 번호(NIE) |
| ES | DUI_TYPE_ES_DNI | 스페인 국민 신분증(DNI) |
| FI | DUI_TYPE_FI_HETU | 핀란드 개인 식별 번호(HETU) |
| FR | DUI_TYPE_FR_SPI | 프랑스 세무 참조 번호(SPI) |
| GB | DUI_TYPE_GB_NINO | 영국 국민보험번호(NINO) |
| GT | DUI_TYPE_GT_CUI | 과테말라 CUI |
| ID | DUI_TYPE_ID_NIK | 인도네시아 NIK |
| IE | DUI_TYPE_IE_PPSN | 아일랜드 개인 공공 서비스 번호(PPSN) |
| IT | DUI_TYPE_IT_CF | 이탈리아 세무 번호(CF) |
| LK | DUI_TYPE_LK_NIC | 스리랑카 NIC |
| LU | DUI_TYPE_LU_MATRICULE | 룩셈부르크 국민 식별 번호(Matricule) |
| MX | DUI_TYPE_MX_CURP | 멕시코 CURP |
| MX | DUI_TYPE_MX_RFC_PERSONA_FISICA | 멕시코 RFC(개인) |
| MX | DUI_TYPE_MX_LICENCIA_CONDUCIR | 멕시코 운전면허증(Licencia de Conducir) |
| NG | DUI_TYPE_NG_NIN | 나이지리아 NIN |
| NG | DUI_TYPE_NG_BVN | 나이지리아 은행 인증 번호(BVN) |
| NG | DUI_TYPE_NG_BVN_TOKEN | 나이지리아 BVN 토큰(해시) |
| NG | DUI_TYPE_NG_NIN_TOKEN | 나이지리아 NIN 토큰(해시) |
| NL | DUI_TYPE_NL_BSN | 네덜란드 시민 서비스 번호(BSN) |
| NO | DUI_TYPE_NO_FNR | 노르웨이 국민 식별 번호(Fødselsnummer) |
| PE | DUI_TYPE_PE_RUC | 페루 RUC |
| PE | DUI_TYPE_PE_DNI | 페루 DNI |
| PE | DUI_TYPE_PE_PASSPORT | 페루 여권 |
| PL | DUI_TYPE_PL_PESEL | 폴란드 PESEL |
| PT | DUI_TYPE_PT_NIF | 포르투갈 납세자 번호(NIF) |
| SE | DUI_TYPE_SE_PNR | 스웨덴 개인번호(PNR) |
| SE | DUI_TYPE_SE_SAMORDNINGSNUMMER | 스웨덴 조정 번호(Samordningsnummer) |
| TR | DUI_TYPE_TR_TCKN | 튀르키예 국민 식별 번호(TCKN) |
| US | DUI_TYPE_US_SSN | 미국 SSN |
| US | DUI_TYPE_US_PASSPORT | 미국 여권 |
| US | DUI_TYPE_US_DRIVER_LICENSE | 미국 운전면허증 |
| US | DUI_TYPE_US_PASSPORT_CARD | 미국 여권 카드 |
| US | DUI_TYPE_US_POLYCARBONATE_PASSPORT | 미국 폴리카보네이트 여권 |
| US | DUI_TYPE_US_ID_CARD | 미국 ID 카드 |
| UY | DUI_TYPE_UY_CI | 우루과이 CI |
| ZZ | DUI_TYPE_ZZ_EMAIL | 이메일 주소 |
| ZZ | DUI_TYPE_ZZ_PHONE_NUMBER | 전화번호 |
문서 없이 프로세스 생성하기
flow가 선택적 문서를 허용하는 경우 person.duiType과 person.duiValue를 생략할 수 있습니다. 캡처 후 프로세스는 백엔드가 프로세스 문서 설정으로 문서를 전송할 때까지 AWAITING_FOR_DOCUMENT 상태로 대기합니다.
예제
- cURL
- Node.js
curl -X POST https://api.idcloud.unico.app/client/v1/process \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"flow": "idunicodocs_r2",
"purpose": "biometryonboarding",
"clientReference": "pedido-88216",
"callbackUri": "https://your-app.example.com/onboarding/callback",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909"
}
}'
import fetch from 'node-fetch';
const res = await fetch('https://api.idcloud.unico.app/client/v1/process', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.UNICO_ACCESS_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
flow: 'idunicodocs_r2',
purpose: 'biometryonboarding',
clientReference: 'pedido-88216',
callbackUri: 'https://your-app.example.com/onboarding/callback',
person: {
duiType: 'DUI_TYPE_BR_CPF',
duiValue: '12345678909',
},
}),
});
const { process: proc } = await res.json();
// proc.userRedirectUrl, proc.token, proc.webAppToken
응답
200 OK
{
"process": {
"id": "b7c1f0a2-63d4-4f3e-9a17-2c8e5d41b0aa",
"flow": "idunicodocs_r2",
"state": "PROCESS_STATE_CREATED",
"result": "PROCESS_RESULT_UNSPECIFIED",
"purpose": "biometryonboarding",
"clientReference": "pedido-88216",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909"
},
"capacities": [
"PROCESS_CAPACITY_IDLIVE",
"PROCESS_CAPACITY_IDUNICO",
"PROCESS_CAPACITY_IDDOCS"
],
"authenticationInfo": {
"authenticationId": ""
},
"companyData": {
"branchId": "",
"countryCode": "BRA"
},
"callbackUri": "https://your-app.example.com/onboarding/callback",
"userRedirectUrl": "https://cadastro.unico.app/flow?id=b7c1f0a2-63d4-4f3e-9a17-2c8e5d41b0aa",
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…",
"webAppToken": "eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0…",
"simulated": false
}
}
| 필드 | 유형 | 설명 |
|---|---|---|
process.id | string (UUID) | 프로세스 식별자입니다. 프로세스 조회를 통해 결과를 가져오는 데 사용하세요. |
process.state | enum | PROCESS_STATE_CREATED — 프로세스가 생성되었으며 여정이 아직 시작되지 않았습니다. PROCESS_STATE_FAILED — 프로세스 생성에 실패했습니다. |
process.result | enum | 검증 결과입니다. state = PROCESS_STATE_FINISHED인 경우에만 존재합니다 — 특정 flow가 반환할 수 있는 결과 값은 플로우를 참조하세요. |
process.flow | string | 생성 시 전송된 flow 식별자입니다. |
process.purpose | string | 생성 시 전송된 비즈니스 목적 입니다. |
process.callbackUri | string | 생성 시 전송된 콜백 URI입니다. |
process.clientReference | string | 생성 시 전송된 귀사의 내부 식별자입니다. 요청에 제공된 경우에만 존재합니다. |
process.companyBranchId | string (UUID) | 지점 ID입니다. 요청에 제공된 경우에만 존재합니다. |
process.userRedirectUrl | string | 사용자를 리디렉션할 URL입니다(Web Redirect 및 iFrame 통합). 이 URL을 수정하지 마세요. |
process.token | string | Web SDK iFrame을 초기화하기 위한 JWT입니다. |
process.webAppToken | string | 네이티브 SDK(Android, iOS, Flutter)를 초기화하기 위한 JWT입니다. |
process.createdAt | string (date-time) | 프로세스가 생성된 시각의 타임스탬프입니다. |
process.expiresAt | string (date-time) | 이 시각 이후 프로세스가 만료되어 더 이상 완료할 수 없게 되는 타임스탬프입니다. |
process.capacities | array | 이 프로세스에 설정된 기능입니다. |
process.authenticationInfo | object | 프로세스의 인증 정보입니다(생성 시점에는 비어 있습니다). |
process.person | object | 생성 시 전송된 person 객체의 에코입니다. |
process.companyData.branchId | string (UUID) | 프로세스와 연관된 지점 ID입니다. |
process.companyData.countryCode | string | 지점과 연관된 국가 코드입니다(예: BR, MX). |
오류 코드
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| 코드 | 메시지 | 설명 |
|---|---|---|
3 | invalid flow | 지정된 flow가 존재하지 않을 때. |
3 | invalid person: friendly name exceeds 50 characters. | 표시 이름이 50자를 초과할 때. |
3 | invalid purpose | 제공된 purpose가 유효하지 않을 때. |
3 | invalid callbackUri: unable to parse callbackUri: parse "": empty url, invalid callbackUri: url: | 제공된 callbackUri가 유효하지 않을 때. |
3 | invalid person: email required for notification channel NOTIFICATION_CHANNEL_EMAIL, invalid email address for notification channel NOTIFICATION_CHANNEL_EMAIL | 제공된 이메일이 유효하지 않고 이메일 알림이 설정되어 있을 때. |
3 | invalid person: phone number required for notification channel NOTIFICATION_CHANNEL_WHATSAPP, phone number does not contain 13 chars for notification channel NOTIFICATION_CHANNEL_WHATSAPP | 제공된 전화번호가 유효하지 않고 SMS 또는 WhatsApp 알림이 설정되어 있을 때. |
3 | idnsv2/GetPublicID request error: rpc error: code = InvalidArgument desc = invalid dui value | 제공된 식별자(duiValue)가 유효하지 않을 때. |
3 | invalid expiresIn argument | expiresIn 값이 유효하지 않을 때. |
3 | invalid company_name argument in process contextualization, max length is 20 | contextualization.company_name이 20자를 초과할 때. |
3 | title and text must be provided together in process contexts | locale에서 title 또는 text 중 하나만 제공될 때. |
3 | invalid title argument in process contexts, max length is 100 | locale의 title이 100자를 초과할 때. |
3 | invalid text argument in process contexts, max length is 210 | locale의 text가 210자를 초과할 때. |
3 | invalid reason argument in process contexts, max length is 50 | locale의 reason이 50자를 초과할 때. |
3 | The references array must contain at most one element. | references에 항목이 두 개 이상 전송될 때. |
3 | The references[].referenceContent field is missing. | referenceContent가 비어 있을 때. |
3 | The references[].referenceType field must be IMAGE_BASE64 or PROCESS_ID. | referenceType이 지원되는 값 중 하나가 아닐 때. |
3 | A reference is required for this flow. | flow에서 참조가 필요하지만 전송되지 않았을 때. referenceType이 PROCESS_ID 또는 IMAGE_BASE64인 references[0]을 전송하세요. |
9 | The referenceProcessId field is invalid. | 참조 프로세스가 존재하지 않거나 재사용할 수 없을 때. 전송한 필드명을 알려줍니다 — 해당 필드를 보냈다면 bioTokenId. |
3 | INVALID_IMAGE | 이미지가 유효한 base64가 아니거나 인젝션 시도처럼 보일 때. |
3 | INVALID_DUI | 문서 번호가 표준이 아니거나 존재하지 않을 때. |
3 | IMAGE_TOO_LARGE | 이미지가 최대 크기인 800KB를 초과할 때. |
3 | UNSUPPORTED_IMAGE_FORMAT | 이미지 형식이 PNG, JPEG, WebP가 아닐 때. |
3 | MISSING_IMAGE | 이 flow에 이미지가 필수이지만 전송되지 않았을 때. |
3 | MISSING_NAME | 이 flow에 이름이 필수이지만 전송되지 않았을 때. |
3 | MISSING_DUI | 이 flow에 문서 번호가 필수이지만 전송되지 않았을 때. |
3 | MISSING_PERSON | 이 flow에 person 객체가 필수이지만 전송되지 않았을 때. |
3 | INVALID_REQUEST | 요청 본문이 null이거나 해석할 수 없을 때. |
3 | TOKEN_ALREADY_USED | 캡처 토큰이 이미 사용되었을 때. 이 토큰은 1회용입니다. |
3 | TOKEN_EXPIRED | 캡처 토큰이 만료되었을 때. 10분 이내에 사용해 야 합니다. |
3 | INVALID_BUNDLE | 요청이 보안 요구사항을 충족하지 않을 때. |
3 | INVALID_NAME | 이름이 허용된 최대 길이를 초과할 때. |
3 | INVALID_EMAIL | 이메일 주소의 형식이 잘못되었거나 너무 길 때. |
3 | INVALID_PHONE | 전화번호가 20자를 초과할 때. |
3 | INVALID_DUI_TYPE | 문서 유형이 지원되는 값 중 하나가 아닐 때. |
3 | INVALID_CLIENT_REFERENCE | clientReference가 너무 길거나 공백 또는 #을 포함할 때. |
3 | INVALID_CONSENT_TYPE | consentType이 NONE, DIRECT, INDIRECT 중 하나가 아닐 때. |
3 | INVALID_USE_CASE | useCase를 인식할 수 없거나 너무 길 때. |
3 | INVALID_DEVICE_TRUST_TOKEN | device-trust 토큰이 유효하지 않거나 이미 사용되었을 때. |
3 | TOO_MANY_REFERENCES | references에 항목이 두 개 이상 전송될 때. |
3 | INVALID_REFERENCE_TYPE | referenceType이 IMAGE_BASE64 또는 PROCESS_ID가 아닐 때. |
3 | INVALID_REFERENCE_PROCESS | 참조 프로세스 ID가 유효한 식별자가 아닐 때. |
3 | REFERENCE_PROCESS_NOT_FOUND | 참조된 프로세스가 존재하지 않을 때. |
3 | REFERENCE_PROCESS_NOT_READY | 참조된 프로세스에 재사용 가능한 결과가 없거나 이미 사용되었을 때. |
3 | REFERENCE_SELFIE_NOT_FOUND | 참조된 프로세스에 재사용할 셀피가 없을 때. |
3 | INVALID_CAPTURE_TOKEN | 캡처된 이미지가 캡처 SDK에서 생성한 유효한 토큰이 아닐 때. |
3 | INVALID_CAPTURE_SIGNATURE | 캡처 토큰의 서명이 검증되지 않을 때. |
3 | PRIOR_CAPTURE_NOT_FOUND | 이 요청이 기반으로 하는 이전 캡처를 찾을 수 없을 때. 프로세스를 다시 시작하세요. |
3 | PRIOR_CAPTURE_IN_PROGRESS | 이전 캡처가 아직 완료되지 않았을 때. 잠시 후 다시 시도하세요. |
3 | PRIOR_CAPTURE_FAILED | 이전 캡처를 완료할 수 없었을 때. 프로세스를 다시 시작하세요. |
3 | INVALID_DOCUMENT | 문서 파일을 읽을 수 없거나, 비밀번호로 보호되어 있거나, 지원되지 않는 형식일 때. |
3 | INVALID_AUTH_PROCESS | document.authProcessId가 유효하지 않거나, 만료되었거나, 다른 사람에게 속할 때. |
3 | INVALID_DOCUMENT_PURPOSE | document.purpose가 지원되는 값 중 하나가 아닐 때. |
3 | PROCESS_REUSE_NOT_ENABLED | flow가 이미지 없이 이전 프로세스를 재사용하는 것을 허용하지 않을 때. 대신 이미지를 전송하세요. |
9 | PROCESS_FAILED | 프로세스가 생성 중 종단 오류에 도달했을 때. |
9 | Tenant API key is not configured | API Key가 올바르게 설정되지 않았을 때. |
Bearer 토큰이 누락, 만료, 또는 유효하지 않습니다. 인증을 참조하세요.
| 메시지 | 설명 |
|---|---|
| Jwt header is an invalid JSON | 사용된 access token에 잘못된 문자가 포함되어 있을 때. |
| Jwt is expired | 사용된 access token이 만료되었을 때. |
| 코드 | 메시지 | 설명 |
|---|---|---|
7 | INVALID_API_KEY | API key가 유효하지 않거나 누락되었을 때. |
7 | INVALID_AUTH_TOKEN | 인증 토큰이 유효하지 않을 때. |
7 | PERMISSION_DENIED | 자격 증명은 유효하지만 이 작업에 대한 권한이 없을 때. |
7 | TOKEN_TENANT_MISMATCH | 캡처 토큰이 다른 테넌트를 위해 발급되었을 때. |
7 | MISSING_ACCESS_TOKEN | authorization 헤더가 누락되었을 때. |
| 코드 | 메시지 | 설명 |
|---|---|---|
5 | NO_RESULTS_FOUND | 요청에서 참조한 문서를 찾을 수 없을 때. |
레이트 리밋에 도달했습니다. 시스템이 HTTP 429 오류를 수신하면 연쇄적인 장애를 방지하고 제한이 악화되지 않도록 메커니즘을 구현해야 합니다.
모범 사례:
- 쿨다운 기간(backoff): 시스템에서 후속 요청을 즉시 중지하거나 줄이세요. 실패한 요청을 촘촘한 루프에서 지속적으로 재시도하지 마세요.
- 큐잉 및 스로틀링(Queueing & throttling): 재전송하기 전에 발신 요청을 버퍼링하거나 대기열에 넣어 트래픽 흐름을 제어하세요.
- 지터를 포함한 지수 백오프(Exponential backoff with jitter): 재시도 시 시도 간 대기 시간을 기하급수적으로 늘리고(예: 1초, 2초, 4초, 8초) 작은 무작위 지연("지터")을 추가하여 대기열의 모든 요청이 정확히 같은 밀리초에 재시도하는 허드 효과를 방지하세요.
경고
백오프 없이 레이트 리밋이 적용된 엔드포인트에 지속적으로 요청을 보내면 제한 기간이 연장되고 시스템의 운영 처리량에 심각한 영향을 미칠 수 있습니다. 요청을 적절히 스로틀링하면 더 원활하고 탄력적인 통합이 보장됩니다.
기본 제한, 요청 증가 및 추가 세부 정보는 레이트 리밋을 참조하세요.
| 코드 | 메시지 | 설명 |
|---|---|---|
13 | Internal failure! Try again later | 내부 오류가 발생했을 때. |
다음 단계
- 사용자가 여정을 완료한 후, 프로세스 조회를 호출하여 결과를 가져오거나 webhook을 기다리세요.
- 모든 레시피 조합과 가능한 결과 값을 확인하려면 플로우를 참조하세요.
- 실제 생체 인식 캡처 없이 결과를 테스트하려면 결과 시뮬레이션(Test Mock)을 참조하세요.