Scheduler API returns 401 "Invalid license type" on Server-to-Server app despite active license and scopes

I’m trying to access the Scheduler API from a Server-to-Server OAuth app but all Scheduler endpoints return 401 “Invalid license type”.

Setup:

  • Server-to-Server OAuth app, Account-level
  • Zoom Scheduler license is ACTIVE on the account (visible in Account > Plans)
  • Zoom Scheduler is ENABLED in Account Settings > Scheduler
  • Added these scopes to the app (token returns all of them correctly):
    scheduler:read:list_schedule:admin
    scheduler:read:list_availability:admin
    scheduler:read:list_scheduled_events:admin
    scheduler:read:scheduled_event:admin
    scheduler:write:availability:admin
    scheduler:write:scheduled_event:admin

Problem:

  • GET /scheduler/schedules → 401 “Invalid license type”
  • GET /scheduler/availability → 401 “Invalid license type”
  • GET /scheduler/events → 401 “Invalid license type”

Control test (proves the token is valid):

  • GET /meetings/{meetingId} → 200 OK (Meeting scopes work fine)
  • An invalid route → 404 Route Not Found (so the Scheduler routes exist; it’s the license that blocks)

The error is not about scopes (that error message is different and I no longer get it). It’s specifically “Invalid license type”.

Question: what license type or configuration is required to access the Scheduler API from a Server-to-Server app? Is Scheduler API access restricted to certain plans, or does it require a specific user-level assignment or additional entitlement?