# Jumio Documentation
> Jumio Documentation — REST APIs, SDKs, and integration guides for identity verification, credentials, and risk signals.
---
# QuickStart
https://documentation.jumio.ai/docs/quickStart/
# Welcome to Jumio: Quickstart Guide
This introductory guide provides a high-level overview of **Jumio’s end-to-end identity verification platform**, designed to help you quickly and securely onboard users while meeting compliance requirements.
Whether you're integrating identity verification, liveness detection, or document authentication, this guide will walk you through Jumio’s key products and features to help you build your verification flows with confidence and speed.
Our goal is to get you up and running as quickly as possible—so you can start verifying identities and delivering trusted user experiences right away.
---
# ID + Selfie Verification
https://documentation.jumio.ai/docs/quickStart/ID_SelfieVerification
# Quickstart Guide: ID + Selfie Verification
Follow these steps to authenticate, create or update account, launch identity verification workflows, and handle the response.
## Prerequisites
To retrieve your Credentials, log in to the portal and obtain your **client ID** and **client secret**. These are required to authenticate the /token endpoint.
## Step-by-Step Process
### Step 1: Obtain an OAuth2 Bearer Token
- Generate an OAuth2 Bearer token by calling the `/token` endpoint with the POST HTTP method.
- Use **Basic Authentication** with the **client ID** and **client secret** found in the settings section of your Jumio Portal.
- Once obtained, include the token in the `Authorization` header for all subsequent API requests.
:::tip
Refer to the [Authentication documentation](../developer-resources/API/authorization) for the specific endpoint to obtain this token.
:::
#### Access Token URLs (OAuth2)
- US: https://auth.amer-1.jumio.ai/oauth2/token
- EU: https://auth.emea-1.jumio.ai/oauth2/token
- SG: https://auth.apac-1.jumio.ai/oauth2/token
#### Header
```
Accept: application/json
```
#### Body (x-www-form-urlencoded)
```
grant_type=client_credentials
```
#### Example Response
```
{
"access_token": "",
"expires_in": 3600,
"token_type": "Bearer"
}
```
:::note
- OAuth 2.0 access tokens are valid for **60 minutes (3600 seconds)** by default.
- To avoid unnecessary authentication requests and reduce integration costs, **do not call the `/auth` endpoint before every transaction**. Instead, **reuse the same access token until it expires**, and request a new one only when needed.
- For testing purposes, you can use Postman's built-in **OAuth 2.0 authorization type** (under the Authorization tab), which allows you to retrieve and manage tokens automatically across your requests or collections.
- For a step-by-step walkthrough, check out this [short video guide](https://share.vidyard.com/watch/HZqWPsZAAHaPVRYktaDudf).
:::
### Step 2: Create or Update an Account
Use the `/accounts` endpoint to initiate a new workflow for either a [new](../developer-resources/API/CreateUpdateAccounts/creating-and-updating-accounts) or an [existing](../developer-resources/API/account#tag/Account/paths/~1api~1v1~1accounts~1%7BaccountId%7D/put) user.
:::info
A workflow defines which Jumio services will process your user's credentials.
:::
#### New User
- US: POST https://account.amer-1.jumio.ai/api/v1/accounts
- EU: POST https://account.emea-1.jumio.ai/api/v1/accounts
- SG: POST https://account.apac-1.jumio.ai/api/v1/accounts
#### Existing User
- US: PUT https://account.amer-1.jumio.ai/api/v1/accounts/{{accountId}}
- EU: PUT https://account.emea-1.jumio.ai/api/v1/accounts/{{accountId}}
- SG: PUT https://account.apac-1.jumio.ai/api/v1/accounts/{{accountId}}
#### Header
```
Accept: application/json
```
#### Example Request
```
{
"customerInternalReference": "transaction_1234",
"workflowDefinition": {
key": "10549" //ID + Selfie + Supporting Data
}
}
```
#### Example Response
```
{
"timestamp": "ISO-8601 timestamp",
"account": {
"id": "string"
},
"web": {
"href": "https://hosted.jumio.com/...",
"successUrl": "https://yourapp.com/success",
"errorUrl": "https://yourapp.com/error"
},
"sdk": {
"token": "JWT token"
},
"workflowExecution": {
"id": "string",
"credentials": [
{
"id": "string",
"category": "ID | DATA | SELFIE | FACEMAP",
"label": "string",
"allowedChannels": ["WEB", "API", "SDK"],
"api": {
"token": "JWT token",
"workflowExecution": "https://api.jumio.ai/.../workflow-executions/{id}",
"parts": {
"front": "https://.../parts/FRONT",
"back": "https://.../parts/BACK",
"prepared_data": "https://.../parts/PREPARED_DATA",
"face": "https://.../parts/FACE"
}
}
}
]
}
}
```
### Step 3: Launch the Workflow
The account creation response provides three integration options:
#### Option 1: Use Jumio's Hosted Interface
Use workflowExecution.web.href in one of these ways:
- Redirect: Send users to the URL in a new browser tab
- iFrame: Embed the experience in your webpage
- WebView: Load the URL in a mobile app WebView component
``
#### Option 2: Integrate Jumio SDKs
Initialize the SDK using workflowExecution.sdk.token. Refer to the [Jumio SDK documentation](../developer-resources/SDKs/introduction) for implementation details.
#### Option 3: Build Custom Interface with API
Use the workflowExecution.api.workflowExecution endpoint to upload images directly. You'll need to:
- Upload **front, back,** and **selfie** images.
- Finalize the workflow using the **finalization endpoint**.
**_For guidance on using this approach, contact [Jumio support](https://www.jumio.com/contact/support/)._**
### Step 4: Wait for the Callback
Jumio will send a callback when the workflow is complete. This only includes No PII data/non-sensitive data status info, so proceed to retrieve full details. You can check the callback here.
:::note
Callback time varies by workflow—wait accordingly.
:::
### Step 5: Retrieve the Workflow Results
Upon receiving the callback, consume the retrieval API with the GET HTTP method:
- US: `https://retrieval.amer-1.jumio.ai/api/v1/accounts/{accountId}/workflow-executions/{workflowExecutionId}`
- EU: `https://retrieval.emea-1.jumio.ai/api/v1/accounts/{accountId}/workflow-executions/{workflowExecutionId}`
- SG: `https://retrieval.apac-1.jumio.ai/api/v1/accounts/{accountId}/workflow-executions/{workflowExecutionId}`
Once you receive the response from the Retrieval API, parse it to:
- Determine the final status (e.g., passed, rejected, etc.). Learn more about risk scores here.
- Review the extracted document data.
- Take the appropriate next steps based on the results.
#### Example Response
```
{
"workflow": {
"id": "UUID",
"status": "PROCESSED",
"definitionKey": "10011",
"userReference": "MyUser",
"customerInternalReference": "transaction_1234"
},
"account": {
"id": "UUID"
},
"createdAt": "2022-11-28T23:45:02.528Z",
"startedAt": "2022-11-28T23:50:37.221Z",
"completedAt": "2022-11-28T23:50:55.232Z",
"credentials": [
{
"id": "UUID",
"category": "SELFIE",
"parts": [
{
"classifier": "FACE",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/FACE"
}
],
"consent": {
"decisionAccepted": true,
"collectedBy": "CUSTOMER"
}
},
{
"id": "UUID",
"category": "FACEMAP",
"parts": [
{
"classifier": "FACEMAP"
},
{
"classifier": "LIVENESS_1",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/LIVENESS_1"
},
{
"classifier": "LIVENESS_3",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/LIVENESS_3"
},
{
"classifier": "LIVENESS_2",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/LIVENESS_2"
},
{
"classifier": "LIVENESS_5",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/LIVENESS_5"
},
{
"classifier": "LIVENESS_4",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/LIVENESS_4"
},
{
"classifier": "LIVENESS_6",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/LIVENESS_6"
}
],
"consent": {
"decisionAccepted": true,
"collectedBy": "CUSTOMER"
}
},
{
"id": "UUID",
"category": "ID",
"parts": [
{
"classifier": "FRONT",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/FRONT"
},
{
"classifier": "BACK",
"href": "https://retrieval.amer-1.jumio.ai/.../parts/BACK"
}
],
"consent": {
"decisionAccepted": true,
"collectedBy": "CUSTOMER"
}
}
],
"decision": {
"type": "WARNING",
"details": {
"label": "WARNING"
},
"risk": {
"score": 50.0
}
},
"consent": {
"obtained": "yes",
"obtainedAt": "2022-11-28T23:50:40.136Z"
},
"steps": {
"href": "https://retrieval.amer-1.jumio.ai/.../steps"
},
"capabilities": {
"extraction": [
{
"id": "UUID",
"credentials": [
{
"id": "UUID",
"category": "ID"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "OK"
}
},
"data": {
"type": "DRIVING_LICENSE",
"subType": "REGULAR_DRIVING_LICENSE",
"issuingCountry": "USA",
"firstName": "JOHN JACOB",
"lastName": "SMITH",
"dateOfBirth": "1969-01-18",
"expiryDate": "2025-01-18",
"issuingDate": "2019-12-26",
"documentNumber": "N1234567",
"state": "CA",
"gender": "M",
"currentAge": "54"
}
}
],
"similarity": [
{
"id": "UUID",
"credentials": [
{
"id": "UUID",
"category": "SELFIE"
},
{
"id": "UUID",
"category": "ID"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "MATCH"
}
},
"data": {
"similarity": "MATCH"
}
}
],
"liveness": [
{
"id": "UUID",
"credentials": [
{
"id": "UUID",
"category": "SELFIE"
},
{
"id": "UUID",
"category": "FACEMAP"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "OK"
}
},
"data": {
"type": "JUMIO_STANDARD",
"predictedAge": 44,
"ageConfidenceRange": "14-67"
}
}
],
"dataChecks": [
{
"id": "UUID",
"credentials": [
{
"id": "UUID",
"category": "ID"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "OK"
}
}
}
],
"imageChecks": [
{
"id": "UUID",
"credentials": [
{
"id": "UUID",
"category": "SELFIE"
},
{
"id": "UUID",
"category": "ID"
}
],
"decision": {
"type": "WARNING",
"details": {
"label": "REPEATED_FACE"
}
},
"data": {
"faceSearchFindings": {
"status": "DONE",
"findings": [
"22771260-8cb0-42a2-a38a-d8f853063cc2",
"27232651-4b18-4cf1-8d4a-df0451abc717",
"9541ae91-834e-4914-a30d-6534fed4eb6d",
"9414413d-2c76-44d2-9052-8876fa327a02"
]
}
}
}
],
"usability": [
{
"id": "UUID",
"credentials": [
{
"id": "UUID",
"category": "ID"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "OK"
}
}
},
{
"id": "UUID",
"credentials": [
{
"id": "UUID",
"category": "FACEMAP"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "OK"
}
}
},
{
"id": "UUID",
"credentials": [
{
"id": "UUID",
"category": "SELFIE"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "OK"
}
}
}
]
}
}
```
For further details, advanced use cases, or support with customization, please refer to the complete [API documentation](../developer-resources/API/) or contact [Jumio support](https://www.jumio.com/contact/support/).
---
# selfie.DONE
https://documentation.jumio.ai/docs/quickStart/selfieDone
# selfie.DONE
selfie.DONE is an innovative and user-friendly verification method that significantly reduces friction in the ID verification process for trusted users. Instead of scanning an ID every time, Jumio can reuse a previously verified ID when no risk is detected.
The user experience flow starts with a **Liveness check**. Based on the result, Jumio either:
- **Reuses a reusable ID** (if the user has already been verified successfully before and is trusted), or
- **Continues with the standard ID verification flow** (if no reusable qualified ID is found or risk is detected).
This provides a faster and smoother user experience while maintaining strong fraud protection.
:::important
- **selfie.DONE requires Jumio Premium Liveness to reuse a previously verified ID.** Premium Liveness ensures strong liveness verification before ID reuse. If it is not enabled, the verification flow automatically continues with the standard ID verification after Liveness.
- **selfie.DONE supports Central and South American countries.** For users located outside these regions, reusable ID searches are not available, and the user must complete a standard ID scan. If you are looking **selfie.DONE support for other regions where you operate please contact [Jumio Support or Jumio Sales](https://support.jumio.com/s/)**.
:::
## Key Benefits
**1. Faster verification**
For trusted users who have previously completed ID verification, there is no need to scan the same ID again. selfie.DONE reuses a trusted ID, so verification takes less time and feels smoother.
**2. More completed sign-ups**
With fewer steps, more people finish the process. This results in higher conversion rates and lower drop-off rates.
**3. Keep and win more customers**
A simple journey helps you keep existing customers and attract new ones who value speed and ease.
**4. Strong security**
Even when using a stored ID, every check runs against Jumio’s latest fraud models and identity network. You get less friction without compromising on fraud risk protection.
## Supported Channel and Market
- **Channel**: Web SDK and Mobile SDK (API channel not currently supported).
## Prerequisites
selfie.DONE supports past ID reuse based on the data provided for each transaction. To use the latest release of selfie.DONE, customers must meet the following requirements:
- Be natively integrated on the Jumio platform.
- Use the **Web or Mobile SDK channels** for verification.
- Have **Liveness Premium** and **ID Verification** enabled as part of the verification journey.
- Allow **Biometrics (Face) Lookup** and **ID Data Lookup** on the tenant account.
:::important
Reusable ID usage is allowed only for customers utilizing the **Direct Consent model**, where Jumio operates as the Independent Controller.
:::
### Supported Search Criteria
The ability to trigger a reusable ID search depends on different combinations of **user data supplied within [Prepared Data](https://documentation.jumio.ai/docs/references/credentials/#data).** If the required data is not provided or Jumio does not find a matching user, the transaction automatically proceeds with a **new ID scan**. Currently, there are two supported user data options available for selfie.DONE:
1. Name and Date of Birth (Recommended – Global)
2. Country-Specific Identification Number
#### 1. Name and Date of Birth (Recommended – Global)
Use the individual’s full name along with their date of birth. This search criterion is supported globally and is the **recommended default** for searches across all countries within your tenant account’s Accepted IDs configuration.
| **Search Criteria** | **Applicable Countries** | **Required Fields in Prepared Data** |
| -------------------- | -------------------------------- | ---------------------------------------------------------------------------- |
| Name + Date of Birth | IDs from all supported countries | firstName, middleName (if present on Govtg-issued ID), lastName, dateOfBirth |
:::important
Provide **First Name, Middle Name (if present in Govt. issued ID), Last Name, and Date of Birth** to enable reusable ID search across all supported countries. This is the recommended user data to be supplied for a selfie.DONE.
Unless explicitly required by a country:
- Provide only First Name, Middle Name (if present in Govt. issued ID), Last Name, and Date of Birth.
- Do not include Middle Name, unless it appears explicitly on the official document (e.g., Philippines)
:::
#### 2. Country-specific Identification Number
selfie.DONE supports **identifier-based reusable ID search** for specific countries using country-specific unique identifiers.
Identifier searches always use an **exact match** strategy.
| **Search Criteria** | **Applicable Countries** | **Required Prepared Data Fields** |
| ------------------------ | ------------------------ | -------------------------------------- |
| CPF + Document Country | Brazil | personalNumber (CPF), addressCountry |
| CURP + Document Country | Mexico | personalNumber (CURP), addressCountry |
| DNI + Document Country | Peru, Spain | personalNumber (DNI), addressCountry |
| PESEL + Document Country | Poland | personalNumber (PESEL), addressCountry |
:::important
- **Country-specific identification numbers** (such as CPF or CURP, etc.) approach should be used when the collection and use of such identifiers is prevalent as part of the onboarding process in a country, and users are okay to provide them. Examples: CPF number in Brazil or CURP in Mexico, etc.
- Identifier-based searches are performed **only if** the Identification Number country is **provided as part of the address country field within** the Prepared data.
- If the country is not provided as part of the addressCountry, the identifier search will not return a match, and the transaction will proceed with a standard ID verification flow.
- Except for Brazil, identifier-based searches (personalNumber + addressCountry) generally have a **lower likelihood of returning a reusable ID** compared to First Name + Middle Name (if present in Govt. issued ID) + Last Name + Date of Birth–based searches.
- In the current version, reusable ID search is limited to transactions originating in Central and South America. Users located in other regions must scan a new ID. If you are looking selfie.DONE support for other regions where you operate please contact [Jumio Support or Jumio Sales](https://support.jumio.com/s/).
:::
#### 3. Limiting the ID returned by selfie.DONE
**Default limitation on reusable IDs returned**
To maintain consistency with normal ID Verification and customers’ compliance requirements, Jumio always limits the search to the “Accepted IDs” configuration of the tenant account where the transaction is processed.
You can find them listed for your tenant account on Jumio Portal → Settings → Identity Verification → Accepted IDs.

##### Limiting reusable IDs returned per transaction
Further, to limit the number of returned reusable IDs per transaction, you can use Country and/or Document Type in the ID Credential section of the [Account API](https://documentation.jumio.ai/docs/references/credentials/#specifying-the-document-in-the-account-request). This will limit the returned reusable ID to the provided Country and/or Document Type, if found with Jumio.
**Example**

## How Does This Work?
### Step 1: Data Preparation
Before initiating the verification process, the Customer collects the required information from the user and includes it in the initial Account Initiation call as part of the [Prepared Data](https://documentation.jumio.ai/docs/developer-resources/API/uploadingSupportData#example-prepared-data-body).
#### Recommended (Global)
Provide First Name, Middle Name (if present in Govt. issued ID), Last Name, and Date of Birth to enable a global reusable ID search across all supported countries within your tenant account’s Accepted IDs configuration.
**Example**
- First Name: Jane
- Middle Name: Mary
- Last Name: Doe
- Date of Birth: 1992-08-14
#### Country-specific Identification Number (Alternate approach):
For certain countries, a government-issued identification number may be provided along with the address country. For more details, check [this](#2-country-specific-identification-number) section.
**Example: Brazil-issued Documents**
- Address Country: BRA
- CPF field provided in the personalNumber field of prepared data (no special characters)
**Limiting the search per transaction** -
Check [this](#3-limiting-the-id-returned-by-selfiedone) section to limit the reusable ID returned to specific countries and/or ID types.
### Step 2: Liveness Check
The user performs a **liveness check** to confirm physical presence,
- Instructions are provided to guide the user through the proper face capture process.
- Consent is obtained as required for the transaction.
- Liveness checks detect and flag malicious attempts using photos, videos, or deepfakes.
Hence, when the liveness result is Passed, the face is captured successfully, and the system proceeds to search for an ID using the search criteria. When the qualified IDs are found, Jumio confirms by performing biometric matching against past qualified reusable IDs found. This ensures the highest level of security and accurate data sharing on behalf of the ID owner.
If any risk is flagged during the liveness check, or if no eligible reusable ID is found, the workflow bypasses ID reuse and proceeds with a standard ID verification flow.
### Step 3: User Confirmation
If **one or more eligible reusable IDs are found**, Jumio applies additional security and integrity checks and presents single ID for reuse, which has the highest confidence with respect to that transaction.
**A. The system displays the type of ID identified for reuse.**
- ID Image is not shared with the user
**B. The user can choose to:** - Use this ID to complete the transaction, or
- Initiate a new ID scan and upload a new ID if needed.
User confirmation is required to reuse the previously verified ID.
If no eligible reusable ID is found, or if any risk is detected by Jumio, the user is seamlessly routed to a standard ID verification flow for extraction and verification.
Decision making occurs in the background, and the user remains unaware.
### Step 4: Completing Transaction
#### 1. Using Reusable ID
a. The transaction completes faster since ID verification was already performed.
b. All background processing, including **extraction** and **fraud risk checks**, is executed to ensure security.
- This enables the use of the latest fraud detection models and Jumio’s network knowledge about risky connections.
- Your current integration with Jumio doesn’t change, and ID Verification output format and data are received as usual.
c. Any other **custom risk checks** — such as Brazil CPF check, Cross Transaction Risk, Device Risk Check, etc are executed as usual if configured as part of the workflow and enabled for the Customer account.
### Step 5: Viewing Reusable ID Usage in Transaction Results
When a transaction is processed through selfie.DONE, i.e., uses a Reusable ID for processing; this is reflected in the transaction results.
On the Jumio Portal, the transaction details page displays a **“Reusable Identity”** section indicating:
- PreVerified ID: Whether a reusable ID was used for the transaction.
- User Accepted: Whether the user accepted the reuse of the previously verified ID during the flow.
- ID Source: Source of reusable ID. Default is Jumio, except Brazil where it can also be Local Datasource.
:::note
If no eligible reusable ID is found, this section will not appear, and the transaction will reflect standard ID verification information.
:::

#### Tracking Reusable ID Usage
Reusable ID use can be tracked using the Jumio Retrieval API. Refer to the Retrieval API documentation [here](https://documentation.jumio.ai/developer-resources/api/retrieval#tag/Retrieval/operation/getWorkflowExecutionDetails).
Customers can also identify transactions where a reusable ID was used using **Jumio Portal** in the following ways:
- Explorer page - Filter transactions using the _Pre-Verified ID_ = True/False filter.

- Reporting - The _Pre-Verified ID_ field is available as an extractable field in reports.

## Build a Workflow with selfie.DONE
You can configure and manage the selfie.DONE verification flow directly in the **Jumio Workflow Editor**. This self-service setup lets you define when to reuse a previously verified ID or trigger a new ID verification.
### Steps to Configure
#### Step 1: Open the Workflow Editor in the Jumio Portal.
#### Step 2: Create a new workflow or select an existing one to update.

#### Step 3: In the Workflow Builder, add the following components:
#### Step 3.1: Configure Data Acquisition
- Navigate to Credentials Options and add Data Acquisition as the first step in the workflow.

#### Step 3.2: Configure Selfie / Facemap Acquisition
#### For **Facemap Acquisition**, follow the steps below,
- From **Credentials** Options, add a **Facemap Acquisition** step.
- Ensure that the **Web and/or Mobile SDK** is selected as a supported channel.

- Ensure that **Storage, Usability,** and **Liveness** are selected as Capabilities.

#### For **Selfie Acquisition**, follow the steps below,
- From **Credentials** Options, add a **Selfie Acquisition** step.
- Select the **Web and/or Mobile SDK** as the supported channel.

- Enable the following capabilities: **Storage, Usability, Liveness, Similarity,** and **Image Checks**.

#### Step 3.3: Add ID Acquisition
- From Credentials Options, add an ID Acquisition step.
- Under **Advanced Configuration**, select the **Web and/or Mobile SDK** as the supported channel.

- Select Reusable ID as the Acquisition Type.

- Under Basic Configuration, enable the following capabilities: Storage, Usability, Extraction, Image Checks, Data Checks, and Similarity.

#### Step 3.4: Add ID / Identity Verification and Risk Evaluation
- From the **Common** section, add an **ID or Identity Verification** step.

- From the Common section, add a Risk Calculation step and the End of Workflow step.

#### Step 4: Save and Publish your workflow.
- You will notice that the **Custom Workflow Saved Successfully**.

:::info
Include additional elements, such as Lookups or other risk signals, as required.
:::
---
# Doc Proof
https://documentation.jumio.ai/docs/quickStart/docProof
# Quickstart Guide: Doc Proof
This guide outlines the essential steps to integrate Jumio's Doc Proof, utilizing OAuth 2.0 authentication and the Jumio-hosted user experience (Web or SDK). It includes the process of setting up prepared data, launching the workflow, and handling the results.
## Prerequisites
To retrieve your Credentials, log in to the portal and obtain your client ID and client secret. These are required to authenticate the /token endpoint.
## Step-by-Step Process
### Step 1: Authenticate and Get OAuth2 Bearer Token
- Generate an OAuth2 Bearer token by calling the /token endpoint with the POST HTTP method.
- Use Basic Authentication with the client ID and client secret found in the settings section of your Jumio Portal.
- Once obtained, include the token in the Authorization header for all subsequent API requests.
:::note
Refer to the [Authentication documentation](../developer-resources/API/authorization) for the specific endpoint to obtain this token.
:::
#### Access Token URLs (OAuth2)
- US: https://auth.amer-1.jumio.ai/oauth2/token
- EU: https://auth.emea-1.jumio.ai/oauth2/token
- SG: https://auth.apac-1.jumio.ai/oauth2/token
#### Header
```
Accept: application/json
```
#### Body (x-www-form-urlencoded)
```
grant_type=client_credentials
```
#### Example Response
```
{
"access_token": "",
"expires_in": 3600,
"token_type": "Bearer"
}
```
:::note
- OAuth 2.0 access tokens are valid for **60 minutes (3600 seconds)** by default.
- To avoid unnecessary authentication requests and reduce integration costs, **do not call the `/auth` endpoint before every transaction**. Instead, **reuse the same access token until it expires**, and request a new one only when needed.
- For testing purposes, you can use Postman's built-in **OAuth 2.0 authorization type** (under the Authorization tab), which allows you to retrieve and manage tokens automatically across your requests or collections.
- For a step-by-step walkthrough, check out this **[short video guide](https://share.vidyard.com/watch/HZqWPsZAAHaPVRYktaDudf)**.
:::
### Step 2: Initiate a Doc Proof Workflow
Use the /accounts endpoint to initiate a doc proof workflow for either a [new](../developer-resources/API/CreateUpdateAccounts/creating-and-updating-accounts) or an [existing](../developer-resources/API/account#tag/Account/paths/~1api~1v1~1accounts~1%7BaccountId%7D/put) user.
:::tip
A workflow defines which Jumio services will process your user's credentials.
:::
#### New User
- US: POST https://account.amer-1.jumio.ai/api/v1/accounts
- EU: POST https://account.emea-1.jumio.ai/api/v1/accounts
- SG: POST https://account.apac-1.jumio.ai/api/v1/accounts
#### Existing User
- US: PUT https://account.amer-1.jumio.ai/api/v1/accounts/{accountId}
- EU: PUT https://account.emea-1.jumio.ai/api/v1/accounts/{accountId}
- SG: PUT https://account.apac-1.jumio.ai/api/v1/accounts/{accountId}
#### Access Token URLs (OAuth2)
- US: https://auth.amer-1.jumio.ai/oauth2/token
- EU: https://auth.emea-1.jumio.ai/oauth2/token
- SG: https://auth.apac-1.jumio.ai/oauth2/token
#### Header
```
Accept: application/json
```
#### Body (x-www-form-urlencoded)
```
grant_type=client_credentials
```
#### Example Request
```
{
"customerInternalReference":"transaction_1234",
"workflowDefinition":{
"key": 10170,
"credentials": [
{
"category": "DOCUMENT",
"country": {
"predefinedType": "DEFINED",
"values": ["USA"]
},
"type": {
"predefinedType": "DEFINED",
"values": ["BS"]
}
}
]
},
}
```
- workflowDefinition: Specifies the workflow configuration.
- workflowDefinition.key: Set to 10170 to activate the Doc Proof and Multi Doc Upload Image upload (No fraud checks).
- type: Defines the specific document type to be requested from the user. The Document Code may be, (Bank Statement): "BS", Example (Utility Bill): "UB" etc.,
Note: Refer to the [Supported Documents](../references/credentials/#supported-documents) for the complete and up-to-date list of supported document codes.
#### Example Response
The JSON response will contain URLs and tokens for different integration channels:
- web.href: URL for Jumio's hosted web client. Redirect user or embed in an `