Отрасль: Связь и уведомления. Актуально на 2026-10-24.
API социальной сети ВКонтакте: пользователи, сообщества, стена, сообщения, фотографии, Long Poll для ботов сообществ и ещё несколько сотен методов (в JSON-схеме VK — 569). Методы вызываются по имени вида раздел.операция (например, users.get); ответ — JSON с полем response или error. Здесь собраны основные методы для работы с профилями, сообществами, постами и сообщениями.
Чат-бот в сообщениях сообщества ВКонтакте без публичного сервера: бот сам забирает новые события.
import random, requests
TOKEN, GROUP_ID, V = "<ключ сообщества>", 123456, "5.199"
H = {"Authorization": f"Bearer {TOKEN}"}
def api(method, **params):
r = requests.post(f"https://api.vk.ru/method/{method}", headers=H, data={**params, "v": V}).json()
if "error" in r:
raise RuntimeError(r["error"])
return r["response"]
lp = api("groups.getLongPollServer", group_id=GROUP_ID)
ts = lp["ts"]
while True:
resp = requests.get(lp["server"], params={"act": "a_check", "key": lp["key"], "ts": ts, "wait": 25}, timeout=35).json()
if "failed" in resp: # ключ устарел — получить новый
lp = api("groups.getLongPollServer", group_id=GROUP_ID); ts = lp["ts"]; continue
ts = resp["ts"]
for u in resp["updates"]:
if u["type"] == "message_new":
msg = u["object"]["message"]
api("messages.send", peer_id=msg["peer_id"], message=f"Вы написали: {msg['text']}", random_id=random.getrandbits(31))
Клавиатура под полем ввода или под сообщением: «Каталог», «Мой заказ», «Связаться с оператором».
curl https://api.vk.ru/method/messages.send \
-H "Authorization: Bearer $VK_GROUP_TOKEN" \
--data-urlencode 'peer_id=<peer_id>' \
--data-urlencode "random_id=$RANDOM$RANDOM" \
--data-urlencode 'message=Чем помочь?' \
--data-urlencode 'keyboard={"one_time": false, "buttons": [[
{"action": {"type": "text", "label": "Каталог", "payload": "{\"cmd\": \"catalog\"}"}, "color": "primary"},
{"action": {"type": "text", "label": "Мой заказ", "payload": "{\"cmd\": \"order\"}"}, "color": "secondary"}
]]}' \
--data-urlencode 'v=5.199'
Автопостинг: новости, акции, новые товары — на стену сообщества от его имени.
UPLOAD=$(curl -s https://api.vk.ru/method/photos.getWallUploadServer -H "Authorization: Bearer $VK_USER_TOKEN" \
-d group_id=123456 -d v=5.199 | jq -r .response.upload_url)
R=$(curl -s -F "photo=@promo.jpg" "$UPLOAD")
SAVED=$(curl -s https://api.vk.ru/method/photos.saveWallPhoto -H "Authorization: Bearer $VK_USER_TOKEN" \
-d group_id=123456 -d v=5.199 \
--data-urlencode "photo=$(echo "$R" | jq -r .photo)" -d "server=$(echo "$R" | jq -r .server)" -d "hash=$(echo "$R" | jq -r .hash)")
curl https://api.vk.ru/method/wall.post -H "Authorization: Bearer $VK_USER_TOKEN" \
-d owner_id=-123456 -d from_group=1 -d v=5.199 \
--data-urlencode 'message=Скидка 20% на всё до воскресенья!' \
-d "attachments=photo$(echo "$SAVED" | jq -r '.response[0].owner_id')_$(echo "$SAVED" | jq -r '.response[0].id')"
По ссылке vk.com/durov или vk.com/club1 получить ID и профиль — для привязки аккаунта, CRM или проверки.
curl https://api.vk.ru/method/utils.resolveScreenName -H "Authorization: Bearer $VK_SERVICE_TOKEN" \
-d screen_name=durov -d v=5.199
curl https://api.vk.ru/method/users.get -H "Authorization: Bearer $VK_SERVICE_TOKEN" \
-d user_ids=1 -d fields=screen_name,city,photo_100 -d v=5.199
Список подписчиков для аналитики или сегментации.
curl https://api.vk.ru/method/execute -H "Authorization: Bearer $VK_SERVICE_TOKEN" \
-d v=5.199 \
--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;'
https://api.vk.ruhttps://api.vk.ru/method/<имя-API-метода>Тип: Bearer-токен
Ключ доступа передаётся в каждом запросе в заголовке Authorization: Bearer <КЛЮЧ_ДОСТУПА>. Тип ключа указан у каждого метода: ключ пользователя, ключ сообщества или сервисный ключ приложения.
Ответ:
curl 'https://api.vk.ru/method/users.get' \
-H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \
-F 'user_ids=743784474' \
-F 'fields=bdate' \
-F 'v=5.131'
Ключи: пользователя, сообщества, сервисный.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
user_ids |
body | array | нет | ID или короткие имена пользователей, до 1000; по умолчанию — текущий |
fields |
body | array | нет | Доп. поля: screen_name, sex, bdate, city, photo_100, online, last_seen и др. |
name_case |
body | string | нет | Падеж имени: nom (по умолчанию), gen, dat, acc, ins, abl |
Ключи: пользователя, сообщества, сервисный.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
screen_name |
body | string | да | Короткое имя пользователя, сообщества или приложения |
Ключи: пользователя, сообщества, сервисный.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
group_ids |
body | array | нет | ID или короткие имена сообществ |
group_id |
body | string | нет | ID или короткое имя одного сообщества |
fields |
body | array | нет | Доп. поля сообщества |
Ключи: пользователя, сообщества, сервисный.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
group_id |
body | string | нет | ID или короткое имя сообщества |
sort |
body | string | нет | id_asc (по умолчанию), id_desc, time_asc, time_desc |
offset |
body | integer | нет | Смещение |
count |
body | integer | нет | Количество, по умолчанию и максимум 1000 |
fields |
body | array | нет | Доп. поля участников |
filter |
body | string | нет | friends, unsure и др. |
Ключи: пользователя, сервисный.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
owner_id |
body | integer | нет | ID владельца стены; у сообщества — со знаком минус |
domain |
body | string | нет | Короткий адрес пользователя или сообщества |
offset |
body | integer | нет | Смещение |
count |
body | integer | нет | Число записей, максимум 100 |
filter |
body | string | нет | Фильтр записей |
extended |
body | boolean | нет | 1 — вернуть также profiles и groups |
Ключ: пользователя. Также публикует предложенные и отложенные записи.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
owner_id |
body | integer | нет | ID пользователя или сообщества (со знаком минус) |
message |
body | string | нет | Текст записи; обязателен, если нет attachments |
attachments |
body | array | нет | Вложения |
from_group |
body | boolean | нет | 1 — публикация от имени сообщества |
signed |
body | boolean | нет | Подписать запись именем автора (для from_group=1) |
publish_date |
body | integer | нет | Дата отложенной публикации, Unix time |
friends_only |
body | boolean | нет | Только для друзей |
post_id |
body | integer | нет | ID отложенной или предложенной записи для публикации |
mark_as_ads |
body | boolean | нет | Пометить как рекламу |
close_comments |
body | boolean | нет | Закрыть комментарии |
Ключи: пользователя, сообщества.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
peer_id |
body | integer | нет | Получатель: ID пользователя; 2000000000 + chat_id для беседы; -ID сообщества |
peer_ids |
body | array | нет | Несколько получателей, до 100 |
user_id |
body | integer | нет | ID пользователя |
domain |
body | string | нет | Короткий адрес пользователя |
random_id |
body | integer | нет | Уникальный ID для защиты от повторной отправки |
message |
body | string | нет | Текст; обязателен, если нет attachment |
attachment |
body | string | нет | Вложения |
reply_to |
body | integer | нет | ID сообщения, на которое отвечаем |
forward_messages |
body | array | нет | ID пересылаемых сообщений через запятую |
keyboard |
body | string | нет | Клавиатура бота (JSON) |
payload |
body | string | нет | Полезная нагрузка |
group_id |
body | integer | нет | ID сообщества (с ключом сообщества) |
dont_parse_links |
body | boolean | нет | Не создавать сниппеты ссылок |
disable_mentions |
body | boolean | нет | Отключить уведомления об упоминаниях |
Ключи: пользователя, сообщества. Возвращает данные для запросов к Long Poll серверу событий сообщества.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
group_id |
body | integer | да | ID сообщества |
Ключ: пользователя. Дальше файл загружается на полученный адрес, затем сохраняется методом photos.saveWallPhoto.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
group_id |
body | integer | нет | ID сообщества, на стену которого загружается фото |
Ключ: пользователя.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
v |
body | string | да | Версия API |
photo |
body | string | да | Значение photo из ответа сервера загрузки |
server |
body | integer | нет | Значение server из ответа сервера загрузки |
hash |
body | string | нет | Значение hash из ответа сервера загрузки |
user_id |
body | integer | нет | ID пользователя-владельца стены |
group_id |
body | integer | нет | ID сообщества-владельца стены |
caption |
body | string | нет | Описание фото, до 2048 символов |
Ключи: пользователя, сообщества. Выполняет код, вызывающий несколько методов API за один запрос; ошибка компиляции — код 12.
v — версия API. В документации указана актуальная версия 5.131, а официальная JSON-схема методов VK описывает версию 5.199.application/x-www-form-urlencoded или multipart/form-data (для файлов и данных больше 2 КБ); application/json не поддерживается.lang (ru, uk, be, en, es, fi, de, it) и test_mode=1.owner_id передаётся со знаком минус.| Код | Описание |
|---|---|
1 |
Неизвестная ошибка |
3 |
Неизвестный метод |
5 |
Ошибка авторизации пользователя |
6 |
Слишком много запросов в секунду |
7 |
Нет прав на действие |
8 |
Неверный запрос |
9 |
Flood control |
10 |
Внутренняя ошибка сервера |
12 |
Ошибка компиляции кода (execute) |
14 |
Требуется ввод капчи |
15 |
Доступ запрещён |
17 |
Требуется валидация |
18 |
Пользователь удалён или заблокирован |
27 |
Ошибка авторизации сообщества |
28 |
Ошибка авторизации приложения |
29 |
Достигнут лимит запросов |
30 |
Профиль приватный |
36 |
Выполнение метода прервано по таймауту |
42 |
IP не разрешён |
Методы секции secure: до 100 000 пользователей — 8, до 1 000 000 — 20, больше — 35 запросов в секунду. При превышении — ошибка 6.
Если этого недостаточно — официальная документация: https://dev.vk.com/ru/api/api-requests JSON: https://mcp-everything.ru/api/integrations/vk-api. MCP: https://mcp-everything.ru/mcp