nimeet Docs
中文

Whiteboard REST API

Generated from the public whiteboard API definition: rooms, scenes, content, snapshot, replay and tokens.

Generated from the public whiteboard API definitions

Version v1.0.0 · Updated 2026-10-28 · revision 1

Group overview

This page is generated at build time from the public REST API definition:tag whiteboard, 22 operations (all 22)。authentication, see REST API overview.

MethodPathSummary
GET/v1/whiteboard/roomsList whiteboard rooms
POST/v1/whiteboard/roomsCreate a whiteboard room
GET/v1/whiteboard/rooms/{uuid}Get room information
PATCH/v1/whiteboard/rooms/{uuid}Disable (ban) or re-enable a room
POST/v1/whiteboard/rooms/{uuid}/closeClose a room permanently
POST/v1/whiteboard/rooms/{uuid}/membersJoin a room as a member
DELETE/v1/whiteboard/rooms/{uuid}/members/{memberId}Leave a room
GET/v1/whiteboard/rooms/{uuid}/scenesGet scene path list
POST/v1/whiteboard/rooms/{uuid}/scenesAdd scenes
GET/v1/whiteboard/rooms/{uuid}/scene-stateGet the current scene state
PATCH/v1/whiteboard/rooms/{uuid}/scene-stateSwitch the current scene
POST/v1/whiteboard/rooms/{uuid}/strokesAppend a stroke
DELETE/v1/whiteboard/rooms/{uuid}/strokes/{strokeId}Erase a stroke
POST/v1/whiteboard/rooms/{uuid}/undoUndo the caller's last operation
POST/v1/whiteboard/rooms/{uuid}/redoRedo the caller's last undone operation
PUT/v1/whiteboard/rooms/{uuid}/viewportSet the room viewport
POST/v1/whiteboard/rooms/{uuid}/imagesInsert an image
GET/v1/whiteboard/rooms/{uuid}/snapshotExport a room snapshot
GET/v1/whiteboard/rooms/{uuid}/snapshot.svgRender the current scene as SVG
GET/v1/whiteboard/rooms/{uuid}/replayGet the replay timeline
POST/v1/whiteboard/tokens/rooms/{uuid}Generate a room token
POST/v1/whiteboard/tokens/teamsGenerate a project (SDK) token

Operation details

GET /v1/whiteboard/rooms

List whiteboard rooms

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
beginUUIDquerystring
limitqueryinteger1..1000,default 100

Response

Status codesDescription / schema
200Room list — array<object>
401Missing or invalid project credentials / room token — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/whiteboard/rooms?beginUUID=value&limit=50" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/whiteboard/rooms

Create a whiteboard room

Creates a room owned by the authenticated project. isRecord is accepted for Agora compatibility and persisted, but server-side recording of whiteboard operations is only exposed through the replay endpoint.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Request body

FieldTypeRequiredDescription
isRecordbooleandefault false
limitintegerMaximum concurrent writer/admin members; 0 means no limit.;>= 0,default 0
json
{
  "isRecord": true,
  "limit": 1
}

Response

Status codesDescription / schema
201Room created — Room
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/rooms" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"isRecord":true,"limit":1}'

GET /v1/whiteboard/rooms/{uuid}

Get room information

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Response

Status codesDescription / schema
200Room information — Room
401Missing or invalid project credentials / room token — Error
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

PATCH /v1/whiteboard/rooms/{uuid}

Disable (ban) or re-enable a room

Banning removes the room from joinable rooms; re-enabling with isBan: false restores it. Requires the admin role.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
isBanbooleanis
json
{
  "isBan": true
}

Response

Status codesDescription / schema
200Updated room — Room
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X PATCH "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"isBan":true}'

POST /v1/whiteboard/rooms/{uuid}/close

Close a room permanently

Closing is terminal: the room stays readable for audit and replay but rejects joins, scene mutations and token minting. Requires the admin role.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Response

Status codesDescription / schema
200Closed room — Room
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/close" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/whiteboard/rooms/{uuid}/members

Join a room as a member

Registers a member in the room and enforces the room limit for writer/admin members. The member record feeds scene-state.memberStates and the undo/redo stacks.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
memberIdstringlength 0..64
roleenum(admin | writer | reader)default "writer"
json
{
  "memberId": "string",
  "role": "admin"
}

Response

Status codesDescription / schema
201Member joined — object{ memberId, role, joinedAt, version }
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error
409Operation conflicts with the current room state — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/members" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"memberId":"string","role":"admin"}'

DELETE /v1/whiteboard/rooms/{uuid}/members/{memberId}

Leave a room

