{"name":"VK API","vendor":"VK","industry":"communications","summary":"API социальной сети ВКонтакте: пользователи, сообщества, стена, сообщения, фотографии, Long Poll для ботов сообществ и ещё несколько сотен методов (в JSON-схеме VK — 569). Методы вызываются по имени вида `раздел.операция` (например, `users.get`); ответ — JSON с полем `response` или `error`. Здесь собраны основные методы для работы с профилями, сообществами, постами и сообщениями.","docsUrl":"https://dev.vk.com/ru/api/api-requests","coverage":{"included":[],"excluded":[]},"scenarios":[{"id":"bot-soobschestva-prinimat-soobscheniya","title":"Бот сообщества: принимать сообщения через Long Poll","summary":"Чат-бот в сообщениях сообщества ВКонтакте без публичного сервера: бот сам забирает новые события.","steps":["В настройках сообщества включи сообщения и Bots Long Poll API (Управление → Работа с API), отметь тип события «Входящее сообщение» и создай ключ доступа сообщества с правом на сообщения.","Получи параметры сервера: POST /method/groups.getLongPollServer с group_id и v. В ответе server, key и ts.","В цикле делай запрос к адресу server с act=a_check, key, ts и wait=25. В ответе — новый ts и updates; события входящих сообщений имеют type = message_new.","Ответь пользователю: POST /method/messages.send с peer_id из события, message и random_id — уникальным числом, иначе VK может посчитать сообщение повтором.","Тело запросов — form-urlencoded или multipart, JSON не поддерживается. Параметр v (версия API) обязателен в каждом запросе."],"code":"import random, requests\n\nTOKEN, GROUP_ID, V = \"<ключ сообщества>\", 123456, \"5.199\"\nH = {\"Authorization\": f\"Bearer {TOKEN}\"}\n\ndef api(method, **params):\n    r = requests.post(f\"https://api.vk.ru/method/{method}\", headers=H, data={**params, \"v\": V}).json()\n    if \"error\" in r:\n        raise RuntimeError(r[\"error\"])\n    return r[\"response\"]\n\nlp = api(\"groups.getLongPollServer\", group_id=GROUP_ID)\nts = lp[\"ts\"]\nwhile True:\n    resp = requests.get(lp[\"server\"], params={\"act\": \"a_check\", \"key\": lp[\"key\"], \"ts\": ts, \"wait\": 25}, timeout=35).json()\n    if \"failed\" in resp:  # ключ устарел — получить новый\n        lp = api(\"groups.getLongPollServer\", group_id=GROUP_ID); ts = lp[\"ts\"]; continue\n    ts = resp[\"ts\"]\n    for u in resp[\"updates\"]:\n        if u[\"type\"] == \"message_new\":\n            msg = u[\"object\"][\"message\"]\n            api(\"messages.send\", peer_id=msg[\"peer_id\"], message=f\"Вы написали: {msg['text']}\", random_id=random.getrandbits(31))","language":"python","methods":["POST /method/messages.send","POST /method/groups.getLongPollServer"]},{"id":"knopki-v-bote-soobschestva","title":"Кнопки в боте сообщества","summary":"Клавиатура под полем ввода или под сообщением: «Каталог», «Мой заказ», «Связаться с оператором».","steps":["Опиши клавиатуру JSON-объектом: buttons — строки кнопок, у каждой action с type = text, label и payload (по нему бот поймёт, что нажали). inline = true показывает кнопки под сообщением.","Отправь сообщение с клавиатурой: POST /method/messages.send с peer_id, message, random_id и keyboard — JSON-строкой.","Нажатие текстовой кнопки приходит как обычное входящее сообщение message_new — в нём есть payload кнопки."],"code":"curl https://api.vk.ru/method/messages.send \\\n  -H \"Authorization: Bearer $VK_GROUP_TOKEN\" \\\n  --data-urlencode 'peer_id=<peer_id>' \\\n  --data-urlencode \"random_id=$RANDOM$RANDOM\" \\\n  --data-urlencode 'message=Чем помочь?' \\\n  --data-urlencode 'keyboard={\"one_time\": false, \"buttons\": [[\n      {\"action\": {\"type\": \"text\", \"label\": \"Каталог\", \"payload\": \"{\\\"cmd\\\": \\\"catalog\\\"}\"}, \"color\": \"primary\"},\n      {\"action\": {\"type\": \"text\", \"label\": \"Мой заказ\", \"payload\": \"{\\\"cmd\\\": \\\"order\\\"}\"}, \"color\": \"secondary\"}\n    ]]}' \\\n  --data-urlencode 'v=5.199'","language":"bash","methods":["POST /method/messages.send"]},{"id":"opublikovat-post-s-kartinkoy","title":"Опубликовать пост с картинкой в сообществе","summary":"Автопостинг: новости, акции, новые товары — на стену сообщества от его имени.","steps":["Нужен ключ пользователя — администратора сообщества (wall.post и загрузка фото на стену не работают с ключом сообщества).","Получи адрес загрузки: POST /method/photos.getWallUploadServer с group_id. Загрузи файл на upload_url полем photo в multipart-форме.","Сохрани фото: POST /method/photos.saveWallPhoto с group_id и значениями photo, server и hash из ответа сервера загрузки. В ответе — owner_id и id фото.","Опубликуй пост: POST /method/wall.post с owner_id = -ID сообщества (со знаком минус), from_group = 1, message и attachments = photo<owner_id>_<id>. Для отложенной публикации добавь publish_date в Unix-времени."],"code":"UPLOAD=$(curl -s https://api.vk.ru/method/photos.getWallUploadServer -H \"Authorization: Bearer $VK_USER_TOKEN\" \\\n  -d group_id=123456 -d v=5.199 | jq -r .response.upload_url)\nR=$(curl -s -F \"photo=@promo.jpg\" \"$UPLOAD\")\n\nSAVED=$(curl -s https://api.vk.ru/method/photos.saveWallPhoto -H \"Authorization: Bearer $VK_USER_TOKEN\" \\\n  -d group_id=123456 -d v=5.199 \\\n  --data-urlencode \"photo=$(echo \"$R\" | jq -r .photo)\" -d \"server=$(echo \"$R\" | jq -r .server)\" -d \"hash=$(echo \"$R\" | jq -r .hash)\")\n\ncurl https://api.vk.ru/method/wall.post -H \"Authorization: Bearer $VK_USER_TOKEN\" \\\n  -d owner_id=-123456 -d from_group=1 -d v=5.199 \\\n  --data-urlencode 'message=Скидка 20% на всё до воскресенья!' \\\n  -d \"attachments=photo$(echo \"$SAVED\" | jq -r '.response[0].owner_id')_$(echo \"$SAVED\" | jq -r '.response[0].id')\"","language":"bash","methods":["POST /method/wall.post","POST /method/photos.getWallUploadServer","POST /method/photos.saveWallPhoto"]},{"id":"uznat-dannye-polzovatelya-ili","title":"Узнать данные пользователя или сообщества по ссылке","summary":"По ссылке vk.com/durov или vk.com/club1 получить ID и профиль — для привязки аккаунта, CRM или проверки.","steps":["Получи тип и ID объекта по короткому имени: POST /method/utils.resolveScreenName с screen_name (часть ссылки после vk.com/). В ответе type (user, group, application) и object_id.","Для пользователя запроси профиль: POST /method/users.get с user_ids и fields — нужными полями (screen_name, city, photo_100, last_seen и др.).","Для сообщества — POST /method/groups.getById с group_id.","Для таких запросов подходит сервисный ключ приложения — не нужно просить пользователя об авторизации. Профиль может быть приватным — ошибка 30."],"code":"curl https://api.vk.ru/method/utils.resolveScreenName -H \"Authorization: Bearer $VK_SERVICE_TOKEN\" \\\n  -d screen_name=durov -d v=5.199\n\ncurl https://api.vk.ru/method/users.get -H \"Authorization: Bearer $VK_SERVICE_TOKEN\" \\\n  -d user_ids=1 -d fields=screen_name,city,photo_100 -d v=5.199","language":"bash","methods":["POST /method/users.get","POST /method/utils.resolveScreenName","POST /method/groups.getById"]},{"id":"vygruzit-uchastnikov-soobschestva","title":"Выгрузить участников сообщества","summary":"Список подписчиков для аналитики или сегментации.","steps":["Запроси первую тысячу: POST /method/groups.getMembers с group_id, count = 1000 и offset = 0. В ответе count — общее число участников.","Листай с шагом offset += 1000, пока не наберёшь всех.","Для больших сообществ упакуй до 25 вызовов в один запрос: POST /method/execute с кодом на VKScript — так быстрее и не упрёшься в ограничение частоты (ошибка 6).","Если нужны поля участников (город, пол), передай fields — но ответ станет тяжелее."],"code":"curl https://api.vk.ru/method/execute -H \"Authorization: Bearer $VK_SERVICE_TOKEN\" \\\n  -d v=5.199 \\\n  --data-urlencode 'code=var i = 0; var res = []; while (i < 25) { res.push(API.groups.getMembers({\"group_id\": 123456, \"count\": 1000, \"offset\": i * 1000}).items); i = i + 1; } return res;'","language":"bash","methods":["POST /method/groups.getMembers","POST /method/execute"]}],"baseUrls":[{"label":"Боевой","url":"https://api.vk.ru"},{"label":"URL метода","url":"https://api.vk.ru/method/<имя-API-метода>"}],"auth":{"type":"bearer","description":"Ключ доступа передаётся в каждом запросе в заголовке `Authorization: Bearer <КЛЮЧ_ДОСТУПА>`. Тип ключа указан у каждого метода: ключ пользователя, ключ сообщества или сервисный ключ приложения.\n\nОтвет:","example":"curl 'https://api.vk.ru/method/users.get' \\\n  -H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \\\n  -F 'user_ids=743784474' \\\n  -F 'fields=bdate' \\\n  -F 'v=5.131'"},"methods":[{"id":"POST /method/users.get","title":"Информация о пользователях","httpMethod":"POST","path":"/method/users.get","description":"Ключи: пользователя, сообщества, сервисный.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"user_ids","in":"body","type":"array","required":false,"description":"ID или короткие имена пользователей, до 1000; по умолчанию — текущий"},{"name":"fields","in":"body","type":"array","required":false,"description":"Доп. поля: screen_name, sex, bdate, city, photo_100, online, last_seen и др."},{"name":"name_case","in":"body","type":"string","required":false,"description":"Падеж имени: nom (по умолчанию), gen, dat, acc, ins, abl"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/utils.resolveScreenName","title":"Тип и ID объекта по короткому имени","httpMethod":"POST","path":"/method/utils.resolveScreenName","description":"Ключи: пользователя, сообщества, сервисный.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"screen_name","in":"body","type":"string","required":true,"description":"Короткое имя пользователя, сообщества или приложения"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/groups.getById","title":"Информация о сообществах","httpMethod":"POST","path":"/method/groups.getById","description":"Ключи: пользователя, сообщества, сервисный.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"group_ids","in":"body","type":"array","required":false,"description":"ID или короткие имена сообществ"},{"name":"group_id","in":"body","type":"string","required":false,"description":"ID или короткое имя одного сообщества"},{"name":"fields","in":"body","type":"array","required":false,"description":"Доп. поля сообщества"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/groups.getMembers","title":"Участники сообщества","httpMethod":"POST","path":"/method/groups.getMembers","description":"Ключи: пользователя, сообщества, сервисный.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"group_id","in":"body","type":"string","required":false,"description":"ID или короткое имя сообщества"},{"name":"sort","in":"body","type":"string","required":false,"description":"id_asc (по умолчанию), id_desc, time_asc, time_desc"},{"name":"offset","in":"body","type":"integer","required":false,"description":"Смещение"},{"name":"count","in":"body","type":"integer","required":false,"description":"Количество, по умолчанию и максимум 1000"},{"name":"fields","in":"body","type":"array","required":false,"description":"Доп. поля участников"},{"name":"filter","in":"body","type":"string","required":false,"description":"friends, unsure и др."}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/wall.get","title":"Записи со стены","httpMethod":"POST","path":"/method/wall.get","description":"Ключи: пользователя, сервисный.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"owner_id","in":"body","type":"integer","required":false,"description":"ID владельца стены; у сообщества — со знаком минус"},{"name":"domain","in":"body","type":"string","required":false,"description":"Короткий адрес пользователя или сообщества"},{"name":"offset","in":"body","type":"integer","required":false,"description":"Смещение"},{"name":"count","in":"body","type":"integer","required":false,"description":"Число записей, максимум 100"},{"name":"filter","in":"body","type":"string","required":false,"description":"Фильтр записей"},{"name":"extended","in":"body","type":"boolean","required":false,"description":"1 — вернуть также profiles и groups"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/wall.post","title":"Публикация записи на стене","httpMethod":"POST","path":"/method/wall.post","description":"Ключ: пользователя. Также публикует предложенные и отложенные записи.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"owner_id","in":"body","type":"integer","required":false,"description":"ID пользователя или сообщества (со знаком минус)"},{"name":"message","in":"body","type":"string","required":false,"description":"Текст записи; обязателен, если нет attachments"},{"name":"attachments","in":"body","type":"array","required":false,"description":"Вложения <owner_id>_<media_id> через запятую; обязательны, если нет message"},{"name":"from_group","in":"body","type":"boolean","required":false,"description":"1 — публикация от имени сообщества"},{"name":"signed","in":"body","type":"boolean","required":false,"description":"Подписать запись именем автора (для from_group=1)"},{"name":"publish_date","in":"body","type":"integer","required":false,"description":"Дата отложенной публикации, Unix time"},{"name":"friends_only","in":"body","type":"boolean","required":false,"description":"Только для друзей"},{"name":"post_id","in":"body","type":"integer","required":false,"description":"ID отложенной или предложенной записи для публикации"},{"name":"mark_as_ads","in":"body","type":"boolean","required":false,"description":"Пометить как рекламу"},{"name":"close_comments","in":"body","type":"boolean","required":false,"description":"Закрыть комментарии"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/messages.send","title":"Отправка сообщения","httpMethod":"POST","path":"/method/messages.send","description":"Ключи: пользователя, сообщества.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"peer_id","in":"body","type":"integer","required":false,"description":"Получатель: ID пользователя; 2000000000 + chat_id для беседы; -ID сообщества"},{"name":"peer_ids","in":"body","type":"array","required":false,"description":"Несколько получателей, до 100"},{"name":"user_id","in":"body","type":"integer","required":false,"description":"ID пользователя"},{"name":"domain","in":"body","type":"string","required":false,"description":"Короткий адрес пользователя"},{"name":"random_id","in":"body","type":"integer","required":false,"description":"Уникальный ID для защиты от повторной отправки"},{"name":"message","in":"body","type":"string","required":false,"description":"Текст; обязателен, если нет attachment"},{"name":"attachment","in":"body","type":"string","required":false,"description":"Вложения <owner_id>_<media_id> через запятую; обязательны, если нет message"},{"name":"reply_to","in":"body","type":"integer","required":false,"description":"ID сообщения, на которое отвечаем"},{"name":"forward_messages","in":"body","type":"array","required":false,"description":"ID пересылаемых сообщений через запятую"},{"name":"keyboard","in":"body","type":"string","required":false,"description":"Клавиатура бота (JSON)"},{"name":"payload","in":"body","type":"string","required":false,"description":"Полезная нагрузка"},{"name":"group_id","in":"body","type":"integer","required":false,"description":"ID сообщества (с ключом сообщества)"},{"name":"dont_parse_links","in":"body","type":"boolean","required":false,"description":"Не создавать сниппеты ссылок"},{"name":"disable_mentions","in":"body","type":"boolean","required":false,"description":"Отключить уведомления об упоминаниях"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/groups.getLongPollServer","title":"Данные для подключения к Bots Long Poll","httpMethod":"POST","path":"/method/groups.getLongPollServer","description":"Ключи: пользователя, сообщества. Возвращает данные для запросов к Long Poll серверу событий сообщества.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"group_id","in":"body","type":"integer","required":true,"description":"ID сообщества"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/photos.getWallUploadServer","title":"Адрес для загрузки фото на стену","httpMethod":"POST","path":"/method/photos.getWallUploadServer","description":"Ключ: пользователя. Дальше файл загружается на полученный адрес, затем сохраняется методом `photos.saveWallPhoto`.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"group_id","in":"body","type":"integer","required":false,"description":"ID сообщества, на стену которого загружается фото"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/photos.saveWallPhoto","title":"Сохранение загруженного фото","httpMethod":"POST","path":"/method/photos.saveWallPhoto","description":"Ключ: пользователя.","params":[{"name":"v","in":"body","type":"string","required":true,"description":"Версия API"},{"name":"photo","in":"body","type":"string","required":true,"description":"Значение photo из ответа сервера загрузки"},{"name":"server","in":"body","type":"integer","required":false,"description":"Значение server из ответа сервера загрузки"},{"name":"hash","in":"body","type":"string","required":false,"description":"Значение hash из ответа сервера загрузки"},{"name":"user_id","in":"body","type":"integer","required":false,"description":"ID пользователя-владельца стены"},{"name":"group_id","in":"body","type":"integer","required":false,"description":"ID сообщества-владельца стены"},{"name":"caption","in":"body","type":"string","required":false,"description":"Описание фото, до 2048 символов"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /method/execute","title":"Пакетное выполнение кода","httpMethod":"POST","path":"/method/execute","description":"Ключи: пользователя, сообщества. Выполняет код, вызывающий несколько методов API за один запрос; ошибка компиляции — код 12.","params":[],"requestExample":"","responseExample":"","docsUrl":""}],"codeExamples":[],"errors":[{"code":"1","description":"Неизвестная ошибка"},{"code":"3","description":"Неизвестный метод"},{"code":"5","description":"Ошибка авторизации пользователя"},{"code":"6","description":"Слишком много запросов в секунду"},{"code":"7","description":"Нет прав на действие"},{"code":"8","description":"Неверный запрос"},{"code":"9","description":"Flood control"},{"code":"10","description":"Внутренняя ошибка сервера"},{"code":"12","description":"Ошибка компиляции кода (execute)"},{"code":"14","description":"Требуется ввод капчи"},{"code":"15","description":"Доступ запрещён"},{"code":"17","description":"Требуется валидация"},{"code":"18","description":"Пользователь удалён или заблокирован"},{"code":"27","description":"Ошибка авторизации сообщества"},{"code":"28","description":"Ошибка авторизации приложения"},{"code":"29","description":"Достигнут лимит запросов"},{"code":"30","description":"Профиль приватный"},{"code":"36","description":"Выполнение метода прервано по таймауту"},{"code":"42","description":"IP не разрешён"}],"limits":"Методы секции `secure`: до 100 000 пользователей — 8, до 1 000 000 — 20, больше — 35 запросов в секунду. При превышении — ошибка `6`.","gotchas":["HTTP-методы GET и POST равнозначны; только HTTPS.","Обязательный во всех запросах параметр `v` — версия API. В документации указана актуальная версия 5.131, а официальная JSON-схема методов VK описывает версию 5.199.","Тело POST — `application/x-www-form-urlencoded` или `multipart/form-data` (для файлов и данных больше 2 КБ); `application/json` не поддерживается.","Имя метода чувствительно к регистру.","Общие параметры для всех методов: `lang` (`ru`, `uk`, `be`, `en`, `es`, `fi`, `de`, `it`) и `test_mode=1`.","ID сообщества в `owner_id` передаётся со знаком минус.","Кроме ограничений частоты есть закрытые количественные лимиты на однотипные методы: при превышении метод может стать временно недоступен или потребовать капчу."],"slug":"vk-api","version":2,"updatedAt":"2026-10-24T17:05:38.838Z","sources":[{"title":"Формат запросов VK API","url":"https://dev.vk.com/ru/api/api-requests","kind":"research","addedAt":"2026-10-14T18:43:44.165Z"},{"title":"Методы API","url":"https://dev.vk.com/ru/method","kind":"research","addedAt":"2026-10-14T18:43:44.165Z"},{"title":"VK API JSON Schema (официальный репозиторий VKCOM)","url":"https://github.com/VKCOM/vk-api-schema","kind":"research","addedAt":"2026-10-14T18:43:44.165Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-14T18:43:44.165Z"},{"title":"scenarios-vk-api.md","url":"","kind":"import","addedAt":"2026-10-24T17:05:28.573Z"}],"logoUrl":null}