사용 제한은 앱 또는 사용자가 특정 기간 동안 이용할 수 있는 API 호출 횟수입니다. 이 제한을 초과하거나 CPU 또는 전체 시간 제한을 초과하면 해당 앱이나 사용자가 제한될 수 있습니다. 제한된 사용자나 앱이 보낸 API 요청은 실패합니다.
모든 API 요청에 사용 제한이 적용됩니다. 그래프 API 및 Instagram 기본 디스플레이 API 요청에는 플랫폼 사용 제한이 적용되고, 마케팅 API와 Instagram 플랫폼 요청에는 비즈니스 사용 사례(BUC) 사용 제한이 적용됩니다.
페이지 API 요청의 경우 요청에 사용된 토큰에 따라 플랫폼 또는 BUC 사용 제한이 적용됩니다. 즉 앱 또는 사용자 액세스 토큰을 사용한 요청은 플랫폼 사용 제한이 적용되고, 시스템 사용자 또는 페이지 액세스 토큰을 사용한 요청은 비즈니스 사용 사례 사용 제한이 적용됩니다.
실시간 사용 제한 사용 통계가 헤더에 설명되며, 헤더는 어느 엔드포인트에 충분히 호출을 보내면 대부분의 API 응답에 포함됩니다. 플랫폼 사용 제한 사용 통계는 앱 대시보드에도 표시됩니다. 사용 제한에 도달하면 앱이 보내는 이후의 모든 요청이 실패하고 호출 수가 제한 미만으로 떨어질 정도로 시간이 충분히 결과할 때까지 API가 오류 코드를 반환합니다.
한 가지 요청에 플랫폼 및 사용 사례 사용 제한이 둘 다 적용되는 경우 BUC 사용 제한이 적용됩니다.
플랫폼 사용 제한은 요청에 사용된 토큰 유형에 따라 각 앱 또는 사용자 수준에서 추적됩니다.
앱 액세스 토큰을 사용한 그래프 API 요청은 해당 앱의 사용 제한에 반영됩니다. 앱의 호출 수는 한 시간 동안 연속해서 해당 앱이 보낼 수 있는 호출 수를 의미합니다. 이것을 계산하는 방법은 다음과 같습니다.
Calls within one hour = 200 * Number of Users
사용자 수는 앱이 보유한 고유 일일 액티브 사용자 수를 기준으로 합니다. 일일 사용량이 적은 기간이 있는 경우(예를 들어 앱 활동량이 주말에는 많지만 평일에는 적은 경우) 앱의 사용자 수를 계산할 때 주간 및 월간 액티브 사용자를 사용합니다. 일일 참여가 높은 앱은 실제 앱 설치 수와 관계없이 일일 참여가 낮은 앱보다 높은 사용 제한이 적용됩니다.
이것은 사용자 1인당 제한이 아니라 앱이 보내는 호출에 적용되는 제한입니다. 모든 개인 사용자는 앱을 사용하여 시간당 200회 이상의 호출을 보낼 수 있으나 앱에서 보내는 호출의 총합이 해당 앱의 최댓값을 초과하지 않아야 합니다. 예를 들어 앱의 사용자가 100명이면 앱에서 시간당 20,000회의 호출을 보낼 수 있습니다. 하지만 참여가 가장 활발한 상위 10명의 사용자는 해당 호출 중 19,000회를 사용할 수 있습니다.
사용자 액세스 토큰을 사용한 그래프 API 요청은 사용자의 호출 수에 반영됩니다. 사용자의 호출 수는 한 사용자가 한 시간 동안 보낼 수 있는 호출 수를 의미합니다. 개인정보 보호 문제로 인해 사용자의 실제 호출 수 값은 공개하지 않습니다.
사용자의 호출 수는 여러 앱에 분산될 수 있습니다. 예를 들어 사용자 한 명이 App1에서 X회, App2에서 Y회의 호출을 보낼 수 있습니다. X+Y 값이 해당 사용자의 호출 수를 초과하면 그 사용자는 사용이 제한됩니다. 그렇다고 앱에 문제가 있다는 뜻은 아닙니다. 사용자가 여러 개의 앱을 사용하고 있거나 API를 잘못 사용하고 있다는 뜻일 수 있습니다.
앱에서 충분히 요청을 수신한 엔드포인트는 응답에 X-App-Usage
또는 X-Ad-Account-Usage
(v3.3 이전 광고 API 호출의 경우) HTTP 헤더를 포함합니다. 이 헤더에 JSON 형식의 문자열을 포함하여 현재 앱 사용 제한 사용량을 표시합니다.
키 | 값 설명 |
---|---|
| 앱이 한 시간 동안 보낸 호출의 비율을 나타내는 정수 |
| 쿼리 처리에 할당된 CPU 시간 비율을 나타내는 정수 |
| 쿼리 처리에 할당된 전체 시간의 비율을 나타내는 정수 |
키 | 값 설명 |
---|---|
| 사용 제한에 도달하기 전에 이 광고 계정에 대해 발생한 호출 비율 |
| 현재 사용 제한을 0으로 재설정하는 데 걸리는 시간(초) |
| 계층(Tier)은 앱에서 마케팅 API에 액세스할 수 있도록 합니다. 기본적으로 앱은 |
요청을 처리하는 데 소요되는 CPU 시간. total_cputime
이 100에 도달하면 호출이 제한될 수 있습니다.
요청을 처리하는 데 소요되는 시간. total_time
이 100에 도달하면 호출이 제한될 수 있습니다.
x-app-usage: { "call_count": 28, //Percentage of calls made "total_time": 25, //Percentage of total time "total_cputime": 25 //Percentage of total CPU time }
x-ad-account-usage: { "acc_id_util_pct": 9.67, //Percentage of calls made for this ad account. "reset_time_duration": 100, //Time duration (in seconds) it takes to reset the current rate limit score. "ads_api_access_tier": 'standard_access' //Tiers allows your app to access the Marketing API. standard_access enables lower rate limiting. }
앱 대시보드는 사용이 제한된 앱 사용자 수, 앱의 현재 앱 사용 제한 사용량 비율, 최근 7일간의 평균 활동량을 표시합니다. 앱 사용 제한 카드에서 세부 정보 보기를 클릭하고 그래프에 있는 점에 커서를 가져가면 특정 시점의 사용량에 대한 자세한 정보를 확인할 수 있습니다. 사용량은 호출량에 따라 달라지기 때문에 이 그래프는 7일 전체가 표시되지 않을 수 있습니다. 호출량이 많은 앱은 더 많은 날짜가 표시됩니다.
앱이나 사용자가 사용 제한에 도달하면 해당 앱이나 사용자가 보낸 요청은 실패하고 API가 오류 코드로 응답합니다.
오류 코드 | 설명 |
---|---|
| 요청에 토큰을 사용한 앱이 사용 제한에 도달한 경우 |
| 요청에 토큰을 사용한 사용자가 사용 제한에 도달한 경우 |
| 광고 API v3.3 이하 요청에서 사용한 토큰이 사용 제한에 도달한 경우 |
| 페이지 API 요청에서 토큰을 사용한 사용자 또는 앱이 사용 제한에 도달한 경우 |
| 맞춤 사용 제한에 도달한 경우. 이 문제를 해결하기 위해 도움을 받으려면 호출하는 특정 API의 지원 문서에서 적용 가능한 맞춤 사용 제한을 참조하세요. |
| 앱의 API 요청량에서 일관되지 못한 동작을 발견한 경우. 최근 API 요청 수에 영향을 미치는 변경 사항을 적용했다면 이런 오류가 나타날 수 있습니다. |
{ "error": { "message": "(#32) Page request limit reached", "type": "OAuthException", "code": 32, "fbtrace_id": "Fz54k3GZrio" } }
오류 코드 | 설명 |
---|---|
| 쿼리의 제한 여부. 값: |
| 첫 번째 제한 요소
|
| 두 번째 제한 요소
|
X-App-Usage
HTTP 헤더에서 앱이 얼마나 제한에 가까워졌는지, 제한에 도달한 경우 언제 호출을 다시 보낼 수 있는지 확인하세요.시스템 또는 페이지 액세스 토큰으로 요청한 모든 마케팅 API 요청과 페이지 API 요청에는 비즈니스 사용 사례(BUC) 사용 제한이 적용되며, 쿼리하는 엔드포인트에 좌우됩니다.
마케팅 API의 경우 동일한 비즈니스 사용 사례에 걸쳐 사용 제한이 광고 계정에 적용됩니다. 예를 들어 광고 관리 비즈니스 사용 사례를 사용하는 모든 엔드포인트는 동일한 광고 계정 내에서 전체 할당량을 공유합니다. 특정 엔드포인트가 대량의 API 요청을 보내서 제한이 적용될 경우, 동일한 비즈니스 사용 사례로 구성된 다른 엔드포인트에도 사용 제한 오류가 적용됩니다. 할당량은 앱의 마케팅 API 액세스 등급에 따라 달라집니다. 표준 액세스 마케팅 API 계층은 개발 액세스 마케팅 API 계층보다 할당량이 더 많습니다. 기본적으로 새 앱은 개발 계층에 있어야 합니다. 더 높은 사용 제한 할당량으로 업그레이드해야 할 경우 앱 검수에서 광고 관리 표준 액세스의 고급 액세스로 업그레이드하세요.
앱에서 광고 인사이트 API로 보낸 요청은 호출 횟수, 총 CPU 시간, 총 시간 등과 같은 앱 사용 제한 지표에 반영됩니다. 앱의 호출 수는 앱이 1시간 동안 보낼 수 있는 호출 횟수이며, 계산 방법은 다음과 같습니다.
광고 관리 표준 액세스 기능에 대한 표준 액세스 권한이 있는 앱:
Calls within one hour = 600 + 400 * Number of Active ads - 0.001 * User Errors
광고 관리 표준 액세스 기능에 대한 고급 액세스 권한이 있는 앱:
Calls within one hour = 190000 + 400 * Number of Active ads - 0.001 * User Errors
활성 광고 수는 현재 광고 계정당 게재되는 광고 수입니다. 사용자 오류는 API를 호출할 때 수신한 오류 수입니다. 사용 제한을 높이려면 광고 관리 표준 액세스 기능을 신청하세요.
사용 제한은 1시간 동안의 총 CPU 시간과 총 실제 시간에 따라 달라질 수도 있습니다. 자세한 내용은 HTTP X-Business-Use-Case
헤더 total_cputime
및 total_time
을 참조하세요.
또한 사용 제한 오류가 발생할 경우 X-Business-Use-Case
헤더의 estimated_time_to_regain_access
에서 예상 차단 시간을 참조하세요.
앱에서 광고 관리 API로 보낸 요청은 호출 횟수, 총 CPU 시간, 총 시간 등과 같은 앱 사용 제한 지표에 반영됩니다. 앱의 호출 수는 앱이 1시간 동안 보낼 수 있는 호출 횟수이며, 계산 방법은 다음과 같습니다.
광고 관리 표준 액세스 기능에 대한 표준 액세스 권한이 있는 앱:
Calls within one hour = 300 + 40 * Number of Active ads
광고 관리 표준 액세스 기능에 대한 고급 액세스 권한이 있는 앱:
Calls within one hour = 100000 + 40 * Number of Active ads
활성 광고 수는 각 광고 계정의 광고 수입니다.
사용 제한은 1시간 동안의 총 CPU 시간과 총 실제 시간에 따라 달라질 수도 있습니다. 자세한 내용은 HTTP X-Business-Use-Case
헤더 total_cputime
및 total_time
을 참조하세요.
또한 사용 제한 오류가 발생할 경우 X-Business-Use-Case
헤더의 estimated_time_to_regain_access
에서 예상 차단 시간을 참조하세요.
앱에서 보낸 요청은 각 카탈로그 ID당 1시간 동안 앱이 보낼 수 있는 호출 횟수, 총 CPU 시간, 총 시간 등의 사용 제한 지표에 반영됩니다.
Calls within one hour = 200 + 200 * log2(unique users)
고유 사용자는 최근 28일 동안 (모든 카탈로그에서) 인텐트가 있는 비즈니스의 고유 사용자 수를 말합니다. 카탈로그에서 제품을 보는 사용자가 늘어날수록 호출 할당량이 더 많이 할당됩니다.
호출 유형 | 엔드포인트 |
---|---|
POST | /{catalog_id}/items_batch |
POST | /{catalog_id}/localized_items_batch |
POST | /{catalog_id}/batch |
앱에서 보낸 요청은 앱이 각 카탈로그 ID에 대해 1시간 동안 보낼 수 있는 호출 횟수에 반영되며 계산 방법은 다음과 같습니다.
Calls within one hour = 20,000 + 20,000 * log2(unique users)
고유 사용자는 최근 28일 동안 (모든 카탈로그에서) 인텐트가 있는 비즈니스의 고유 사용자 수를 말합니다. 카탈로그에서 제품을 보는 사용자가 늘어날수록 호출 할당량이 더 많이 할당됩니다.
이 공식은 다양한 카탈로그 엔드포인트에 적용됩니다.
현재 사용량을 가져오는 방법에 대한 자세한 내용은 헤더를 참조하세요.
사용 제한은 1시간 동안의 총 CPU 시간과 총 실제 시간에 따라 달라질 수도 있습니다. 자세한 내용은 HTTP X-Business-Use-Case
헤더 total_cputime
및 total_time
을 참조하세요.
또한 사용 제한 오류가 발생할 경우 X-Business-Use-Case
헤더의 estimated_time_to_regain_access
에서 예상 차단 시간을 참조하세요.
앱에서 맞춤 타겟 API로 보낸 요청은 호출 횟수, 총 CPU 시간, 총 시간 등과 같은 앱 사용 제한 지표에 반영됩니다. 앱의 호출 수는 앱이 1시간 동안 보낼 수 있는 호출 횟수이며, 계산 방법은 다음과 같습니다(단, 700,000회를 초과할 수 없음).
광고 관리 표준 액세스 기능에 대한 표준 액세스 권한이 있는 앱:
Calls within one hour = 5000 + 40 * Number of Active Custom Audiences
광고 관리 표준 액세스 기능에 대한 고급 액세스 권한이 있는 앱:
Calls within one hour = 190000 + 40 * Number of Active Custom Audiences
활성 맞춤 타겟 수는 각 광고 계정의 활성 맞춤 타겟 수입니다.
사용 제한은 1시간 동안의 총 CPU 시간과 총 실제 시간에 따라 달라질 수도 있습니다. 자세한 내용은 HTTP X-Business-Use-Case
헤더 total_cputime
및 total_time
을 참조하세요.
또한 사용 제한 오류가 발생할 경우 X-Business-Use-Case
헤더의 estimated_time_to_regain_access
에서 예상 차단 시간을 참조하세요.
Calls to the Instagram Platform endpoints, excluding messaging, are counted against the calling app's call count. An app's call count is unique for each app and app user pair, and is the number of calls the app has made in a rolling 24 hour window. It is calculated as follows:
Calls within 24 hours = 4800 * Number of Impressions
The Number of Impressions is the number of times any content from the app user's Instagram professional account has entered a person's screen within the last 24 hours.
Calls to the Instagram messaging endpoints are counted against the number of calls your app can make per Instagram professional account and the API used.
앱이 잠재 고객 확보 API로 보낸 요청은 해당 앱의 호출 수에 반영됩니다. 앱의 호출 수는 앱이 24시간 동안 보낼 수 있는 호출 횟수이며, 계산 방법은 다음과 같습니다.
Calls within 24 hours = 4800 * Leads Generated
확보된 잠재 고객 수는 이 광고 계정이 최근 90일 동안 페이지당 확보한 잠재 고객 수입니다.
Messenger 플랫폼에 대한 사용 제한은 사용한 API에 따라 달라지며, 어떤 경우에는 메시지 내용에 따라 달라집니다.
앱에서 보낸 요청은 앱이 24시간 동안 보낼 수 있는 호출 횟수에 반영되며 계산 방법은 다음과 같습니다.
Calls within 24 hours = 200 * Number of Engaged Users
참여한 사용자 수는 비즈니스가 Messenger를 통해 메시지를 보낼 수 있는 사람 수입니다.
앱에서 보낸 요청은 앱이 각 Instagram 프로페셔널 계정과 사용한 API에 따라 보낼 수 있는 호출 횟수에 반영됩니다.
대화 API
보내기 API
비공개 답장 API
페이지 사용 제한은 사용한 토큰 유형에 따라 플랫폼 사용 제한 로직이나 BUC 사용 제한 로직을 사용할 수 있습니다. 페이지 또는 시스템 사용자 액세스 토큰을 사용한 모든 페이지 API 호출은 아래의 사용 제한 계산법을 사용합니다. 앱 또는 사용자 액세스 토큰을 사용한 호출에는 앱 또는 사용자 사용 제한이 적용됩니다.
앱이 페이지 액세스 토큰이나 시스템 사용자 액세스 토큰을 사용하여 페이지 API에 보낸 요청은 해당 앱의 호출 수에 반영됩니다. 앱의 호출 수는 앱이 24시간 동안 보낼 수 있는 호출 횟수이며, 계산 방법은 다음과 같습니다.
Calls within 24 hours = 4800 * Number of Engaged Users
참여 사용자 수는 24시간 기준으로 페이지에 참여한 사용자 수입니다.
앱이 사용자 액세스 토큰이나 앱 액세스 토큰을 사용하여 페이지 API에 보낸 요청은 플랫폼 사용 제한 로직을 따릅니다.
페이지 전체 공개 액세스 콘텐츠 기능을 사용할 때 사용 제한 문제를 방지하려면 시스템 사용자 액세스 토큰을 사용하는 것이 좋습니다.
앱이 커머스 엔드포인트로 보낸 요청은 앱의 호출 수에 반영됩니다. 앱의 호출 수는 한 시간 동안 연속해서 해당 앱이 보낼 수 있는 호출 수를 의미합니다. 이것을 계산하는 방법은 다음과 같습니다.
Calls within one hour = 200 + 40 * Number of Catalogs
카탈로그 수는 앱에서 관리하는 모든 커머스 계정의 카탈로그 수 합계입니다.
Calls within 24 hours = 4800 * Number of Impressions
720000 * number_of_impressions for total_cputime
2880000 * Number of Impressions for total_time
호출 유형 | 엔드포인트 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
호출 유형 | 엔드포인트 |
---|---|
|
|
|
|
|
|
|
|
BUC 로직을 사용하여 사용 제한이 적용되는 앱의 모든 API 응답에는 현재 앱 사용 제한 사용량을 나타내는 JSON 형식 문자열이 있는 X-Business-Use-Case-Usage
(v3.3 이하 광고 API 호출의 경우) HTTP 헤더가 포함됩니다. 이 헤더는 한 번의 호출에 최대 32개의 개체를 반환할 수 있습니다.
오류 코드 | 값 설명 |
---|---|
| API 호출을 보내는 토큰과 관련된 비즈니스의 ID |
| 앱이 한 시간 동안 보낸, 허용된 호출의 비율을 나타내는 정수 |
| 호출이 제한되지 않을 때까지 걸리는 시간(분 단위) |
| 쿼리 처리에 할당된 CPU 시간 비율을 나타내는 정수 |
| 쿼리 처리에 할당된 전체 시간의 비율을 나타내는 정수 |
| 적용되는 사용 제한의 유형. 값은 |
|
|
요청을 처리하는 데 소요되는 CPU 시간. total_cputime이 100에 도달하면 호출이 제한될 수 있습니다.
요청을 처리하는 데 소요되는 시간. total_time이 100에 도달하면 호출이 제한될 수 있습니다.
ads_insights
및 ads_management
유형에만 적용됩니다. 계층(Tier)은 앱에서 마케팅 API에 액세스할 수 있도록 합니다. 기본적으로 앱은 development_access
계층에 있습니다. Standard_access
는 더 낮은 사용 제한을 지원합니다. 사용 제한을 높이고 표준 계층으로 올라가려면 광고 관리 표준 액세스 기능에 대한 '고급 액세스 권한'을 신청할 수 있습니다.
x-business-use-case-usage: { "{business-object-id}": [ { "type": "{rate-limit-type}", //Type of BUC rate limit logic being applied. "call_count": 100, //Percentage of calls made. "total_cputime": 25, //Percentage of the total CPU time that has been used. "total_time": 25, //Percentage of the total time that has been used. "estimated_time_to_regain_access": 19, //Time in minutes to regain access. "ads_api_access_tier": "standard_access" //Tiers allows your app to access the Marketing API. standard_access enables lower rate limiting. } ], "66782684": [ { "type": "ads_management", "call_count": 95, "total_cputime": 20, "total_time": 20, "estimated_time_to_regain_access": 0, "ads_api_access_tier": "development_access" } ], "10153848260347724": [ { "type": "ads_insights", "call_count": 97, "total_cputime": 23, "total_time": 23, "estimated_time_to_regain_access": 0, "ads_api_access_tier": "development_access" } ], "10153848260347724": [ { "type": "pages", "call_count": 97, "total_cputime": 23, "total_time": 23, "estimated_time_to_regain_access": 0 } ], ... }
앱이 비즈니스 사용 사례 사용 제한에 도달하면 그 이후에 앱이 보내는 요청은 실패하고 API가 오류 코드로 응답합니다.
오류 코드 | BUC 사용 제한 유형 |
---|---|
| 광고 인사이트 |
| 광고 관리 |
| 맞춤 타겟 |
| |
| 잠재 고객 확보 |
| Messenger |
error code 32 | 사용자 액세스 토큰으로 보낸 페이지 호출 |
error code 80001 | 페이지 또는 시스템 사용자 액세스 토큰으로 보낸 페이지 호출 |
| 광고 인사이트를 제외한 V3.3 이하 광고 API |
| WhatsApp Business Management API |
| 카탈로그 배치 |
| 카탈로그 관리 |
{ "error": { "message": "(#80001) There have been too many calls to this Page account. Wait a bit and try again. For more info, please refer to https://developers.facebook.com/docs/graph-api/overview/rate-limiting.", "type": "OAuthException", "code": 80001, "fbtrace_id": "AmFGcW_3hwDB7qFbl_QdebZ" } }
X-Business-Use-Case-Usage
HTTP 헤더를 통해 광고 계정이 제한에 어느 정도 도달했는지, 언제 호출을 다시 시작할 수 있는지 확인하세요.모든 호출 수는 각각의 API 요청만이 아니라 사용 제한에 대해서도 카운트됩니다. 예를 들어 여러 ID를 지정한 API 호출을 한 번 보내더라도 각 ID는 하나의 API 호출로 계산됩니다.
다음 표는 이 개념을 나타냅니다.
요청 예시 | API 호출의 개수 |
---|---|
GET https://graph.facebook.com/photos?ids=5
| 3 |
| 3 |
가능하면 한 번의 API 요청에 여러 ID를 지정하는 것이 좋습니다. 이렇게 하면 API 응답의 성능이 개선됩니다.
데이터를 스크래핑하는 서비스를 빌드하는 경우에는 Facebook의 스크래핑 용어를 읽어보세요.