POST
/api/public/v1/meeting-rooms

Create a meeting room

Opens a room. This provisions a real video room with the meeting provider **before** the record is written, so the id you get back is joinable straight away — and a provider failure means no room rather than a record pointing at nothing. Whoever the token acts as is added as an ACCEPTED attendee; everybody else starts PENDING. `allowAllEmployees` opens it to the whole company rather than just the attendee list.

Required scope

The access token must carry this scope. A token missing it gets 403 Forbidden. Grant them to an API client under Settings → Company → API, and to a teammate under Employee → Permissions.

meetings:write

Request Body

PropertyTypeDescription
namestring
descriptionstring
allowAllEmployeesbooleanOpen it to the whole company. Defaults to false.
isRecurringbooleanA standing room rather than a one-off.
attendeesarray`{ employeeId }` or `{ guestEmail, guestName }`. Everyone here starts PENDING.
POSTExample request
curl
curl -X POST "https://www.pxb.app/api/public/v1/meeting-rooms" \
  -H "Authorization: Bearer your_access_token" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weekly sync",
    "isRecurring": true,
    "attendees": [
      {
        "employeeId": "emp_44f1"
      }
    ]
  }'
200Example response
json
{
  "message": "Room created successfully",
  "content": {
    "room": {
      "id": "room_7a21",
      "name": "Weekly sync",
      "description": "Standing team catch-up.",
      "type": "STANDARD",
      "createdByEmployeeId": "emp_12ab",
      "allowAllEmployees": false,
      "isRecurring": true,
      "notes": "Agenda: billing export, hiring.",
      "lastActiveAt": "2026-08-29T15:00:00.000Z",
      "attendees": [
        {
          "employeeId": "emp_12ab",
          "guestEmail": null,
          "guestName": null,
          "status": "ACCEPTED"
        },
        {
          "employeeId": "emp_44f1",
          "guestEmail": null,
          "guestName": null,
          "status": "PENDING"
        }
      ],
      "createdAt": "2026-03-04T09:00:00.000Z",
      "updatedAt": "2026-08-29T15:00:00.000Z"
    }
  }
}

In the console

The same thing done by hand, for anyone comparing the API against the screen they already use.

Calendar
/calendar
  1. Open Calendar.
  2. Meet Now.
  3. Name it, then pick who can join.