Лимиты
Читать 3 минуты
Общие правила взаимодействия с API
- Вы должны стараться минимизировать число лишних запросов к API, особенно это касается методов campaign/info и campaign/stat.
- Не надо постоянно запрашивать ту информацию, которую вы можете хранить на своей стороне.
- Не надо постоянно запрашивать информацию по неактивным РК - в этом просто нет смысла, ответы будут всегда одинаковыми.
- Разумное число запросов к API по 1 РК - 1-2-3, максимум до 10-20 в сутки. Допустимое число запросов для метода campaign/stat не более 1 в час. Таким образом, разумное число запросов на аккаунт (токен) - сотни, максимум до 1000 в сутки. Если вы планируете делать значительно большее число запросов - 99%, что вы используете несовершенный алгоритм, который можно значительно оптимизировать. Если вы твердо уверены, что вам нужно большее число запросов - сначала согласуйте это со службой поддержки.
- Если вы получили ответ с error_code=37 и error=Temporary unavailable, try again later, вы должны повторить аналогичный запрос не ранее чем через 5 минут.
- В случае систематического нарушения указанных правил доступ к API может быть ограничен.
Все пользователи API имеют суточный лимит запросов. Информацию о лимитировании можно получить в заголовках ответа на API-запрос:
- X-RateLimit-Limit - суточный лимит
- X-RateLimit-Remaining - кол-во оставшихся запросов, которые можно совершить до "X-RateLimit-Reset"
- X-RateLimit-Reset - время, когда суточный лимит будет сброшен (unix timestamp)
Пример вызова метода:
<?php
$post = array(
'token' => $token,
'id' => 9999
);
if ($curl = curl_init()) {
curl_setopt($curl, CURLOPT_URL, 'https://www.ipweb.ru/api/v2/category/delete');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$headers_string = substr($response, 0, $header_size);
$headers_string = preg_replace('~\s+\Z~', '', $headers_string);
$headers_array = explode(PHP_EOL, $headers_string);
$headers = [];
if (is_array($headers_array)) {
foreach ($headers_array as $value) {
if (empty($value)) {
continue;
}
list($tmp_key, $tmp_value) = explode(':', $value, 2);
if ($tmp_value) {
$headers[trim($tmp_key)] = trim($tmp_value);
} else {
$headers[] = trim($tmp_key);
}
}
}
curl_close($curl);
$out = substr($response, $header_size);
print_r($headers_groups);
print_r($out);
}
// Результат:
{
.
.
.
"X-RateLimit-Limit": 1000
"X-RateLimit-Remaining": 992
"X-RateLimit-Reset": 1734987600
}
{
"status": "ok",
"error_code": 0
}