POST /v2/scheduler/attendee always returns 400 "Failed json validation!"

API Endpoint(s) and/or Zoom API Event(s)

Description
Goal: create bookings programmatically via POST /v2/scheduler/attendee. Every call fails validation regardless of body, so I need the correct request body (or the missing field). It fails identically for a full body, a minimal required-only body, and an empty {}. The same schedule books fine from the public scheduling page, and the same token succeeds on single_use_link (201) — so the app can write to Scheduler; only this endpoint fails.

Error?

HTTP 400
{"error":{"code":400,"errors":[{"appCode":0,"domain":"global","message":"Failed json validation!","reason":"invalidArgument"}],"message":"Failed json validation!","reqId":"WEB_d0e8b8d95e3c5d0d5203178568b30fc9","status":"INVALID_ARGUMENT"}}

reqIds (UTC): WEB_d0e8b8d95e3c5d0d5203178568b30fc9 (2026-07-10T18:55:31Z), WEB_dc724b2ff4441421c25db44f30235eab (2026-07-10T18:55:32Z, empty {}).

How To Reproduce

  1. Request

URL:

POST https://api.zoom.us/v2/scheduler/attendee?user=demo-caseguard

Headers:

Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json

Body (minimal, required fields only — still fails):

{
  "schedule_id": "<schedule_id>",
  "duration": 60,
  "booker": { "email": "<email>", "first_name": "Test", "last_name": "User" },
  "location_configuration": { "kind": "zoomMeeting" }
}

Schedule context: schedule_type: multiple.

  1. Authentication / app type: Server-to-Server OAuth. Token scope scheduler:write:scheduled_event:admin is present.

  2. Errors / findings:

  • Same 400 "Failed json validation!" for full body, minimal body, and empty {}.
  • Malformed JSON returns a different error ("Invalid request body") — so the JSON parses fine; this is schema validation.
  • Omitting user returns "Invalid user"; any non-empty user proceeds to the error above.
  • No change across location_configuration.kind values or start_date_time formats.

Schedule: schedule_type: multiple, scheduling_url Zoom Scheduler .

Response (400):

{“error”:{“code”:400,“message”:“Failed json validation!”,“reason”:“invalidArgument”,“status”:“INVALID_ARGUMENT”}}

Fresh reqIds (UTC):

  • WEB_d0e8b8d95e3c5d0d5203178568b30fc9 — 2026-07-10T18:55:31Z (minimal body above)
  • WEB_dc724b2ff4441421c25db44f30235eab — 2026-07-10T18:55:32Z (empty {} body)

Already verified:

  • Scope scheduler:write:scheduled_event:admin present.
  • Malformed JSON gives a different error (“Invalid request body”), so JSON parses fine — this is schema validation.
  • Same token succeeds on POST /scheduler/schedules/single_use_link (201), so the app can write.
  • Omitting user → “Invalid user”; any non-empty user → the error above.

Questions:

  1. Is a required field missing from the body?
  2. Please share one known-good example request body for this endpoint.

Hi @Charan_245 , here’s request body example for this endpoint from our public workspace and your request body of all required fields looks correct. Can you confirm that the existing schedule you’re creating this attendee for satisfies the following?

The user slug identifier to filter available time slots for a specific host or team member. Format: t/ followed by the user identifier, for example t/x0ghart. Required if the schedule object contains a user field — pass the exact value from that field. Omit if the schedule has no user field.

Looking to evaluate if there should or shouldn’t be a user and if the issue is with the url parameter and/or the request body validation on our end.

Please also send the zm-tracking-id from the response headers of each scenario you’re testing, your account id and app client id to the private message I’m sending to you. Thank you!