Skip to content
Dashboard API

Dashboard API

The routes the GearCheck dashboard calls, open to your own scripts. They sign in as you, reach only the servers where you hold the permission each route needs, and can change between releases.

On This Page6 sections
There are no API keys.

Each request carries your dashboard session. For most needs you do not need the API at all: Export in the dashboard gives you the same CSV files.

Data Exports

Four exports, as CSV or JSON. Each one counts toward your server's monthly export allowance, the same count shown beside Export in the dashboard. Past the allowance the route answers 402 with detail.code: "limit_reached".

Download your data as JSON or CSV. Great for spreadsheets, external dashboards, or just keeping a backup. Add ?format=csv for CSV or ?format=json for JSON (default).

GET/api/guilds/{guild_id}/packs/{pack_key}/export/builds?format=csv

Export all builds as a flat CSV. One row per item, with columns for build name, activity, category, item name, aliases, target count, and weight.

Response

build_name,activity,category,item_name,aliases,target,weight
Frontline Tank,raids,Weapons,Shield,"shield",1,1.0
Frontline Tank,raids,Perks,Iron Resolve,"iron resolve;resolve",1,1.0
...

Example

curl -H "Cookie: session=$GC_SESSION" \
  https://api.gearcheck.gg/api/guilds/987654321/packs/main/export/builds?format=csv \
  -o builds.csv
GET/api/guilds/{guild_id}/packs/{pack_key}/export/analytics?format=csv

Export analytics data as CSV.

Response

total_checks,total_verified,verification_rate
247,189,76.5

Example

curl -H "Cookie: session=$GC_SESSION" \
  https://api.gearcheck.gg/api/guilds/987654321/packs/main/export/analytics?format=csv \
  -o analytics.csv
GET/api/guilds/{guild_id}/verifications/export.csv

Export all completed gearchecks. One row per check, with thread ID, build name, score, status, and completion time.

Response

thread_id,build_name,score,status,completion_time
100000000001,Frontline Tank,87.5,verified,2026-03-28T14:30:00
100000000002,Tank v3,72.0,unverified,2026-03-28T15:45:00
...

Example

curl -H "Cookie: session=$GC_SESSION" \
  https://api.gearcheck.gg/api/guilds/987654321/verifications/export.csv \
  -o checks.csv
GET/api/guilds/{guild_id}/data-inventory/export.csv

Export the guild data inventory, including data families, counts, export paths, and known gaps. Useful for staff audits and ownership reviews.

Response

family,key,label,value
verification_sessions,total,Verification sessions,247
content,builds,Builds,32
...

Example

curl -H "Cookie: session=$GC_SESSION" \
  https://api.gearcheck.gg/api/guilds/987654321/data-inventory/export.csv \
  -o data-inventory.csv

Authentication

Sign in on the dashboard with Discord. Scripts send that session as a Bearer token; the browser sends it as the session cookie.

Scripts and API clients

Authorization: Bearer <your session token>

Browser and dashboard requests

Cookie: session=<your session token>

There is no supported way to get this token yet: it is your own dashboard session, and it expires. For data, use the dashboard's CSV and JSON exports.

This token signs in as you. Never paste it into Discord, a ticket or a shared file.

It stays valid for up to 30 days, and signing out of the dashboard does not end it.

Access is permission-gated per guild. Managers, moderators, assistants, and analytics viewers may see different data depending on the permission set configured for the server.

Builds

Read your build specs and test them against sample text.

GET/api/guilds/{guild_id}/packs/{pack_key}/builds

List all builds for a pack, grouped by activity.

Response

{
  "builds": [
    {
      "key": "frontline_tank_v1",
      "display_name": "Frontline Tank",
      "activity": "raids",
      "category_count": 5,
      "build_url": "",
      "thresholds": { "verified": 85, "tentative": 80, "borderline": 75 }
    }
  ],
  "total": 32
}

Example

curl -H "Cookie: session=$GC_SESSION" \
  https://api.gearcheck.gg/api/guilds/987654321/packs/main/builds

A build made in the dashboard can return an empty "thresholds"; it scores with the defaults on Scoring.

GET/api/guilds/{guild_id}/packs/{pack_key}/builds/{build_key}

Get full build details including all categories and items.

Response

{
  "key": "frontline_tank_v1",
  "display_name": "Frontline Tank",
  "activity": "raids",
  "thresholds": { "verified": 85, "tentative": 80, "borderline": 75 },
  "categories": [
    {
      "key": "weapons",
      "name": "Weapons",
      "icon": "",
      "weight": 1.0,
      "items": [
        {
          "name": "Shield",
          "aliases": ["shield"],
          "exclude": [],
          "target": 1
        }
      ]
    }
  ]
}

Example

curl -H "Cookie: session=$GC_SESSION" \
  https://api.gearcheck.gg/api/guilds/987654321/packs/main/builds/frontline_tank_v1
POST/api/guilds/{guild_id}/packs/{pack_key}/builds/{build_key}/test

Test an OCR-style build against sample text. Useful for validating aliases or investigating OCR output. Structured evidence import/testing is handled by the dashboard build editor.

Request Body

{
  "text": "shield iron resolve refreshing move"
}

Response

{
  "score": 72.5,
  "status": "unverified",
  "categories": [
    {
      "name": "Weapons",
      "items": [
        { "name": "Shield", "status": "match", "count": 1 }
      ]
    },
    {
      "name": "Perks",
      "items": [
        { "name": "Iron Resolve", "status": "match", "count": 1 },
        { "name": "Refreshing", "status": "miss", "count": 0 }
      ]
    }
  ]
}

Example

curl -X POST -H "Cookie: session=$GC_SESSION" \
  -H "Content-Type: application/json" \
  -d '{"text": "shield iron resolve refreshing move"}' \
  https://api.gearcheck.gg/api/guilds/987654321/packs/main/builds/frontline_tank_v1/test

Analytics

Server-level gearcheck stats.

GET/api/guilds/{guild_id}/analytics

Get GearCheck analytics for your server, including gear check trends, evidence source coverage, pack summaries, and top builds.

Response

{
  "total_checks": 247,
  "total_verified": 189,
  "verification_rate": 76.5,
  "tier": "subscriber"
}

Example

curl -H "Cookie: session=$GC_SESSION" \
  https://api.gearcheck.gg/api/guilds/987654321/analytics

The API reports this plan as "subscriber".

Rate Limits

Requests are limited per signed-in user each minute. Past the limit you get 429 Too Many Requests with a Retry-After header: wait that many seconds, then try again.

Rate Limits

HTTP/1.1 429 Too Many Requests
Retry-After: 41

{"detail": "Too many requests"}

Errors

All errors return a JSON body with a detail field explaining what went wrong.

CodeMeaningWhen
401UnauthorizedMissing or expired token
402Payment RequiredOver the Free plan's limit, or the route needs Pro.
403ForbiddenYou don't have admin access to this server
404Not FoundBuild, category, or item doesn't exist
429Too Many RequestsRate limit exceeded