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.
{ "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.
try {
await meet.rooms.create({ name: 'order-1042' });
} catch (err) {
if (err.code === 'room_exists') { /* pick another name */ }
else throw err;
}