Public REST API for accessing developer profiles, scorecards, and arena rankings.
All API endpoints require authentication using an API key. Include your key in the request headers:
Sign in to your account and go to Settings to generate an API key. Keys start with gg_.
All responses are JSON. Successful responses return HTTP 200 with the data. Errors return appropriate HTTP status codes with an error message.
Success Response (200):
{ "data": { ... } }Error Responses:
Responses include cache headers. Profile and scorecard data is cached for 5 minutes with stale-while-revalidate for 10 minutes. The stale field indicates if the data is older than 7 days.
/api/v1/profiles/:usernameGet a developer profile by GitHub username
| Name | Type | Description |
|---|---|---|
| username | path | GitHub username |
{
"username": "torvalds",
"profile": {
"summary": "Creator of Linux and Git...",
"skillAssessment": [...],
"techStack": [...],
"developerArchetype": "Domain Specialist",
"profileConfidence": 95
},
"cached": true,
"stale": false,
"lastUpdated": "2024-01-15T10:30:00Z"
}/api/v1/profiles/searchSearch developer profiles with filters
| Name | Type | Description |
|---|---|---|
| skills | query | Comma-separated skills (e.g., "React,TypeScript") |
| archetypes | query | Comma-separated types (e.g., "Production Builder") |
| minConfidence | query | Minimum profile confidence (0-100) |
| q | query | Free text search |
| limit | query | Max results (default 50, max 100) |
| offset | query | Pagination offset |
{
"results": [
{
"username": "developer1",
"summary": "Full-stack engineer...",
"archetype": "Production Builder",
"confidence": 85,
"topSkills": [
{ "name": "React", "score": 9 },
{ "name": "TypeScript", "score": 8 }
]
}
],
"total": 1,
"limit": 10,
"offset": 0,
"hasMore": false
}/api/v1/scorecards/:owner/:repoGet repository scorecard analysis
| Name | Type | Description |
|---|---|---|
| owner | path | Repository owner |
| repo | path | Repository name |
| version | query | Specific version (optional) |
{
"owner": "facebook",
"repo": "react",
"scorecard": {
"overallScore": 92,
"metrics": [
{ "name": "Code Quality", "score": 95, "reason": "..." },
{ "name": "Documentation", "score": 90, "reason": "..." }
],
"markdown": "## Analysis\n..."
},
"version": 3,
"cached": true,
"stale": false,
"lastUpdated": "2024-01-15T10:30:00Z",
"ref": "main"
}/api/v1/arena/leaderboardGet arena rankings leaderboard
| Name | Type | Description |
|---|---|---|
| limit | query | Max results (default 50, max 100) |
| offset | query | Pagination offset |
| tier | query | Filter by tier (optional) |
{
"leaderboard": [
{
"rank": 1,
"username": "developer1",
"eloRating": 1850,
"tier": "Diamond",
"wins": 45,
"losses": 12,
"winRate": 78.9,
"totalBattles": 57,
"winStreak": 5
}
],
"limit": 10,
"offset": 0
}/api/v1/arena/rankings/:usernameGet arena ranking for a specific user
| Name | Type | Description |
|---|---|---|
| username | path | GitHub username |
{
"username": "torvalds",
"ranking": {
"rank": 42,
"eloRating": 1650,
"tier": "Platinum",
"wins": 28,
"losses": 15,
"winRate": 65.1,
"totalBattles": 43,
"winStreak": 2
}
}Profiles are classified into one of these archetypes based on their GitHub activity:
API requests are rate limited to prevent abuse. Current limits:
Contact us for higher limits or enterprise access.
For questions, feature requests, or enterprise access, contact us at [email protected]