Ошибка ответа vk api

VK API Error Code – список всех кодов ошибок при работе с API Вконтакте с инструкциями и рекомендациями по их устранению.

Перейти к содержанию

VK API Error Code – Коды ошибок Вконтакте

Список всех возвращаемых кодов ошибок API в ВК

Код ошибки Описание
1 Произошла неизвестная ошибка.
Попробуйте повторить запрос позднее.
2 Приложение выключено. 
Нужно включить приложение в настройках https://vk.com/editapp?id={Ваш API_ID} или воспользоваться тестовым режимом (test_mode=1)
3 Передан неизвестный метод.
Нужно проверить указано ли название вызываемого метода: https://vk.com/dev/methods.
4 Неверная подпись. 
5 Авторизация пользователя не удалась.
Следует убедиться, что используется верная схема авторизации.
6 Слишком много запросов в секунду.
Нужно задать больший интервал между запросами или использовать метод execute. Узнать подробнее об ограничениях на частоту вызовов можно тут: https://vk.com/dev/api_requests.
7 Нет прав для выполнения этого действия.
Следует проверить, получены ли необходимые права доступа при авторизации. Сделать это можно с помощью метода account.getAppPermissions.
8 Неверный запрос.
Нужно проверить синтаксис запроса и список параметров, которые используются.
9 Слишком много однотипных действий.
Нужно уменьшить число однотипных обращений. Для оптимизации работы можно использовать execute или JSONP.
10 Произошла внутренняя ошибка сервера.
Попробуйте повторить запрос позже.
11 В тестовом режиме приложение должно быть выключено или пользователь должен быть залогинен.
Следует выключить приложение в настройках https://vk.com/editapp?id={Ваш API_ID}
14 Требуется ввод кода с картинки (Captcha).
Процесс обработки этой ошибки подробно описан на странице.
15 Доступ запрещён.
Следует убедиться, что используются верные идентификаторы, а также, что доступ к запрашиваемому контенту для текущего пользователя есть в полной версии сайта.
16 Требуется выполнение запросов по протоколу HTTPS, т.к. пользователь включил настройку, требующую работу через безопасное соединение.
Во избежание возникновения этой ошибки, в Standalone-приложении можно предварительно проверять состояние этой настройки у пользователя методом account.getInfo.
17 Требуется валидация пользователя.
Действие требует подтверждения — нужно перенаправить пользователя на служебную страницу для валидации.
18 Страница удалена или заблокирована.
Страница пользователя была удалена или заблокирована
20 Данное действие запрещено для не Standalone приложений.
Если ошибка появляется несмотря на то, что приложение имеет тип Standalone, следует убедиться, что при авторизации было использовано redirect_uri=https://oauth.vk.com/blank.html. Подробнее на странице: https://vk.com/dev/auth_mobile.
21 Данное действие разрешено только для Standalone и Open API приложений.
23 Метод был выключен.
Ознакомиться со всеми актуальными методами ВК API, доступными в настоящий момент можно тут: https://vk.com/dev/methods.
24 Требуется подтверждение со стороны пользователя.
27 Ключ доступа сообщества недействителен.
28 Ключ доступа приложения недействителен.
29 Достигнут количественный лимит на вызов метода.
Узнать подробнее об ограничениях на количество вызовов можно тут:
https://vk.com/dev/data_limits
30 Профиль является приватным.
Информация, которая запрашивается о профиле, недоступна с используемым ключом доступа
33 Еще не реализовано.
100 Один из необходимых параметров был не передан или неверен.
Следует проверить список требуемых параметров и их формат на странице с описанием метода.
101 Неверный API ID приложения.
Нужно найти приложение в списке администрируемых на странице, и указать в запросе правильный API_ID (идентификатор приложения).
113 Неверный идентификатор пользователя.
Следует убедиться, что используется правильный идентификатор. Получить ID по короткому имени можно методом utils.resolveScreenName.
150 Неверный timestamp (метка времени).
Актуальное значение можно получить методом utils.getServerTime.
200 Доступ к альбому запрещён.
Нужно убедиться, что используются верные идентификаторы (для пользователей owner_id — положительный, для сообществ — отрицательный), и доступ к контенту, которые запрашивается, для текущего пользователя есть в полной версии сайта.
201 Доступ к аудио запрещён.
Нужно убедиться, что используются верные идентификаторы (для пользователей owner_id — положительный, для сообществ — отрицательный), и доступ к контенту, которые запрашивается, для текущего пользователя есть в полной версии сайта.
203 Доступ к группе запрещён.
Нужно убедиться, что текущий пользователь является участником или руководителем группы (для закрытых и частных групп и встреч).
300 Альбом переполнен.
Перед продолжением работы нужно удалить лишние объекты из альбома или использовать другой альбом.
500 Действие запрещено. Вы должны включить переводы голосов в настройках приложения.
Следует проверить настройки приложения: https://vk.com/editapp?id={Ваш API_ID}&section=payments
600 Нет прав на выполнение данных операций с рекламным кабинетом.
603 Произошла ошибка при работе с рекламным кабинетом.
3300 Требуется рекапча.
3301 Требуется подтверждение телефона.
3302 Требуется подтверждение пароля.
3303 Требуется проверка приложения Otp.
3304 Требуется подтверждение по электронной почте.
3305 Требуется утвердить голоса.

