Apps API
Apps built from rooms: previews, going live, rollbacks and export.
All paths are relative to the API origin. Send Authorization: Bearer <token> unless a route says otherwise; see the API overview for tokens and errors.
GET /v1/apps
Apps in rooms you can view
Query
| Field | Type | Required | Notes |
|---|---|---|---|
workspace | string | no | |
room | string | no |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
apps | object[] | yes |
GET /v1/apps/:id
View on the room
Response
| Field | Type | Required | Notes |
|---|---|---|---|
id | string | yes | |
name | string | yes | |
kind | string | yes | |
slug | string | yes | |
status | "draft" | "preview" | "live" | "paused" | yes | |
room | object | yes | |
previewSpaceId | string | yes | |
previewVersion | integer | yes | |
liveVersion | integer | null | yes | |
liveUrl | string | null | yes | |
access | "public" | "code" | "private" | yes | |
joinCode | string | null | yes | |
build | object | yes | |
canManage | boolean | yes | |
createdAt | number | yes |
PATCH /v1/apps/:id
Manage (name, access, join code)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | no | |
access | "public" | "code" | "private" | no | |
newJoinCode | boolean | no | |
paused | boolean | no |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
id | string | yes | |
name | string | yes | |
kind | string | yes | |
slug | string | yes | |
status | "draft" | "preview" | "live" | "paused" | yes | |
room | object | yes | |
previewSpaceId | string | yes | |
previewVersion | integer | yes | |
liveVersion | integer | null | yes | |
liveUrl | string | null | yes | |
access | "public" | "code" | "private" | yes | |
joinCode | string | null | yes | |
build | object | yes | |
canManage | boolean | yes | |
createdAt | number | yes |
DELETE /v1/apps/:id
Manage
Response: 204, no body
POST /v1/apps/:id/live
Manage; first go-live, plan live-app limit
Body
| Field | Type | Required | Notes |
|---|---|---|---|
access | "public" | "code" | "private" | no (default "code") | |
copyData | boolean | no (default false) |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
id | string | yes | |
name | string | yes | |
kind | string | yes | |
slug | string | yes | |
status | "draft" | "preview" | "live" | "paused" | yes | |
room | object | yes | |
previewSpaceId | string | yes | |
previewVersion | integer | yes | |
liveVersion | integer | null | yes | |
liveUrl | string | null | yes | |
access | "public" | "code" | "private" | yes | |
joinCode | string | null | yes | |
build | object | yes | |
canManage | boolean | yes | |
createdAt | number | yes |
POST /v1/apps/:id/promote
Manage; live = latest preview version
Response
| Field | Type | Required | Notes |
|---|---|---|---|
id | string | yes | |
name | string | yes | |
kind | string | yes | |
slug | string | yes | |
status | "draft" | "preview" | "live" | "paused" | yes | |
room | object | yes | |
previewSpaceId | string | yes | |
previewVersion | integer | yes | |
liveVersion | integer | null | yes | |
liveUrl | string | null | yes | |
access | "public" | "code" | "private" | yes | |
joinCode | string | null | yes | |
build | object | yes | |
canManage | boolean | yes | |
createdAt | number | yes |
POST /v1/apps/:id/rollback
Manage
Body
| Field | Type | Required | Notes |
|---|---|---|---|
deploy | integer | yes |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
id | string | yes | |
name | string | yes | |
kind | string | yes | |
slug | string | yes | |
status | "draft" | "preview" | "live" | "paused" | yes | |
room | object | yes | |
previewSpaceId | string | yes | |
previewVersion | integer | yes | |
liveVersion | integer | null | yes | |
liveUrl | string | null | yes | |
access | "public" | "code" | "private" | yes | |
joinCode | string | null | yes | |
build | object | yes | |
canManage | boolean | yes | |
createdAt | number | yes |
GET /v1/apps/:id/deploys
View
Response
| Field | Type | Required | Notes |
|---|---|---|---|
deploys | object[] | yes |
GET /v1/apps/:id/users
Manage; the app's end users
Response
| Field | Type | Required | Notes |
|---|---|---|---|
users | object[] | yes |
POST /v1/apps/:id/owner-link
Edit; signed 10-minute admin link into the live app
Response
| Field | Type | Required | Notes |
|---|---|---|---|
url | string | yes | |
expiresAt | number | yes |
GET /v1/apps/:id/export
Manage; Hono + D1 project, deploys with wrangler
Response: application/zip