API Access
Secure programmatic access to BetaHub through authentication tokens and RESTful API endpoints.
Looking for endpoint details? This page covers authentication. For complete API documentation including request/response schemas, see the API Reference.
Authentication Methods Overview
BetaHub provides two types of authentication tokens designed for different use cases:
Personal Access Tokens
For: General API access, automation scripts, CI/CD pipelines
Prefix: pat-
Created by: Individual users in their account settings
Scope: Full access to all projects the user can access
Rate Limiting: None
Authentication: Authorization: Bearer pat-YOUR_TOKEN_HERE
Best for:
- Custom integrations and scripts
- CI/CD pipeline automation
- Third-party application development
- Administrative tasks across multiple projects
Read more about Personal Access Tokens →
Project Auth Tokens
For: In-game bug reporting, game launchers, project-specific tools
Prefix: tkn-
Created by: Project owners in project settings
Scope: Single project with configurable permissions
Rate Limiting: Configurable IP-based limits (default: 8 requests/day per IP)
Authentication: Authorization: FormUser tkn-YOUR_TOKEN_HERE
Best for:
- In-game bug reporting (Unity, Unreal Engine plugins)
- Game launcher integrations
- Project-specific embedded forms
- Searching the knowledge base to suggest solutions before a player submits a bug
- Limited public access to specific project features
Advanced: Project Auth Tokens support Submission Tokens (JWT) for embedding tamper-proof data like player email and custom fields.
Read more about Project Auth Tokens →
Pre-filled Bug Report Links
You can create links that open BetaHub’s bug report form with fields already filled in. This is useful for Slack bots, internal dashboards, documentation pages, or any tool where you want a one-click “Report this bug on BetaHub” action.
No API token is required — the user just needs to be logged in and have access to the project.
URL Format
https://app.betahub.io/projects/PROJECT_ID/issues/new?title=...&description=...
Replace PROJECT_ID with your project’s ID (e.g., pr-1234567). You can find it in the project URL or in Settings → General.
Supported Parameters
| Parameter | Description | Example |
|---|---|---|
title |
Bug report title | title=Game crashes on startup |
description |
Detailed description of the bug | description=The game freezes after the splash screen |
steps_to_reproduce |
Steps to reproduce, separated by newlines (%0A in URLs) |
steps_to_reproduce=Open the game%0AClick New Game%0AGame crashes |
release |
Release version label to associate with the report | release=v2.0 |
All parameters are optional. Any parameters you omit will be left blank for the user to fill in, except release, which always defaults to the project’s latest published release. If a release label is provided but doesn’t match any published release, the latest release is used as well.
Example
A full pre-filled link might look like:
https://app.betahub.io/projects/pr-1234567/issues/new?title=Audio%20cuts%20out&description=No%20sound%20during%20cutscenes&steps_to_reproduce=Start%20a%20cutscene%0ANotice%20no%20audio&release=v2.0
When a team member clicks this link, BetaHub opens the bug report form with all fields pre-populated. They can review, edit, and submit.
Use Cases
- Slack or Discord notifications — Add a “Create Bug” button that links to a pre-filled form based on the notification content.
- Internal tools — Generate links from crash logs, error dashboards, or QA checklists.
- Documentation — Embed “Report a problem” links in your game’s help pages with context already filled in.
Reading and Submitting Structured Fields
Beyond a title and description, a bug report carries custom fields, a source marker, and a raw flag. All three are readable from the API and settable when you submit — useful for in-game integrations, custom dashboards, and AI assistants (MCP) that read your reports.
Submitting custom fields, coordinates, and the raw flag
When creating an issue, set a custom field by its ident (its stable identifier):
issue[custom][severity] = high
issue[custom][alive] = false
A Coordinates field (used by the Bug Map) is sent as a JSON string — a map id plus X and Y:
issue[custom][location] = {"client_map_id":700,"x":6574,"y":-13779}
Send it as one string, not a nested object. Set issue[raw] to choose how the report is handled:
-
issue[raw] = false— a regular bug: shows in the bugs list, gets AI triage and duplicate detection, notifies your team. -
issue[raw] = true— a raw telemetry report: kept out of the bugs list, search, and public boards, skips AI and notifications, and appears only on the Bug Map.
Reading them back
The issue JSON includes raw, source, and a custom_fields array. Each entry is self-describing, so a client can interpret a value without a second lookup:
{
"id": 12345,
"raw": false,
"source": "unity-sdk",
"custom_fields": [
{ "id": 325, "ident": "category", "name": "Category",
"field_type": "single_select", "value": "Crash" },
{ "id": 326, "ident": "location", "name": "Location",
"field_type": "coordinates", "value": { "client_map_id": 700, "x": 6574.0, "y": -13779.0 } }
]
}
Fields not marked player-viewable are omitted for non-developer viewers. For full request and response schemas, see the API Reference.
See Also
- Personal Access Tokens – General API access and automation
- Project Auth Tokens – Project-scoped tokens for in-game reporting
- Security – Authentication and access control
- Advanced Features – AI-powered insights, automation, and analytics
- Bug Triage Queue – AI-powered pre-review queue for Discord bugs
- Webhooks – Real-time event notifications
- External Tools – Third-party tool connections
- AI Assistants – AI-powered workflow automation
- Bug Map – Heatmap of located bug reports over your game maps