API Center
Pick an endpoint from the public REST API definition, fill parameters, send a same-origin request and inspect the response.
The API Center turns the generated OpenAPI interface definitions into a working console: pick an endpoint, fill parameters, send a real request and inspect the status, headers, body and equivalent curl. It never re-declares an API table — the endpoint catalogue always comes from the interface definitions read at build time.
What it does
- Endpoint selector grouped by tag, covering the platform REST surface and the Interactive Whiteboard REST surface.
- Path and query parameter inputs generated from the interface definition, with required fields marked.
- Request body field templates generated from the schema, editable as raw JSON.
- Two authentication modes: project credentials (Basic) or a whiteboard room/project token.
- Response pane with status code, response headers, formatted body and the equivalent curl.
Credentials and security
- Credentials are kept only in this tab's
sessionStorageand are cleared when the tab closes; they are never written to server storage, logs or cookies. - The documentation site exposes a same-origin proxy at
/api-proxy, so the browser never calls the control plane cross-origin; the proxy does not logAuthorization/tokenheaders and persists nothing. - A production deployment must allow
/api-proxy/in the documentation site's reverse proxy (see the deployment guide); otherwise the console reports a network error. - Low-privilege tokens are useful for debugging too: a
readertoken calling a write endpoint returns403, which is expected.
HTTP status vs error code
Branch on code; use status only for coarse routing. The 401/403 split matters most (since round 9):
| status | Meaning | Typical code | What to do |
|---|---|---|---|
| 401 | Not authenticated: no credential, invalid credential, dead session, expired token | unauthorized, missing_authorization, invalid_credentials, invalid_appid, invalid_token, token_expired, token_channel_mismatch | Sign in again or mint a new token; do not say "permission denied" |
| 403 | Authenticated but refused: no permission, service not enabled, app disabled, banned | banned (with details.permissionDenied: true), service_not_enabled, app_disabled, join_rejected | Do not redirect to the login page; explain per code |
| 400 | Malformed request or parameter | invalid_parameter, invalid_channel_name | Fix the request; do not retry as-is |
| 404 | Resource does not exist | *_not_found | Check the id, or treat it as deleted |
| 409 | State conflict / duplicate name | project_exists, recording_invalid_state | Re-read the state before retrying |
| 429 | Rate limited or over quota | rate_limited, recording_quota_exceeded | Back off on Retry-After; a quota error needs a quota change |
| 500 / 502 / 503 | Server or upstream unavailable | internal_error, upstream_unavailable, RTC_PROVIDER_UNAVAILABLE | Retry with backoff and quote X-Request-Id |
Three practical rules:
- The same 403 can mean "your role lacks the permission" or "the service is not enabled"; the message to the user is different, so read
code. - Treat a session as dead only when
status === 401andcodeis an authentication code; treating 403 as "logged out" kicks users who merely lack a permission. - "No permission" is
details.permissionDenied === true; there is nopermission_deniederror code. The full catalogue lives in the error-code reference.
How to use it
- Create a project in the console and copy
customerId/customerSecret, or mint a room token on the server first. - Pick an endpoint and fill in the path and query parameters.
- Edit the request body JSON when needed.
- Click “Send request” and inspect the result on the right; the curl preview reproduces the call in a terminal.
Limitations
- The proxy only forwards
/v1,/dev/v1,/v2and/consoleprefixes; every other path is rejected. - Browser calls are subject to same-origin policy and CORS; the proxy is the only supported path.
- The console keeps no request history; use the example scripts or the SDK for regression runs.
Interactive API console
Pick an endpoint, fill in parameters and send a real request. Requests go through the documentation site same-origin proxy (`/api-proxy`); credentials stay in this browser session (`sessionStorage`) and are never written to server storage or logs. 210 endpoints.
Credentials are kept only in this tab’s sessionStorage and cleared when the tab closes. The docs proxy does not log Authorization/token headers and never persists them.
curl preview
Response
Status: —
Response headers
No request sent yet.