VRChat Quest package
Two endpoints prepare converted VRChat avatars for Quest. Neither requires authentication, matching POST /api/mesh-editor/analyze-package.
Neither endpoint consumes tokens or credits. There is no endpoint-specific rate limit; deployment-level protections still apply.
Nothing here uploads to VRChat. Build & Publish stays in the VRChat SDK Control Panel that the user runs in Unity.
Strip Quest-unsupported components
POST /api/vrchat/quest-package
Removes components the Android (Quest) build cannot run from the avatar in a .unitypackage. Only .prefab and .unity files that reference the VRChat SDK3 Avatar Descriptor script are edited, and only inside the descriptor's GameObject subtree.
Removed component classes: Rigidbody, MeshCollider, BoxCollider, AudioSource, Light, SphereCollider, CapsuleCollider, Cloth.
Safety rules:
- A
Rigidbodyused by a joint (m_ConnectedBody) is kept. - A component referenced by anything other than its own GameObject's component list is kept and reported.
- Components outside the avatar subtree are kept.
- Other bytes in the package are copied unchanged.
ParticleSystemis not removed. The Unity helper reports it.
Request: multipart/form-data
The request must include a valid CSRF cookie and matching X-CSRF-Token header.
| Field | Type | Required | Description |
| --- | --- | --- | --- |
| file | File | Yes | A .unitypackage file, at most 300 MB. |
Successful response: 200, application/octet-stream, with Content-Disposition: attachment; filename="<name>-quest.unitypackage".
The X-Crateyard-Quest-Report header holds a JSON summary:
{
"assetsChanged": 1,
"removed": { "Light": 1, "BoxCollider": 2 },
"removedTotal": 3,
"skippedComponents": 1,
"skippedAssets": 0
}Example:
curl -F "[email protected]" \
-H 'Cookie: crateyard_csrf=example-token' \
-H 'X-CSRF-Token: example-token' \
-D headers.txt \
-o avatar-quest.unitypackage \
https://example.com/api/vrchat/quest-packageErrors:
| Status | Error | Cause |
| --- | --- | --- |
| 400 | Upload a unitypackage file. | The file field is missing or empty. |
| 400 | Only .unitypackage files are supported. | The file name does not end in .unitypackage. |
| 400 | File too large (max 300 MB). | The upload exceeds 300 MB. |
| 403 | Invalid CSRF token. | The CSRF cookie or matching header is missing or invalid. |
| 422 | Unity package is empty | The file is empty after reading. |
| 422 | File is not a valid unitypackage | The archive has no asset path entries, or it is not gzipped tar. |
| 422 | File is not a valid unitypackage or unpacks to more than 512 MB | Decompression failed or the output is over 512 MB. |
| 422 | Unity package contains too many tar entries | The archive exceeds 20,000 entries. |
| 422 | Unity package is truncated | A tar entry extends past the end of the file. |
Download the Unity helper
GET /api/vrchat/unity-helper.tgz
Returns com.crateyard.vrchat-helper, an editor-only UPM package, as a gzipped tarball with a package/ root. It contains no VRChat SDK files. Its vpmDependencies declares com.vrchat.avatars (>=3.0.0) for VCC; install the SDK separately before adding the tarball in Unity because Unity's tarball installer does not resolve VPM dependencies.
Response: 200, application/gzip, Content-Disposition: attachment; filename="com.crateyard.vrchat-helper.tgz".
Install in a VRChat Creator Companion Avatars project:
1. Download the tarball.
2. In Unity, open Window > Package Manager, choose the plus menu, then Add package from tarball, and select the file.
3. Keep com.vrchat.avatars installed through VCC.
Menu items added:
- Crateyard > Prepare for Quest: a window that estimates a partial Quest rank, shows the removal plan, removes the components above, swaps materials under the avatar folder to
VRChat/Mobile/Toon Lit, and then offers a separate confirmation to switch the build target to Android. Confirm the actual performance rank in VRChat's SDK. - Crateyard > Open VRChat Control Panel: opens the SDK menu item
VRChat SDK/Show Control Panel. If that item is missing, a dialog explains how to open it.
The download may fail if the helper files cannot be read.
Limitations
- Unity was not run for these changes. The helper scripts, the Android shader and texture settings, and the Quest rank output are unverified in Unity. The acceptance check (a Quest build passes SDK validation on a clean project with only the SDK and helper) must be run manually.
- The
Androidtexture platform values are unverified in Unity. Component class IDs were checked against Unity's YAML Class ID reference. - The VRChat menu path
VRChat SDK/Show Control Panelis unverified. - The strip endpoint does not edit
.animcurves that target removed components. - Only UTF-8 YAML assets are processed. Assets over 16 MB are skipped and reported.
- Materials shared outside the avatar folder are reported and not changed.
- Triangles, textures, and bones are not reduced automatically. The helper reports them against Quest limits.
- The package uses the VRChat shader only when it is present in the user's project. A missing shader stops the swap with no changes.