import { WhopClient } from "@whop/sdk";
const client = new WhopClient({ token: "YOUR_TOKEN", apiVersionDate: "2026-08-21-1", idempotencyKey: "YOUR_IDEMPOTENCY_KEY" });
await client.verifications.list({
account_id: "account_id"
});curl --request GET \
--url https://api.whop.com/api/v1/verifications \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.whop.com/api/v1/verifications"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.whop.com/api/v1/verifications', 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.whop.com/api/v1/verifications",
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.whop.com/api/v1/verifications"
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.whop.com/api/v1/verifications")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/verifications")
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{
"data": [
{
"account_ids": [
"biz_xxxxxxxxxxxxxx"
],
"owners": [
{
"date_of_birth": "1985-06-01",
"first_name": "Riley",
"id": "own_xxxxxxxxxxxxxx",
"last_name": "Owner",
"ownership_percentage": 60,
"rejected_checks": [
"details"
],
"required_documents": [
{
"document": "id_card_front",
"rejection_reason": "Document image was too blurry to read.",
"status": "submitted"
}
],
"roles": [
"ubo"
],
"status": "not_started"
}
],
"address": {
"city": "Austin",
"country": "US",
"line1": "4180 Burnet Rd",
"line2": "Suite 2",
"postal_code": "78756",
"state": "TX"
},
"business_name": "Shine Time Auto Detailing, LLC",
"business_structure": "sole_proprietorship",
"country": "US",
"created_at": "2026-06-01T12:00:00.000Z",
"date_of_birth": "1990-01-01",
"email": "marcus@shinetime.example",
"first_name": "Marcus",
"id": "idpf_xxxxxxxxxxxx",
"incorporation_date": "2021-03-15",
"kind": "individual",
"last_name": "Webb",
"phone": "+15551234567",
"place_of_incorporation": "Delaware",
"registration_number": "7654321",
"requested_information": [
{
"id": "inrqi_xxxxxxxxxxx",
"label": "Bank Statement or a check for account ending in 4242",
"requirement": "bank_statement",
"type": "files",
"action_url": "<string>",
"alternative_document_label": "IRS EIN letter (CP 575 or 147C) that shows your business's legal name and your EIN on the same letter",
"details_label": "<string>",
"details_required": true,
"details_visible_for": [
"<string>"
],
"errors": [
{
"code": "document_not_readable",
"reason": "The uploaded image was too blurry to read."
}
],
"optional": true,
"options": [
"sole_proprietorship"
],
"response_type": "yes_no",
"selection_mode": "single",
"supporting_documents": [
{
"blurhash": null,
"content_type": "application/pdf",
"created_at": "2026-01-01T12:00:00.000Z",
"duration_seconds": null,
"filename": "evidence.pdf",
"height": null,
"id": "file_xxxxxxxxxxxxxx",
"object": "file",
"removed_by_moderation": false,
"size": 9670,
"upload_status": "pending",
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/audio/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"visibility": "private",
"waveform_url": null,
"width": null,
"multipart_chunk_size": 5242880,
"multipart_upload_id": "upload-id",
"multipart_upload_urls": [
{
"part_number": 1,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/application.pdf"
}
],
"upload_headers": {},
"upload_url": "https://whop-assets-example.s3.amazonaws.com/uploads/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/application.pdf"
}
],
"supporting_files_explanation_allowed": true,
"supporting_files_required": true,
"supporting_files_visible_for": [
"<string>"
]
}
],
"required_documents": [
{
"document": "id_card_front",
"rejection_reason": "Document image was too blurry to read.",
"status": "submitted"
}
],
"session_url": "https://sumsub.com/session/abc",
"status": "action_required",
"updated_at": "2026-06-02T12:00:00.000Z"
}
],
"page_info": {
"end_cursor": null,
"has_next_page": false,
"has_previous_page": false,
"start_cursor": "WyJjdXJzb3IiLDFd"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}List Verifications
Lists the verifications for an account or user, including their status and any required actions. Platforms list their own and every subaccount’s verifications at once with include_subaccounts; each one’s account_ids names its account, and a verification shared by several accounts appears once for each.
import { WhopClient } from "@whop/sdk";
const client = new WhopClient({ token: "YOUR_TOKEN", apiVersionDate: "2026-08-21-1", idempotencyKey: "YOUR_IDEMPOTENCY_KEY" });
await client.verifications.list({
account_id: "account_id"
});curl --request GET \
--url https://api.whop.com/api/v1/verifications \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.whop.com/api/v1/verifications"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.whop.com/api/v1/verifications', 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.whop.com/api/v1/verifications",
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.whop.com/api/v1/verifications"
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.whop.com/api/v1/verifications")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/verifications")
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{
"data": [
{
"account_ids": [
"biz_xxxxxxxxxxxxxx"
],
"owners": [
{
"date_of_birth": "1985-06-01",
"first_name": "Riley",
"id": "own_xxxxxxxxxxxxxx",
"last_name": "Owner",
"ownership_percentage": 60,
"rejected_checks": [
"details"
],
"required_documents": [
{
"document": "id_card_front",
"rejection_reason": "Document image was too blurry to read.",
"status": "submitted"
}
],
"roles": [
"ubo"
],
"status": "not_started"
}
],
"address": {
"city": "Austin",
"country": "US",
"line1": "4180 Burnet Rd",
"line2": "Suite 2",
"postal_code": "78756",
"state": "TX"
},
"business_name": "Shine Time Auto Detailing, LLC",
"business_structure": "sole_proprietorship",
"country": "US",
"created_at": "2026-06-01T12:00:00.000Z",
"date_of_birth": "1990-01-01",
"email": "marcus@shinetime.example",
"first_name": "Marcus",
"id": "idpf_xxxxxxxxxxxx",
"incorporation_date": "2021-03-15",
"kind": "individual",
"last_name": "Webb",
"phone": "+15551234567",
"place_of_incorporation": "Delaware",
"registration_number": "7654321",
"requested_information": [
{
"id": "inrqi_xxxxxxxxxxx",
"label": "Bank Statement or a check for account ending in 4242",
"requirement": "bank_statement",
"type": "files",
"action_url": "<string>",
"alternative_document_label": "IRS EIN letter (CP 575 or 147C) that shows your business's legal name and your EIN on the same letter",
"details_label": "<string>",
"details_required": true,
"details_visible_for": [
"<string>"
],
"errors": [
{
"code": "document_not_readable",
"reason": "The uploaded image was too blurry to read."
}
],
"optional": true,
"options": [
"sole_proprietorship"
],
"response_type": "yes_no",
"selection_mode": "single",
"supporting_documents": [
{
"blurhash": null,
"content_type": "application/pdf",
"created_at": "2026-01-01T12:00:00.000Z",
"duration_seconds": null,
"filename": "evidence.pdf",
"height": null,
"id": "file_xxxxxxxxxxxxxx",
"object": "file",
"removed_by_moderation": false,
"size": 9670,
"upload_status": "pending",
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/audio/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"visibility": "private",
"waveform_url": null,
"width": null,
"multipart_chunk_size": 5242880,
"multipart_upload_id": "upload-id",
"multipart_upload_urls": [
{
"part_number": 1,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/application.pdf"
}
],
"upload_headers": {},
"upload_url": "https://whop-assets-example.s3.amazonaws.com/uploads/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/application.pdf"
}
],
"supporting_files_explanation_allowed": true,
"supporting_files_required": true,
"supporting_files_visible_for": [
"<string>"
]
}
],
"required_documents": [
{
"document": "id_card_front",
"rejection_reason": "Document image was too blurry to read.",
"status": "submitted"
}
],
"session_url": "https://sumsub.com/session/abc",
"status": "action_required",
"updated_at": "2026-06-02T12:00:00.000Z"
}
],
"page_info": {
"end_cursor": null,
"has_next_page": false,
"has_previous_page": false,
"start_cursor": "WyJjdXJzb3IiLDFd"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}Authorizations
An Account API key, an account access token, or a user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************. See Auth & API keys for how to get each one.
Headers
Pins the request to a dated API version.
"2026-11-04"
Query Parameters
Business account whose verifications you want to list, prefixed biz_. Provide this or user_id.
The caller's own user ID, prefixed user_, to list personal verifications. Provide this or account_id.
Also cover the account's subaccounts. Requires account_id, and is a 400 without it. Lists the verifications of the account and every subaccount in account order, oldest account first, paging forward; status, order, direction, last and before are a 400. Leaves out removed subaccounts and ones you can't read verifications on. A page can hold fewer than first verifications while has_next_page is true; keep following end_cursor. On a subaccount, lists only that account's verifications.
Number of results to return from the start of the range.
x <= 100Return results after this cursor. Use page_info.end_cursor from the previous response to fetch the next page.
Number of results to return from the end of the range.
x <= 100Return results before this cursor. Use page_info.start_cursor from the previous response to fetch the previous page.
Field used to sort returned verifications.
updated_at, created_at Sort direction for returned verifications.
asc, desc 
