VibeLive Documentation
Server-to-server REST API for automating account, project, room, and member management from your backend. No browser session required.
← Docs hub Full spec (ACCOUNT_API.md)The Account API uses two separate credentials. Which one you need depends on the endpoint:
| Credential | Header | Scope | Used for |
|---|---|---|---|
| Account token | X-Account-Auth-Token |
Your whole account | projects.jsp — list, create, update, delete projects |
| Project key | X-Project-Key |
One specific project | project.jsp, rooms.jsp, members.jsp |
Both credentials are returned when you call
POST /api/session/authAccounts.jsp with action=getData:
{ "accountId":"…", "email":"…", "token":"<account_token>", "projectId":"vlp_…", "projectKey":"<project_key>" }
All endpoints are POST-only. Base URL:
POST https://makedo.com/api/manage/{endpoint}.jsp
project.jsp, rooms.jsp, members.jsp).
Upgrade to a Starter or Builder plan to unlock them.
| Endpoint | Auth | Actions |
|---|---|---|
projects.jsp |
Account token | list · create · update · delete · restore · rotate-key |
project.jsp |
Project key | Project summary — room counts, member stats, live count, plan tier |
rooms.jsp |
Project key | list · get · create · update · delete · disable · enable · end-meeting · regenerate-code · bulk-delete |
members.jsp |
Project key | list-users · list-members · remove-user |
No projectId in request headers — the account token identifies your account.
Targeted actions (update, delete, etc.) take projectId in the POST body.
projectId, title, status, plan, is_trial, room_count, live_count, expiration_ts, created_at.
title. Enforces your plan's project limit. Returns projectId, title, and projectKey.
rotate-key (which invalidates the old key).projectId, and at least one of title or description. Returns {"status":"ok"}.
projectId. Soft-deletes the project and all its rooms. Returns {"status":"ok"}.
projectId. Restores an archived project to active status. Enforces the plan project limit. Fails if the plan limit is already reached.
projectId. Generates a new project key and immediately invalidates the old one.
Returns {"status":"ok","projectKey":"…"}.
All callers using the old key receive 403 until updated.
Params: projectId. No action field — always returns the full project summary.
Response fields:
| Field | Description |
|---|---|
projectId, title, status | Identity and status: active, pending, disabled, archived |
plan | Subscription tier: trial, starter, builder, or user |
room_count | Total non-deleted rooms |
live_count | Participants currently inside a room across the project |
max_rooms | Plan-tier cap on active rooms (−1 = unlimited) |
member_stats | { total_members, email_verified_members, unverified_members } — aggregate across all rooms |
allow_anon_users, is_trial, expiration_ts, created_at | Project configuration fields |
All requests include projectId and action. Room-specific actions also require roomId.
Room status values: pending · open · active · cooldown · closed · disabled · archived.
roomId, title, room_code, status, allows_guests, max_size, member_count, live_count, created_at.
roomId. Full room detail including session_count, total_duration_seconds, last_session_at.
title, description, max_size (default 8), allows_guests (default true).
Returns roomId, title, room_code, room_status.
Fails with quota_exceeded at the plan room limit.
roomId + any of title, description, max_size, allows_guests. At least one field required. Returns {"status":"ok","roomId":"…"}.
roomId. Kicks active participants, removes room from the SFU, soft-deletes. Returns {"status":"ok"}.
roomId, optional reason. Kicks participants and blocks new joins until re-enabled. Returns {"status":"ok"}.
roomId. Re-enables a disabled room. Returns {"status":"ok"}.
roomId, optional reason, optional reopen_after_seconds.
Kicks all participants. reopen_after_seconds: 0 = reopen immediately (default); positive = reopen after N seconds; negative = stay disabled until manually enabled.
roomId. Generates a new 6-character join code, immediately invalidating the old one. Returns {"status":"ok","room_code":"…"}.
statuses array (default: all terminal states). Deletes rooms with status closed, disabled, or archived. Active/open rooms are never affected.
Returns {"status":"ok","deleted_count":N}.
userId, username, is_live, room_count, last_activity, created_at.
is_live is true when the user's status is nowinside or lobby_mid in any room.
roomId. All member records for that room.
Each item: memberId, userId, username, display_name, status, is_admin, joined_at.
Status nowinside or lobby_mid = currently active in the room.
userId. Kicks the user from any rooms they are currently in, marks all their memberships deleted, removes the project from their access, and revokes their project credentials.
Returns {"status":"ok"}.
| error_code | HTTP | Meaning |
|---|---|---|
| method_not_allowed | 405 | Request was not POST |
| unauthorized | 403 | Missing or invalid credential (account token or project key) |
| auth_expired | 401 | Token presented but expired — refresh and retry |
| invalid_param | 400 | Missing or invalid request parameter |
| not_found | 404 | Object not found, or belongs to a different account or project |
| quota_exceeded | 429 | Plan project or room limit reached |
| server_error | 500 | Internal server error |
1 — Delete inactive rooms, then check the count
# Bulk-delete closed and disabled rooms
curl -s -X POST https://makedo.com/api/manage/rooms.jsp \
-H "X-Project-Key: $PROJECT_KEY" \
-H "Content-Type: application/json" \
-d '{"projectId":"vlp_...","action":"bulk-delete","statuses":["closed","disabled"]}'
# → {"status":"ok","deleted_count":4}
# Confirm remaining room count vs. plan limit
curl -s -X POST https://makedo.com/api/manage/project.jsp \
-H "X-Project-Key: $PROJECT_KEY" \
-H "Content-Type: application/json" \
-d '{"projectId":"vlp_..."}'
# → {"projectId":"vlp_...","room_count":16,"max_rooms":20,...}
2 — Create a project and capture its key
curl -s -X POST https://makedo.com/api/manage/projects.jsp \
-H "X-Account-Auth-Token: $ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action":"create","title":"My New App"}'
# → {"projectId":"vlp_...","title":"My New App","projectKey":"..."}
# ⚠ Store the projectKey now — it is not returned again.
3 — Build a live-session dashboard
# Fetch all rooms; filter client-side where live_count > 0
curl -s -X POST https://makedo.com/api/manage/rooms.jsp \
-H "X-Project-Key: $PROJECT_KEY" \
-H "Content-Type: application/json" \
-d '{"projectId":"vlp_...","action":"list"}'
# Returns all rooms with live_count per room
Full technical spec including all request/response shapes, security notes, and test checklist: spec_docs/ACCOUNT_API.md