Справочник ошибок и ответов API
При выполнении некорректного запроса к системе наше API может вернуть код ошибки, в случае же верного запроса, API вернёт ответ. Вы, конечно, уже обрабатывали ответ сервера в ходе отладки своих виджетов или написании скриптов, взаимодействующих с нашей системой. Для Вашего удобства, мы решили систематизировать все возможные ответы и ошибки, отдаваемые нашей системой и разместить их на отдельной странице. Надеемся это облегчит и ускорит интеграцию Ваших проектов с amoCRM.
Ошибки при валидации данных
Если переданные данные не совпадают с теми, что доступны для сущности, запрос вернет HTTP-код 400 Bad Request и массив с параметрами, которые не подошли под условия.
Пример ошибки валидации данных
{
"validation-errors": [
{
"request_id": "0",
"errors": [
{
"code": "NotSupportedChoice",
"path": "custom_fields_values.0.field_id",
"detail": "The value you selected is not a valid choice."
}
]
}
],
"title": "Bad Request",
"type": "https://httpstatus.es/400",
"status": 400,
"detail": "Request validation failed"
}
Ответы при авторизации
Подробнее об авторизации читайте здесь
Код | HTTP код | Описание |
---|---|---|
110 | 401 Unauthorized | Общая ошибка авторизации. Неправильный логин или пароль. |
111 | 401 Unauthorized | Возникает после нескольких неудачных попыток авторизации. В этом случае нужно авторизоваться в аккаунте через браузер, введя код капчи. |
112 | 401 Unauthorized | Возникает, когда пользователь выключен в настройках аккаунта “Пользователи и права” или не состоит в аккаунте. |
113 | 403 Forbidden | Доступ к данному аккаунту запрещён с Вашего IP адреса. Возникает, когда в настройках безопасности аккаунта включена фильтрация доступа к API по “белому списку IP адресов”. |
101 | 401 Unauthorized | Возникает в случае запроса к несуществующему аккаунту (субдомену). |
Ответы при работе с контактами
Подробнее о работе с контактами читайте здесь
Код | Описание |
---|---|
202 | Добавление контактов: нет прав |
203 | Добавление контактов: системная ошибка при работе с дополнительными полями |
205 | Добавление контактов: контакт не создан |
212 | Обновление контактов: контакт не обновлён |
219 | Список контактов: ошибка поиска, повторите запрос позднее |
330 | Добавление/Обновление контактов: количество привязанных сделок слишком большое |
Ответы при работе со сделками
Подробнее о работе со сделками читайте здесь
Код | Описание |
---|---|
330 | Добавление/Обновление сделок: количество привязанных контактов слишком большое |
Ответы при работе с событиями
Подробнее о работе с событиями читайте здесь
Код | Описание |
---|---|
244 | Добавление событий: недостаточно прав для добавления события |
225 | Обновление событий: события не найдены |
Ответы при работе с задачами
Подробнее о работе с задачами читайте здесь
Код | Описание |
---|---|
231 | Обновление задач: задачи не найдены |
233 | Добавление событий: по данному ID элемента не найдены некоторые контакты |
234 | Добавление событий: по данному ID элемента не найдены некоторые сделки |
235 | Добавление задач: не указан тип элемента |
236 | Добавление задач: по данному ID элемента не найдены некоторые контакты |
237 | Добавление задач: по данному ID элемента не найдены некоторые сделки |
244 | Добавление сделок: нет прав. |
Ответы при работе со списками
Подробнее о работе со списками читайте здесь
Код | Описание |
---|---|
244 | Добавление/Обновление/Удаление каталогов: нет прав. |
281 | Каталог не удален: внутренняя ошибка |
282 | Каталог не найден в аккаунте. |
Ответы при работе с элементами каталога
Подробнее о работе с элементами каталога читайте здесь
Код | Описание |
---|---|
203 | Добавление/Обновление элементов каталога: системная ошибка при работе с дополнительными полями |
204 | Добавление/Обновление элементов каталога: дополнительное поле не найдено |
244 | Добавление/Обновление/Удаление элементов каталога: нет прав. |
280 | Добавление элементов каталога: элемент создан. |
282 | Элемент не найден в аккаунте. |
Ответы при работе с покупателями
Подробнее о работе с покупателями читайте здесь
Код | Описание |
---|---|
288 | Недостаточно прав. Доступ запрещен. |
402 | Необходимо оплатить функционал |
425 | Функционал недоступен |
426 | Функционал выключен |
Другие ответы
Ошибки и ответы, не относящиеся к какому-либо конкретному разделу
Код | Описание | Примечание |
---|---|---|
400 | Неверная структура массива передаваемых данных, либо не верные идентификаторы кастомных полей | |
422 | Входящие данные не мог быть обработаны. | |
405 | Запрашиваемый HTTP-метод не поддерживается | |
402 | Подписка закончилась | Вместе с этим ответом отдаётся HTTP код №402 “Payment Required” |
403 | Аккаунт заблокирован, за неоднократное превышение количества запросов в секунду | Вместе с этим ответом отдаётся HTTP код №403 |
429 | Превышено допустимое количество запросов в секунду | Вместе с этим ответом отдаётся HTTP код №429 |
2002 | По вашему запросу ничего не найдено | Вместе с этим ответом отдаётся HTTP код №204 “No Content” |
Справочник ошибок и ответов API
При выполнении некорректного запроса к системе наше API может вернуть код ошибки, в случае же верного запроса, API вернёт ответ. Вы, конечно, уже обрабатывали ответ сервера в ходе отладки своих виджетов или написании скриптов, взаимодействующих с нашей системой. Для Вашего удобства, мы решили систематизировать все возможные ответы и ошибки, отдаваемые нашей системой и разместить их на отдельной странице. Надеемся это облегчит и ускорит интеграцию Ваших проектов с amoCRM.
Ошибки при валидации данных
Если переданные данные не совпадают с теми, что доступны для сущности, запрос вернет HTTP-код 400 Bad Request и массив с параметрами, которые не подошли под условия.
Пример ошибки валидации данных
{
"validation-errors": [
{
"request_id": "0",
"errors": [
{
"code": "NotSupportedChoice",
"path": "custom_fields_values.0.field_id",
"detail": "The value you selected is not a valid choice."
}
]
}
],
"title": "Bad Request",
"type": "https://httpstatus.es/400",
"status": 400,
"detail": "Request validation failed"
}
Ответы при авторизации
Подробнее об авторизации читайте здесь
Код | HTTP код | Описание |
---|---|---|
110 | 401 Unauthorized | Общая ошибка авторизации. Неправильный логин или пароль. |
111 | 401 Unauthorized | Возникает после нескольких неудачных попыток авторизации. В этом случае нужно авторизоваться в аккаунте через браузер, введя код капчи. |
112 | 401 Unauthorized | Возникает, когда пользователь выключен в настройках аккаунта “Пользователи и права” или не состоит в аккаунте. |
113 | 403 Forbidden | Доступ к данному аккаунту запрещён с Вашего IP адреса. Возникает, когда в настройках безопасности аккаунта включена фильтрация доступа к API по “белому списку IP адресов”. |
101 | 401 Unauthorized | Возникает в случае запроса к несуществующему аккаунту (субдомену). |
Ответы при работе с контактами
Подробнее о работе с контактами читайте здесь
Код | Описание |
---|---|
202 | Добавление контактов: нет прав |
203 | Добавление контактов: системная ошибка при работе с дополнительными полями |
205 | Добавление контактов: контакт не создан |
212 | Обновление контактов: контакт не обновлён |
219 | Список контактов: ошибка поиска, повторите запрос позднее |
330 | Добавление/Обновление контактов: количество привязанных сделок слишком большое |
Ответы при работе со сделками
Подробнее о работе со сделками читайте здесь
Код | Описание |
---|---|
330 | Добавление/Обновление сделок: количество привязанных контактов слишком большое |
Ответы при работе с событиями
Подробнее о работе с событиями читайте здесь
Код | Описание |
---|---|
244 | Добавление событий: недостаточно прав для добавления события |
225 | Обновление событий: события не найдены |
Ответы при работе с задачами
Подробнее о работе с задачами читайте здесь
Код | Описание |
---|---|
231 | Обновление задач: задачи не найдены |
233 | Добавление событий: по данному ID элемента не найдены некоторые контакты |
234 | Добавление событий: по данному ID элемента не найдены некоторые сделки |
235 | Добавление задач: не указан тип элемента |
236 | Добавление задач: по данному ID элемента не найдены некоторые контакты |
237 | Добавление задач: по данному ID элемента не найдены некоторые сделки |
244 | Добавление сделок: нет прав. |
Ответы при работе со списками
Подробнее о работе со списками читайте здесь
Код | Описание |
---|---|
244 | Добавление/Обновление/Удаление каталогов: нет прав. |
281 | Каталог не удален: внутренняя ошибка |
282 | Каталог не найден в аккаунте. |
Ответы при работе с элементами каталога
Подробнее о работе с элементами каталога читайте здесь
Код | Описание |
---|---|
203 | Добавление/Обновление элементов каталога: системная ошибка при работе с дополнительными полями |
204 | Добавление/Обновление элементов каталога: дополнительное поле не найдено |
244 | Добавление/Обновление/Удаление элементов каталога: нет прав. |
280 | Добавление элементов каталога: элемент создан. |
282 | Элемент не найден в аккаунте. |
Ответы при работе с покупателями
Подробнее о работе с покупателями читайте здесь
Код | Описание |
---|---|
288 | Недостаточно прав. Доступ запрещен. |
402 | Необходимо оплатить функционал |
425 | Функционал недоступен |
426 | Функционал выключен |
Другие ответы
Ошибки и ответы, не относящиеся к какому-либо конкретному разделу
Код | Описание | Примечание |
---|---|---|
400 | Неверная структура массива передаваемых данных, либо не верные идентификаторы кастомных полей | |
422 | Входящие данные не мог быть обработаны. | |
405 | Запрашиваемый HTTP-метод не поддерживается | |
402 | Подписка закончилась | Вместе с этим ответом отдаётся HTTP код №402 “Payment Required” |
403 | Аккаунт заблокирован, за неоднократное превышение количества запросов в секунду | Вместе с этим ответом отдаётся HTTP код №403 |
429 | Превышено допустимое количество запросов в секунду | Вместе с этим ответом отдаётся HTTP код №429 |
2002 | По вашему запросу ничего не найдено | Вместе с этим ответом отдаётся HTTP код №204 “No Content” |
|
|||
ArturDoo
07.05.21 — 11:25 |
Как работает HTTPСоединение? Читал СП, там ничего дельного. Создаю соединение: Соединение = Новый HTTPСоединение(ПараметрыПодключения[Перечисления.ns_ВидыНастроекCRM.Subdomain],,ПараметрыПодключения[Перечисления.ns_ВидыНастроекCRM.USER_LOGIN],ПараметрыПодключения[Перечисления.ns_ВидыНастроекCRM.USER_PASSWORD],,, SSL); И отправляю запрос: HTTPЗапрос=Новый HTTPЗапрос(«/api/v4/contacts»); Ответ=Соединение.ВызватьHTTPМетод(«GET»,HTTPЗапрос); Выдаёт 401 ошибку |
||
Kassern
1 — 07.05.21 — 11:38 |
(0) я же тебе написал в прошлой ветке, что надо сделать |
||
Kassern
2 — 07.05.21 — 11:38 |
(1) передай в заголовках твой эксес токен |
||
ArturDoo
3 — 07.05.21 — 12:07 |
Обновлен ключ сессии, повторите запрос. Код состояния = 401 { «detail»: «Неверный логин или пароль», «status»: 401, «type»: «https://httpstatus.es/401», «title»: «Unauthorized» } написал так : ЗначениеAccessToken = ПараметрыПодключения[Перечисления.ns_ВидыНастроекCRM.AccessToken]; AccessToken = Новый Соответствие; AccessToken.Вставить(AccessToken, ЗначениеAccessToken); HTTPЗапрос=Новый HTTPЗапрос(«/api/v4/contacts»,AccessToken);//Заголвки указать если нужно Ответ=Соединение.ВызватьHTTPМетод(«GET»,HTTPЗапрос); |
||
Kassern
4 — 07.05.21 — 12:10 |
(3) AccessToken.Вставить(AccessToken, ЗначениеAccessToken); это как так то? ты в ключ пихаешь соответствие. И где ты прочитал в апишке, что ключ должен называться «AccessToken»? Я же тебе даже скинул в прошлой ветке какой ключ тебе нужен. |
||
ArturDoo
5 — 07.05.21 — 12:20 |
(4)Вод документация по контрагентам, там ни слова про атокен https://www.amocrm.com/developers/content/api_v4/contacts-api/ Куда его пихать? |
||
Kassern
6 — 07.05.21 — 12:32 |
(5) Наверное надо прочитать то, что до этого написано, например как работать по шагам и особенно обратить внимание на 5 шаг. А то что вы скинули, это уже после того, как получили токен и передали его в заголовки. https://www.amocrm.ru/developers/content/oauth/step-by-step |
||
Kassern
7 — 07.05.21 — 12:33 |
(5) откройте уже предыдущую тему и прочтите, что я вам написал |
||
Kassern
8 — 07.05.21 — 12:35 |
(7) Все же по русски написано: C помощью полученного Access токена вы можете легко делать запросы к API приложения. Для этого потребуется немного изменить запросы, которые сейчас делаются к API. Вам не нужно больше отправлять куки-файлы с каждым запросом, а также авторизовываться с параметрами USER_LOGIN и USER_HASH, вместо этого необходимо добавить заголовок Authorization: Bearer {access токен}. И даже пример есть на php: $headers = [ ‘Authorization: Bearer ‘ . $access_token ]; |
||
Kassern 9 — 07.05.21 — 12:37 |
(8) такое ощущение, что не вы писали аунтификацию для этого ресурса, а работаете с чьим что куском кода и пытаетесь его заставить работать на нужные вам методы. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
При выполнении некорректного запроса к системе наше API может вернуть код ошибки, в случае же верного запроса, API вернёт ответ.
Вы, конечно, уже обрабатывали ответ сервера в ходе отладки своих виджетов или написании скриптов, взаимодействующих с нашей системой.
Для Вашего удобства, мы решили систематизировать все возможные ответы и ошибки, отдаваемые нашей системой и разместить их на отдельной странице.
Надеемся это облегчит и ускорит интеграцию Ваших проектов с amoCRM.
Ответы при авторизации
Подробнее об авторизации читайте здесь
CODE | HTTP CODE | ERROR | DESCRIPTION |
---|---|---|---|
110 | 401 Unauthorized | Неправильный логин или пароль | Общая ошибка авторизации. |
111 | 401 Unauthorized | Неправильный код капчи |
Возникает после нескольких неудачных попыток авторизации. В этом случае нужно авторизоваться в аккаунте через браузер, введя код капчи. |
112 | 401 Unauthorized | Пользователь не состоит в данном аккаунте |
Возникает, когда пользователь выключен в настройках аккаунта «Пользователи и права» или не состоит в аккаунте. |
113 | 403 Forbidden | Доступ к данному аккаунту запрещён с Вашего IP адреса |
Возникает, когда в настройках безопасности аккаунта включена фильтрация доступа к API по «белому списку IP адресов». |
101 | 401 Unauthorized | Account not found | Возникает в случае запроса к несуществующему аккаунту (субдомену). |
401 | 401 Not Authorized | 401 Unauthorized | На сервере нет данных аккаунта. Нужно сделать запрос на другой сервер по переданному IP. |
Ответы при работе с аккаунтом
Подробнее о работе с аккаунтом читайте здесь
CODE | DESCRIPTION |
---|---|
101 | Аккаунт не найден |
102 | POST-параметры должны передаваться в формате JSON |
103 | Параметры не переданы |
104 | Запрашиваемый метод API не найден |
Ответы при работе с контактами
Подробнее о работе с контактами читайте здесь
CODE | DESCRIPTION |
---|---|
201 | Добавление контактов: пустой массив |
202 | Добавление контактов: нет прав |
203 | Добавление контактов: системная ошибка при работе с дополнительными полями |
204 | Добавление контактов: дополнительное поле не найдено |
205 | Добавление контактов: контакт не создан |
206 | Добавление/Обновление контактов: пустой запрос |
207 | Добавление/Обновление контактов: неверный запрашиваемый метод |
208 | Обновление контактов: пустой массив |
209 | Обновление контактов: требуются параметры «id» и «last_modified» |
210 | Обновление контактов: системная ошибка при работе с дополнительными полями |
211 | Обновление контактов: дополнительное поле не найдено |
212 | Обновление контактов: контакт не обновлён |
219 | Список контактов: ошибка поиска, повторите запрос позднее |
Ответы при работе со сделками
Подробнее о работе со сделками читайте здесь
CODE | DESCRIPTION |
---|---|
213 | Добавление сделок: пустой массив |
214 | Добавление/Обновление сделок: пустой запрос |
215 | Добавление/Обновление сделок: неверный запрашиваемый метод |
216 | Обновление сделок: пустой массив |
217 | Обновление сделок: требуются параметры «id», «last_modified», «status_id», «name» |
240 | Добавление/Обновление сделок: неверный параметр «id» дополнительного поля |
Ответы при работе с событиями
Подробнее о работе с событиями читайте здесь
CODE | DESCRIPTION |
---|---|
218 | Добавление событий: пустой массив |
221 | Список событий: требуется тип |
222 | Добавление/Обновление событий: пустой запрос |
223 | Добавление/Обновление событий: неверный запрашиваемый метод (GET вместо POST) |
224 | Обновление событий: пустой массив |
225 | Обновление событий: события не найдены |
Ответы при работе с задачами
Подробнее о работе с задачами читайте здесь
CODE | DESCRIPTION |
---|---|
227 | Добавление задач: пустой массив |
228 | Добавление/Обновление задач: пустой запрос |
229 | Добавление/Обновление задач: неверный запрашиваемый метод |
230 | Обновление задач: пустой массив |
231 | Обновление задач: задачи не найдены |
232 | Добавление событий: ID элемента или тип элемента пустые либо неккоректные |
233 | Добавление событий: по данному ID элемента не найдены некоторые контакты |
234 | Добавление событий: по данному ID элемента не найдены некоторые сделки |
235 | Добавление задач: не указан тип элемента |
236 | Добавление задач: по данному ID элемента не найдены некоторые контакты |
237 | Добавление задач: по данному ID элемента не найдены некоторые сделки |
238 | Добавление контактов: отсутствует значение для дополнительного поля |
244 | Добавление сделок: нет прав. |
Другие ответы
Ошибки и ответы, не относящиеся к какому-либо конкретному разделу
CODE | DESCRIPTION | NOTE |
---|---|---|
400 | Неверная структура массива передаваемых данных, либо не верные идентификаторы кастомных полей | |
403 | Аккаунт заблокирован, за неоднократное превышение количества запросов в секунду | Вместе с этим ответом отдаётся HTTP код №403 |
429 | Превышено допустимое количество запросов в секунду | Вместе с этим ответом отдаётся HTTP код №429 |
2002 | По вашему запросу ничего не найдено | Вместе с этим ответом отдаётся HTTP код №204 «No Content» |
List of API error and API responses
When an incorrect request to the system is executed, our API can return an error code, in the case of the correct query, the API will return a response. You, of course, have already processed the server’s response while debugging your widgets or writing scripts interacting with our system. For your convenience, we decided to systematize all possible answers and errors, given by our system and place them on a separate page. We hope this will facilitate and accelerate the integration of your projects with Kommo.
Responses during authorization
Read more about authorization here
Error code | HTTP code | Description |
---|---|---|
110 | 401 Unauthorized | General authorization error. Incorrect login or password. |
111 | 401 Unauthorized | Occurs after several unsuccessful authorization attempts. In this case, you need to log in to your account through the browser by entering the captcha code. |
112 | 401 Unauthorized | Occurs when the user is turned off in the “Users and Rights” account settings or is not in the account. |
113 | 403 Forbidden | Access to this account is prohibited from your IP address. Occurs when the filtering of access to the API by the “whitelist of IP addresses” is enabled in the account security settings. |
101 | 401 Unauthorized | Occurs in the case of a request to a non-existent account (subdomain). |
401 | 401 Unauthorized | Not Authorized. There is no account information on the server. You need to make a request to another server on the transmitted IP. |
Responses while working with your account
For more information about working with your account, click here
Code | Description |
---|---|
101 | No account found |
102 | POST parameters must be sent in JSON format |
103 | Parameters not passed |
104 | The requested API method was not found |
Responses when working with contacts
For more information about working with contacts, click here.
Code | Description |
---|---|
201 | Adding Contacts: An Empty Array |
202 | Adding contacts: no rights |
203 | Adding contacts: system error when working with additional fields |
204 | Adding contacts: additional field not found |
205 | Adding contacts: no contact created |
206 | Add / Update contacts: empty query |
207 | Adding / Updating contacts: invalid method requested |
208 | Updating contacts: an empty array |
209 | Updating contacts: “id” and “updated_at” parameters are required |
210 | Updating contacts: system error when working with additional fields |
211 | Updating contacts: additional field not found |
212 | Updating contacts: contact not updated |
219 | Contact list: Search error, retry the request later |
Response when dealing with lead
More information about dealing with lead read here
Code | Description |
---|---|
213 | Adding Leads: An Empty Array |
214 | Adding / Updating deals: empty request |
215 | Adding / Updating leads: invalid method requested |
216 | Updating leads: empty array |
217 | Updating leads: the parameters “id”, “updated_at”, “status_id”, “name” ‘are required |
240 | Adding / Updating leads: invalid parameter “id” of an additional field |
Responses when working with events
Read more about working with events here
Code | Description |
---|---|
218 | Adding events: empty array |
221 | Event list: type required |
226 | Adding events: an event element of this entity could not be found |
244 | Adding events: insufficient rights to add an event |
222 | Adding / Updating Events: Empty request |
223 | Add / Update events: invalid method requested (GET instead of POST) |
224 | Event update: empty array |
225 | Event updates: no events found |
Responses when working with tasks
Read more about working with tasks here
Code | Description |
---|---|
227 | Adding Tasks: An Empty Array |
228 | Add / Update tasks: empty query |
229 | Adding / Updating Tasks: Invalid Method Requested |
230 | Updating tasks: an empty array |
231 | Update tasks: No tasks found |
232 | Adding events: The item ID or item type is empty or not valid |
233 | Adding events: some contacts have not been found for this item ID |
234 | Adding events: some transactions have not been found for this item ID |
235 | Adding Tasks: no element type specified |
236 | Adding Tasks: No contacts found for this Item ID |
237 | Adding Tasks: Some transactions were not found for this Item ID |
238 | Adding contacts: Missing value for additional field |
244 | Adding transactions: no rights. |
Responses when working with directories
Read more about working with directories here.
Code | Description |
---|---|
405 | Request Transfer Method Invalid |
222 | Adding / Updating / Deleting directories: an empty query |
244 | Adding / Updating / Deleting directories: No permissions. |
281 | Directory not deleted: internal error |
282 | The directory was not found in the account. |
283 | Invalid request, data not sent. |
284 | Invalid request, no array sent. |
285 | Required field not passed. |
Responses when working with directory elements
For more information about working with directory elements, see here
Code | Description |
---|---|
405 | Request Transfer Method is Invalid |
203 | Adding / Updating Directory Items: System Error with Custom Fields |
204 | Adding / Updating Directory Items: An additional field was not found |
222 | Adding / Updating / Deleting directory items: an empty request |
244 | Adding / Updating / Deleting directory items: insufficient rights |
280 | Adding directory items: element created. |
282 | Item not found in account. |
283 | Invalid request, data not sent. |
284 | Invalid request, no array passed. |
285 | Required field not submitted. |
Responses when working with customers
For more information about working with customers, see here
Code | Description |
---|---|
288 | Insufficient rights. Access is denied. |
402 | It is necessary to pay for the functional. |
425 | Functionality is not available. |
426 | Functionality is disabled. |
Other Responses
Errors and responses that do not relate to any particular section
Code | Description | Note |
---|---|---|
400 | Wrong structure of the array of transmitted data, or invalid identifiers of custom fields | |
402 | Subscription has ended | With this reply, you receive a HTTP code #402 “Payment Required” |
403 | The account is blocked, for repeatedly exceeding the number of requests per second. | Together with this response, HTTP code #403 |
429 | The number of requests per second exceeded | With the response, the HTTP code #429 is sent |
2002 | There are no results for your search | At the same time HTTP code #204 “No Content” is given with this response. |
Появление сообщения об ошибке 401 Unauthorized Error («отказ в доступе») при открытии страницы сайта означает неверную авторизацию или аутентификацию пользователя на стороне сервера при обращении к определенному url-адресу. Чаще всего она возникает при ошибочном вводе имени и/или пароля посетителем ресурса при входе в свой аккаунт. Другой причиной являются неправильные настройки, допущенные при администрировании web-ресурса. Данная ошибка отображается в браузере в виде отдельной страницы с соответствующим описанием. Некоторые разработчики интернет-ресурсов, в особенности крупных порталов, вводят собственную дополнительную кодировку данного сбоя:
- 401 Unauthorized;
- Authorization Required;
- HTTP Error 401 – Ошибка авторизации.
Попробуем разобраться с наиболее распространенными причинами возникновения данной ошибки кода HTTP-соединения и обсудим способы их решения.
При доступе к некоторым сайтам (или отдельным страницам этих сайтов), посетитель должен пройти определенные этапы получения прав:
- Идентификация – получение вашей учетной записи («identity») по username/login или email.
- Аутентификация («authentic») – проверка того, что вы знаете пароль от этой учетной записи.
- Авторизация – проверка вашей роли (статуса) в системе и решение о предоставлении доступа к запрошенной странице или ресурсу на определенных условиях.
Большинство пользователей сохраняют свои данные по умолчанию в истории браузеров, что позволяет быстро идентифицироваться на наиболее часто посещаемых страницах и синхронизировать настройки между устройствами. Данный способ удобен для серфинга в интернете, но может привести к проблемам с безопасностью доступа к конфиденциальной информации. При наличии большого количества авторизованных регистрационных данных к различным сайтам используйте надежный мастер-пароль, который закрывает доступ к сохраненной в браузере информации.
Наиболее распространенной причиной появления ошибки с кодом 401 для рядового пользователя является ввод неверных данных при посещении определенного ресурса. В этом и других случаях нужно попробовать сделать следующее:
- Проверьте в адресной строке правильность написания URL. Особенно это касается перехода на подстраницы сайта, требующие авторизации. Введите правильный адрес. Если переход на страницу осуществлялся после входа в аккаунт, разлогинитесь, вернитесь на главную страницу и произведите повторный вход с правильными учетными данными.
- При осуществлении входа с сохраненными данными пользователя и появлении ошибки сервера 401 проверьте их корректность в соответствующих настройках данного браузера. Возможно, авторизационные данные были вами изменены в другом браузере. Также можно очистить кэш, удалить cookies и повторить попытку входа. При удалении истории браузера или очистке кэша потребуется ручное введение логина и пароля для получения доступа. Если вы не помните пароль, пройдите процедуру восстановления, следуя инструкциям.
- Если вы считаете, что вводите правильные регистрационные данные, но не можете получить доступ к сайту, обратитесь к администратору ресурса. В этом случае лучше всего сделать скриншот проблемной страницы.
- Иногда блокировка происходит на стороне провайдера, что тоже приводит к отказу в доступе и появлению сообщения с кодировкой 401. Для проверки можно попробовать авторизоваться на том же ресурсе с альтернативного ip-адреса (например, используя VPN). При подтверждении блокировки трафика свяжитесь с провайдером и следуйте его инструкциям.
Некоторые крупные интернет-ресурсы с большим количеством подписчиков используют дополнительные настройки для обеспечения безопасности доступа. К примеру, ваш аккаунт может быть заблокирован при многократных попытках неудачной авторизации. Слишком частые попытки законнектиться могут быть восприняты как действия бота. В этом случае вы увидите соответствующее сообщение, но можете быть просто переадресованы на страницу с кодом 401. Свяжитесь с администратором сайта и решите проблему.
Иногда простая перезагрузка проблемной страницы, выход из текущей сессии или использование другого веб-браузера полностью решают проблему с 401 ошибкой авторизации.
Устранение ошибки 401 администратором веб-ресурса
Для владельцев сайтов, столкнувшихся с появлением ошибки отказа доступа 401, решить ее порою намного сложнее, чем обычному посетителю ресурса. Есть несколько рекомендаций, которые помогут в этом:
- Обращение в службу поддержки хостинга сайта. Как и в случае возникновения проблем с провайдером, лучше всего подробно описать последовательность действий, приведших к появлению ошибки 401, приложить скриншот.
- При отсутствии проблем на стороне хостинг-провайдера можно внести следующие изменения в настройки сайта с помощью строки Disallow:/адрес проблемной страницы. Запретить индексацию страницам с ошибкой в «rоbоts.txt», после чего добавить в файл «.htассеss» строку такого типа:
Redirect 301 /oldpage.html http://site.com/newpage.html.
Где в поле /oldpage.html прописывается адрес проблемной страницы, а в http://site.com/newpage.html адрес страницы авторизации.
Таким образом вы перенаправите пользователей со всех страниц, которые выдают ошибку 401, на страницу начальной авторизации.
- Если после выполнения предыдущих рекомендаций пользователи при попытках авторизации все равно видят ошибку 401, то найдите на сервере файл «php.ini» и увеличьте время жизни сессии, изменив значения следующих параметров: «session.gc_maxlifetime» и «session.cookie_lifetime» на 1440 и 0 соответственно.
- Разработчики веб-ресурсов могут использовать более сложные методы авторизации и аутентификации доступа для создания дополнительной защиты по протоколу HTTP. Если устранить сбой простыми методами администрирования не удается, следует обратиться к специалистам, создававшим сайт, для внесения соответствующих изменений в код.
Хотя ошибка 401 и является проблемой на стороне клиента, ошибка пользователя на стороне сервера может привести к ложному требованию входа в систему. К примеру, сетевой администратор разрешит аутентификацию входа в систему всем пользователям, даже если это не требуется. В таком случае сообщение о несанкционированном доступе будет отображаться для всех, кто посещает сайт. Баг устраняется внесением соответствующих изменений в настройки.
Дополнительная информация об ошибке с кодом 401
Веб-серверы под управлением Microsoft IIS могут предоставить дополнительные данные об ошибке 401 Unauthorized в виде второго ряда цифр:
- 401, 1 – войти не удалось;
- 401, 2 – ошибка входа в систему из-за конфигурации сервера;
- 401, 3 – несанкционированный доступ из-за ACL на ресурс;
- 401, 501 – доступ запрещен: слишком много запросов с одного и того же клиентского IP; ограничение динамического IP-адреса – достигнут предел одновременных запросов и т.д.
Более подробную информацию об ошибке сервера 401 при использовании обычной проверки подлинности для подключения к веб-узлу, который размещен в службе MS IIS, смотрите здесь.
Следующие сообщения также являются ошибками на стороне клиента и относятся к 401 ошибке:
- 400 Bad Request;
- 403 Forbidden;
- 404 Not Found;
- 408 Request Timeout.
Как видим, появление ошибки авторизации 401 Unauthorized не является критичным для рядового посетителя сайта и чаще всего устраняется самыми простыми способами. В более сложной ситуации оказываются администраторы и владельцы интернет-ресурсов, но и они в 100% случаев разберутся с данным багом путем изменения настроек или корректировки html-кода с привлечением разработчика сайта.
Всем привет сегодня я вам покажу готовые скрипты которые я использую для передачи значений из формы обратной связи в amoCRM через API данного сервиса. Мы рассмотрим скрипт для создания сделок с прязкой контактов.
Каждый тип запроса я разбил по функциям, а полное подключение выложил в отдельную функцию, в самом конце. На данный момент, на 2020 год, эта реализация отрабатывает без каких либо ошибок.
Для того чтобы подключить ваш проект к amoCRM нужно сделать следующие действия:
1) Создать аккаунт на amoCRM
2) После этого переходим в Настройки и создаем новую интеграцию. Во время создания интеграции вам нужно указать адрес вашего сайта, предоставить все доступы для данной интеграции после чего сохранить.
3) После создания интеграции, переходим во вкладку «Ключи и доступы» — эти данные нам понадобятся для авторизации нашей интеграции. Мы не будем их использовать при каждом запросе, но переодически они нам будут нужны.
Внимание!!! Код авторизации обновляется каждые 20 мин, а значит если вы его скопируете за пару минут до обновления, вы можете не успеть сделать запрос и у вас выведется ошибка. Если у вас появилась ошибка связанная с авторизацией, то просто попробуйте заново копировать данные.
Теперь вам нужно создать PHP файл и в нем мы будем создавать подключение к нашей CRM системе.
Все примеры запросов есть в официальной документации CRM — https://www.amocrm.ru/developers/content/crm_platform/api-reference
Авторизация интеграции
Первый запрос нам нужно сделать на авторизацию созданной интеграции. Для своей задачи я использовал «Упрощённую систему авторизации» — https://www.amocrm.ru/developers/content/oauth/step-by-step#easy_auth
Для начала нам нужно выполнить запрос на авторизацию, код написан ниже. Для запроса я буду использовать библиотеку CURL.
$subdomain = 'test'; //Поддомен нужного аккаунта
$link = 'https://' . $subdomain . '.amocrm.ru/oauth2/access_token'; //Формируем URL для запроса
/* Соберем данные для запроса */
$data = [
'client_id' => 'xxxx', // id нашей интеграции
'client_secret' => 'xxxxxx', // секретный ключ нашей интеграции
'grant_type' => 'authorization_code',
'code' => 'xxxxxxx', // код авторизации нашей интеграции
'redirect_uri' => 'https://domain.ru/test.php',// домен сайта нашей интеграции
];
/**
* Нам необходимо инициировать запрос к серверу.
* Воспользуемся библиотекой cURL (поставляется в составе PHP).
* Вы также можете использовать и кроссплатформенную программу cURL, если вы не программируете на PHP.
*/
$curl = curl_init(); //Сохраняем дескриптор сеанса cURL
/** Устанавливаем необходимые опции для сеанса cURL */
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0');
curl_setopt($curl,CURLOPT_URL, $link);
curl_setopt($curl,CURLOPT_HTTPHEADER,['Content-Type:application/json']);
curl_setopt($curl,CURLOPT_HEADER, false);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
$out = curl_exec($curl); //Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
/** Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
$code = (int)$code;
// коды возможных ошибок
$errors = [
400 => 'Bad request',
401 => 'Unauthorized',
403 => 'Forbidden',
404 => 'Not found',
500 => 'Internal server error',
502 => 'Bad gateway',
503 => 'Service unavailable',
];
try
{
/** Если код ответа не успешный - возвращаем сообщение об ошибке */
if ($code < 200 || $code > 204) {
throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undefined error', $code);
}
}
catch(Exception $e)
{
die('Ошибка: ' . $e->getMessage() . PHP_EOL . 'Код ошибки: ' . $e->getCode());
}
/**
* Данные получаем в формате JSON, поэтому, для получения читаемых данных,
* нам придётся перевести ответ в формат, понятный PHP
*/
$response = json_decode($out, true);
/* массив со всеми необходимыми данными, его вам нужно будет сохранить в файле или в БД, чтобы при каждом запросе получать токен */
$arrParamsAmo = [
"access_token" => $response['access_token'],
"refresh_token" => $response['refresh_token'],
"token_type" => $response['token_type'],
"expires_in" => $response['expires_in'],
"endTokenTime" => $response['expires_in'] + time(),
];
$arrParamsAmo = json_encode($arrParamsAmo);
// выведем наши токены. Скопируйте их для дальнейшего использования
// access_token будет использоваться для каждого запроса как идентификатор интеграции
var_dump($arrParamsAmo);
Следующим запросом мы уже можем создавать наши контакты и сделки используя для авторизации наш токен.
Входные параметры
Для начала нужно подготовить массив с параметрами с удобным представлением. Для своей задачи я сделал следующий массив. Здесь перечислены основные переменные для запроса, у вас возможно будут свои данные, в дальнейшем вам просто нужно будет переделать функцию под себя.
Ключ CONTACT перечисляет данные для создания контакта. На последним этапе я делаю проверку, что если массив CONTACT пустой, то пользователь не создается, это сделано для форм в которых не указывается имя пользователя.
$arrContactParams = [
// поля для сделки
"PRODUCT" => [
"nameForm" => "Название формы",
"nameProduct" => "Название товара",
"price" => "Цена",
"descProduct" => "Описание заказа",
"namePerson" => "Имя пользователя",
"phonePerson" => "Телефон",
"emailPerson" => "Email пользователя",
"messagePerson" => "Сообщение от пользователя",
],
// поля для контакта
"CONTACT" => [
"namePerson" => "Имя пользователя",
"phonePerson" => "Телефон",
"emailPerson" => "Email пользователя",
"messagePerson" => "Сообщение от пользователя",
]
];
Создание контакта
Типичная ошибка при создание контакта, это нарушение структуры массива для запроса, поэтому внимательно создавайте массив для запроса. Ранее созданный массив с данными полей, мы передаем в функцию amoAddContact, где создается специальный массив для запроса.
Скажу сразу что я не понял как передавать значения для стандартных полей amoCRM типа телефон, email и прочих, поэтому я создал свои кастомные поля и уже в них передаю необходимые данные.
Каждое поле в запросе оборачивается в отдельный массив где id — это идентификатор поля, который вы можете получить следующим образом.
function amoAddContact($access_token, $arrContactParams) {
$contacts['request']['contacts']['add'] = array(
[
'name' => $arrContactParams["CONTACT"]["namePerson"],
'tags' => 'авто отправка',
'custom_fields' => [
// ИМЯ ПОЛЬЗОВАТЕЛЯ
[
'id' => 518661,
"values" => [
[
"value" => $arrContactParams["CONTACT"]["namePerson"],
]
]
],
// ТЕЛЕФОН
[
'id' => 518139,
"values" => [
[
"value" => $arrContactParams["CONTACT"]["phonePerson"],
]
]
],
// EMAIL
[
'id' => 518595,
"values" => [
[
"value" => $arrContactParams["CONTACT"]["emailPerson"],
]
]
],
// СООБЩЕНИЕ
[
'id' => 532695,
"values" => [
[
"value" => $arrContactParams["CONTACT"]["messagePerson"],
]
]
]
]
]
);
/* Формируем заголовки */
$headers = [
"Accept: application/json",
'Authorization: Bearer ' . $access_token
];
$link='https://test.amocrm.ru/private/api/v2/json/contacts/set';
$curl = curl_init(); //Сохраняем дескриптор сеанса cURL
/** Устанавливаем необходимые опции для сеанса cURL */
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0');
curl_setopt($curl,CURLOPT_URL, $link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($contacts));
curl_setopt($curl,CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl,CURLOPT_HEADER, false);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);
$Response=json_decode($out,true);
$account=$Response['response']['account'];
echo '<b>Данные о пользователе:</b>'; echo '<pre>'; print_r($Response); echo '</pre>';
return $Response["response"]["contacts"]["add"]["0"]["id"];
}
Функция amoAddContact возвращает id созданного контакта, которого мы будем привязывать к новой сделки.
Добавляем сделку
Сделка добавляется аналогично, в функцию передается токен и массив с параметрами + передается третий параметр contactId в котором указывается id контакта для привязки.
function amoAddTask($access_token, $arrContactParams, $contactId = false) {
$arrTaskParams = [
'add' => [
0 => [
'name' => $arrContactParams["PRODUCT"]["nameForm"],
'price' => $arrContactParams["PRODUCT"]["price"],
'pipeline_id' => '9168',
'tags' => [
'авто отправка',
$arrContactParams["PRODUCT"]["nameForm"]
],
'status_id' => '10937736',
'custom_fields' => [
/* ОПИСАНИЕ ЗАКАЗА */
[
'id' => 531865,
"values" => [
[
"value" => $arrContactParams["PRODUCT"]["descProduct"],
]
]
],
/* ИМЯ ПОЛЬЗОВАТЕЛЯ */
[
'id' => 525741,
"values" => [
[
"value" => $arrContactParams["PRODUCT"]["namePerson"],
]
]
],
/* ТЕЛЕФОН */
[
'id' => 525687,
"values" => [
[
"value" => $arrContactParams["PRODUCT"]["phonePerson"],
]
]
],
/* EMAIL */
[
'id' => 525739,
"values" => [
[
"value" => $arrContactParams["PRODUCT"]["emailPerson"],
]
]
],
/* СООБЩЕНИЕ */
[
'id' => 528257,
"values" => [
[
"value" => $arrContactParams["PRODUCT"]["messagePerson"],
]
]
],
],
'contacts_id' => [
0 => $contactId,
],
],
],
];
$link = "https://test.amocrm.ru/api/v2/leads";
$headers = [
"Accept: application/json",
'Authorization: Bearer ' . $access_token
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_USERAGENT, "amoCRM-API-client-
undefined/2.0");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($arrTaskParams));
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__)."/cookie.txt");
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__)."/cookie.txt");
$out = curl_exec($curl);
curl_close($curl);
$result = json_decode($out,TRUE);
}
Сложность работы с amoCRM в том что у них access_token действует только сутки, по истечению времени он становится не рабочим и для того чтобы получить новый токен access_token вам нужно сделать запрос, передав refresh_token и вы получите новый access_token и refresh_token.
Нужно эти данные где то записать, чтобы можно было их использовать вновь на следующий день.
Для этого я сделал специальную функцию которая будет проверять актуальность токена и делать новый запрос если это необходимо.
Значения токенов будут сохраняться в файле в JSON формате.
/* в эту функцию мы передаём текущий refresh_token */
function returnNewToken($token) {
$link = 'https://test.amocrm.ru/oauth2/access_token'; //Формируем URL для запроса
/** Соберем данные для запроса */
$data = [
'client_id' => 'xxxxx',
'client_secret' => 'xxxxx',
'grant_type' => 'refresh_token',
'refresh_token' => $token,
'redirect_uri' => 'https://test.ru/',
];
/**
* Нам необходимо инициировать запрос к серверу.
* Воспользуемся библиотекой cURL (поставляется в составе PHP).
* Вы также можете использовать и кроссплатформенную программу cURL, если вы не программируете на PHP.
*/
$curl = curl_init(); //Сохраняем дескриптор сеанса cURL
/** Устанавливаем необходимые опции для сеанса cURL */
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0');
curl_setopt($curl,CURLOPT_URL, $link);
curl_setopt($curl,CURLOPT_HTTPHEADER,['Content-Type:application/json']);
curl_setopt($curl,CURLOPT_HEADER, false);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
$out = curl_exec($curl); //Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
/** Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
$code = (int)$code;
$errors = [
400 => 'Bad request',
401 => 'Unauthorized',
403 => 'Forbidden',
404 => 'Not found',
500 => 'Internal server error',
502 => 'Bad gateway',
503 => 'Service unavailable',
];
try
{
/** Если код ответа не успешный - возвращаем сообщение об ошибке */
if ($code < 200 || $code > 204) {
throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undefined error', $code);
}
}
catch(Exception $e)
{
die('Ошибка: ' . $e->getMessage() . PHP_EOL . 'Код ошибки: ' . $e->getCode());
}
/**
* Данные получаем в формате JSON, поэтому, для получения читаемых данных,
* нам придётся перевести ответ в формат, понятный PHP
*/
$response = json_decode($out, true);
if($response) {
/* записываем конечное время жизни токена */
$response["endTokenTime"] = time() + $response["expires_in"];
$responseJSON = json_encode($response);
/* передаём значения наших токенов в файл */
$filename = "путь до файла с токеном";
$f = fopen($filename,'w');
fwrite($f, $responseJSON);
fclose($f);
$response = json_decode($responseJSON, true);
return $response;
}
else {
return false;
}
}
Полный запрос на создание сделки
На последнем этапе я объединил все функции в одну для удобного использования. Теперь вам нужно будет только создать одну функцию которая, в которую передать массив с параметрами значений из формы.
function amoCRMScript($paramsTask) {
/* получаем значения токенов из файла */
$dataToken = file_get_contents("путь до файла с токеном");
$dataToken = json_decode($dataToken, true);
/* проверяем, истёкло ли время действия токена Access */
if($dataToken["endTokenTime"] < time()) {
/* запрашиваем новый токен */
$dataToken = returnNewToken($dataToken["refresh_token"]);
$newAccess_token = $dataToken["access_token"];
}
else {
$newAccess_token = $dataToken["access_token"];
}
if($paramsTask["CONTACT"]) {
$idContact = amoAddContact($newAccess_token, $paramsTask);
}
amoAddTask($newAccess_token, $paramsTask, $idContact);
}
Вспомогательные функции
Теперь давайте рассмотрим дополнительные функции, которые я выписал для себя, но думаю они вам тоже могут пригодиться.
Узнать допустимые поля для «Сделки»
function returnFieldsContact() {
$access_token = 'xxxxxx';
$headers = [
"Accept: application/json",
'Authorization: Bearer ' . $access_token
];
$link='https://test.amocrm.ru/api/v4/leads/custom_fields';
$curl = curl_init(); //Сохраняем дескриптор сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0');
curl_setopt($curl,CURLOPT_URL, $link);
curl_setopt($curl,CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl,CURLOPT_HEADER, false);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
$out=curl_exec($curl);
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);
$Response=json_decode($out,true);
$account=$Response['response']['account'];
}
Узнать допустимые поля для «Контакты»
function returnFieldsContact() {
$access_token = 'xxxxxx';
$headers = [
"Accept: application/json",
'Authorization: Bearer ' . $access_token
];
$link='https://test.amocrm.ru/api/v4/contacts/custom_fields';
$curl = curl_init(); //Сохраняем дескриптор сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0');
curl_setopt($curl,CURLOPT_URL, $link);
curl_setopt($curl,CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl,CURLOPT_HEADER, false);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
$out=curl_exec($curl);
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);
$Response=json_decode($out,true);
$account=$Response['response']['account'];
}
List of API error and API responses
When an incorrect request to the system is executed, our API can return an error code, in the case of the correct query, the API will return a response. You, of course, have already processed the server’s response while debugging your widgets or writing scripts interacting with our system. For your convenience, we decided to systematize all possible answers and errors, given by our system and place them on a separate page. We hope this will facilitate and accelerate the integration of your projects with Kommo.
Responses during authorization
Read more about authorization here
Error code | HTTP code | Description |
---|---|---|
110 | 401 Unauthorized | General authorization error. Incorrect login or password. |
111 | 401 Unauthorized | Occurs after several unsuccessful authorization attempts. In this case, you need to log in to your account through the browser by entering the captcha code. |
112 | 401 Unauthorized | Occurs when the user is turned off in the “Users and Rights” account settings or is not in the account. |
113 | 403 Forbidden | Access to this account is prohibited from your IP address. Occurs when the filtering of access to the API by the “whitelist of IP addresses” is enabled in the account security settings. |
101 | 401 Unauthorized | Occurs in the case of a request to a non-existent account (subdomain). |
401 | 401 Unauthorized | Not Authorized. There is no account information on the server. You need to make a request to another server on the transmitted IP. |
Responses while working with your account
For more information about working with your account, click here
Code | Description |
---|---|
101 | No account found |
102 | POST parameters must be sent in JSON format |
103 | Parameters not passed |
104 | The requested API method was not found |
Responses when working with contacts
For more information about working with contacts, click here.
Code | Description |
---|---|
201 | Adding Contacts: An Empty Array |
202 | Adding contacts: no rights |
203 | Adding contacts: system error when working with additional fields |
204 | Adding contacts: additional field not found |
205 | Adding contacts: no contact created |
206 | Add / Update contacts: empty query |
207 | Adding / Updating contacts: invalid method requested |
208 | Updating contacts: an empty array |
209 | Updating contacts: “id” and “updated_at” parameters are required |
210 | Updating contacts: system error when working with additional fields |
211 | Updating contacts: additional field not found |
212 | Updating contacts: contact not updated |
219 | Contact list: Search error, retry the request later |
Response when dealing with lead
More information about dealing with lead read here
Code | Description |
---|---|
213 | Adding Leads: An Empty Array |
214 | Adding / Updating deals: empty request |
215 | Adding / Updating leads: invalid method requested |
216 | Updating leads: empty array |
217 | Updating leads: the parameters “id”, “updated_at”, “status_id”, “name” ‘are required |
240 | Adding / Updating leads: invalid parameter “id” of an additional field |
Responses when working with events
Read more about working with events here
Code | Description |
---|---|
218 | Adding events: empty array |
221 | Event list: type required |
226 | Adding events: an event element of this entity could not be found |
244 | Adding events: insufficient rights to add an event |
222 | Adding / Updating Events: Empty request |
223 | Add / Update events: invalid method requested (GET instead of POST) |
224 | Event update: empty array |
225 | Event updates: no events found |
Responses when working with tasks
Read more about working with tasks here
Code | Description |
---|---|
227 | Adding Tasks: An Empty Array |
228 | Add / Update tasks: empty query |
229 | Adding / Updating Tasks: Invalid Method Requested |
230 | Updating tasks: an empty array |
231 | Update tasks: No tasks found |
232 | Adding events: The item ID or item type is empty or not valid |
233 | Adding events: some contacts have not been found for this item ID |
234 | Adding events: some transactions have not been found for this item ID |
235 | Adding Tasks: no element type specified |
236 | Adding Tasks: No contacts found for this Item ID |
237 | Adding Tasks: Some transactions were not found for this Item ID |
238 | Adding contacts: Missing value for additional field |
244 | Adding transactions: no rights. |
Responses when working with directories
Read more about working with directories here.
Code | Description |
---|---|
405 | Request Transfer Method Invalid |
222 | Adding / Updating / Deleting directories: an empty query |
244 | Adding / Updating / Deleting directories: No permissions. |
281 | Directory not deleted: internal error |
282 | The directory was not found in the account. |
283 | Invalid request, data not sent. |
284 | Invalid request, no array sent. |
285 | Required field not passed. |
Responses when working with directory elements
For more information about working with directory elements, see here
Code | Description |
---|---|
405 | Request Transfer Method is Invalid |
203 | Adding / Updating Directory Items: System Error with Custom Fields |
204 | Adding / Updating Directory Items: An additional field was not found |
222 | Adding / Updating / Deleting directory items: an empty request |
244 | Adding / Updating / Deleting directory items: insufficient rights |
280 | Adding directory items: element created. |
282 | Item not found in account. |
283 | Invalid request, data not sent. |
284 | Invalid request, no array passed. |
285 | Required field not submitted. |
Responses when working with customers
For more information about working with customers, see here
Code | Description |
---|---|
288 | Insufficient rights. Access is denied. |
402 | It is necessary to pay for the functional. |
425 | Functionality is not available. |
426 | Functionality is disabled. |
Other Responses
Errors and responses that do not relate to any particular section
Code | Description | Note |
---|---|---|
400 | Wrong structure of the array of transmitted data, or invalid identifiers of custom fields | |
402 | Subscription has ended | With this reply, you receive a HTTP code #402 “Payment Required” |
403 | The account is blocked, for repeatedly exceeding the number of requests per second. | Together with this response, HTTP code #403 |
429 | The number of requests per second exceeded | With the response, the HTTP code #429 is sent |
2002 | There are no results for your search | At the same time HTTP code #204 “No Content” is given with this response. |
При выполнении некорректного запроса к системе наше API может вернуть код ошибки, в случае же верного запроса, API вернёт ответ.
Вы, конечно, уже обрабатывали ответ сервера в ходе отладки своих виджетов или написании скриптов, взаимодействующих с нашей системой.
Для Вашего удобства, мы решили систематизировать все возможные ответы и ошибки, отдаваемые нашей системой и разместить их на отдельной странице.
Надеемся это облегчит и ускорит интеграцию Ваших проектов с amoCRM.
Ответы при авторизации
Подробнее об авторизации читайте здесь
CODE | HTTP CODE | ERROR | DESCRIPTION |
---|---|---|---|
110 | 401 Unauthorized | Неправильный логин или пароль | Общая ошибка авторизации. |
111 | 401 Unauthorized | Неправильный код капчи |
Возникает после нескольких неудачных попыток авторизации. В этом случае нужно авторизоваться в аккаунте через браузер, введя код капчи. |
112 | 401 Unauthorized | Пользователь не состоит в данном аккаунте |
Возникает, когда пользователь выключен в настройках аккаунта «Пользователи и права» или не состоит в аккаунте. |
113 | 403 Forbidden | Доступ к данному аккаунту запрещён с Вашего IP адреса |
Возникает, когда в настройках безопасности аккаунта включена фильтрация доступа к API по «белому списку IP адресов». |
101 | 401 Unauthorized | Account not found | Возникает в случае запроса к несуществующему аккаунту (субдомену). |
401 | 401 Not Authorized | 401 Unauthorized | На сервере нет данных аккаунта. Нужно сделать запрос на другой сервер по переданному IP. |
Ответы при работе с аккаунтом
Подробнее о работе с аккаунтом читайте здесь
CODE | DESCRIPTION |
---|---|
101 | Аккаунт не найден |
102 | POST-параметры должны передаваться в формате JSON |
103 | Параметры не переданы |
104 | Запрашиваемый метод API не найден |
Ответы при работе с контактами
Подробнее о работе с контактами читайте здесь
CODE | DESCRIPTION |
---|---|
201 | Добавление контактов: пустой массив |
202 | Добавление контактов: нет прав |
203 | Добавление контактов: системная ошибка при работе с дополнительными полями |
204 | Добавление контактов: дополнительное поле не найдено |
205 | Добавление контактов: контакт не создан |
206 | Добавление/Обновление контактов: пустой запрос |
207 | Добавление/Обновление контактов: неверный запрашиваемый метод |
208 | Обновление контактов: пустой массив |
209 | Обновление контактов: требуются параметры «id» и «last_modified» |
210 | Обновление контактов: системная ошибка при работе с дополнительными полями |
211 | Обновление контактов: дополнительное поле не найдено |
212 | Обновление контактов: контакт не обновлён |
219 | Список контактов: ошибка поиска, повторите запрос позднее |
Ответы при работе со сделками
Подробнее о работе со сделками читайте здесь
CODE | DESCRIPTION |
---|---|
213 | Добавление сделок: пустой массив |
214 | Добавление/Обновление сделок: пустой запрос |
215 | Добавление/Обновление сделок: неверный запрашиваемый метод |
216 | Обновление сделок: пустой массив |
217 | Обновление сделок: требуются параметры «id», «last_modified», «status_id», «name» |
240 | Добавление/Обновление сделок: неверный параметр «id» дополнительного поля |
Ответы при работе с событиями
Подробнее о работе с событиями читайте здесь
CODE | DESCRIPTION |
---|---|
218 | Добавление событий: пустой массив |
221 | Список событий: требуется тип |
222 | Добавление/Обновление событий: пустой запрос |
223 | Добавление/Обновление событий: неверный запрашиваемый метод (GET вместо POST) |
224 | Обновление событий: пустой массив |
225 | Обновление событий: события не найдены |
Ответы при работе с задачами
Подробнее о работе с задачами читайте здесь
CODE | DESCRIPTION |
---|---|
227 | Добавление задач: пустой массив |
228 | Добавление/Обновление задач: пустой запрос |
229 | Добавление/Обновление задач: неверный запрашиваемый метод |
230 | Обновление задач: пустой массив |
231 | Обновление задач: задачи не найдены |
232 | Добавление событий: ID элемента или тип элемента пустые либо неккоректные |
233 | Добавление событий: по данному ID элемента не найдены некоторые контакты |
234 | Добавление событий: по данному ID элемента не найдены некоторые сделки |
235 | Добавление задач: не указан тип элемента |
236 | Добавление задач: по данному ID элемента не найдены некоторые контакты |
237 | Добавление задач: по данному ID элемента не найдены некоторые сделки |
238 | Добавление контактов: отсутствует значение для дополнительного поля |
244 | Добавление сделок: нет прав. |
Другие ответы
Ошибки и ответы, не относящиеся к какому-либо конкретному разделу
CODE | DESCRIPTION | NOTE |
---|---|---|
400 | Неверная структура массива передаваемых данных, либо не верные идентификаторы кастомных полей | |
403 | Аккаунт заблокирован, за неоднократное превышение количества запросов в секунду | Вместе с этим ответом отдаётся HTTP код №403 |
429 | Превышено допустимое количество запросов в секунду | Вместе с этим ответом отдаётся HTTP код №429 |
2002 | По вашему запросу ничего не найдено | Вместе с этим ответом отдаётся HTTP код №204 «No Content» |