Reports
Submit a bug report with optional context, attachments, and events. This is the primary endpoint
for collecting bug reports from games and applications.
Endpoint
POST /v1/ingest/reports
Request body
| Field | Type | Required | Description |
|---|
sessionId | string (UUID) | Yes | Session this report belongs to |
buildId | string (UUID) | No | Build override. If omitted, resolved from the session |
report | object | Yes | Bug report payload (see below) |
context | object | No | Game context at the time of the report |
attachments | array | No | File attachments (max 50) |
events | array | No | Inline events to create with the report (max 200) |
eventIds | string[] | No | UUIDs of existing events to link (max 200, must be unique) |
export | object | No | Auto-export configuration |
clientRequestId | string (UUID) | No | Idempotency key |
report (required)
| Field | Type | Required | Description |
|---|
title | string | Yes | Bug report title, e.g. "Game crashed after opening inventory" |
description | string | No | Detailed description |
severity | string | No | low, medium, high, or critical |
reporterType | string | No | player, tester, qa, internal, or system |
sourceChannel | string | No | Source identifier, e.g. "in-game-feedback", "discord-bot" |
context (optional)
Captures the game state at the moment the report was created:
| Field | Type | Description |
|---|
sceneName | string | Current scene/level, e.g. "Dungeon_Level_03" |
checkpoint | string | Last checkpoint, e.g. "boss_room_before_cutscene" |
platform | string | Platform, e.g. "windows" |
buildVersion | string | Game version, e.g. "1.14.2" |
locale | string | Language/locale, e.g. "cs-CZ" |
playerPosition | object | 3D position, e.g. { "x": 12.5, "y": 0.0, "z": -3.2 } |
performance | object | Metrics, e.g. { "fps": 24, "frameTimeMs": 41.6, "memoryMb": 1024 } |
extra | object | Any additional custom data |
attachments (optional, max 50)
| Field | Type | Required | Description |
|---|
uploadId | string (UUID) | Yes | ID from the /uploads endpoint |
attachmentType | string | Yes | screenshot, video, save_state, log_bundle, or other |
fileName | string | Yes | Original file name |
mimeType | string | No | MIME type |
sizeBytes | number | No | File size in bytes |
events (optional, max 200)
Inline events created with the report:
| Field | Type | Required | Description |
|---|
eventType | string | Yes | Event type identifier |
occurredAt | string (ISO 8601) | No | Event timestamp |
payload | object | No | Event data |
export (optional)
Auto-export the report to an external service:
| Field | Type | Required | Description |
|---|
provider | string | Yes | github, gitlab, jira, discord, or webhook |
enabled | boolean | Yes | Whether to trigger the export |
Response
| Field | Type | Description |
|---|
reportId | string (UUID) | Bug report identifier |
status | string | Always "accepted" |
createdAt | string (ISO 8601) | Creation timestamp |
issueExport | object or null | Export status if auto-export was requested |
issueExport.status | string | "pending", "processing", "success", or "failed" |
issueExport.provider | string | Export provider |
Examples
Minimal report
curl -X POST \
-H "Authorization: Bearer flg_your_token" \
-H "Content-Type: application/json" \
-d '{
"sessionId": "f47ac10b-...",
"report": {
"title": "Player falls through floor",
"severity": "high"
}
}' \
https://ingest.forgelogger.dev/v1/ingest/reports
Full report with context, attachments, and events
curl -X POST \
-H "Authorization: Bearer flg_your_token" \
-H "Content-Type: application/json" \
-d '{
"sessionId": "f47ac10b-...",
"report": {
"title": "Game crashed after opening inventory",
"description": "Crash happened after pressing I during combat near the bridge.",
"severity": "critical",
"reporterType": "tester",
"sourceChannel": "in-game-feedback"
},
"context": {
"sceneName": "Dungeon_Level_03",
"checkpoint": "boss_room_before_cutscene",
"platform": "windows",
"buildVersion": "1.14.2",
"locale": "en-US",
"playerPosition": { "x": 12.5, "y": 0.0, "z": -3.2 },
"performance": { "fps": 24, "frameTimeMs": 41.6, "memoryMb": 1024 }
},
"attachments": [
{
"uploadId": "d290f1ee-...",
"attachmentType": "screenshot",
"fileName": "bug-screenshot.png",
"mimeType": "image/png",
"sizeBytes": 245760
}
],
"events": [
{
"eventType": "input",
"payload": { "key": "I", "action": "open_inventory" }
}
],
"eventIds": ["9a8b7c6d-..."],
"export": {
"provider": "github",
"enabled": true
},
"clientRequestId": "550e8400-e29b-41d4-a716-446655440000"
}' \
https://ingest.forgelogger.dev/v1/ingest/reports
Response
{
"reportId": "b3d4e5f6-...",
"status": "accepted",
"createdAt": "2026-04-08T14:45:00.000Z",
"issueExport": {
"status": "pending",
"provider": "github"
}
}
Notes
- Idempotency — set
clientRequestId to a UUID to prevent duplicate reports. If the same
clientRequestId is sent again, the server returns the existing report.
- AI processing — if the project has AI Summary enabled, the backend automatically generates
a summary and reproduction steps after the report is accepted.
- Deduplication — if AI Deduplication is enabled, the report may be marked as a duplicate
and linked to an existing root report.
- Attachments — create uploads first via
/uploads, upload the binary, then reference
the uploadId in the report. Max 50 attachments per report.
- Events — you can include inline events (created with the report) and/or reference
existing event IDs. Max 200 of each.