[{"data":1,"prerenderedAt":7},["ShallowReactive",2],{"docs-entities\u002Fcalendar-events\u002Fmeeting-status-set":3,"docs-tabs-entities\u002Fcalendar-events\u002Fmeeting-status-set":6},{"content":4,"lastmod":5},"## Change meeting participation status\n\n`PUT \u002Fv1\u002Fcalendar-events\u002F:id\u002Fmeeting-status`\n\nAccepts or declines an invitation to a calendar meeting, or withdraws the response to it. The status changes only for the employee the request runs as.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|----------|-----|:-----:|----------|\n| `id` (path) | number | yes | Meeting ID. Either the event ID in the organizer's calendar or the ID of the meeting copy in an invitee's calendar works — the copy's `parentId` field points to the organizer's event. List: [`GET \u002Fv1\u002Fcalendar-events`](\u002Fdocs\u002Fentities\u002Fcalendar-events\u002Flist) |\n\n## Request fields (body)\n\n| Field | Type | Required | Description |\n|------|-----|:-----:|----------|\n| `status` | string | yes | New status: `accepted` — accept the invitation, `declined` — decline it, `invited` — withdraw the response. Any other value, including `host`, `DECLINED`, and the letters `Y`, `N`, `Q`, returns `400 INVALID_PARAMS` |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl -X PUT \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fcalendar-events\u002F7773\u002Fmeeting-status\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"status\": \"declined\"}'\n```\n\n### curl — OAuth application\n\n```bash\ncurl -X PUT \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fcalendar-events\u002F7773\u002Fmeeting-status\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"status\": \"declined\"}'\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fcalendar-events\u002F7773\u002Fmeeting-status', {\n  method: 'PUT',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    status: 'declined',\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('Participation status:', data.status)\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fcalendar-events\u002F7773\u002Fmeeting-status', {\n  method: 'PUT',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    status: 'declined',\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|----------|\n| `success` | boolean | Always `true` on success |\n| `data.status` | string | The status read back after the write: `accepted`, `declined`, or `invited` |\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"status\": \"declined\"\n  }\n}\n```\n\n## Error response example\n\n422 — the meeting organizer tries to change their own status:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ERROR\",\n    \"message\": \"Bitrix24 did not persist meeting status\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|----------|\n| 400 | `INVALID_PARAMS` | `id must be a positive safe integer` — `id` is not a positive integer |\n| 400 | `INVALID_PARAMS` | `status must be accepted, declined or invited` — `status` is missing or not in the list |\n| 400 | `FST_ERR_CTP_EMPTY_JSON_BODY` | The `Content-Type: application\u002Fjson` header is sent, but the request body is empty |\n| 404 | `ENTITY_NOT_FOUND` | `Calendar record not found` — no event with this `id` exists |\n| 422 | `BITRIX_ERROR` | `Bitrix24 did not persist meeting status` — the status stayed unchanged after the write. The meeting organizer gets this response: their `host` status cannot be changed |\n| 422 | `BITRIX_ERROR` | `Bitrix24 did not return a participation status` — the employee was not invited to this meeting. The status does not change |\n| 422 | `BITRIX_ERROR` | `Bitrix24 did not confirm meeting status` — Bitrix24 did not confirm the write |\n| 422 | `BITRIX_ERROR` | Bitrix24 rejected the request; the error text is in `message`. This is the response for an event that is not a meeting: `isMeeting` is `false` |\n| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is in read-only mode. `error.details` contains the key mode and the URL of the page where the mode is switched |\n| 403 | `BITRIX_ACCESS_DENIED` | Bitrix24 denied the employee access due to insufficient permissions |\n| 403 | `SCOPE_DENIED` | The API key does not have the `calendar` scope |\n| 401 | `MISSING_API_KEY` | The `X-Api-Key` header is missing |\n| 401 | `TOKEN_MISSING` | The API key has no configured tokens |\n| 429 | `RATE_LIMITED` | Bitrix24 rejected the call under its request rate limit for the portal |\n| 502 | `BITRIX_UNAVAILABLE` | Bitrix24 is unavailable or returned a response of an unexpected shape |\n| 503 | `BITRIX_TIMEOUT` | Bitrix24 did not respond in time |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## Known specifics\n\n- **Retrying is safe.** Writing the same status again returns `200` with the same value, so the request can be retried after a network failure or a `503`.\n- **The organizer sees the response.** After the write, the employee's status changes in the event's `attendeeList` field — [`GET \u002Fv1\u002Fcalendar-events\u002F:id`](\u002Fdocs\u002Fentities\u002Fcalendar-events\u002Fget): `Y` — accepted, `N` — declined, `Q` — has not responded.\n\n## See also\n\n- [Meeting RSVP](\u002Fdocs\u002Fentities\u002Fcalendar-events\u002Fmeeting-status)\n- [Get meeting participation status](\u002Fdocs\u002Fentities\u002Fcalendar-events\u002Fmeeting-status-list)\n- [Get event](\u002Fdocs\u002Fentities\u002Fcalendar-events\u002Fget)\n- [List events](\u002Fdocs\u002Fentities\u002Fcalendar-events\u002Flist)\n","2026-10-23",{},1794739321755]