This page lists the REST API endpoints by resource. Append every path to https://oasisw.ai and put the token in the header (REST API overview, authentication, and limits). The value in parentheses is the rate-limit tier.
Apps (published builds)
Method and path
Description
Tested
GET /api/rest/apps/:id
One published app (normal)
200. :id is the build ID from the per-build URL /b/<build ID>/
GET /api/rest/projects/:projectId/app
The project's primary app (normal)
200. Returned the primary build
GET /api/rest/projects/:projectId/apps
The project's published apps. Paginated (normal)
200. Returned 2 published builds; the download build was not included. Each item has name, version, url (the per-build URL), views, size, and more
Assets
Method and path
Description
Tested
GET /api/rest/projects/:projectId/assets
Asset list. ?skip=&limit= (default 16, max 100000); the total count is in pagination.total (normal)
200. Confirmed the default limit of 16
GET /api/rest/assets/:assetId
One asset. Doesn't include the file contents (normal)
200
GET /api/rest/assets/:assetId/file/:filename
The asset file's contents (normal)
200. A Korean file name (체커.png, "checker.png") also downloaded when URL-encoded
POST /api/rest/assets
Create an asset. multipart/form-data with name, projectId, file (required) and branchId, parent, preload. Accepts only script, html, css, text, shader, and json (determined by file extension) (assets)
PUT /api/rest/assets/:assetId
Replace an asset file. file in multipart/form-data. Text types only (assets)
200. Returned the updated asset's information
DELETE /api/rest/assets/:assetId
Delete an asset. If it's a folder, its contents are deleted too. This can't be undone (normal)
Branches and checkpoints
Method and path
Description
Tested
GET /api/rest/projects/:projectId/branches
List of open branches (by name). Continue with ?skip=<branch id>, and check pagination.hasMore to see whether more remain (normal)
200. Only main. The branch ID of main was the same as the project ID, and latestCheckpointId was included
POST /api/rest/branches
JSON {projectId, name, sourceBranchId, sourceCheckpointId?}. Creates a new branch from the source checkpoint (or, if omitted, that branch's latest one) (normal)
JSON {projectId, branchId, description}. Returns a job. According to the API docs, it finishes immediately and comes back in the complete state, with the checkpoint in data (normal)
201. Returned a job with statuscomplete and data.typecheckpoint_create
Scenes and jobs
Method and path
Description
Tested
GET /api/rest/projects/:projectId/scenes
Scene list. Uses the default branch if you don't pass ?branchId= (normal)
The asset ID is in the ID field at the top of the right panel when you select the asset in the editor. In our test, with the editor open, we used PUT to append a one-line comment to the end of a script. When we then selected that script in the editor's ASSETS, the updated contents appeared in the CODE section on the right without reloading, and Size had increased (1 run). We reverted it by uploading the original contents the same way.