Meet API Docs Dashboard
On this page

API Errors

One error shape everywhere, with a code you can branch on.

Every error has the same body and every answer, good or bad, carries a Request-Id header. Quote it when you ask for help.

json
{ "error": { "code": "invalid_parameter", "message": "properties.max_participants must be between 1 and 200", "param": "properties.max_participants" } }

Branch on code, never on message. param is present when one field is at fault.

Status Code Meaning and what to do
400 invalid_json The body is not JSON.
400 invalid_parameter A value is wrong. param says which.
400 unknown_parameter A field Meet does not know. Remove it.
401 invalid_api_key Missing, wrong or malformed key.
401 revoked_api_key The key was revoked. Make a new one.
403 livemode_not_allowed A live key on a project without live mode.
404 room_not_found No such room in this project and mode. Another project's room looks the same.
404 session_not_found No such session.
404 participant_not_found Nobody in the room matches that id.
405 method_not_allowed The route does not take that method.
409 room_exists The room name is taken (names are unique across Meet).
409 idempotency_key_reused The same Idempotency-Key with a different body.
409 room_not_live A live control call for a room nobody is in.
409 recording_not_ready The recording is still being made. Try again soon.
409 recording_in_progress You cannot delete a recording that is still recording or processing.
429 rate_limited Too many requests. Wait Retry-After seconds.
503 engine_unavailable The call engine did not pick up a live control command within 5 seconds. Retry.
504 command_timeout The command ran too long. Check the room's state, then retry.

Webhook endpoints can also answer 400 bad_callback_url when an address is not public https.

Errors inside a call#

The call page itself refuses a room with its own codes: room_full, room_expired, room_not_started, room_closed, room_locked, and server_restarting while Meet updates a server (people already in come back by themselves). The embed SDK reports them as an error event.

In the SDKs#

The Node and Python SDKs raise a MeetError with code, status, requestId, param and retryAfter. A network failure raises MeetConnectionError.

js
try {
  await meet.rooms.create({ name: 'order-1042' });
} catch (err) {
  if (err.code === 'room_exists') { /* pick another name */ }
  else throw err;
}