WC3Replays

API documentation

The API base URL is https://wc3replays.com. Requests use HTTPS. Responses are JSON unless an endpoint returns image or replay bytes.

Download the OpenAPI specification or discover these services through the API catalog.

Replay parsing

POST /api/replays/parse accepts a multipart form with one nonempty replay file named with the .w3gextension. NetEase .nwg files are unsupported. No sign-in is required. An optional expectedHashfield must match the file's SHA-256 hash.

curl https://wc3replays.com/api/replays/parse \
  -F "[email protected]"

Read GET /api/replays/parse/limits before uploading for current file, multipart request, and rate limits. Size violations return 413; rate limits return 429. Respect Retry-After. Untrusted browser origins are rejected with 403; the API does not enable arbitrary cross-origin browser access.

Successful responses contain ok: true, the parsed replay, and warnings. Failures contain ok: false and an error with a code and message. The x-replay-library-save header reports account saving separately from parsing success.

GET /api/replays/parser-health returns parser inspection status; HEAD returns headers only. Cached reports support ETag-based conditional requests. This is parser health, not an uptime guarantee for account storage or other services.

Replay icons

GET /api/replay-icons resolves an icon using query fields such as id, name, and category. Categories include unit, hero, building, ability, item, and upgrade. Missing icons receive an SVG fallback unless fallback=nonerequests a 404. Use debug=1 for JSON resolution details.HEAD returns headers without the image body.

POST /api/replay-icons accepts a JSON array or an object containing requests. Each entry can provide a unique key, an id or name, and category hints. Only the first 100 entries are processed; the response reports truncation. Request bodies are limited to 128 KiB. Cache-friendly/api/replay-icons/{asset} URLs use the same query parameters and methods.

Account replay library

These endpoints use the website's signed-in Battle.net session, not an API key. GET /api/replays/library reports account availability and saved replay summaries. Anonymous users receive a null account and an empty replay list.

At /api/replays/library/{hash}, GETdownloads an owned replay, PUT selects a player using a JSON playerId (a nonnegative integer or null), and DELETEremoves it. The hash is the replay's 64-character lowercase SHA-256 value.

The /share suffix supports GET publication status, POST with explicit consent {"publish":true}, and DELETE to revoke publication. Publication exposes an allowlisted report, not the raw replay. Library selection and publication JSON bodies are limited to 1024 bytes.

Replay-specific operations require an authenticated owner. Mutations must include an Origin header matching the request URL origin. Missing sessions return 401, invalid origins return 403, and unavailable account services return 503. Authentication callbacks and client-error ingestion are internal website endpoints, not supported integration APIs.