Marks the member as left and frees a writer slot. Admins may remove other members; writer/reader tokens may only remove themselves.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$
memberIdpathisstringlength 0..64

Response

Status codesDescription / schema
200Member left — object{ memberId, leftAt, version }
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/members/memberId" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/whiteboard/rooms/{uuid}/scenes

Get scene path list

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$
sceneDirquerystringdefault "/"

Response

Status codesDescription / schema
200Scene path list — array<string>
401Missing or invalid project credentials / room token — Error
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/scenes?sceneDir=value" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/whiteboard/rooms/{uuid}/scenes

Add scenes

Creates a scene directory when it does not exist and inserts the scenes under it. Requires the writer or admin role.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
pathstringisScene directory starting with /.;pattern ^/
scenesarray<object{ name, ppt }>isup to 100 items
json
{
  "path": "string",
  "scenes": [
    {
      "name": "demo",
      "ppt": {
        "src": "string",
        "width": 1,
        "height": 1
      }
    }
  ]
}

Response

Status codesDescription / schema
201Scenes added — object{ added, version }
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
409Operation conflicts with the current room state — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/scenes" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"path":"string","scenes":[{"name":"demo","ppt":{"src":"string","width":1,"height":1}}]}'

GET /v1/whiteboard/rooms/{uuid}/scene-state

Get the current scene state

Returns the room state the Web SDK's Room.state mirrors: current scene path, viewport, scenes, member states and undo/redo counters.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Response

Status codesDescription / schema
200Room state — RoomState
401Missing or invalid project credentials / room token — Error
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/scene-state" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

PATCH /v1/whiteboard/rooms/{uuid}/scene-state

Switch the current scene

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
scenePathstringispattern ^/
json
{
  "scenePath": "string"
}

Response

Status codesDescription / schema
200Current scene path — object{ currentScenePath, version }
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X PATCH "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/scene-state" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"scenePath":"string"}'

POST /v1/whiteboard/rooms/{uuid}/strokes

Append a stroke

Persists one stroke in the current scene and appends a stroke.append operation to the replay timeline. Realtime clients publish the same payload on the LiveKit data channel topic whiteboard before or after this call; persistence is authoritative for replay.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
applianceenum(pencil | pencilEraser | eraser | rectangle | ellipse | shape | selector | hand | clicker | laserPointer)is
colorstringpattern ^#[0-9a-fA-F]{6}$,default "#1f6feb"
widthnumber1..64,default 3
pointsarray<object{ x, y }>isup to 4096 items
memberIdstringMember identifier; defaults to the authenticated member.;length 0..64
scenePathstringScene to draw in; defaults to the current scene.
json
{
  "appliance": "pencil",
  "points": [
    {
      "x": 1,
      "y": 1
    }
  ],
  "color": "string",
  "width": 1
}

Response

Status codesDescription / schema
201Stroke appended — object{ stroke, version, canUndoSteps }
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/strokes" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"appliance":"pencil","points":[{"x":1,"y":1}],"color":"string","width":1}'

DELETE /v1/whiteboard/rooms/{uuid}/strokes/{strokeId}

Erase a stroke

Marks the stroke as erased (retained in the operation log for replay) and appends a stroke.erase operation.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$
strokeIdpathisstringlength 0..64

Response

Status codesDescription / schema
200Stroke erased — object{ strokeId, version }
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/strokes/strokeId" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/whiteboard/rooms/{uuid}/undo

Undo the caller's last operation

Undo is per member: it hides the most recent visible stroke this member appended in the current scene and moves it to that member's redo stack. Replay keeps both the append and the undo operation.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
memberIdstringlength 0..64
json
{
  "memberId": "string"
}

Response

Status codesDescription / schema
200Undo applied — object{ strokeId, version, canUndoSteps, canRedoSteps }
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error
409Operation conflicts with the current room state — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/undo" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"memberId":"string"}'

POST /v1/whiteboard/rooms/{uuid}/redo

Redo the caller's last undone operation

Restores the most recent stroke undone by this member in the current scene, provided no later stroke was appended by that member. Replay records a stroke.redo operation.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
memberIdstringlength 0..64
json
{
  "memberId": "string"
}

Response

Status codesDescription / schema
200Redo applied — object{ strokeId, version, canUndoSteps, canRedoSteps }
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error
409Operation conflicts with the current room state — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/redo" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"memberId":"string"}'

PUT /v1/whiteboard/rooms/{uuid}/viewport

Set the room viewport

Stores the camera viewport (x, y, width, height, scale) that late joiners and replay starts from.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
xnumberis
ynumberis
widthnumberis>= 1
heightnumberis>= 1
scalenumberis0.01..100
json
{
  "x": 1,
  "y": 1,
  "width": 1,
  "height": 1,
  "scale": 1
}