VK API Error Code

Ошибки ВКПри работе с API ВКонтакте, как и при работе с подобными инструментами других соцсетей или сервисов, нужно соблюдать опубликованные разработчиками правила. Но не всегда они прозрачны, из-за чего могут возникать различные ошибки в процессе создания приложений или направления запросов к API. В этой статье мы собрали 5 самых распространенных ошибок, с которыми приходится сталкиваться при разработке приложения с использованием API VK.

Обратите внимание:

В статье приводятся 5 наиболее часто возникающих возвращаемых ошибок API VK по мнению редакции сайта.

Ошибка 9 – слишком много однотипных действий

Ошибка явно указывает, что пользователь делает слишком много однотипных действий.

Решение: Рекомендуется для эффективной работы использовать методы execute или JSONP, чтобы сократить количество однотипных обращений к API ВКонтакте.

Ошибка 10 – ошибка сервера

Internal server error code 10. Эта ошибка является наиболее распространенной, если вы работаете строго по инструкциям. Она возникает при нестабильном соединении или при наличии проблем на серверах самого ВКонтакте.

Решение: Исправить самостоятельно данную ошибку никак нельзя. Если проблем с интернет-соединением не наблюдается, вероятнее всего проблема на стороне ВКонтакте. Остается подождать, а после повторить запрос. Обычно через 10-20 минут, если проблема была в серверах, ошибка пропадает.

Рекомендация:

Если вы планируете создавать свой требовательный к мощностям сервера проект, не рекомендуется на этом экономить. Лучше арендовать сервер с проверенной репутацией, подобрав оптимальный вариант по мощности под свои задачи. Тогда пользователи не будут сталкиваться с проблемами при обращении к вашему серверу.

Ошибка 27 – ключ доступа сообщества недействителен

Еще одна распространенная ошибка среди программистов – использование неверного токена. Если вы при разработке приложения пытаетесь с токеном сообщества вызвать метод, который возможно вызвать только с токеном пользователя, вернется ошибка под номером 27.

Обратите внимание:

Такая ошибка может возникнуть, если срок действия токена сообщества закончился.

Решение: Использовать правильный токен.

Ошибка 28 – ключ действия приложения недействителен

Эта ошибка практически идентична той, что была описана выше. Она говорит о том, что используемый ключ действия приложения недействителен – вышел его срок или он введен неверно.

Решение: Использовать верный ключ действия приложения.

Ошибка 100 – неверная передача параметров

Полностью ошибка звучит следующим образом: «Один из необходимых параметров был не передан или неверен». Как можно понять из описания, при передаче параметров была допущена ошибка.

Решение: На странице с описанием метода ознакомиться со списком требуемых параметров и их форматом, чтобы устранить возникшую проблему.

Эти 5 ошибок, рассмотренные в статье, возникают наиболее часто. Как можно видеть, чаще всего они связаны с невнимательностью или с ошибками на стороне самого сервера ВКонтакте. Отсюда вывод один – внимательно читайте документация по работе с API.

При отправке сообщения ботом пользователю, крашится с ошибкой: vk_api.exceptions.ApiError: [901] Can't send messages for users without permission, у бота имеются все нужные разрешение в настройках, так же у пользователя нет запрета на сообщения.

Код:

import vk_api
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

vk_session = vk_api.VkApi(token="Тут ваш токен")

vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, "Айди сообщества (Не кастомное) пример: 94124211")

for event in longpoll.listen():
    if event.obj.text != "":
            if event.from_user:
                vk.messages.send(
                        user_id=event.obj.from_id,
                        random_id=get_random_id(),
                        message=event.obj.text)

задан 6 окт 2019 в 4:48

Slavatar's user avatar

5

Сам встретился с этой ошибкой, проблема оказалась в том, что мой бот пытался ответить на своё же сообщение, т.е. getFromId и getText на проблемном сообщении показал ответ сервера и минусовой id, вместо ожидаемого сообщения пользователя

Как сообщение бота попадает в пачку сообщений от вк пока разбираюсь.

ответ дан 11 мая 2020 в 4:55

Йегрес Нинез's user avatar

Переписка с сообществом может быть инициирована только самим пользователем. Написать от имени группы людям, которые не переписывались с ним, не получится. Однако, когда переписка инициирована, сообщество сможет отправлять сообщения без ограничений по времени или количеству. Это будет продолжаться до тех пор, пока пользователь не запретит сообществу себе писать.

Пользователь может инициировать переписку:

  • отправив сообществу сообщение со страницы сообщества;
  • с помощью кнопки «Разрешить сообщения» на странице сообщества;
  • отправив сообществу сообщение с помощью виджета «Сообщения
    сообщества», размещённого на сайте сообщества;
  • разрешив отправлять ему личные сообщения с помощью виджета
    «Разрешить писать
    сообществу» или
    метода API VK в стороннем
    приложении
    (отправлять сообщение для этого не требуется).

Источник: Сообщения сообщества.

ответ дан 6 окт 2019 в 7:40

nomnoms12's user avatar

nomnoms12nomnoms12

18.1k5 золотых знаков21 серебряный знак45 бронзовых знаков

4

901 — Пользователь запретил отправку сообщений от имени сообщества. Это значит, либо пользователь запретил получать сообщения от группы, либо ещё не писал в неё. Если, пользователь ВКонтакте не написал сообщение в группу, значит он и не может получать их, так как это скорее всего как анти-спам.

ответ дан 13 янв 2021 в 12:23

CellTonus's user avatar

Скорее всего проблема в ID пользователя.
Можно использовать:
event.user_id

ответ дан 26 июл 2021 в 12:26

Masson's user avatar

MassonMasson

353 бронзовых знака

0

Dave_

-4 / 26 / 9

Регистрация: 06.03.2015

Сообщений: 209

1

29.04.2016, 16:43. Показов 11104. Ответов 10

Метки нет (Все метки)


Код:

Python
1
2
3
4
5
def testpost():
    session = vk.AuthSession(app_id='5418092', user_login='mylogin@vk.com', user_password='pass')
    api = vk.API(session)
    api.wall.post(owner_id='41199695', message="Test API")
testpost()

Ошибки:

Код

Traceback (most recent call last):
  File "D:PythonScriptsper.py", line 9, in <module>
    testpost()
  File "D:PythonScriptsper.py", line 8, in testpost
    api.wall.post(owner_id='41199695', message="Test API")
  File "D:Pythonlibsite-packagesvkapi.py", line 173, in __call__
    return self._api._session.make_request(self)
  File "D:Pythonlibsite-packagesvkapi.py", line 102, in make_request
    raise error
vk.exceptions.VkAPIError: 15. Access denied: no access to call this method. request_params = {'message': 'Test API', 'method': 'wall.post', 'oauth': '1', 'owner_id': '41199695'}

Авторизация проходит успешно(видно по логам безопасности ВК), однако почему-то я не получаю нужных мне прав доступа к стене. Буду благодарен за помощь в решение этого вопроса…

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Jabbson

Эксперт по компьютерным сетям

5870 / 3333 / 1028

Регистрация: 03.11.2009

Сообщений: 9,957

29.04.2016, 17:04

2

Лучший ответ Сообщение было отмечено Dave_ как решение

Решение

Ну написано же английским по-белому — нет прав для выполнения метода, значит нужно запросить это право во время AuthSession. Узнаем какое право. Идем на https://vk.com/dev/wall.post, читаем:

Для вызова этого метода Ваше приложение должно иметь права: wall. (Подробнее о получении прав)

Запрашиваем право —

