Главная » Запросы к API
1. Синтаксис запроса
Чтобы обратиться к методу API ВКонтакте, Вам необходимо выполнить POST или GET запрос такого вида:
https://api.vk.com/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN&v=V

Он состоит из нескольких частей:
  • METHOD_NAME (обязательно) — название метода API, к которому Вы хотите обратиться. Полный список методов доступен на этой странице. Обратите внимание: имя метода чувствительно к регистру.
  • PARAMETERS (опционально) — входные параметры соответствующего метода API, последовательность пар name=value, разделенных амперсандом. Список параметров указан на странице с описанием метода.
  • ACCESS_TOKEN (обязательно) — ключ доступа. Подробнее о получении токена Вы можете узнать в этом руководстве.
  • V (обязательно) — используемая версия API. Использование этого параметра применяет некоторые изменения в формате ответа различных методов. На текущий момент актуальная версия API — 5.101. Этот параметр следует передавать со всеми запросами.

Параметры могут передаваться как методом GET, так и POST. Если вы будете передавать большие данные (больше 2 килобайт), следует использовать POST.

Например, вызовем метод users.get для пользователя с идентификатором 210700286:
https://api.vk.com/method/users.get?user_ids=210700286&fields=bdate&access_token=533bacf01e11f55b536a565b57531ac114461ae8736d6506a3&v=5.101

В ответ на такой запрос Вы получите ответ в формате JSON:
{
"response":[{
"id":210700286,
"first_name":"Lindsey",
"last_name":"Stirling",
"bdate":"21.9.1986"
}]
}
2. Общие параметры
Каждый метод API имеет собственный набор входных параметров. Помимо этого, существуют общие параметры, которые могут быть использованы во всех методах:
  • lang — определяет язык, на котором будут возвращаться различные данные, например, названия стран и городов. Может содержать строковое обозначение языка или его идентификатор (получить идентификатор языка пользователя Вы можете методом account.getInfo).
    • ru (0) — русский,
    • uk (1) — украинский,
    • be (2) — белорусский,
    • en (3) — английский,
    • es (4) — испанский,
    • fi (5) — финский,
    • de (6) — немецкий,
    • it (7) — итальянский.
    Кириллические имена будут автоматически транслитерированы в латиницу для всех языков, кроме русского, украинского и белорусского.
*https — передайте 1, чтобы получать ссылки на фотографии и другие медиафайлы с протоколом https .
  • test_mode=1 — тестовый режим, позволяет выполнять запросы из нативного приложения без его включения на всех пользователей.
3. Ограничения и рекомендации
3.1. Частотные ограничения
К методам API ВКонтакте (за исключением методов из секций secure и ads) с ключом доступа пользователя или сервисным ключом доступа можно обращаться не чаще 3 раз в секунду. Для ключа доступа сообщества ограничение составляет 20 запросов в секунду. Если логика Вашего приложения подразумевает вызов нескольких методов подряд, имеет смысл обратить внимание на метод execute. Он позволяет совершить до 25 обращений к разным методам в рамках одного запроса.

Для методов секции ads действуют собственные ограничения, ознакомиться с ними Вы можете на этой странице.

Максимальное число обращений к методам секции secure зависит от числа пользователей, установивших приложение. Если приложение установило меньше 10 000 человек, то можно совершать 5 запросов в секунду, до 100 000 — 8 запросов, до 1 000 000 — 20 запросов, больше 1 млн. — 35 запросов в секунду.

Если Вы превысите частотное ограничение, сервер вернет ошибку с кодом 6: "Too many requests per second.".

3.2. Количественные ограничения
Помимо ограничений на частоту обращений, существуют и количественные ограничения на вызов однотипных методов. По понятным причинам, мы не предоставляем информацию о точных лимитах.

После превышения количественного лимита доступ к конкретному методу может требовать ввода капчи (см. captcha_error), а также может быть временно ограничен (в таком случае сервер не возвращает ответ на вызов конкретного метода, но без проблем обрабатывает любые другие запросы).
4. Примеры
4.1. Кроссдоменный запрос с использованием JSONP
Чтобы осуществлять кроссдоменные запросы к API, Вы можете использовать протокол JSONP. Для этого необходимо подключать к документу скрипт с адресом запроса в src. Запрос должен содержать дополнительный параметр callback c именем функции, которая будет вызвана при получении результата.

Например:

<html>
<title>JSONP</title>
<head></head>
<body>
<script type="text/javascript">
var script = document.createElement('SCRIPT');
script.src = "https://api.vk.com/method/users.get?user_ids=210700286&fields=bdate&v=5.101&callback=callbackFunc";
document.getElementsByTagName("head")[0].appendChild(script);
function callbackFunc(result) {
alert(result.response[0].first_name)
}
</script>
</body>
</html>


В нашем примере после загрузки документа вызывается метод users.get, а после получения ответа от сервера управление передается функции callbackFunc(), которая выводит содержимое поля first_name из ответа во всплывающем окне.

4.2. Запрос из PHP
<?php
$user_id = 210700286;
$request_params = array(
'user_id' => $user_id,
'fields' => 'bdate',
'v' => '5.52',
'access_token' => '533bacf01e11f55b536a565b57531ac114461ae8736d6506a3'
);
$get_params = http_build_query($request_params);
$result = json_decode(file_get_contents('https://api.vk.com/method/users.get?'. $get_params));
echo($result -> response[0] -> bdate);
?>


В нашем примере скрипт выводит дату рождения пользователя (bdate), полученную обращением к методу users.get.

4.3. Запрос с использованием Open API
Open API — JS-библиотека для упрощения работы с API ВКонтакте на внешних сайтах. Более подробно узнать о ней Вы можете в отдельном руководстве.


<script type="text/javascript">
VK.Api.call('users.get', {user_ids: 210700286, fields: 'bdate'}, function(r) {
if(r.response) {
alert(r.response[0].bdate);
}
});
</script>