Developers
User API
Look up a RAGE.WTF user by username, alias or ID and get their public details, perks and badges as JSON.
The User API returns public information about a RAGE.WTF account, like its username, avatar, perks and badges. You need an API key.
Request#
GET https://rage.wtf/api/public/user?name=someuser
x-api-key: rage-your-key | Part | Value |
|---|---|
| Method | GET |
| URL | https://rage.wtf/api/public/user |
| Header | x-api-key: rage-your-key (required) |
Query parameters#
Send one of these:
| Parameter | Type | Description |
|---|---|---|
name | string | A username or alias. Not case-sensitive. 1 to 32 characters, no spaces or slashes. |
id | number | The account’s numeric user ID (the User ID shown in Settings). 1 to 9 digits. |
If you send both, name is used. The key is checked before the parameters, so a request without a valid key gets 401 even if the parameters are wrong.
Response#
A successful request returns status 200:
{
"userId": 12345,
"premium": true,
"name": "someuser",
"alias": "somealias",
"image": "https://...",
"verified": true,
"beta": false,
"rageMember": false,
"donor": false,
"baller": false,
"financiallyIrresponsible": false,
"banned": false,
"badges": [
{ "name": "Verified", "visible": true },
{ "name": "Premium", "visible": false }
],
"creationDate": "2024-03-12T09:21:11.000Z",
"cachedAt": "2026-09-16T12:00:00.000Z"
} | Field | Type | Meaning |
|---|---|---|
userId | number | The account’s numeric user ID. |
premium | boolean | The account has Premium. |
name | string | The username. |
alias | string or null | The account’s first alias, or null. |
image | string or null | Avatar image URL, or null. |
verified | boolean | The account has Verified. |
beta | boolean | The account was a beta tester. |
rageMember | boolean | The account has the RAGE badge. |
donor | boolean | The account has the Donor perk. |
baller | boolean | The account has the Baller perk. |
financiallyIrresponsible | boolean | The account has the Financially Irresponsible perk. |
banned | boolean | The account is currently suspended. |
badges | array | The account’s badges in the order they show on the page. name is the badge name, visible is false if the owner hides it. Custom badges are not included. |
creationDate | string or null | When the account was created (ISO 8601). |
cachedAt | string | When this response was made (ISO 8601). |
Responses may be cached for up to 60 seconds.
Errors#
Errors return JSON with an error message:
{ "error": "User not found" } | Status | error | Why |
|---|---|---|
| 400 | Provide either ?name= or ?id=. | Neither parameter was sent. |
| 400 | Invalid id. Expected a numeric userId. | id isn’t a number of 1 to 9 digits. |
| 401 | Missing x-api-key header | No key was sent. |
| 401 | Invalid API key | The key is wrong, deleted, or used more than 1000 times in the last hour. |
| 404 | User not found | No account has that name or ID, or name is longer than 32 characters or has a space or slash. |
| 429 | Rate limited | More than 60 requests in a minute with this key. Wait the number of seconds in the retry-after header. |
| 500 | Internal Server Error | Something went wrong on our side. Try again later. |
Rate limits#
- 60 requests per minute per key. Over that you get
429with aretry-afterheader in seconds. - 1000 requests per hour per key, counted across all endpoints.
Cache results on your side when you can, for example for a minute.
Examples#
curl#
curl "https://rage.wtf/api/public/user?name=someuser"
-H "x-api-key: rage-your-key" curl "https://rage.wtf/api/public/user?id=12345"
-H "x-api-key: rage-your-key" JavaScript (Node.js)#
const response = await fetch('https://rage.wtf/api/public/user?name=someuser', {
headers: { 'x-api-key': process.env.RAGE_API_KEY }
});
if (response.status === 429) {
const wait = Number(response.headers.get('retry-after'));
console.log(`Rate limited, try again in ${wait} seconds`);
} else {
const data = await response.json();
if (!response.ok) throw new Error(data.error);
console.log(data.name, data.premium ? 'has Premium' : 'is on the free plan');
}