Overview
Bugnet exposes a full REST API that you can use to build custom integrations, automate workflows, and manage your projects programmatically. Every action available in the dashboard can also be performed via the API.
- Base URL:
https://api.bugnet.io/api/ - Versioned URL:
https://api.bugnet.io/api/v1/ - All routes are available under both
/api/and/api/v1/ - All request and response bodies use JSON format
- All text is UTF-8 encoded
# Example: list your projects
curl -X GET https://api.bugnet.io/api/projects \
-H "Authorization: Bearer YOUR_SESSION_TOKEN" \
-H "Content-Type: application/json"Authentication
The Bugnet API supports two authentication methods depending on your use case.
Bearer Token (Dashboard / User Auth)
Use bearer tokens for authenticated user actions such as managing bugs, team members, and project settings. Tokens are obtained by signing in via the login or signup endpoints.
Authorization: Bearer YOUR_SESSION_TOKENTokens are returned in the response body when you call POST /api/auth/login or POST /api/auth/signup.
API Key (SDK / Public Auth)
Use API keys for SDK integrations and public API access, such as submitting bug reports or starting game sessions from your game client.
X-API-Key: YOUR_API_KEYAPI keys are available on the Integrate tab of your project dashboard.
Never expose your session token in client-side code. Use API keys for SDK integrations. Session tokens are intended for server-side or dashboard use only.
Rate Limits
Rate limits protect the API from abuse and ensure fair usage across all users. Limits are applied per IP address.
| Endpoint Type | Limit |
|---|---|
| Public endpoints | 30 requests/minute per IP |
| Authenticated endpoints | 120 requests/minute per IP |
| Login endpoint | 10 attempts/minute per IP |
Rate limit information is included in every response via the following headers:
X-RateLimit-Limit— Maximum requests allowed in the current windowX-RateLimit-Remaining— Requests remaining in the current windowX-RateLimit-Reset— Unix timestamp when the window resets
When you exceed the rate limit, the API returns a 429 Too Many Requests response. Back off and retry after the reset time indicated in the headers.
Response Format
All API responses use a standard JSON envelope with an ok boolean indicating success or failure.
Success Response
{
"ok": true,
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Player fell through the floor",
"status": "open"
}
}Error Response
{
"ok": false,
"error": "Description of the error"
}Common HTTP Status Codes
| Code | Meaning |
|---|---|
200 | Success |
201 | Created |
400 | Bad request (validation error) |
401 | Unauthorized |
403 | Forbidden |
404 | Not found |
429 | Rate limited |
500 | Server error |
Auth Endpoints
Manage user accounts, sessions, and profile information.
Create a new user account. Body: {email, password, display_name}
Sign in and receive a session token. Body: {email, password}
Invalidate the current session.
Get the current authenticated user's profile.
Update display name, email, or avatar. Body: {display_name, email, avatar}
Change password. Body: {current_password, new_password}
Delete account and export data.
Complete onboarding flow. Body: {role, team_size, platforms}
Example: Sign in
curl -X POST https://api.bugnet.io/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "dev@example.com",
"password": "your_password"
}'{
"ok": true,
"data": {
"token": "eyJhbGciOi...",
"user": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "dev@example.com",
"display_name": "Dev"
}
}
}Project Endpoints
Create and manage your game projects. All project endpoints require bearer token authentication.
List all projects for the current user.
Create a new project. Body: {name, slug, description, website}
Get project details by slug.
Update project settings (name, description, website, etc.).
Example: Create a project
curl -X POST https://api.bugnet.io/api/projects \
-H "Authorization: Bearer YOUR_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Cool Game",
"slug": "my-cool-game",
"description": "An awesome platformer",
"website": "https://mycoolga.me"
}'Bug Endpoints
Submit, manage, and query bug reports within a project.
List bugs. Supports query params: status, priority, category, assignee, search, page, limit, sort.
Create a bug report. Body: {title, description, category, priority, steps, expected, actual, platform, game_version, player_email}
Get full bug details including comments, labels, and activity.
Update bug fields (status, priority, assignee, etc.).
Bulk update multiple bugs. Body: {bug_ids, status, priority, assignee}
Add a comment to a bug. Body: {body, internal}
Find similar existing bugs. Body: {title, description}
Submit a bug via the public tracker (no auth required, uses API key).
Get the full activity log for a bug.
Upvote a bug (public, no auth required).
Example: Create a bug report
curl -X POST https://api.bugnet.io/api/projects/my-cool-game/bugs \
-H "Authorization: Bearer YOUR_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Player falls through floor on level 3",
"description": "Near the bridge section, the collision mesh has a gap.",
"category": "gameplay",
"priority": "high",
"steps": "1. Start level 3\n2. Walk to the bridge\n3. Jump near the left railing",
"expected": "Player lands on the bridge",
"actual": "Player falls through the floor and dies",
"platform": "windows",
"game_version": "1.2.0"
}'Example: List bugs with filters
curl -X GET "https://api.bugnet.io/api/projects/my-cool-game/bugs?status=open&priority=high&page=1&limit=20&sort=newest" \
-H "Authorization: Bearer YOUR_SESSION_TOKEN"Label Endpoints
Create and manage labels for organizing bug reports within a project.
List all labels for a project.
Create a new label. Body: {name, color}
Update label name or color.
Delete a label. Removes it from all bugs.
Add a label to a bug. Body: {label_id}
Remove a label from a bug.
Team Endpoints
Manage team members, invitations, and permission overrides for a project.
List all team members for a project.
Update a team member's role.
Remove a team member from the project.
Create an invitation. Body: {email, role}
Accept a pending invitation.
Revoke a pending invitation.
Get permission settings for the project.
Get permissions for a specific team member.
Set permission overrides for a team member.
Reset a member's permissions to role defaults.
Analytics Endpoints
Access dashboard analytics, crash data, release health, performance metrics, regressions, and usage statistics.
Dashboard Analytics
Dashboard analytics: bugs by status, priority, category, and trends over time.
Sessions
Start a game session. Body: {api_key, session_token, platform, game_version, device_info}
End a game session. Body: {api_key, session_token, crashed}
Crash Analytics
Crash analytics dashboard: crash-free rate, top crash signatures, platform breakdown.
Release Health
Release health overview across all versions.
Version-specific health data (crash rate, bug count, session count).
Performance
Submit a performance snapshot from the game client.
Get performance data associated with a specific bug.
Project-wide performance summary.
Regressions
Trigger regression detection for the project.
List all detected regressions.
Confirm or dismiss a detected regression.
Satisfaction
Submit a satisfaction rating for a resolved bug.
Project-wide satisfaction summary.
API Usage
API usage dashboard: request counts, rate limit hits, and trends.
Integration Endpoints
Connect Bugnet with external services: webhooks, Discord, Git providers, Steam, and custom alert rules.
Webhooks
List all configured webhooks.
Create a new webhook.
Delete a webhook.
Send a test payload to a webhook URL.
View webhook delivery history and response statuses.
Discord
Get Discord integration settings.
Configure Discord integration.
Update Discord integration settings.
Remove Discord integration.
Send a test notification to the configured Discord channel.
Git (GitHub / GitLab)
Get Git integration settings.
Configure Git integration (GitHub or GitLab).
Remove Git integration.
Create a linked GitHub/GitLab issue from a bug report.
Steam
Get Steam integration settings.
Configure Steam integration.
Update Steam integration settings.
Remove Steam integration.
Trigger a sync of Steam reviews and discussions.
Steam integration dashboard with review sentiment and discussion activity.
Alerts
List all alert rules for the project.
Create a new alert rule.
Update an alert rule.
Delete an alert rule.
Notifications
Get your notification preferences.
Update notification preferences (email, in-app, Discord DM).
Public Endpoints
These endpoints do not require authentication. They are used by public-facing bug trackers, changelogs, and health checks.
Public bug list for the project's public tracker.
Public bug detail view.
Vote on a public bug (no auth required).
Published changelogs for the project.
Public branding settings (logo, colors, name).
Public configuration (Firebase, Stripe public keys).
Health check endpoint. Returns 200 if the API is operational.
Example: Health check
curl https://api.bugnet.io/api/health{
"ok": true,
"data": {
"status": "healthy"
}
}