요청 제한

개요

토큰이 Developer Portal, OAuth 권한 부여, 또는 Frame.io 자체 애플리케이션을 제공하는 Accounts 백엔드 중 어느 곳을 통해 배포되었든 간에, Frame.io에 대한 모든 API 호출에는 요청 제한이 적용됩니다.요청 제한은 (사용된 토큰이나 인증 방식에 관계없이) 개별 사용자의 모든 API 요청에 적용되며, 점진적으로 소진 및 보충되고, Frame.io API에 전송된 모든 요청의 응답 헤더에 반영됩니다. 각 엔드포인트는 고유한 제한을 가지도록 구성되며, 최저 분당 10회 요청에서 최고 초당 100회 요청까지 다양합니다. 특정 엔드포인트에 대한 요청 제한을 초과한 요청은 응답으로 429 HTTP 오류를 받게 됩니다.

소진 및 보충

Frame.io API는 점진적 요청 제한을 위해 누수 버킷 전략을 사용하며, 이 방식에서는 할당된 시간 내에 제한이 점진적으로 갱신됩니다. 즉, 특정 리소스에 대해 제한이 갱신되는 엄격한 컷오프 개념은 없습니다(즉, “고정” 및 “슬라이딩 윈도우” 적용 전략). 대신 남은 제한 횟수는 리소스의 제한 및 시간 창에 비례하는 속도로 지속해서 갱신됩니다.

지수 백오프

요청 제한 관리를 위해 저희가 권장하는 전략은 일반적으로 “지수 백오프”라고 합니다.

요약하자면:

  • 429를 수신하면 일정 시간(일반적으로 1초) 동안 일시 중지합니다.
  • 또다시 429를 수신하면 정상 기능이 재개될 때까지 대기 시간을 지수적으로 늘립니다.

제목

API 요청에 대한 응답에는 발신 요청을 제한하는 데 활용해야 하는 다음 세 가지 헤더가 항상 포함됩니다.

머리글
x-ratelimit-limit이 리소스 경로에 대한 요청 제한으로, 요청 수로 측정됩니다.
x-ratelimit-remaining현재 시간 범위에 남은 요청 수입니다.
x-ratelimit-window이 리소스 경로의 제한에 대한 시간 창으로, 밀리초(ms) 단위로 측정됩니다.

예시

다음 예시는 프로젝트 루트, 폴더, 또는 버전 스택의 하위 에셋을 가져오기 위한 GET v2/assets/:id/children에 대한 응답에서 발췌한 것입니다. 해당 경로의 제한은 60,000ms(1분)당 40회 요청이며, 요청을 한 번 실행한 후 39회의 요청이 남아 있습니다.

x-ratelimit-limit → 40
x-ratelimit-remaining → 39
x-ratelimit-window → 60000

세부 사항

Frame.io API의 리소스 경로에 따라 요청 제한은 크게 다릅니다. 아래는 가독성을 위해 리소스와 작업(예: PUT /assets/:id 대신 “에셋 — 업데이트”)으로 표현된 일부 세부 정보입니다.

일반적인 규칙으로, 새 데이터를 생성하는 리소스 경로는 분당 100회 호출 이하로 제한되며, 에셋 목록을 가져오는 리소스 경로는 분당 200회 호출로 제한됩니다.

리소스작업제한(요청 수)제한 시간(ms)
에셋생성51,000
에셋업데이트10
에셋읽기51,000
코멘트
프레젠테이션
프로젝트
검토 링크

팀 멤버
생성10060,000
검색읽기20060,000