Create Credit Check
curl --request POST \
--url https://api.deepidv.com/v1/credit-check/hardimport requests
url = "https://api.deepidv.com/v1/credit-check/hard"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.deepidv.com/v1/credit-check/hard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deepidv.com/v1/credit-check/hard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.deepidv.com/v1/credit-check/hard"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.deepidv.com/v1/credit-check/hard")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deepidv.com/v1/credit-check/hard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"session_url": "https://verify.deepidv.com/credit-check-hard/a1b2c3d4-e5f6-7890-abcd-ef1234567890?oid=your-org-id",
"type": "credit-check-hard",
"externalId": "user-12345",
"links": [
{
"rel": "admin_console",
"href": "https://app.deepidv.com/dashboard/session/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"description": "Click this link to view this session in your DeepIDV admin console"
},
{
"rel": "session_details",
"href": "https://api.deepidv.com/v1/sessions/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"description": "Use this ref to fetch the session details"
}
]
}
Credit Check
Create Credit Check
Create a soft or hard credit check session for an applicant
POST
/
v1
/
credit-check
/
hard
Create Credit Check
curl --request POST \
--url https://api.deepidv.com/v1/credit-check/hardimport requests
url = "https://api.deepidv.com/v1/credit-check/hard"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.deepidv.com/v1/credit-check/hard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deepidv.com/v1/credit-check/hard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.deepidv.com/v1/credit-check/hard"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.deepidv.com/v1/credit-check/hard")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deepidv.com/v1/credit-check/hard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"session_url": "https://verify.deepidv.com/credit-check-hard/a1b2c3d4-e5f6-7890-abcd-ef1234567890?oid=your-org-id",
"type": "credit-check-hard",
"externalId": "user-12345",
"links": [
{
"rel": "admin_console",
"href": "https://app.deepidv.com/dashboard/session/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"description": "Click this link to view this session in your DeepIDV admin console"
},
{
"rel": "session_details",
"href": "https://api.deepidv.com/v1/sessions/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"description": "Use this ref to fetch the session details"
}
]
}
POST /v1/credit-check/hard
POST /v1/credit-check/soft
/hard endpoint for a full credit report with AI-powered insights, or /soft for a score-only check.
Request
Headers
| Header | Required | Description |
|---|---|---|
x-api-key | Yes | Your API key |
Content-Type | Yes | application/json |
Body parameters
Both camelCase and snake_case parameter names are accepted. If both are provided for the same field, the camelCase value takes priority.| Parameter | Alias | Type | Required | Description |
|---|---|---|---|---|
first_name | firstName | string | Yes | Applicant’s first name |
last_name | lastName | string | Yes | Applicant’s last name |
email | — | string | Yes | Applicant’s email address |
phone | — | string | Yes | Applicant’s phone number in E.164 format (e.g. +15192223333) |
external_id | externalId | string | No | Your internal reference ID for this session |
send_email_invite | sendEmailInvite | boolean | No | Send an email invitation to the applicant. Defaults to true |
send_phone_invite | sendPhoneInvite | boolean | No | Send an SMS invitation to the applicant. Defaults to true |
redirect_url | redirectUrl | string | No | HTTPS URL to redirect the end-user to after the session ends. Must be a valid HTTPS URL |
uat | — | boolean | No | Put the session into test mode. See Testing below |
uat_type | uatType | string | No | The credit scenario to simulate in test mode. See Testing below |
Example request
curl -X POST https://api.deepidv.com/v1/credit-check/hard \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+15192223333",
"external_id": "user-12345"
}'
const response = await fetch("https://api.deepidv.com/v1/credit-check/hard", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
},
body: JSON.stringify({
first_name: "John",
last_name: "Doe",
email: "john.doe@example.com",
phone: "+15192223333",
external_id: "user-12345",
}),
});
const data = await response.json();
import requests
response = requests.post(
"https://api.deepidv.com/v1/credit-check/hard",
headers={
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
},
json={
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+15192223333",
"external_id": "user-12345",
},
)
Response
200 — Success
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the created session |
session_url | string | URL where the applicant completes the credit check |
type | string | Session type — credit-check-hard or credit-check-soft |
externalId | string | Your external ID (only returned if provided in the request) |
links | array | Convenience links — admin console view and session details API reference |
Error responses
| Status | Description |
|---|---|
400 Bad Request | Invalid request body — check required fields and phone format |
401 Unauthorized | Missing or invalid API key |
402 Payment Required | Insufficient token balance |
429 Too Many Requests | Rate limit exceeded |
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"session_url": "https://verify.deepidv.com/credit-check-hard/a1b2c3d4-e5f6-7890-abcd-ef1234567890?oid=your-org-id",
"type": "credit-check-hard",
"externalId": "user-12345",
"links": [
{
"rel": "admin_console",
"href": "https://app.deepidv.com/dashboard/session/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"description": "Click this link to view this session in your DeepIDV admin console"
},
{
"rel": "session_details",
"href": "https://api.deepidv.com/v1/sessions/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"description": "Use this ref to fetch the session details"
}
]
}
Testing
When building your integration, you can create a session in test mode so it runs against Equifax’s UAT environment using a pre-defined test persona instead of the real applicant’s data. To enable test mode, passuat: true in the request body:
{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+15192223333",
"uat": true,
"uat_type": "STANDARD_HIT"
}
In test mode, the applicant can enter any value for their SIN and address when completing the session — the real data is not used to query Equifax. The result is driven entirely by the
uat_type scenario you specify.uat_type values
Use uat_type to control which credit scenario the session simulates. If omitted, or if an unrecognized value is passed, a scenario is chosen at random.
Clean / standard profiles
| Value | Description |
|---|---|
SHELL_FILE | Minimal credit file — one address, no trades |
MULTIPLE_ADDRESS | Consumer with multiple addresses on file |
STANDARD_HIT | Standard hit — typical credit profile with trades |
Bankruptcy
| Value | Description |
|---|---|
BANKRUPTCY_DISCHARGED | Past bankruptcy, now discharged |
BANKRUPTCY_UNDISCHARGED | Active/unresolved bankruptcy |
BANKRUPTCY_VOLUNTARY | Voluntary deposit under the Bankruptcy Act |
BANKRUPTCY_PROPOSAL | Consumer proposal — debt restructuring |
BANKRUPTCY_RECEIVING_ORDER | Receiving order bankruptcy |
Collections
| Value | Description |
|---|---|
COLLECTION_UNPAID | Unpaid collection account on file |
COLLECTION_UNPAID_2 | Unpaid collection — alternate consumer |
COLLECTION_PAID | Paid/settled collection account on file |
COLLECTION_MULTIPLE | Multiple collections with narrative codes |
Legal items
| Value | Description |
|---|---|
JUDGEMENT | Active judgement on file |
JUDGEMENT_SATISFIED | Satisfied/resolved judgement on file |
FORECLOSURE | Foreclosure on file |
GARNISHMENT | Garnishment on file |
Loans & trades
| Value | Description |
|---|---|
SECURE_LOAN | Secure loan trade on file |
MORTGAGE | Mortgage and revolving credit |
STUDENT_LOAN | Student loan on file |
AUTO_LOAN | Auto loan on file |
TRADE_R5 | Trade with R5 (write-off) and R3 ratings |
TRADE_VARIOUS | Various credit cards with semi-monthly payment frequency |
TRADE_REPOSSESSION | Trade with voluntary repossession |
Alerts & inquiries
| Value | Description |
|---|---|
FRAUD_ALERT | Lost/stolen wallet alert on file |
FOREIGN_INQUIRY | Foreign bureau inquiry on file |
MANY_INQUIRIES | Consumer with many recent credit inquiries |
Other
| Value | Description |
|---|---|
EMPLOYMENT | Consumer with current and former employment records |
BANKING | Personal chequing and savings accounts on file |
TELCO | Telco trade with unpaid collection |
DEATH_NOTICE | Consumer with a death notice on file |
Example — test request
curl -X POST https://api.deepidv.com/v1/credit-check/hard \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+15192223333",
"uat": true,
"uat_type": "BANKRUPTCY_DISCHARGED"
}'
const response = await fetch("https://api.deepidv.com/v1/credit-check/hard", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
},
body: JSON.stringify({
first_name: "John",
last_name: "Doe",
email: "john.doe@example.com",
phone: "+15192223333",
uat: true,
uat_type: "BANKRUPTCY_DISCHARGED",
}),
});
const data = await response.json();
import requests
response = requests.post(
"https://api.deepidv.com/v1/credit-check/hard",
headers={
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
},
json={
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+15192223333",
"uat": True,
"uat_type": "BANKRUPTCY_DISCHARGED",
},
)
⌘I