curl -X GET 'https://verification.didit.me/v3/businesses/?limit=50' \
-H 'x-api-key: YOUR_API_KEY'import requests
resp = requests.get(
'https://verification.didit.me/v3/businesses/',
headers={'x-api-key': 'YOUR_API_KEY'},
params={'limit': 50},
)
resp.raise_for_status()
page = resp.json()
for biz in page['results']:
print(biz['vendor_data'], biz['status'])const url = new URL('https://verification.didit.me/v3/businesses/');
url.searchParams.set('limit', '50');
const page = await fetch(url, {
headers: { 'x-api-key': process.env.DIDIT_API_KEY },
}).then((r) => r.json());
console.log(page.count, page.results.length);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/businesses/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://verification.didit.me/v3/businesses/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://verification.didit.me/v3/businesses/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/businesses/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"didit_internal_id": "a1b2c3d4-e5f6-4890-abcd-ef1234567890",
"vendor_data": "company-123",
"display_name": null,
"legal_name": "Acme Trading Ltd",
"registration_number": "12345678",
"country_code": "GB",
"effective_name": "Acme Trading Ltd",
"status": "ACTIVE",
"session_count": 2,
"approved_count": 1,
"declined_count": 0,
"in_review_count": 1,
"features": {
"KYB": "Approved"
},
"features_list": [
{
"feature": "KYB",
"status": "Approved"
}
],
"last_session_at": "2026-03-15T10:30:00Z",
"last_activity_at": "2026-03-15T10:30:00Z",
"first_session_at": "2026-01-10T08:00:00Z",
"tags": [
{
"uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "VIP",
"color": "#2567FF"
}
],
"created_at": "2026-01-10T08:00:00Z"
}
]
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}List Businesses
List businesses Didit assembles from KYB sessions sharing the same vendor_data (free-form string, NOT a UUID), plus businesses created via the API. Paginated, ordered by last_session_at desc. This endpoint does not support filtering or search parameters — fetch pages and filter client-side.
curl -X GET 'https://verification.didit.me/v3/businesses/?limit=50' \
-H 'x-api-key: YOUR_API_KEY'import requests
resp = requests.get(
'https://verification.didit.me/v3/businesses/',
headers={'x-api-key': 'YOUR_API_KEY'},
params={'limit': 50},
)
resp.raise_for_status()
page = resp.json()
for biz in page['results']:
print(biz['vendor_data'], biz['status'])const url = new URL('https://verification.didit.me/v3/businesses/');
url.searchParams.set('limit', '50');
const page = await fetch(url, {
headers: { 'x-api-key': process.env.DIDIT_API_KEY },
}).then((r) => r.json());
console.log(page.count, page.results.length);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/businesses/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://verification.didit.me/v3/businesses/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://verification.didit.me/v3/businesses/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/businesses/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"didit_internal_id": "a1b2c3d4-e5f6-4890-abcd-ef1234567890",
"vendor_data": "company-123",
"display_name": null,
"legal_name": "Acme Trading Ltd",
"registration_number": "12345678",
"country_code": "GB",
"effective_name": "Acme Trading Ltd",
"status": "ACTIVE",
"session_count": 2,
"approved_count": 1,
"declined_count": 0,
"in_review_count": 1,
"features": {
"KYB": "Approved"
},
"features_list": [
{
"feature": "KYB",
"status": "Approved"
}
],
"last_session_at": "2026-03-15T10:30:00Z",
"last_activity_at": "2026-03-15T10:30:00Z",
"first_session_at": "2026-01-10T08:00:00Z",
"tags": [
{
"uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "VIP",
"color": "#2567FF"
}
],
"created_at": "2026-01-10T08:00:00Z"
}
]
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}Overview
Returns a paginated list of Business entities for the authenticated application.When to use it
- Sync your business table to an external BI or warehouse.
- Analyst queues — filter by
status=FLAGGEDto drive a review inbox. - Search by
display_name,legal_name,registration_number, orvendor_data.
Filters and pagination
| Query parameter | Description |
|---|---|
status | ACTIVE, FLAGGED, or BLOCKED. |
search | Substring match on display name, legal name, registration, vendor_data. |
country_code | ISO 3166-1 alpha-3 country of incorporation. |
created_after, created_before | Creation date window. |
last_activity_after, last_activity_before | Activity window. |
page_size | 1–200. Default 50. |
cursor | Pagination cursor. |
Notes
vendor_datamay benullif the originating session or transaction did not provide one.- Cursor-based pagination — persist the
nextcursor between calls. - See the Business data model for every field.
Permissions
Role must grantlist:businesses.
Related
Authorizations
Query Parameters
Page size. Defaults to 50 when omitted. There is no enforced maximum, but keep pages small for latency.
x >= 1Zero-based offset of the first record to return. Prefer following the next URL from the previous page over computing this by hand.
x >= 0Response
Paginated list of businesses with status, session counts, and feature breakdown.
Number of matching rows — exact up to 100, capped at 100 beyond that for performance. Do not use it to detect the last page; rely on next being null instead.
Absolute URL of the next page, or null on the last page.
Absolute URL of the previous page, or null on the first page.
Show child attributes
Show child attributes