Create reputation cards, moderation tools, trust badges, member dashboards, public widgets, or custom Discord profile pages powered by Discord Reviews.
Quick start
All endpoints are simple GET requests. Send your API key using Authorization, X-API-Key, or the api_key query parameter for testing.
Pick an endpoint
Use user reputation for profiles, server reputation for servers, and server-members for owned-server dashboards.
Send the request
Use Authorization: Bearer YOUR_API_KEY, X-API-Key: YOUR_API_KEY, or ?api_key=YOUR_API_KEY for quick testing.
curl "https://api.discordreviews.com/v1/reputation/user/example_username?api_key=YOUR_API_KEY"
Authentication
Every API request needs an API key. Keep keys private and do not put production keys directly inside public frontend code.
Recommended
Authorization: Bearer YOUR_API_KEY
Best option for server-side requests and backend integrations.
Alternative
X-API-Key: YOUR_API_KEY
Useful when your HTTP client has awkward bearer-token support.
Testing only
?api_key=YOUR_API_KEY
Handy for quick manual testing. Avoid this for production because URLs can end up in logs.
Rate limits
Rate limits are calculated per API key per hour. The API returns rate-limit headers with each successful request.
| Header | Meaning |
|---|---|
X-RateLimit-Limit |
Your hourly request limit. |
X-RateLimit-Remaining |
How many requests remain in the current hour. |
X-RateLimit-Reset |
Unix timestamp for when the current window resets. |
Retry-After |
Returned on 429. Seconds to wait before retrying. |
URL builder
Build a request URL without remembering the exact route format.
Endpoints
The API currently has three reputation endpoints.
User reputation
https://api.discordreviews.com/v1/reputation/user/{username}
Returns a Discord user's reputation score, positive/neutral/negative totals, tag summary, profile URL, avatar URL, and OG image URL.
Path parameters
| Name | Required | Example | Notes |
|---|---|---|---|
username |
Yes | example_username |
Leading @ is optional. URL encode special characters such as spaces and #.
|
Query parameters
| Name | Default | Allowed | Description |
|---|---|---|---|
include_reviews |
0 |
0, 1 |
Includes review rows when enabled. |
page |
1 |
Any positive number | Used when include_reviews=1. |
limit |
10 |
1 to 50 |
Reviews per page when reviews are included. |
order |
newest |
newest, oldest, only_positive,
only_negative, only_neutral, replied,
only_tag_{tag_id}
|
Filters or sorts included reviews. |
show |
newest |
Same as order |
Alias for compatibility with the public profile page. |
merge |
0 |
0, 1 |
When enabled, multiple reviews from the same reviewer can be merged/rotated like the website view. |
Example
curl "https://api.discordreviews.com/v1/reputation/user/example_username?api_key=YOUR_API_KEY&include_reviews=1&page=1&limit=5"
Server reputation
https://api.discordreviews.com/v1/reputation/server/{server_id}
Returns a Discord server's reputation score, reputation counts, tag summary, server profile URL, server avatar/icon URL, and OG image URL.
Path parameters
| Name | Required | Example | Notes |
|---|---|---|---|
server_id |
Yes | 123456789012345678 |
Must be a numeric Discord server ID. |
Query parameters
This endpoint supports the same review options as user reputation:
include_reviews, page, limit, order,
show, and merge.
Example
curl "https://api.discordreviews.com/v1/reputation/server/123456789012345678?api_key=YOUR_API_KEY"
Server members reputation
https://api.discordreviews.com/v1/reputation/server-members/{server_id}
Returns reputation data for members in a server. The API key owner must own the requested Discord server.
Path parameters
| Name | Required | Example | Notes |
|---|---|---|---|
server_id |
Yes | 123456789012345678 |
Must be a numeric Discord server ID owned by the API-key user. |
Query parameters
| Name | Default | Example | Description |
|---|---|---|---|
page |
1 |
page=2 |
Pagination page number. |
limit |
25 |
limit=50 |
Members per page. Maximum 100. |
order |
reputation_score |
order=negative |
Sort by reputation_score, score, reviews,
total_reviews, positive, neutral,
negative, username, last_seen, or first_seen.
|
direction |
desc |
direction=asc |
Use asc or desc. |
q |
None | q=jack |
Search by username, username tag, or exact Discord ID. |
rating |
None | rating=negative |
Filter to members with positive, neutral, or negative reviews. |
has_reviews |
0 |
has_reviews=1 |
Only return members with at least one review. |
bot |
None | bot=0 |
Filter humans or bots. Use 1 for bots, 0 for non-bots. |
min_score |
None | min_score=5 |
Only return members with reputation score greater than or equal to this value. |
max_score |
None | max_score=-3 |
Only return members with reputation score less than or equal to this value. |
min_reviews |
None | min_reviews=3 |
Only return members with at least this many review rows. |
tag |
None | tag=toxic |
Only return members who have received a specific tag ID. |
joined_after |
None | joined_after=2026-05-01 |
Filter members first seen in the server after this date. |
last_seen_after |
None | last_seen_after=2026-05-20 |
Filter members seen by the server member sync after this date. |
active_only |
0 |
active_only=1 |
Only return members seen by the server member sync recently. This does not mean recently logged in to Discord Reviews. |
active_days |
30 |
active_only=1&active_days=14 |
Used with active_only=1. |
bot_key |
external_alerts |
bot_key=external_alerts |
Advanced. Selects which bot/member-sync source to use. |
Useful server-member queries
?order=reputation_score&direction=desc&has_reviews=1
?order=negative&direction=desc&rating=negative
?active_only=1&active_days=14
?tag=toxic&has_reviews=1
?joined_after=2026-05-01&has_reviews=1
?q=example_username
Example
curl "https://api.discordreviews.com/v1/reputation/server-members/123456789012345678?api_key=YOUR_API_KEY&order=reputation_score&direction=desc&page=1&limit=25&has_reviews=1"
Response shapes
All successful responses use success: true, with the main payload inside data.
{
"success": true,
"data": {
"type": "user",
"identifier": "example_username",
"display_name": "@example_username",
"discord_id": "123456789012345678",
"avatar": "https://discordreviews.com/path/to/avatar.png",
"profile_url": "https://discordreviews.com/u/example_username",
"og_image": {
"path": "/og/generated-image.png",
"url": "https://discordreviews.com/og/generated-image.png",
"width": 1200,
"height": 630
},
"reputation": {
"score": 12,
"percentage": 86,
"has_score": true,
"total_tags": 18,
"positive": 15,
"neutral": 1,
"negative": 2
},
"tags": []
},
"rate_limit": {
"limit": 100,
"remaining": 99,
"window_seconds": 3600,
"reset_at": "2026-05-27T01:00:00+00:00"
}
}
{
"success": true,
"data": {
"server_id": "123456789012345678",
"members": [
{
"discord_id": "111111111111111111",
"username": "example",
"username_lc": "example",
"username_tag": "example#0001",
"display_name": "example#0001",
"is_bot": false,
"avatar": "https://discordreviews.com/path/to/avatar.png",
"profile_url": "https://discordreviews.com/u/example",
"guild": {
"id": "123456789012345678",
"name": "Example Server",
"first_seen_at": "2026-05-01 13:00:00",
"last_seen_at": "2026-05-27 00:30:00",
"last_synced_at": "2026-05-27 00:30:00"
},
"reputation": {
"score": 8,
"percentage": 90,
"has_score": true,
"total_tags": 10,
"positive": 9,
"neutral": 0,
"negative": 1
}
}
],
"pagination": {
"page": 1,
"limit": 25,
"total": 1,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}
}
{
"id": 123,
"rating": 1,
"message": "Helpful and friendly.",
"tags": [
{
"id": "helpful",
"name": "Helpful",
"category": "positive",
"background": "#3cb371",
"color": "#000000"
}
],
"anonymous": false,
"coverup": false,
"reviewer": {
"discord_id": "222222222222222222",
"username": "reviewer_name"
},
"response": null,
"created_at": "2026-05-27 00:30:00"
}
Errors
Error responses use success: false and include a machine-readable error code.
| Status | Code | Meaning |
|---|---|---|
401 |
missing_api_key |
No API key was supplied. |
401 |
invalid_api_key |
The API key is invalid, inactive, or revoked. |
403 |
server_not_owned |
The API key user does not own the requested server. |
404 |
not_found |
The requested profile/server could not be found. |
422 |
invalid_server_id |
The server ID is not a valid Discord server ID. |
429 |
rate_limited |
The API key has used all requests for the current hour. |
{
"success": false,
"error": {
"code": "server_not_owned",
"message": "This API key does not own that server."
}
}
Code examples
These examples use placeholders. Replace YOUR_API_KEY and IDs with real values.
curl "https://api.discordreviews.com/v1/reputation/user/example_username?api_key=YOUR_API_KEY"
<?php
$api_key = 'YOUR_API_KEY';
$url = 'https://api.discordreviews.com/v1/reputation/user/example_username?' . http_build_query([
'api_key' => $api_key
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Accept: application/json'
],
]);
$response = curl_exec($ch);
if ($response === false) {
throw new Exception(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($response, true);
if ($status !== 200 || empty($data['success'])) {
throw new Exception($data['error']['message'] ?? 'API request failed.');
}
print_r($data['data']);
const url = new URL('https://api.discordreviews.com/v1/reputation/user/example_username');
url.searchParams.set('api_key', 'YOUR_API_KEY');
const response = await fetch(url.toString(), {
headers: {
'Accept': 'application/json'
}
});
const data = await response.json();
if (!response.ok || !data.success) {
throw new Error(data.error?.message || 'API request failed.');
}
console.log(data.data);
$.ajax({
url: 'https://api.discordreviews.com/v1/reputation/user/example_username?api_key=YOUR_API_KEY',
method: 'GET',
headers: {
'Accept': 'application/json'
},
success: function(response) {
console.log(response.data);
},
error: function(xhr) {
var response = xhr.responseJSON || {};
alert(response.error ? response.error.message : 'API request failed.');
}
});
Add reputation cards, moderation tools, trust badges, member dashboards, public widgets, or custom Discord profile pages powered by Discord Reviews.