Response

Status codesDescription / schema
200Stored viewport — Viewport
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X PUT "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/viewport" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"x":1,"y":1,"width":1,"height":1,"scale":1}'

POST /v1/whiteboard/rooms/{uuid}/images

Insert an image

Records an image placed in a scene (the bytes live in the caller's storage; this endpoint stores the URL and geometry). Appends an image.insert operation.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
srcstringislength 1..∞
widthnumberis>= 1
heightnumberis>= 1
xnumber
ynumber
scenePathstring
lockedboolean
memberIdstringlength 0..64
json
{
  "src": "string",
  "width": 1,
  "height": 1,
  "x": 1,
  "y": 1
}

Response

Status codesDescription / schema
201Image inserted — object{ image, version }
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/images" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"src":"string","width":1,"height":1,"x":1,"y":1}'

GET /v1/whiteboard/rooms/{uuid}/snapshot

Export a room snapshot

Returns the full scene document plus operation log: the export format consumed by the Web SDK Room.exportScene/importScene equivalents and by offline replay.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$
includeOperationsquerybooleandefault true

Response

Status codesDescription / schema
200Room snapshot — Snapshot
401Missing or invalid project credentials / room token — Error
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/snapshot?includeOperations=true" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/whiteboard/rooms/{uuid}/snapshot.svg

Render the current scene as SVG

Server-side export of the current scene (strokes, images, background) as an SVG document. Used by exports and thumbnails; the deprecated Agora screenshot endpoints are not reproduced.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$
scenePathquerystring

Response

Status codesDescription / schema
200SVG document
401Missing or invalid project credentials / room token — Error
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/snapshot.svg?scenePath=value" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

GET /v1/whiteboard/rooms/{uuid}/replay

Get the replay timeline

Returns ordered operation frames with offsets relative to the first retained operation. Optional from/to ISO instants narrow the window; the SDK Player consumes the result.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$
fromquerystringformat date-time
toquerystringformat date-time

Response

Status codesDescription / schema
200Replay timeline — Replay
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/v1/whiteboard/rooms/uuid/replay?from=%24FROM&to=%24TO" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

POST /v1/whiteboard/tokens/rooms/{uuid}

Generate a room token

Mints a NETLESSROOM_* token bound to one room. The requested role may not exceed the role of the credential used to mint it. A lifespan of 0 (or omitted) means no expiry, matching the frozen semantics.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Parameters

NameLocationRequiredTypeDescription
uuidpathisstringlength 8..64, pattern ^[A-Za-z0-9_-]+$

Request body

FieldTypeRequiredDescription
roleenum(admin | writer | reader)default "writer"
lifespanintegerLifespan in milliseconds; 0 means no expiry.;>= 0
json
{
  "role": "admin",
  "lifespan": 1
}

Response

Status codesDescription / schema
201Minted room token — RoomToken
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error
403Token role is insufficient or the room is banned/closed — any
404Room, scene or stroke not found — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/tokens/rooms/uuid" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"role":"admin","lifespan":1}'

POST /v1/whiteboard/tokens/teams

Generate a project (SDK) token

Mints a NETLESSSDK_* token usable for every room of the authenticated project. Intended for server-to-server wiring only; never ship it to clients.

Authentication: Project credentials(customerId:customerSecret 's Base64)

Request body

FieldTypeRequiredDescription
roleenum(admin | writer | reader)default "admin"
lifespaninteger>= 0
json
{
  "role": "admin",
  "lifespan": 1
}

Response

Status codesDescription / schema
201Minted project token — SdkToken
400Invalid parameter — Error
401Missing or invalid project credentials / room token — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/v1/whiteboard/tokens/teams" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H "Content-Type: application/json" \
  -d '{"role":"admin","lifespan":1}'

Schemas used by this group

Error — object{ code, message, reason, sdkCode, details }
FieldTypeRequiredDescription
codeenum(whiteboard_room_not_found | whiteboard_scene_not_found | whiteboard_stroke_not_found | whiteboard_room_banned | whiteboard_room_closed | whiteboard_token_role_forbidden | whiteboard_token_room_mismatch | whiteboard_invalid_scene_path | whiteboard_invalid_operation | whiteboard_undo_empty | whiteboard_redo_empty | whiteboard_version_conflict | invalid_parameter | invalid_token | token_expired | missing_authorization | unauthorized | invalid_credentials | rate_limited | internal_error)isStable machine code. Whiteboard codes: whiteboard_room_not_found, whiteboard_scene_not_found, whiteboard_stroke_not_found, whiteboard_room_banned, whiteboard_room_closed, whiteboard_token_role_forbidden, whiteboard_token_room_mismatch, whiteboard_invalid_scene_path, whiteboard_invalid_operation, whiteboard_undo_empty, whiteboard_redo_empty, whiteboard_version_conflict.
messagestringis
reasonstring
sdkCodeinteger
detailsobject
Image — object
FieldTypeRequiredDescription
idstringis
scenePathstringis
srcstringis
widthnumberis>= 1
heightnumberis>= 1
xnumber
ynumber
lockedboolean
memberIdstring
createdAtstringformat date-time
Operation — object
FieldTypeRequiredDescription
seqintegeris>= 1
typeenum(scene.add | scene.switch | scene.clear | stroke.append | stroke.erase | stroke.undo | stroke.redo | image.insert | viewport.set | room.ban | room.close)is
memberIdstringis
scenePathstring
strokeIdstring
roomVersioninteger
payloadobject
createdAtstringisformat date-time
Point — object{ x, y }
FieldTypeRequiredDescription
xnumberisWorld-coordinate X in whiteboard units.
ynumberisWorld-coordinate Y in whiteboard units.
Replay — object{ roomUUID, duration, from, to, frames }
FieldTypeRequiredDescription
roomUUIDstringis
durationintegerisTimeline duration in milliseconds.
fromstringformat date-time
tostringformat date-time
framesarray<object{ offset, operation }>is
Room — object
FieldTypeRequiredDescription
uuidstringis
teamUUIDstringisOwning account id (Agora teamUUID).
appUUIDstringisOwning project App ID (Agora appUUID).
isRecordbooleanis
isBanbooleanis
phaseenum(active | banned | closed)is
limitintegeris>= 0
versionintegeris>= 0
createdAtstringisformat date-time
updatedAtstringformat date-time
closedAtstringformat date-time
RoomState — object
FieldTypeRequiredDescription
roomobjectis
currentScenePathstringis
viewportobject{ x, y, width, height, scale, updatedAt }isCamera viewport in world coordinates; width/height are the visible world size.
scenesarray<object>is
memberStatesobjectis
canUndoStepsintegeris
canRedoStepsintegeris
RoomToken — object{ token, role, uuid, lifespan, expireAt }
FieldTypeRequiredDescription
tokenstringisNETLESSROOM_* token for the token header.
roleenum(admin | writer | reader)is
uuidstringis
lifespanintegerisRequested lifespan in milliseconds; 0 means no expiry.
expireAtstringisformat date-time
Scene — object
FieldTypeRequiredDescription
pathstringisScene path including directory, for example /test/page1.
namestringis
pptobject{ src, width, height }
strokeCountinteger
imageCountinteger
createdAtstringformat date-time
updatedAtstringformat date-time
ScenePpt — object{ src, width, height }
FieldTypeRequiredDescription
srcstringBackground image URL or data URI.
widthnumber
heightnumber
SdkToken — object{ token, role, appUUID, lifespan, expireAt }
FieldTypeRequiredDescription
tokenstringisNETLESSSDK_* project-scoped token.
roleenum(admin | writer | reader)is
appUUIDstringis
lifespanintegeris
expireAtstringisformat date-time
Snapshot — object
FieldTypeRequiredDescription
roomUUIDstringis
appUUIDstringis
roomVersionintegeris
exportedAtstringisformat date-time
currentScenePathstring
viewportobject{ x, y, width, height, scale, updatedAt }Camera viewport in world coordinates; width/height are the visible world size.
scenesarray<object{ path, name, ppt, strokes, images }>is
operationsarray<object>
Stroke — object
FieldTypeRequiredDescription
idstringis
scenePathstringis
applianceenum(pencil | pencilEraser | eraser | rectangle | ellipse | shape | selector | hand | clicker | laserPointer)is
colorstringpattern ^#[0-9a-fA-F]{6}$
widthnumber1..64
pointsarray<object{ x, y }>isup to 4096 items
memberIdstringis
seqinteger>= 1
undoneboolean
createdAtstringformat date-time
Viewport — object{ x, y, width, height, scale, updatedAt }
FieldTypeRequiredDescription
xnumberis
ynumberis
widthnumberis>= 1
heightnumberis>= 1
scalenumberis0.01..100
updatedAtstringformat date-time

Generated by the documentation build pipeline · 2026-10-31 01:24:02 UTC · Documentation center v1.1.0.

Content follows the public API definitions.

ni-meet is a self-hosted RTC PaaS with a LiveKit-based media plane (Apache-2.0) and an Agora-compatible API.