curl --request GET \
--url https://api.platform.dakota.xyz/customers \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.platform.dakota.xyz/customers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/customers"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/customers"
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))
}{
"data": [
{
"id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"name": "Acme Corp",
"email": "contact@acmecorp.com",
"external_id": "external_customer_123",
"customer_type": "business",
"kyb_status": "pending",
"kyc_status": "pending",
"kyb_links": [
{
"provider_id": "trm_labs",
"link_type": "persona",
"url": "https://verify.provider.com/kyb/a1b2c3d4e5f6",
"status": "pending",
"created_at": 1234567890,
"updated_at": 1234567890,
"expires_at": 1234567890,
"deleted_at": 1234567890
}
],
"provider_statuses": [
{
"provider_id": "trm_labs",
"status": "approved",
"endorsements": [
"string"
]
}
],
"application_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"decision": "approved",
"application_url": "https://onboarding.example.com/applications/abc123?token=xyz789",
"created_at": 1234567890,
"updated_at": 1234567890,
"deleted_at": 1234567890
}
],
"meta": {
"total_count": 100,
"has_more_after": true,
"has_more_before": false
}
}{
"type": "https://docs.dakota.xyz/api-reference/errors#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "Invalid request",
"instance": "https://api.platform.dakota.xyz/customers",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#authentication-error",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "https://api.platform.dakota.xyz/customers",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Forbidden",
"instance": "https://api.platform.dakota.xyz/customers",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}List all customer records
Returns a paginated list of customers for the authenticated client. Supports cursor pagination and optional external_id or search filters.
curl --request GET \
--url https://api.platform.dakota.xyz/customers \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.platform.dakota.xyz/customers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/customers"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/customers"
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))
}{
"data": [
{
"id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"name": "Acme Corp",
"email": "contact@acmecorp.com",
"external_id": "external_customer_123",
"customer_type": "business",
"kyb_status": "pending",
"kyc_status": "pending",
"kyb_links": [
{
"provider_id": "trm_labs",
"link_type": "persona",
"url": "https://verify.provider.com/kyb/a1b2c3d4e5f6",
"status": "pending",
"created_at": 1234567890,
"updated_at": 1234567890,
"expires_at": 1234567890,
"deleted_at": 1234567890
}
],
"provider_statuses": [
{
"provider_id": "trm_labs",
"status": "approved",
"endorsements": [
"string"
]
}
],
"application_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"decision": "approved",
"application_url": "https://onboarding.example.com/applications/abc123?token=xyz789",
"created_at": 1234567890,
"updated_at": 1234567890,
"deleted_at": 1234567890
}
],
"meta": {
"total_count": 100,
"has_more_after": true,
"has_more_before": false
}
}{
"type": "https://docs.dakota.xyz/api-reference/errors#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "Invalid request",
"instance": "https://api.platform.dakota.xyz/customers",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#authentication-error",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "https://api.platform.dakota.xyz/customers",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Forbidden",
"instance": "https://api.platform.dakota.xyz/customers",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}Authorizations
Query Parameters
A cursor for use in pagination. starting_after is a KSUID for the object you are listing that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with ID 2B5J8KZ9N7M1K3P6Q8R4T7V9, your subsequent call can include starting_after=2B5J8KZ9N7M1K3P6Q8R4T7V9 in order to fetch the next page of the list.
KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
A cursor for use in pagination. ending_before is a KSUID for the object you are listing that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with ID 2B5J8KZ9N7M1K3P6Q8R4T7V9, your subsequent call can include ending_before=2B5J8KZ9N7M1K3P6Q8R4T7V9 in order to fetch the previous page of the list.
KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
1 <= x <= 100Filter customers by external ID
Search customers by name, email, or customer ID (case-insensitive)
Filter customers by KYB status (single value). Overall status of the KYB verification process (e.g., pending, active, restricted).
active, pending, partner_review, rejected, frozen, auto_declined "pending"
Filter customers by one or more KYB statuses. Comma-separated list (e.g. active,frozen).
Filter customers by one or more effective KYC/B link statuses.
Comma-separated list (e.g. pending,in_review). Values mirror
the KybLinkStatus enum (not_started, pending, in_review,
approved, expired, rejected).
Filter customers by one or more onboarding application statuses.
Comma-separated list (e.g. submitted,under_review). Values
mirror the ApplicationStatus enum. Customers without an
application are excluded when this filter is set.
Filter customers by one or more unified customer statuses.
Comma-separated list (e.g. frozen,info_requested). Values mirror
the CustomerStatus enum (frozen, declined, withdrawn,
approved, info_requested, submitted, pending).
This is the single client-facing status that the dashboard shows,
filters, and counts by. It collapses the frozen state, the
application decision, and the application lifecycle into one value
(see the status field on Customer for the precedence).
Filter customers by sub-client association. Returns only customers associated with the specified sub-client. KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
When true, returns only customers that are sub-clients (designated as such at creation). When false or omitted, returns all customers.
Field to sort customers by. Defaults to name.
application_status, created_at, customer_type, id, kyb_status, kyc_status, name, status Sort direction. Defaults to asc.
asc, desc Filter customers created at or after this ISO 8601 datetime (e.g. 2024-01-01T00:00:00Z).
Filter customers created at or before this ISO 8601 datetime (e.g. 2024-12-31T23:59:59Z).
Response
List of all customer records
Show child attributes
Show child attributes
Meta information about the response
Show child attributes
Show child attributes
How many customers hold each unified status, across the
same filters (search, date, sub-client) but ignoring the
status selection itself, so the dashboard can render a
count per status chip while a status filter is active.
Show child attributes
Show child attributes
Was this page helpful?

