JavaScript
import Whop from '@whop/sdk';
const client = new Whop({
apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const user of client.users.list()) {
console.log(user.id);
}curl --request GET \
--url https://api.whop.com/api/v1/users \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.whop.com/api/v1/users"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/users",
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/users"
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/users")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/users")
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": [
{
"balance": {
"businesses": [
{
"balance_usd": "18940.25",
"id": "biz_xxxxxxxxxxxxxx",
"logo_url": "https://assets.whop.com/logos/shine-time-auto-detailing.png",
"name": "Shine Time Auto Detailing"
}
],
"businesses_total_usd": "18940.25",
"cash": [
{
"balance": 4385.75,
"balance_usd": 4385.75,
"currency": "usd",
"in_transit_balance_usd": 0,
"pending_balance_usd": 310,
"price_usd": 123,
"reserve_balance_usd": 125,
"total_withdrawable_balance": 4385.75
}
],
"cash_usd": "0.00",
"crypto": [
{
"balance": "1500.0",
"breakdown": {
"available": "1500.0",
"in_transit": "0",
"pending": "0",
"pending_settlements": [
{
"amount": "12.5",
"date": "2026-01-01"
}
],
"reserve": "0"
},
"icon_url": "https://assets.whop.com/tokens/usdt.png",
"name": "Tether USD",
"price_usd": 1,
"symbol": "USDT",
"value_usd": 1500
}
],
"crypto_usd": "0.00",
"pending_usd": "0.00",
"total_usd": "0.00",
"treasury_pending_usd": "0.00"
},
"balance_history": {
"data": [
{
"t": 1767268800,
"v": 2400
}
],
"last": 0,
"max": 0,
"min": 0
},
"banner": {
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"bio": "Ceramic coating specialist. Detailing cars in Austin since 2016.",
"created_at": "2026-01-01T12:00:00.000Z",
"earnings_usd": {
"first_earned_at": "2026-01-01T12:00:00.000Z",
"owned_accounts": {
"last_24_hours": "0.00",
"last_30_days": "260.00",
"last_7_days": "60.00",
"lifetime": "4120.25"
},
"personal": {
"last_24_hours": "0.00",
"last_30_days": "260.00",
"last_7_days": "60.00",
"lifetime": "4120.25"
},
"total": {
"last_24_hours": "0.00",
"last_30_days": "260.00",
"last_7_days": "60.00",
"lifetime": "4120.25"
}
},
"email": "marcus@shinetime.example",
"id": "user_xxxxxxxxxxxxxx",
"name": "Marcus Webb",
"profile_picture": {
"url": "https://ui-avatars.com/api/"
},
"social_accounts": [
{
"error": "You don't have permission to share this account. Ask an admin of its Meta Business Portfolio to grant you full control, then share it again.",
"external_id": "1234567891",
"id": "sacc_xxxxxxxxxxxxxx",
"name": "Shine Time Auto Detailing",
"parent_social_account": {
"external_id": "555111",
"id": "sacc_xxxxxxxxxxxxxx",
"name": "Shine Time Auto Detailing",
"platform": "facebook",
"profile_picture_url": "https://shinetime.example/logo.png",
"username": "shinetimedetailing",
"verified": true
},
"platform": "instagram",
"profile_picture_url": "https://shinetime.example/logo.png",
"scopes": [
"advertise"
],
"url": "https://instagram.com/shinetimedetail",
"username": "shinetimedetail",
"verified": true
}
],
"staff": {
"admin": true,
"investigation_access": true,
"manager": false,
"support": false
},
"username": "marcuswebb",
"verification": {
"business": null,
"individual": null
},
"whop_partner_enabled_at": "2026-01-01T12:00:00.000Z"
}
],
"page_info": {
"end_cursor": "MQ",
"has_next_page": false,
"has_previous_page": false,
"start_cursor": "MQ"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}Users
List Users
Search for users by name or username, ranked by social proximity to the authenticated user. Returns the user’s most recently followed users when no query is given.
GET
/
users
JavaScript
import Whop from '@whop/sdk';
const client = new Whop({
apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const user of client.users.list()) {
console.log(user.id);
}curl --request GET \
--url https://api.whop.com/api/v1/users \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.whop.com/api/v1/users"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/users",
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/users"
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/users")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/users")
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": [
{
"balance": {
"businesses": [
{
"balance_usd": "18940.25",
"id": "biz_xxxxxxxxxxxxxx",
"logo_url": "https://assets.whop.com/logos/shine-time-auto-detailing.png",
"name": "Shine Time Auto Detailing"
}
],
"businesses_total_usd": "18940.25",
"cash": [
{
"balance": 4385.75,
"balance_usd": 4385.75,
"currency": "usd",
"in_transit_balance_usd": 0,
"pending_balance_usd": 310,
"price_usd": 123,
"reserve_balance_usd": 125,
"total_withdrawable_balance": 4385.75
}
],
"cash_usd": "0.00",
"crypto": [
{
"balance": "1500.0",
"breakdown": {
"available": "1500.0",
"in_transit": "0",
"pending": "0",
"pending_settlements": [
{
"amount": "12.5",
"date": "2026-01-01"
}
],
"reserve": "0"
},
"icon_url": "https://assets.whop.com/tokens/usdt.png",
"name": "Tether USD",
"price_usd": 1,
"symbol": "USDT",
"value_usd": 1500
}
],
"crypto_usd": "0.00",
"pending_usd": "0.00",
"total_usd": "0.00",
"treasury_pending_usd": "0.00"
},
"balance_history": {
"data": [
{
"t": 1767268800,
"v": 2400
}
],
"last": 0,
"max": 0,
"min": 0
},
"banner": {
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"bio": "Ceramic coating specialist. Detailing cars in Austin since 2016.",
"created_at": "2026-01-01T12:00:00.000Z",
"earnings_usd": {
"first_earned_at": "2026-01-01T12:00:00.000Z",
"owned_accounts": {
"last_24_hours": "0.00",
"last_30_days": "260.00",
"last_7_days": "60.00",
"lifetime": "4120.25"
},
"personal": {
"last_24_hours": "0.00",
"last_30_days": "260.00",
"last_7_days": "60.00",
"lifetime": "4120.25"
},
"total": {
"last_24_hours": "0.00",
"last_30_days": "260.00",
"last_7_days": "60.00",
"lifetime": "4120.25"
}
},
"email": "marcus@shinetime.example",
"id": "user_xxxxxxxxxxxxxx",
"name": "Marcus Webb",
"profile_picture": {
"url": "https://ui-avatars.com/api/"
},
"social_accounts": [
{
"error": "You don't have permission to share this account. Ask an admin of its Meta Business Portfolio to grant you full control, then share it again.",
"external_id": "1234567891",
"id": "sacc_xxxxxxxxxxxxxx",
"name": "Shine Time Auto Detailing",
"parent_social_account": {
"external_id": "555111",
"id": "sacc_xxxxxxxxxxxxxx",
"name": "Shine Time Auto Detailing",
"platform": "facebook",
"profile_picture_url": "https://shinetime.example/logo.png",
"username": "shinetimedetailing",
"verified": true
},
"platform": "instagram",
"profile_picture_url": "https://shinetime.example/logo.png",
"scopes": [
"advertise"
],
"url": "https://instagram.com/shinetimedetail",
"username": "shinetimedetail",
"verified": true
}
],
"staff": {
"admin": true,
"investigation_access": true,
"manager": false,
"support": false
},
"username": "marcuswebb",
"verification": {
"business": null,
"individual": null
},
"whop_partner_enabled_at": "2026-01-01T12:00:00.000Z"
}
],
"page_info": {
"end_cursor": "MQ",
"has_next_page": false,
"has_previous_page": false,
"start_cursor": "MQ"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}Authorizations
An Account API key, account-scoped JWT, App API key, or user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************.
Headers
Pins the request to a dated API version.
Example:
"2026-08-21"
Query Parameters
A search term to filter users by name or username.
The number of users to return (max 50).
A cursor; returns users after this position.
The number of users to return from the end of the range.
A cursor; returns users before this position.
⌘I

