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": "<string>",
"id": "<string>",
"logo_url": "<string>",
"name": "<string>"
}
],
"businesses_total_usd": "<string>",
"cash": [
{
"balance": 123,
"balance_usd": 123,
"currency": "<string>",
"pending_balance_usd": 123,
"reserve_balance_usd": 123,
"total_withdrawable_balance": 123
}
],
"cash_usd": "<string>",
"crypto": [
{
"balance": "<string>",
"icon_url": "<string>",
"name": "<string>",
"price_usd": 123,
"symbol": "<string>",
"value_usd": 123
}
],
"crypto_usd": "<string>",
"pending_usd": "<string>",
"total_usd": "<string>",
"treasury_pending_usd": "<string>"
},
"balance_history": {
"data": [
{
"t": 123,
"v": 123
}
],
"last": 123,
"max": 123,
"min": 123
},
"bio": "<string>",
"created_at": "<string>",
"earnings_usd": {
"first_earned_at": "<string>",
"owned_accounts": {
"last_24_hours": "<string>",
"last_30_days": "<string>",
"last_7_days": "<string>",
"lifetime": "<string>"
},
"personal": {
"last_24_hours": "<string>",
"last_30_days": "<string>",
"last_7_days": "<string>",
"lifetime": "<string>"
},
"total": {
"last_24_hours": "<string>",
"last_30_days": "<string>",
"last_7_days": "<string>",
"lifetime": "<string>"
}
},
"id": "<string>",
"name": "<string>",
"profile_picture": {},
"username": "<string>",
"verification": {},
"whop_partner_enabled_at": "<string>"
}
],
"page_info": {
"end_cursor": "<string>",
"has_next_page": true,
"has_previous_page": true,
"start_cursor": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<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": "<string>",
"id": "<string>",
"logo_url": "<string>",
"name": "<string>"
}
],
"businesses_total_usd": "<string>",
"cash": [
{
"balance": 123,
"balance_usd": 123,
"currency": "<string>",
"pending_balance_usd": 123,
"reserve_balance_usd": 123,
"total_withdrawable_balance": 123
}
],
"cash_usd": "<string>",
"crypto": [
{
"balance": "<string>",
"icon_url": "<string>",
"name": "<string>",
"price_usd": 123,
"symbol": "<string>",
"value_usd": 123
}
],
"crypto_usd": "<string>",
"pending_usd": "<string>",
"total_usd": "<string>",
"treasury_pending_usd": "<string>"
},
"balance_history": {
"data": [
{
"t": 123,
"v": 123
}
],
"last": 123,
"max": 123,
"min": 123
},
"bio": "<string>",
"created_at": "<string>",
"earnings_usd": {
"first_earned_at": "<string>",
"owned_accounts": {
"last_24_hours": "<string>",
"last_30_days": "<string>",
"last_7_days": "<string>",
"lifetime": "<string>"
},
"personal": {
"last_24_hours": "<string>",
"last_30_days": "<string>",
"last_7_days": "<string>",
"lifetime": "<string>"
},
"total": {
"last_24_hours": "<string>",
"last_30_days": "<string>",
"last_7_days": "<string>",
"lifetime": "<string>"
}
},
"id": "<string>",
"name": "<string>",
"profile_picture": {},
"username": "<string>",
"verification": {},
"whop_partner_enabled_at": "<string>"
}
],
"page_info": {
"end_cursor": "<string>",
"has_next_page": true,
"has_previous_page": true,
"start_cursor": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}Authorizations
A company API key, company scoped JWT, app API key, or user OAuth token. You must prepend your key/token with the word 'Bearer', which will look like Bearer ***************************
Headers
Pins the request to a dated API version.
Example:
"2026-07-20"
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

