Discord Reviews

User and server reviews

Discord Reviews API v1

Build with Discord reputation data.

Query user reputation, server reputation, get all server member's reputation with Discord Reviews API. Designed for widgets, moderation dashboards, reputation badges, server tools, and custom profile pages.

Base URL https://api.discordreviews.com/v1

Create reputation cards, moderation tools, trust badges, member dashboards, public widgets, or custom Discord profile pages powered by Discord Reviews.

Start here

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.

1

Create an API key

Create an API key from your Discord Reviews account settings.

2

Pick an endpoint

Use user reputation for profiles, server reputation for servers, and server-members for owned-server dashboards.

3

Send the request

Use Authorization: Bearer YOUR_API_KEY, X-API-Key: YOUR_API_KEY, or ?api_key=YOUR_API_KEY for quick testing.

Basic request
curl "https://api.discordreviews.com/v1/reputation/user/example_username?api_key=YOUR_API_KEY"
Security

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.

Frontend warning: Public JavaScript exposes API keys to visitors. For real public widgets, call your own backend first, then let your backend call the Discord Reviews API.
Limits

Rate limits

Rate limits are calculated per API key per hour. The API returns rate-limit headers with each successful request.

Free 100 requests / hour
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.
Interactive

URL builder

Build a request URL without remembering the exact route format.

Generated URL
Routes

Endpoints

The API currently has three reputation endpoints.

GET

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

Request
curl "https://api.discordreviews.com/v1/reputation/user/example_username?api_key=YOUR_API_KEY&include_reviews=1&page=1&limit=5"
GET

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

Request
curl "https://api.discordreviews.com/v1/reputation/server/123456789012345678?api_key=YOUR_API_KEY"
GET

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.

Ownership required: This endpoint checks that the API-key owner owns the server before returning member data.

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

Most trusted members ?order=reputation_score&direction=desc&has_reviews=1
Most negatively reviewed ?order=negative&direction=desc&rating=negative
Recently seen members ?active_only=1&active_days=14
Members with a tag ?tag=toxic&has_reviews=1
New members with reviews ?joined_after=2026-05-01&has_reviews=1
Search one member ?q=example_username

Example

Request
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"
Data

Response shapes

All successful responses use success: true, with the main payload inside data.

Example response
{
    "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"
    }
}
Example response
{
    "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
        }
    }
}
Review object
{
    "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"
}
Troubleshooting

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.
Error example
{
    "success": false,
    "error": {
        "code": "server_not_owned",
        "message": "This API key does not own that server."
    }
}
Examples

Code examples

These examples use placeholders. Replace YOUR_API_KEY and IDs with real values.

cURL
curl "https://api.discordreviews.com/v1/reputation/user/example_username?api_key=YOUR_API_KEY"
PHP
<?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']);
JavaScript fetch
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);
jQuery
$.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.