{"openapi":"3.1.0","info":{"title":"Zoom Dashboard (BYOK) API","version":"0.1.0","description":"Zoom Dashboard (BYOK) lets an AI assistant read your own Zoom Dashboard data through the Zoom Dashboard API with a key you supply (Zoom OAuth access token (Server-to-Server OAuth token, valid for one hour)). Read-only: 9 tools (get_daily_usage, get_cloud_recording_usage, get_plan_usage, list_dashboard_meetings, list_dashboard_webinars, get_client_satisfaction, get_crc_port_usage,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-zoom-dashboard.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-zoom-dashboard/docs"},"termsOfService":"https://connectorbay.com/byok-zoom-dashboard/terms"},"servers":[{"url":"https://byok-zoom-dashboard.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-zoom-dashboard/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_daily_usage":{"post":{"operationId":"get_daily_usage","summary":"Get the account's usage per day of a month: meetings held, participants, meeting minutes and new users. Needs report:rea","description":"Get the account's usage per day of a month: meetings held, participants, meeting minutes and new users. Needs report:read:admin. Use for \"How many Zoom meetings were held each day in March 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"year":{"anyOf":[{"maximum":2100,"minimum":2019,"type":"integer"},{"type":"null"}],"default":null,"description":"Year, for example 2026 (defaults to the current year).","title":"Year"},"month":{"anyOf":[{"maximum":12,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Month 1 to 12 (defaults to the current month).","title":"Month"}},"title":"get_daily_usageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_cloud_recording_usage":{"post":{"operationId":"get_cloud_recording_usage","summary":"Get daily cloud recording storage used (plan, free and total) over a date range of at most one month. Needs report:read:","description":"Get daily cloud recording storage used (plan, free and total) over a date range of at most one month. Needs report:read:admin. Use for \"How much Zoom cloud recording storage did we use this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start date as YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"End date as YYYY-MM-DD (the range is limited to one month).","maxLength":10,"title":"Date To","type":"string"}},"required":["date_from","date_to"],"title":"get_cloud_recording_usageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_plan_usage":{"post":{"operationId":"get_plan_usage","summary":"Get how many hosts are used per plan (base, large meeting, webinar, Zoom Rooms) and recording storage for an account (us","description":"Get how many hosts are used per plan (base, large meeting, webinar, Zoom Rooms) and recording storage for an account (use 'me' for your own). Master accounts only. Use for \"How many Zoom host licences are in use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Account id, or 'me' for the account of the token.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"get_plan_usageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_dashboard_meetings":{"post":{"operationId":"list_dashboard_meetings","summary":"List meetings in a date range (live now, past, or the latest instance of each) with topic, host name, department, times,","description":"List meetings in a date range (live now, past, or the latest instance of each) with topic, host name, department, times, duration, participant count and audio/video flags. Business plan or higher; needs dashboard_meetings:read:admin. Use for \"Which Zoom meetings ran last week and how many people joined\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start date as YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"End date as YYYY-MM-DD (the range is limited to one month).","maxLength":10,"title":"Date To","type":"string"},"type":{"anyOf":[{"enum":["past","pastOne","live"],"type":"string"},{"type":"null"}],"default":"live","description":"live (default), past, or pastOne (latest instance only).","title":"Type"},"page_size":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 300).","title":"Page Size"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the next_page_token of the previous answer (omit for the first page).","title":"Next Page Token"}},"required":["date_from","date_to"],"title":"list_dashboard_meetingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_dashboard_webinars":{"post":{"operationId":"list_dashboard_webinars","summary":"List webinars in a date range (live or past) with topic, host name, times, duration and attendee count. Business plan or","description":"List webinars in a date range (live or past) with topic, host name, times, duration and attendee count. Business plan or higher; needs dashboard_webinars:read:admin. Use for \"Which Zoom webinars ran last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start date as YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"End date as YYYY-MM-DD (the range is limited to one month).","maxLength":10,"title":"Date To","type":"string"},"type":{"anyOf":[{"enum":["past","live"],"type":"string"},{"type":"null"}],"default":"live","description":"live (default) or past.","title":"Type"},"page_size":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 300).","title":"Page Size"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the next_page_token of the previous answer (omit for the first page).","title":"Next Page Token"}},"required":["date_from","date_to"],"title":"list_dashboard_webinarsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_client_satisfaction":{"post":{"operationId":"get_client_satisfaction","summary":"Get daily meeting satisfaction counts (good, not good, none) and percentage over a date range. Needs dashboard_home:read","description":"Get daily meeting satisfaction counts (good, not good, none) and percentage over a date range. Needs dashboard_home:read:admin. Use for \"How satisfied were people with Zoom meetings this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Start date YYYY-MM-DD.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"End date YYYY-MM-DD.","title":"Date To"}},"title":"get_client_satisfactionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_crc_port_usage":{"post":{"operationId":"get_crc_port_usage","summary":"Get hourly Cloud Room Connector port usage (peak and total) per day over a date range. Needs dashboard_crc:read:admin. U","description":"Get hourly Cloud Room Connector port usage (peak and total) per day over a date range. Needs dashboard_crc:read:admin. Use for \"How many Zoom CRC ports did we use on March 2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start date as YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"End date as YYYY-MM-DD (the range is limited to one month).","maxLength":10,"title":"Date To","type":"string"}},"required":["date_from","date_to"],"title":"get_crc_port_usageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_dashboard_zoom_rooms":{"post":{"operationId":"list_dashboard_zoom_rooms","summary":"List Zoom Rooms with name, location, status, health, last meeting start and equipment (camera, microphone, speaker) stat","description":"List Zoom Rooms with name, location, status, health, last meeting start and equipment (camera, microphone, speaker) state. Device IPs and emails are not returned. Needs dashboard_zrs:read:admin. Use for \"Which Zoom Rooms are unhealthy right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 300).","title":"Page Size"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the next_page_token of the previous answer (omit for the first page).","title":"Next Page Token"}},"title":"list_dashboard_zoom_roomsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_zoom_rooms_with_issues":{"post":{"operationId":"get_zoom_rooms_with_issues","summary":"Get the top 25 Zoom Rooms with the most issues over a date range (room name and issue count). Needs dashboard_zrs:read:a","description":"Get the top 25 Zoom Rooms with the most issues over a date range (room name and issue count). Needs dashboard_zrs:read:admin. Use for \"Which Zoom Rooms had the most problems last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start date as YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"End date as YYYY-MM-DD (the range is limited to one month).","maxLength":10,"title":"Date To","type":"string"}},"required":["date_from","date_to"],"title":"get_zoom_rooms_with_issuesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}