Get the leaderboard
curl --request GET \
--url https://api.teambuilder.ge/v1/leaderboard \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.teambuilder.ge/v1/leaderboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.teambuilder.ge/v1/leaderboard"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"rank": 3,
"employee_id": "8d2f6b1e-4c3a-4f5e-b7d9-1a2c3e4f5a6b",
"external_id": "EMP-00042",
"name": "Nino Beridze",
"department": {
"id": "b3e1f7a2-6c4d-4e8f-9a1b-2c3d4e5f6a7b",
"external_id": "D-ENG",
"name": "Engineering"
},
"level": 12,
"xp": 12450
}
],
"pagination": {
"next_cursor": "djEuQ2hhY2hhMjAuZXhhbXBsZS1jdXJzb3I"
}
}{
"error": {
"code": "validation_failed",
"message": "limit must not be greater than 100",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid API key",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "forbidden",
"message": "This API key lacks the required scope: leaderboard:read",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "not_found",
"message": "Department not found",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Retry after 30 seconds.",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}Get the leaderboard
Employees ranked by XP for a period, company-wide or within one department.
GET
/
v1
/
leaderboard
Get the leaderboard
curl --request GET \
--url https://api.teambuilder.ge/v1/leaderboard \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.teambuilder.ge/v1/leaderboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.teambuilder.ge/v1/leaderboard"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"rank": 3,
"employee_id": "8d2f6b1e-4c3a-4f5e-b7d9-1a2c3e4f5a6b",
"external_id": "EMP-00042",
"name": "Nino Beridze",
"department": {
"id": "b3e1f7a2-6c4d-4e8f-9a1b-2c3d4e5f6a7b",
"external_id": "D-ENG",
"name": "Engineering"
},
"level": 12,
"xp": 12450
}
],
"pagination": {
"next_cursor": "djEuQ2hhY2hhMjAuZXhhbXBsZS1jdXJzb3I"
}
}{
"error": {
"code": "validation_failed",
"message": "limit must not be greater than 100",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid API key",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "forbidden",
"message": "This API key lacks the required scope: leaderboard:read",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "not_found",
"message": "Department not found",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Retry after 30 seconds.",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}See the leaderboards guide for period windows, what
rank means under a department filter, and refresh cadence.Authorizations
API key — tb_live_… for production data, tb_test_… for the sandbox.
Query Parameters
The pagination.next_cursor of the previous page. Omit it, or send it empty, for the first page. A cursor is opaque and works only on the endpoint that returned it, for the same company.
Maximum string length:
512Example:
"djEuQ2hhY2hhMjAuZXhhbXBsZS1jdXJzb3I"
How many items to return per page, from 1 to 100.
Required range:
1 <= x <= 100Example:
25
The window XP is counted over. Months are calendar months in UTC.
all_time: all XP ever earned.this_month: XP earned since the 1st of the current month.last_3_months: XP earned in the current month and the two before it.last_year: XP earned in the current month and the eleven before it.
Available options:
all_time, this_month, last_3_months, last_year Example:
"this_month"
Only members of this department (not of its sub-departments). Each keeps their company-wide rank, so ranks on a filtered page can have gaps.
Example:
"b3e1f7a2-6c4d-4e8f-9a1b-2c3d4e5f6a7b"