Python
1
vk.AuthSession(scope='wall', ...



2



-4 / 26 / 9

Регистрация: 06.03.2015

Сообщений: 209

29.04.2016, 17:50

 [ТС]

3

Большое спасибо, помогло. Не мог бы ты помочь мне еще с одной проблемой связанной с этим же:
api.wall.post(owner_id=’-120437782′,message=»Test API»,publish_date=’1461940895′)

Код

vk.exceptions.VkAPIError: 100. One of the parameters specified was missing or invalid: invalid publish_date param. request_params = {'publish_date': '1461940895', 'owner_id': '-120437782', 'method': 'wall.post', 'message': 'Test API', 'oauth': '1'}

Кажись все по форме, в чем ошибка?



0



Эксперт по компьютерным сетям

5870 / 3333 / 1028

Регистрация: 03.11.2009

Сообщений: 9,957

29.04.2016, 18:19

4



1



Dave_

-4 / 26 / 9

Регистрация: 06.03.2015

Сообщений: 209

29.04.2016, 19:32

 [ТС]

5

Большое спасибо за помощь. Тему думаю можно закрывать, все получилось. Единственное что: поставил динамическую дату через

Python
1
2
import time
timeunderstand = (time.time()+50)

(( ничего нового, но вдруг у кого-то аналогичная проблема ))

Добавлено через 59 минут
Хотя стоп… я сделал как и указал выше, но почему-то работает раз через раз(в остальные разы опять ошибка 100).

Python
1
2
time = (time.time()+10)
api.wall.post(owner_id='-120437782',message="Test API",publish_date=int(time))

Проверил, время берет правильно. Понятия не имею в чем проблема…



0



Эксперт по компьютерным сетям

5870 / 3333 / 1028

Регистрация: 03.11.2009

Сообщений: 9,957

29.04.2016, 20:13

6

там вроде бы какое-то ограничение, что защедулить можно только сообщение раз в 5 минут, т.е. если создали шедул не 21:00, то следующее сообщение можно только на 21:05

хотя тогда у вас была бы 214 ошибка… пробуйте +300

Добавлено через 1 минуту
ну и не надо переменную именем модуля называть)



0



Dave_

-4 / 26 / 9

Регистрация: 06.03.2015

Сообщений: 209

29.04.2016, 21:22

 [ТС]

7

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
timewaitperem = 16*60
 
def testpost():
    session = vk.AuthSession(scope='wall', app_id='5418092', user_login='login@vk.com', user_password='pass')
    api = vk.API(session)
    postsvol = 0
    while postsvol < 24:
        vol = timewaitperem*postsvol
        times = (time.time()+vol)
        api.wall.post(owner_id='-120437782',message="Test API",publish_date=int(times))
        print("Step: %d - Done" % (postsvol))
        postsvol += 1
testpost()

По времени все нормально, но… ошибка 100



0



Эксперт по компьютерным сетям

5870 / 3333 / 1028

Регистрация: 03.11.2009

Сообщений: 9,957

29.04.2016, 21:44

8

Еще раз говорю — попробуйте time.time()+300 к примеру

Добавлено через 1 минуту
потому, что time.time() —> сервер считает, что в прошлом надо запостить, наверное.



0



Dave_

-4 / 26 / 9

Регистрация: 06.03.2015

Сообщений: 209

29.04.2016, 22:29

 [ТС]

9

Ну так

Python
1
2
vol = 960*1(ид цикла)
times = (time.time()+vol)

Добавлено через 1 минуту
… ошибка в
postsvol = 0 (получается в первом шаге цикла я на 0 умножал)… Правда почему-то получилось только 9 постов, 10 выдал 100 ошибку… ну да ладно, думаю что действительно проблема в тайминге…



0



Эксперт по компьютерным сетям

5870 / 3333 / 1028

Регистрация: 03.11.2009

Сообщений: 9,957

29.04.2016, 22:31

10

Цитата
Сообщение от Dave_
Посмотреть сообщение

postsvol = 0 (получается в первом шаге цикла я на 0 умножал)

да, именно это я и имел ввиду



0



0 / 0 / 0

Регистрация: 27.05.2016

Сообщений: 1

27.05.2016, 23:08

11

