Bot endpoints are subject to stricter rate limits than other v1 endpoints. Stay within the published limits to avoid
429 Too Many Requests responses.GET /projects/@me
Returns the project associated with your current token.Response fields
The unique Top.gg-sourced Snowflake identifier for the project.
The project name as it appears on the external platform.
The platform the project belongs to. One of
discord or roblox.The project type. One of
bot, server, or game.The short description set during project creation.
List of tag IDs associated with the project.
Current vote count used for ranking calculations.
Total all-time votes received by the project.
Average review score across all reviews.
Total number of reviews submitted for the project.
Example response
PATCH /projects/@me
Updates the headline and/or page content for your project. Both fields are locale-keyed, so you can set content for multiple languages in a single request.Request body
At least one ofheadline or page_content must be provided.
A map of locale codes to headline strings. Each headline must be between 3 and 140 characters.
A map of locale codes to page content strings (Markdown supported). Each entry must be between 300 and 50,000 characters.
Supported locales
en, de, fr, pt, tr, hi, ja, ar, nl, ko, it, es, ru, uk, vi, zh
Response
Returns204 No Content on success. No response body is returned.
Changes may take up to 1 hour to appear on the website due to caching.
Error responses
| Status | Description |
|---|---|
400 | Invalid project token |
404 | Project not found |
422 | Validation error (unsupported locale, length violations, or missing fields) |
PUT /projects/@me/announcements
Creates a new announcement for your project. Announcements appear on your project’s page and can be used to notify users about updates, new features, or other news.You can create at most one announcement every 4 hours. Attempts during the cooldown period receive a
429 Too Many Requests response with a Retry-After header indicating how many seconds to wait.Request body
The announcement title. Must be between 3 and 100 characters.
The announcement body text. Must be between 10 and 2,000 characters.
Response fields
The title of the created announcement.
The body content of the created announcement.
ISO 8601 timestamp of when the announcement was created.
Example response
Error responses
| Status | Description |
|---|---|
400 | Invalid project token |
404 | Project not found |
422 | Validation error (title or content length violations) |
429 | Rate limited - only one announcement every 4 hours |
POST /projects/@me/metrics
Submits a single metrics payload for your project. Use this to push fresh numbers after an event such as joining or leaving a guild or a player connecting.Request body
The body must match the authenticated project’s platform. See the platform payloads section below for the supported fields per platform.Response
Returns204 No Content on success. No response body is returned.
Error responses
| Status | Description |
|---|---|
400 | Invalid project token |
404 | Project not found |
422 | Payload was malformed, empty, or did not match the project’s platform |
POST /projects/@me/metrics/batch
Submits up to 100 metrics entries in a single request. Entries without atimestamp are applied first in the order they appear in the request. Entries with a timestamp are applied afterward in ascending timestamp order, so you can backfill gaps or push buffered samples after a network interruption.
Request body
The batch of metrics entries. Must contain between 1 and 100 entries.
Response
Returns204 No Content when every entry is accepted. If any entry fails validation, processing stops and the request returns 422.
Error responses
| Status | Description |
|---|---|
400 | Invalid project token |
404 | Project not found |
422 | Batch was empty, contained more than 100 entries, or contained an invalid entry |
Platform payloads
The metrics payload is shaped per platform. ForPOST /projects/@me/metrics, send this payload as the entire request body. For the batch metrics endpoint, send the same payload under data[].metrics. Sending the wrong shape for your project returns 422.
Discord bot
Use for projects withplatform: "discord" and type: "bot". At least one field is required.
Total number of servers the bot is currently in. Must be zero or greater.
Total number of shards the bot is currently running. Must be zero or greater.
Discord server
Use for projects withplatform: "discord" and type: "server". At least one field is required.
Total number of members in the server. Must be zero or greater.
Number of members currently online. Must be zero or greater and cannot exceed
member_count when both are provided.Roblox game
Use for projects withplatform: "roblox" and type: "game".
Current number of players in the game. Must be zero or greater.
POST /projects/@me/commands
Updates the slash command definitions for your bot project on Top.gg. This endpoint is only applicable tobot-type projects on the discord platform.
Request body
The request body must be a JSON array of command objects following Discord’s application command structure. Pass an empty array to clear all commands.Array of application command objects following Discord’s application command structure.
Response
Returns204 No Content on success. No response body is returned.