Replay Parser

Upload a Fortnite .replay file and receive structured match data — metadata, the reporter's stats, the ordered elimination feed, and the list of participants.

Endpoint

POST/replay/parse

Base URL https://api.zyron.pro/api/v1 — so the full URL is https://api.zyron.pro/api/v1/replay/parse.

Request

Send the replay as multipart/form-data with a single field named replay containing the .replay file.

Headers

HeaderRequiredValue
AuthorizationRequiredBearer zyr_your_key
Content-TypeSet by clientmultipart/form-data (with boundary — let your HTTP client set it)

Body field

FieldTypeDescription
replayrequiredfileThe Fortnite .replay file. Max 35 MB. Must be a valid Unreal replay — validated by the magic bytes 0x1CA2E27F at the start of the file.

Constraints

Examples

curl -X POST https://api.zyron.pro/api/v1/replay/parse \
  -H "Authorization: Bearer zyr_your_key" \
  -F "replay=@match.replay"

Response

A 200 OK returns a JSON object with four top-level keys: meta, reporter, elims, and participants.

meta — object

FieldTypeDescription
startedAtstringMatch start time, ISO 8601.
lengthMsnumberMatch length in milliseconds.
buildstring | nullGame build string, e.g. ++Fortnite+Release-41.00. May be null if absent from the replay.
friendlyNamestringThe replay's internal name.
elimParseFailuresnumberElimination events that could not be decoded — usually 0.

reporter — object

The uploader / recording player.

FieldTypeDescription
placementnumber | nullFinal placement in the match.
totalPlayersnumber | nullLobby size for the match.
eliminationsnumberThe uploader's kill count.

elims — array of objects

Every elimination and knock, sorted by time.

FieldTypeDescription
tnumberSeconds since match start.
eliminatorstringEpic account ID of the eliminator, or "" if a bot.
eliminatedstringEpic account ID of the eliminated player, or "" if a bot.
eliminatorIsBotbooleanWhether the eliminator was a bot.
eliminatedIsBotbooleanWhether the eliminated player was a bot.
knockedbooleanTrue for a knock (down-but-not-out), false for a full elimination.

participants — array of strings

FieldTypeDescription
participants[]stringDistinct Epic account IDs seen in the elimination feed.

Example response

json
{
  "meta": {
    "startedAt": "2026-06-22T10:33:48.000Z",
    "lengthMs": 1080000,
    "build": "++Fortnite+Release-41.00",
    "friendlyName": "UnsavedReplay-2026.06.22-10.33.48",
    "elimParseFailures": 0
  },
  "reporter": {
    "placement": 12,
    "totalPlayers": 98,
    "eliminations": 3
  },
  "elims": [
    {
      "t": 132.4,
      "eliminator": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
      "eliminated": "",
      "eliminatorIsBot": false,
      "eliminatedIsBot": true,
      "knocked": false
    },
    {
      "t": 271.8,
      "eliminator": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
      "eliminated": "0f1e2d3c4b5a69788796a5b4c3d2e1f0",
      "eliminatorIsBot": false,
      "eliminatedIsBot": false,
      "knocked": true
    },
    {
      "t": 604.1,
      "eliminator": "0f1e2d3c4b5a69788796a5b4c3d2e1f0",
      "eliminated": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
      "eliminatorIsBot": false,
      "eliminatedIsBot": false,
      "knocked": false
    }
  ],
  "participants": [
    "a1b2c3d4e5f60718293a4b5c6d7e8f90",
    "0f1e2d3c4b5a69788796a5b4c3d2e1f0"
  ]
}

Errors for this endpoint

StatuserrorWhen
400invalid_replayThe file is a replay but is corrupt or unsupported.
413file_too_largeUpload exceeds 35 MB.
415unsupported_fileNot a .replay (fails the magic-byte check).
422parse_timeoutParsing exceeded the time budget.

See the full list, including auth and rate-limit errors, on the Errors page.

How it works & safety

Uploads are never stored or executed

GET /key

Returns your tier and today's usage. Useful for showing quota in a dashboard without spending a parse.

GET/key
json
{
  "tier": "pro",
  "limits": { "perMinute": 60, "perDay": 2000 },
  "usage": { "day": "2026-07-06", "dayCount": 137 }
}

See Rate limits for what these numbers mean.