zoom-api

Zoom API

Zoom API는 Zoom의 화상 중심 통합 커뮤니케이션 플랫폼(비디오, 음성, 콘텐츠 공유, 채팅)을 활용해 앱과 연동할 수 있게 해 주는 공개 플랫폼이에요. Zoom App Marketplace에서 개발자를 위한 앱을 만들거나 기존 서비스에 Zoom 기능을 통합할 수 있어요. 2018년 출시 이후 지금까지 수만 명의 개발자들이 참여해 매달 수억 건의 보안 API 호출을 처리하고 있어요.

REST API를 통해 사용자 정보, 회의 보고서 등 Zoom의 리소스를 읽고 쓸 수 있고, 회의 시작, 사용자 관리, 보고서 확인 같은 인기 기능을 그대로 미러링할 수 있어요. 기본 기능은 HTTP 요청만으로 모두 사용할 수 있어요. 예를 들어 "한 번의 클릭으로 Zoom 회의에 참여할 수 있는 스케줄러 앱"을 만드는 데 딱 좋아요.

출처: 문서

본문

API 요청의 기본

Zoom API를 호출하려면 먼저 OAuth 2.0 또는 서버-대-서버(server-to-server) 인증으로 액세스 토큰을 받아야 해요. 얻은 토큰을 Authorization 헤더에 넣고 base URL https://api.zoom.us/v2/로 HTTP 요청을 보내요. 엔드포인트에 따라 GET, POST, PATCH, PUT, DELETE 메서드를 사용해요.

  • Base URL: https://api.zoom.us/v2/

간단한 cURL 예시:

curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    https://api.zoom.us/v2/users/me

인증 (Authentication)

모든 API 요청에는 액세스 토큰이 필요해요. 토큰은 OAuth 2.0 또는 서버-대-서버 OAuth 2.0으로 얻을 수 있어요.

  • OAuth 2.0: 인가 흐름(authorization flow)을 구현해 사용자 동의를 받고 인가 코드(authorization code)를 받은 뒤, 이 코드를 액세스 토큰으로 교환해요. 사용자 대신 작업해야 할 때 사용해요.
  • 서버-대-서버 OAuth 2.0: 앱 자격 증명(client id/secret)으로 직접 액세스 토큰을 요청해요. 사용자 상호작용 없이 서버 간 연동에 사용해요.

두 방식 모두 액세스 토큰은 1시간 동안 유효해요. OAuth는 refresh token으로, 서버-대-서버는 새 토큰을 요청해서 갱신하면 돼요.

OAuth 2.0 토큰 발급 예시:

curl -X POST https://zoom.us/oauth/token \
     -H "Authorization: Basic BASE64_ENCODED_CLIENT_ID_AND_SECRET" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=YOUR_REDIRECT_URI"

액세스 토큰 응답 예시:

{
    "access_token": "<JWT_TOKEN>",
    "token_type": "bearer",
    "refresh_token": "<JWT_TOKEN>",
    "expires_in": 3599,
    "scope": "user:read"
}

참고: 과거에는 JWT 앱 타입으로 토큰을 발급받았지만, 지금은 OAuth 2.0 계열(사용자 OAuth, 서버-대-서버 OAuth)을 표준 인증 방식으로 사용해요.

회의 / 웨비나 (Meetings / Webinars)

Zoom API의 핵심 기능 중 하나가 회의와 웨비나 관리예요. 회의 생성·조회·삭제, 참가자 목록 확인, 녹화 관리, 웨비나/이벤트 운영 등이 지원돼요. 대표 엔드포인트로는 다음이 있어요.

  • 회의(Meeting) 생성: POST /v2/users/{userId}/meetings
  • 회의 상세 조회: GET /v2/meetings/{meetingId}
  • 웨비나(Webinar) 생성: POST /v2/users/{userId}/webinars
  • 녹화 목록 조회: GET /v2/users/{userId}/recordings

회의 생성 요청 예시:

curl -X POST "https://api.zoom.us/v2/users/me/meetings" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "topic": "DataSketchers 주간 회의",
           "type": 2,
           "start_time": "2026-09-15T09:00:00Z",
           "duration": 60
         }'

미팅 봇 (Meeting Bots)

미팅 봇은 일반 사용자처럼 회의에 참여하는 참가자로 동작하면서 회의의 오디오/비디오 데이터에 접근해 녹음, 필사(transcription), AI 분석에 활용할 수 있는 방식이에요. 회의록 자동 요약, 녹화 도구, 세일즈 인텔리전스 등 다양한 앱에서 사용돼요.

  • Meeting SDK 기반 봇: 봇이 실제 참가자 목록에 보이는 참가자로 회의에 참여해요. Zoom Meeting SDK의 raw audio/video 데이터(오디오 PCM, 비디오 YUV420 프레임)를 구독해서 직접 처리하거나 저장할 수 있어요.
  • 클라우드 녹화 경로: 회의 종료 후 Zoom이 관리하는 MP4/M4A/필사 자산이 필요하다면 클라우드 녹화 설정 + recording.completed 웹훅 + 녹화물 다운로드 API 조합을 사용해요.

미팅 봇은 사용자 "대신(on behalf of)" 회의에 참여하기 때문에 사용자의 OBF(OnBehalf) 토큰이나 ZAK 토큰을 받아 Meeting SDK로 참여하는 흐름이에요.

이벤트 구독 (Webhooks)

이벤트가 발생하면 Zoom이 실시간 알림을 엔드포인트로 보내줘요. 앱에서 이벤트 구독을 설정하고, JSON 페이로드를 받을 수 있는 HTTPS 엔드포인트 URL을 지정해요. 예를 들어 사용자가 회의에 들어오거나 나갈 때 호스트에게 알림을 보내는 데 활용할 수 있어요.

  • 웹훅 진위를 검증하기 위해 엔드포인트는 200 또는 204 상태 코드로 응답해야 해요.
  • 회의 시작/종료, 참가자 입장/퇴장 같은 계정 이벤트를 구독할 수 있어요.

앱 유형 (Private / Beta / Published)

Marketplace 앱은 배포 방식에 따라 Private(비공개), Beta, Published(공개), Unlisted(비공개 등록) 로 나뉘어요.

  • Private 앱: 가장 제한적이에요. Marketplace에 공개되지 않고 앱 검토 과정도 거치지 않아요. 회사 내부 도구나 커넥터를 만들 때 적합해요. 개발자 계정의 사용자만 접근할 수 있고 인가 URL로 배포해요.
  • Beta 앱: 테스트용이에요. 외부 사용자와 제한된 인원·기간 동안 공유할 수 있어요. 공유하려면 Zoom의 승인을 받아야 해요.
  • Published 앱: 가장 개방적이에요. Marketplace에 공개되기 전에 엄격한 품질·보안 검토를 거쳐야 하고, 모든 Zoom 사용자가 검색할 수 있어요.
  • Unlisted 앱: 구독자 수 제한이 없고 Marketplace 검토는 필요하지만, Marketplace 목록에는 표시되지 않는 앱이에요.

더 알아보기 (Learn more)