/api/fleet/spy-reports

Returns scouting/spy reports.

Method

GET

Query Parameters

page={number}
limit={number}

Response Structure

{
  "reports": [
    {
      "id": 97673,
      "missionId": 11132317,
      "userId": 428,
      "targetPlanetId": 59414,
      "targetMoonId": null,
      "targetSystemId": 4639,
      "targetFieldId": null,
      "targetStationId": null,
      "targetUserId": 729,
      "outcome": "success",
      "fleetData": [
        {
          "key": "tanker",
          "name": "Tanker",
          "quantity": 1,
          "shipDefId": 23
        }
      ],
      "buildingData": [
        {
          "key": "ore_mine",
          "name": "Ore Mine",
          "level": 23
        }
      ],
      "defenseData": [
        {
          "key": "shield_generator",
          "name": "Shield Generator",
          "level": 6
        }
      ],
      "resourceData": {
        "ore": 430716,
        "tier": "exact",
        "alloys": 146124,
        "hydrogen": 206245,
        "silicates": 420384
      },
      "expiresAt": "2026-08-21T19:29:20.301Z",
      "isRead": true,
      "createdAt": "2026-08-20T19:29:20.302Z",
      "targetPlanetName": "Cristalline3",
      "targetMoonName": null,
      "targetFieldName": null,
      "targetStationName": null,
      "targetUsername": "Aza-zel",
      "targetAvatarUrl": null,
      "targetPortraitFrame": "/images/frames/command_center.png",
      "targetAllianceTag": null,
      "isSaved": false
    }
  ],
  "unreadCount": 0
}

Notes

  • Report objects are populated on the sweep account.

Espionage v2 (2026-09-25 onward)

New reports leave buildingData, defenseData, fleetData and resourceData null and carry the scan in intel (tiered precision, {min, max} ranges below tier 4, camelCase resource keys, fleet.ships[].quantity = active ships only). The example above predates it. Shape and reading rules: live-verify-s0-2026-09-28.md.

Live Verification

  • Verified 2026-08-26 on s0: GET /api/fleet/spy-reports -> 200.
  • Example above is a real response with every array truncated to its first item.
  • Live array sizes at capture time: reports=33, reports[].buildingData=16, reports[].defenseData=3, reports[].fleetData=2.