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!

Hello @gianni.zoom, do you have any updates on this issue, the API is not working

Hello, I am facing the same problem. I tried different options for the user as Gianni said but, I get invalid user or failed json validation. Can you update us @gianni.zoom ?

Hi @antoniopg @Charan_245 I was out of office, but happy to assist and follow up on this shortly. Antonio, please check your private message.

@gianni.zoom We are also receiving the same invalid json error. We’ve tried the simplest body to avoid any issues. Here is the x-xm-trackingid

WEB_60684146be7bad3e11031cc466de4a54

Exact same issue as the original poster as we’re getting “Failed json validation!” as well.

@gianni.zoom I wanted to follow up on this and see if you had any more info? We noticed that if we’re an admin, we can book for ourselvese but not on behalf of others which is not what we would expect for a S2S app.

Just messaged you for a bit more info @Empowerly !

switched to

POST https://scheduler.zoom.us/zscheduler/v1/attendees?user=…

The public endpoint seems to work.
We can live with this until you have sorted it @gianni.zoom

Nah, that worked a handful of times and now it runs into nasty CAPTCHA problems.
So, yes @gianni.zoom this is a real blocker, keeping us from shipping an important update into production. Kinda not good, not good…

@gianni.zoom Do we have an update on this?
We have an ad and email campaign going leading people to a website that can’t take demo bookings.
If Zoom can’t fix this API endpoint, then I have to see how I can port everything to a different vendor.

Hi team,

I’m hitting a 400 "Failed json validation!" error on POST /v2/scheduler/attendee — happens with a full body, a minimal required-only body, and even an empty {}, so it doesn’t seem body-specific.

Key details:

  • Endpoint: POST /v2/scheduler/attendee?user=demo-caseguard
  • Auth: Server-to-Server OAuth, scope scheduler:write:scheduled_event:admin present
  • Same token works fine on POST /scheduler/schedules/single_use_link (201 success)
  • Malformed JSON gives a different error (“Invalid request body”), so JSON is parsing fine — this looks like a schema validation issue
  • Removing user gives “Invalid user”; any valid user value leads to the same 400 error

Minimal body I’m sending:

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

reqIds (UTC):

  • WEB_d0e8b8d95e3c5d0d5203178568b30fc9 (2026-07-10T18:55:31Z)
  • WEB_dc724b2ff4441421c25db44f30235eab (2026-07-10T18:55:32Z, empty body)

Questions:

  1. Is there a required field missing from my body?
  2. Could someone share a known-good example request for this endpoint?

Thanks in advance!

Hi @Charan_245 @Steven8 @Azad @Empowerly @antoniopg ,

We are investigating (ZSEE-211478) and will update you as soon as soon as more info becomes available for a workaround or definite fix. Thank you for your feedback and making us aware of this behavior!

Hello all, fix is set for this weekend, but will confirm next week (ZOOM-1366190).

Just retested - its not fixed @gianni.zoom

Retested 2026-08-24 against the documented POST /v2/scheduler/attendee example. Only schedule_id changed to sqx7k1btsopq6mf1ogkbp87950. S2S OAuth, scheduler:write:scheduled_event:admin. GET schedule returns user: null.

  1. Docs example, no user → 400 Invalid user
    WEB_c366bc68d7a501d977cbcb110562db56

  2. Required fields only, no user → 400 Invalid user
    WEB_c1381c3454e6676a8f1f777637a23198

  3. Docs example + ?user=t/steven-morell-4mknr7 → 400 Invalid user
    WEB_fa85a8f84fd06ed71964a9d08144632a

  4. Docs example + ?user=steven-morell-4mknr7 → 400 Failed json validation!
    WEB_9194485a0684960f5940af5e9f6a1345

Hi @Steven8 yes checking in with the team to see when the fix will be in effect on prod. Thanks for following up!

@gianni.zoom I wanted to follow up to see if it has been deployed to prod?

@Empowerly @Steven8 @Azad @antoniopg @Charan_245 the fixes were deployed to prod 3 days ago. Can you please confirm what you’re experiencing now?

It does work on my end. However, for this same endpoint the documentation states: “This endpoint creates a new booking, attendee, or event by specifying the schedule, start time, duration, booker information, and optional guests or custom field responses.” however the guests property does not work at all. Additionally I tried to run the PATCH endpoint and the attendees also does nothing for setting additional attendees for the meeting. So I am getting back 200 OK but the actual Zoom UI does not show additional attendees.

So meeting creation is fixed, but there is no way to set additional guests.

@Empowerly Ahh I see. I just followed up with the team to get the guest property fixed for POST and PATCH endpoints.