Привет.
Столкнулся с множеством проблем с библиотекой vk для python и к сожалению автор видимо слишком занят чтобы поддерживать ее, вообщем сделал fork проекта, у уже внесено множество улучшений и исправлений, большая часть проекта покрыта тестами, добавлены полезные продакшн фичи, например, авто-разрешение конфликтов при входе с неизвестного места (когда деплоимся на aws или где-то не на домашнем лэптопе)
Надеюсь кто-то так же найдет это полезным. Извиняюсь за внимание.
Ссылка на проект: https://github.com/prawn-cake/vk-requests



0



Main Aim = To collect all the posts on a news outlet (Meduza) that mentions the word coronavirus (коронавирус).

Main Question = Why does the VK API method wall.search in my case stop collecting posts before all the available community pages’ posts are collected?

The API call appears to be working okay as it is returning values from current day based on the query string ‘коронавирус’ (coronavirus) however, in this instance always stopping on 17th of January 2021, which is the 977th post collected.

I checked manually on the community VKontakte page and their earliest post about Coronavirus is 9th February 2020, so it should keep collecting posts till then.

What I’ve tried =

  • Changing the time.sleep() to 180 seconds just in case.

  • Using a different VKontakte page: Rossiyskaya Gazeta. The problem was still there as this time it stopped scraping on May 31st, 2021 which was the 1076th post.

  • Using different versions of the API.

import vk_api
from datetime import datetime
import pandas as pd 
import requests
import json 
import time
import csv 
from pandas import DataFrame
from time import sleep


token = " " #won't share but it works
version = 5.103
data_list = []
query_string = 'коронавирус' #coronavirus
owner_id = -76982440
owners = 1 
start_date = 1643673601  
finish_date = 1577836801
url = "https://api.vk.com/method/wall.search"
data = requests.get(url).json()


offset = 0 

for i in range(20):
    r = requests.get('https://api.vk.com/method/wall.search.json', params={
        'access_token':token,
        'v':version,
        'owner_id': owner_id,
        'domain': owner_id,
        'query': query_string,
        'owners_only':owners,
        'count':100,
        'start_date': start_date,
        'finish_date': finish_date,
        'offset':offset
        })
    data_list.append(r.json()['response']['items'])
    try:
        start_from = r.json()['response']['next_from']
    except KeyError:
        pass
    offset+=100
    time.sleep(3)

print("Process Complete")

Main Aim = To collect all the posts on a news outlet (Meduza) that mentions the word coronavirus (коронавирус).

Main Question = Why does the VK API method wall.search in my case stop collecting posts before all the available community pages’ posts are collected?

The API call appears to be working okay as it is returning values from current day based on the query string ‘коронавирус’ (coronavirus) however, in this instance always stopping on 17th of January 2021, which is the 977th post collected.

I checked manually on the community VKontakte page and their earliest post about Coronavirus is 9th February 2020, so it should keep collecting posts till then.

What I’ve tried =

  • Changing the time.sleep() to 180 seconds just in case.

  • Using a different VKontakte page: Rossiyskaya Gazeta. The problem was still there as this time it stopped scraping on May 31st, 2021 which was the 1076th post.

  • Using different versions of the API.

import vk_api
from datetime import datetime
import pandas as pd 
import requests
import json 
import time
import csv 
from pandas import DataFrame
from time import sleep


token = " " #won't share but it works
version = 5.103
data_list = []
query_string = 'коронавирус' #coronavirus
owner_id = -76982440
owners = 1 
start_date = 1643673601  
finish_date = 1577836801
url = "https://api.vk.com/method/wall.search"
data = requests.get(url).json()


offset = 0 

for i in range(20):
    r = requests.get('https://api.vk.com/method/wall.search.json', params={
        'access_token':token,
        'v':version,
        'owner_id': owner_id,
        'domain': owner_id,
        'query': query_string,
        'owners_only':owners,
        'count':100,
        'start_date': start_date,
        'finish_date': finish_date,
        'offset':offset
        })
    data_list.append(r.json()['response']['items'])
    try:
        start_from = r.json()['response']['next_from']
    except KeyError:
        pass
    offset+=100
    time.sleep(3)

print("Process Complete")

Понравилась статья? Поделить с друзьями:
  • Ошибка от провайдера 270
  • Ошибка отправки смс на короткие номера
  • Ошибка от внешней системы псб
  • Ошибка отправки почты outlook 0x800ccc13
  • Ошибка от внешней системы промсвязьбанк