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

FieldTypeRequiredDescription
sessionIdstring (UUID)YesSession this report belongs to
buildIdstring (UUID)NoBuild override. If omitted, resolved from the session
reportobjectYesBug report payload (see below)
contextobjectNoGame context at the time of the report
attachmentsarrayNoFile attachments (max 50)
eventsarrayNoInline events to create with the report (max 200)
eventIdsstring[]NoUUIDs of existing events to link (max 200, must be unique)
exportobjectNoAuto-export configuration
clientRequestIdstring (UUID)NoIdempotency key

report (required)

FieldTypeRequiredDescription
titlestringYesBug report title, e.g. "Game crashed after opening inventory"
descriptionstringNoDetailed description
severitystringNolow, medium, high, or critical
reporterTypestringNoplayer, tester, qa, internal, or system
sourceChannelstringNoSource identifier, e.g. "in-game-feedback", "discord-bot"

context (optional)

Captures the game state at the moment the report was created:

FieldTypeDescription
sceneNamestringCurrent scene/level, e.g. "Dungeon_Level_03"
checkpointstringLast checkpoint, e.g. "boss_room_before_cutscene"
platformstringPlatform, e.g. "windows"
buildVersionstringGame version, e.g. "1.14.2"
localestringLanguage/locale, e.g. "cs-CZ"
playerPositionobject3D position, e.g. { "x": 12.5, "y": 0.0, "z": -3.2 }
performanceobjectMetrics, e.g. { "fps": 24, "frameTimeMs": 41.6, "memoryMb": 1024 }
extraobjectAny additional custom data

attachments (optional, max 50)

FieldTypeRequiredDescription
uploadIdstring (UUID)YesID from the /uploads endpoint
attachmentTypestringYesscreenshot, video, save_state, log_bundle, or other
fileNamestringYesOriginal file name
mimeTypestringNoMIME type
sizeBytesnumberNoFile size in bytes

events (optional, max 200)

Inline events created with the report:

FieldTypeRequiredDescription
eventTypestringYesEvent type identifier
occurredAtstring (ISO 8601)NoEvent timestamp
payloadobjectNoEvent data

export (optional)

Auto-export the report to an external service:

FieldTypeRequiredDescription
providerstringYesgithub, gitlab, jira, discord, or webhook
enabledbooleanYesWhether to trigger the export

Response

FieldTypeDescription
reportIdstring (UUID)Bug report identifier
statusstringAlways "accepted"
createdAtstring (ISO 8601)Creation timestamp
issueExportobject or nullExport status if auto-export was requested
issueExport.statusstring"pending", "processing", "success", or "failed"
issueExport.providerstringExport 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.