Skip to main content

WebGL build structure

The zip must contain index.html and a *.loader.js file:
A single wrapping folder is fine — if Unity exports to WebGLBuild/, the upload strips that prefix for you. What fails is a zip with several top-level folders and no index.html inside any single one. __MACOSX/ and ._ entries created by macOS are ignored automatically.
A zip without index.html or a *.loader.js file fails processing. The version is listed as failed with the reason, and you can upload it again with the same version number.

Archive limits

The zip size, the file count and the total size are checked before extraction, so an oversized build fails fast. The single-file limit is checked as each file is extracted.

Upload via Developer Portal

  1. Developer Portal → your game → Builds → Upload Build
  2. The platform is always WebGL — SusaPlay runs WebGL builds only
  3. Set version ID as x.y.z, such as 1.0.0, optionally with a suffix such as 1.0.0-beta
  4. Add release notes — describe what changed and how to test
  5. Upload zip
After the upload, the portal shows Processing build… while SusaPlay extracts the build, usually under a minute. The version then appears as pending_review, or as failed with the reason. For a private game it appears as ready instead: ready to test, and not sent for review. To play a build that is not live yet, use the buttons on its row: Both work for pending_review and ready WebGL builds. A link stops working once the build goes live, is rejected or is deleted.

Upload via CI/CD

Your pipeline uses the same three steps the portal uses, authenticated with your developer API key. The zip goes straight to storage, not through the API, up to 500 MB.

1. Ask for a signed upload URL

The URL is valid for 20 minutes. This call fails early if the version already exists or you are at the review cap, so you find out before uploading anything.

2. Upload the zip

3. Register the build

SusaPlay checks the request and answers 202 with "status": "processing". It then extracts the build in the background.

4. Wait for processing (optional)

Poll the version until it leaves processing and extracting:
A failed version carries the reason in .data.version.failure.message. Fix the build and upload it again with the same version number. A key with only the builds:write permission may poll.
Changed in October 2026: process-build used to extract the build before answering, so a large build could time out while it still succeeded. It now answers 202 at once. A pipeline that only checks success: true keeps working, but that no longer means the build is ready.
The old single-call POST /catalog/publish endpoint has been removed. It sent the zip in the request body, which caps at 32 MiB — smaller than most WebGL builds. Move any pipeline still calling it to the three steps above.
Remote content ships separately — see Addressables for updating levels or art without a new build.

Build retention

SusaPlay keeps a limited number of builds per game and deletes older ones automatically, along with their files. Never deleted automatically: the live build, a build waiting for review or still processing, and anything uploaded within the grace period. A ready build of a private game is not under review, so it is kept like any other build: among the 5 most recent. A failed build is deleted by your next successful upload and does not count toward the 5. Subscribe to the BUILD_PRUNED webhook if your pipeline needs to know when a version was removed. Builds still processing count toward the review cap. Uploading past the cap is rejected with 409 until one of your pending builds is reviewed, so ask for a review rather than queueing more builds. You cannot delete a build yourself; contact support if one must be removed.

Version states

A passing review moves a version straight to live. There is no separate approved-but-not-live state.

Release notes checklist

Good release notes help reviewers pass builds faster:
  • What changed since last version
  • Known issues or workarounds
  • Test account credentials if auth is required
  • Which browsers and devices were tested