List customers
curl --request GET \
--url https://api.cdp.coinbase.com/platform/v2/customers \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cdp.coinbase.com/platform/v2/customers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cdp.coinbase.com/platform/v2/customers', 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.cdp.coinbase.com/platform/v2/customers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.cdp.coinbase.com/platform/v2/customers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.cdp.coinbase.com/platform/v2/customers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cdp.coinbase.com/platform/v2/customers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"customers": [
{
"customerId": "customer_af2937b0-9846-4fe7-bfe9-ccc22d935114",
"type": "individual",
"individual": {
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com"
},
"capabilities": {
"custodyCrypto": {
"requested": true,
"status": "active"
},
"custodyFiat": {
"requested": false,
"status": "unrequested"
},
"custodyStablecoin": {
"requested": false,
"status": "unrequested"
},
"tradeCrypto": {
"requested": true,
"status": "pending"
},
"tradeStablecoin": {
"requested": false,
"status": "unrequested"
},
"transferCrypto": {
"requested": true,
"status": "active"
},
"transferFiat": {
"requested": false,
"status": "unrequested"
},
"transferStablecoin": {
"requested": false,
"status": "unrequested"
}
},
"requirements": {
"fullSsn": {
"status": "rejected",
"impact": [
"tradeCrypto"
]
},
"sourceOfFunds": {
"status": "due"
},
"citizenship": {
"status": "due"
},
"tos": {
"status": "due",
"impact": [
"tradeCrypto",
"transferFiat"
],
"tosVersions": [
{
"versionId": "us_individual_2026-05-29",
"languages": [
"en"
],
"url": "https://docs.cdp.coinbase.com/legal/terms/us_individual_2026-05-29"
}
]
}
},
"createdAt": "2026-01-10T14:25:00Z",
"updatedAt": "2026-01-10T14:30:00Z"
}
],
"nextPageToken": "eyJsYXN0X2lkIjogImFiYzEyMyIsICJ0aW1lc3RhbXAiOiAxNzA3ODIzNzAxfQ=="
}{
"errorType": "invalid_request",
"errorMessage": "Invalid request. Please check the request body and parameters."
}{
"errorType": "unauthorized",
"errorMessage": "The request is not properly authenticated."
}{
"errorType": "internal_server_error",
"errorMessage": "An internal server error occurred. Please try again later."
}{
"errorType": "bad_gateway",
"errorMessage": "Bad gateway. Please try again later."
}{
"errorType": "service_unavailable",
"errorMessage": "Service unavailable. Please try again later."
}Customers
List customers
List all customers. The API will return all customers that the API Key has permissions to access. Results are not returned in any guaranteed order.
GET
/
v2
/
customers
List customers
curl --request GET \
--url https://api.cdp.coinbase.com/platform/v2/customers \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cdp.coinbase.com/platform/v2/customers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cdp.coinbase.com/platform/v2/customers', 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.cdp.coinbase.com/platform/v2/customers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.cdp.coinbase.com/platform/v2/customers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.cdp.coinbase.com/platform/v2/customers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cdp.coinbase.com/platform/v2/customers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"customers": [
{
"customerId": "customer_af2937b0-9846-4fe7-bfe9-ccc22d935114",
"type": "individual",
"individual": {
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com"
},
"capabilities": {
"custodyCrypto": {
"requested": true,
"status": "active"
},
"custodyFiat": {
"requested": false,
"status": "unrequested"
},
"custodyStablecoin": {
"requested": false,
"status": "unrequested"
},
"tradeCrypto": {
"requested": true,
"status": "pending"
},
"tradeStablecoin": {
"requested": false,
"status": "unrequested"
},
"transferCrypto": {
"requested": true,
"status": "active"
},
"transferFiat": {
"requested": false,
"status": "unrequested"
},
"transferStablecoin": {
"requested": false,
"status": "unrequested"
}
},
"requirements": {
"fullSsn": {
"status": "rejected",
"impact": [
"tradeCrypto"
]
},
"sourceOfFunds": {
"status": "due"
},
"citizenship": {
"status": "due"
},
"tos": {
"status": "due",
"impact": [
"tradeCrypto",
"transferFiat"
],
"tosVersions": [
{
"versionId": "us_individual_2026-05-29",
"languages": [
"en"
],
"url": "https://docs.cdp.coinbase.com/legal/terms/us_individual_2026-05-29"
}
]
}
},
"createdAt": "2026-01-10T14:25:00Z",
"updatedAt": "2026-01-10T14:30:00Z"
}
],
"nextPageToken": "eyJsYXN0X2lkIjogImFiYzEyMyIsICJ0aW1lc3RhbXAiOiAxNzA3ODIzNzAxfQ=="
}{
"errorType": "invalid_request",
"errorMessage": "Invalid request. Please check the request body and parameters."
}{
"errorType": "unauthorized",
"errorMessage": "The request is not properly authenticated."
}{
"errorType": "internal_server_error",
"errorMessage": "An internal server error occurred. Please try again later."
}{
"errorType": "bad_gateway",
"errorMessage": "Bad gateway. Please try again later."
}{
"errorType": "service_unavailable",
"errorMessage": "Service unavailable. Please try again later."
}Authorizations
A JWT signed using your CDP API Key Secret, encoded in base64. Refer to the Generate Bearer Token section of our Authentication docs for information on how to generate your Bearer Token.
Query Parameters
The number of resources to return per page.
The token for the next page of resources, if any.
Was this page helpful?
⌘I