Errors

The API uses conventional HTTP status codes and always returns a consistent JSON error shape.

Error shape

Every error response has an error code (stable, safe to switch on) and a message (human-readable, may change):

json
{
  "error": "invalid_replay",
  "message": "The uploaded file could not be parsed as an Unreal replay."
}

Status codes

StatuserrorMeaning
400invalid_replayThe file is corrupt or of an unsupported replay format.
401unauthorizedThe API key is missing or invalid.
413file_too_largeThe upload exceeds the 35 MB limit.
415unsupported_fileThe upload is not a .replay file (fails the magic-byte check).
422parse_timeoutParsing took too long and was aborted.
429rate_limitedYou exceeded your rate limit. Retry after the given delay.
500internal_errorAn unexpected server error occurred. Safe to retry.

Handling errors

Branch on the error code rather than the message text. Codes are stable across releases; messages are for humans and may be reworded. For 429, honor the Retry-After header; for 500, a retry with backoff is safe.