# Avito ApplicationAccess API

**Canonical:** https://apis.io/apis/avito/avito-applicationaccess-api/  
**Provider:** Avito — https://apis.io/providers/avito/  
**Base URL:** https://api.avito.ru/  
**Documentation:** https://developers.avito.ru/api-catalog/accounts-hierarchy/documentation

Avito ApplicationAccess API is one of 51 APIs that [Avito](https://apis.io/providers/avito/) publishes on the [APIs.io](https://apis.io/) network, described by a machine-readable OpenAPI specification. Tagged areas include ApplicationAccess. The published artifact set on APIs.io includes an OpenAPI specification and API documentation.

Для работы с API приложений от лица пользователя есть возможность получить токен через Authorization Code механизм протокола OAuth2. Для этого в первую очередь нужно зарегистрировать приложение на https://developers.avito.ru/applications. После успешной регистрации ваше приложение получит возможность работать с API Авито от лица пользователя (если последний выдаст на это разрешение). Подробнее об Authorization Code флоу протокола OAuth2 можно почитать [в статье](https://www.digitalocean.com/community/tutorials/oauth-2-ru). Процесс работы с этим флоу в API Авито отличается только незначительными деталями – ниже по шагам описан процесс интеграции. ### Шаг 1: Регистрация приложения Регистрируем приложение через https://developers.avito.ru/application. Для регистрации нужно указать: * Имя приложения, которое будет выводиться пользователям в форме подтверждения прав * Redirect URI - адрес, на который сайт Авито средиректит пользователя после подтверждения прав * Скоупы, которые необходимы вашему приложению (подробнее о доступных скоупах ниже) * Описание приложения - для каких целей вы планируете использовать доступ к данным В данный момент мы регистрируем только доверенные приложения от наших партнеров. Скоупы определяют права, на которые ваше приложение сможет рассчитывать после подверждения авторизации пользователем. Доступные скоупы: * messenger:read: Чтение сообщений в мессенджере Авито * messenger:write: Модифицирование сообщений в мессенджере Авито * user_balance:read: Получение баланса пользователя * job:write: Изменение объявлений вертикали Работа * job:cv: Получение информации резюме * job:vacancy: Работа с вакансиями * job:applications: Получение информации об откликах на вакансии * user_operations:read: Получение истории операций пользователя * user:read: Получение информации о пользователе * autoload:reports: Получение отчетов Автозагрузки * items:info: Получение информации об объявлениях * items:apply_vas: Применение дополнительных услуг * short_term_rent:read: Получение информации об объявлениях краткосрочной аренды * short_term_rent:write: Изменение объявлений краткосрочной аренды * stats:read: Получение статистики объявлений ### Шаг 2: Ссылка с кодом авторизации Сначала пользователю предоставляется ссылка следующего вида: ``` https://avito.ru/oauth?response_type=code&pro_users_flow=true&client_id=<CLIENT_ID>&scope=messenger:read,messenger:write ``` ### Шаг 3: Пользователь авторизует приложение Пользователь переходит по ссылке на Авито, аутентифицируется при необходимости, затем подтверждает выдачу необходимых прав вашему приложению. ### Шаг 4: Приложение получает код авторизации Если пользователь выбирает "Авторизовать приложение", Авито перенаправляет пользовательский агент (браузер) по URI перенаправления (Redirect URI), который был задан на этапе регистрации приложения и добавляет в него параметр `code`. Например, если при регистрации в качестве Redirect URI был указан адрес `https://example.com/callback/avito`, то мы перенаправим пользователя на: ``` https://example.com/callback/avito?code=<AUTHORIZATION_CODE> ``` ### Шаг 5: Приложение запрашивает токен доступа Приложение запрашивает токен доступа у API Авито путём отправки авторизационного кода и аутентификационной информации (включая секрет приложения). Ниже представлен пример POST-запроса для получения access token: ``` curl -L -X POST 'https://api.avito.ru/token/' \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=authorization_code' \ --data-urlencode 'client_id=<CLIENT_ID>' \ --data-urlencode 'client_secret=<CLIENT_SECRET>' \ --data-urlencode 'code=<AUTHORIZATION_CODE>' ``` ### Шаг 6: Приложение получает токен доступа Если авторизация прошла успешно, API возвращает токен доступа (а также токен для обновления токена доступа - refresh token). Весь ответ сервера может выглядеть следующим образом: ``` { "access_token": "<ACCESS_TOKEN>", "expires_in": 86400, "refresh_token": "<REFRESH_TOKEN>", "scope": "messenger:read,messenger:write", "token_type": "Bearer" } ``` Приложение сохраняет access_token и refresh_token. ### Шаг 7: Приложение делает запросы к API c токеном доступа Далее приложение может выполнять запросы к API с заголовком `Authorization: Bearer <ACCESS_TOKEN>` ### Шаг 8: Приложение обновляет access_token Время действия access token ограничено - 24 часа с момента его получения. После этого вам необходимо получить новый токен. После истечения срока действия токена доступа все запросы к API с его использованием будут возвращать код ошибки 403. Сохраненный refresh token может быть использован для получения нового токена доступа от авторизационного сервера. Ниже представлен пример POST-запроса, использующего refresh token для обновления токена доступа: ``` curl -L -X POST 'https://api.avito.ru/token/' \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=refresh_token' \ --data-urlencode 'client_id=<CLIENT_ID>' \ --data-urlencode 'client_secret=<CLIENT_SECRET>' \ --data-urlencode 'refresh_token=<REFRESH_TOKEN>' ``` В ответ приложение получит точно такой же JSON, как и при обмене code на access token. При этом будет получен не только новый access_token, но и новый refresh_token. Обновите оба значения в своей базе данных. ### Дополнительный параметр state Для того чтобы защитить данные пользователей мы крайне рекомендуем использовать параметр state. Этот параметр позволяет защититься от CSRF-атак и восстановить состояние вашего приложения на момент начала авторизации. Подробнее, зачем нужен параметр state, можно прочитать [тут](https://auth0.com/docs/protocols/oauth2/oauth-state). Для того, чтобы использовать state – просто включите его в начальный URL: ``` https://avito.ru/oauth?response_type=code&pro_users_flow=true&client_id=<CLIENT_ID>&scope=messenger:read,messenger:write&state=<STATE> ``` В итоге state будет содержаться в финальном Redirect URI, на который Авито перенаправляет пользователя после подтверждения прав доступа. Например, если при регистрации в качестве Redirect URI был указан адрес `https://example.com/callback/avito`, то мы перенаправим пользователя на: ``` https://example.com/callback/avito?code=<AUTHORIZATION_CODE>&state=<STATE> ``` Не передавайте чувствительные данные в открытом виде в этом параметре. Генерируйте уникальное временное значение state в вашем приложении.

## Operations (2)

| Method | Path | Summary |
|---|---|---|
| POST | `/token‎` | Получение access token |
| POST | `/token‎‎` | Обновление access token |

## Machine-readable artifacts (26)

- **OpenAPI** — https://raw.githubusercontent.com/api-evangelist/avito/refs/heads/main/openapi/avito-applicationaccess-api-openapi.yml
- **Documentation** — https://developers.avito.ru/api-catalog/accounts-hierarchy/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/ads/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/auction/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/auth/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/autoload/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/autostrategy/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/autoteka/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/avito-promo/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/calltracking/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/cpa/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/cpxpromo/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/delivery-sandbox/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/item/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/job/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/messenger/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/order-management/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/promotion/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/ratings/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/realty-reports/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/sbc-gateway/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/stock-management/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/str/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/tariff/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/trxpromo/documentation
- **Documentation** — https://developers.avito.ru/api-catalog/user/documentation

## Other Avito APIs (12)

- [Avito Access API](https://apis.io/apis/avito/avito-access-api/)
- [Avito Ads API](https://apis.io/apis/avito/avito-ads-api/)
- [Avito Auction API](https://apis.io/apis/avito/avito-auction-api/)
- [Avito Authorization API](https://apis.io/apis/avito/avito-authorization-api/)
- [Avito Autoload API](https://apis.io/apis/avito/avito-autoload-api/)
- [Avito Autostrategy API](https://apis.io/apis/avito/avito-autostrategy-api/)
- [Avito balance API](https://apis.io/apis/avito/avito-balance-api/)
- [Avito Call API](https://apis.io/apis/avito/avito-call-api/)
- [Avito Calltracking API](https://apis.io/apis/avito/avito-calltracking-api/)
- [Avito Chat API](https://apis.io/apis/avito/avito-chat-api/)
- [Avito CheckAhUserV1 API](https://apis.io/apis/avito/avito-checkahuserv1-api/)
- [Avito CheckAhUserV2 API](https://apis.io/apis/avito/avito-checkahuserv2-api/)

## Tags

ApplicationAccess

---

Profiled by [API Evangelist](https://apievangelist.com) and published on [APIs.io](https://apis.io/apis/avito/avito-applicationaccess-api/). The API's provider profile, Kin Score and agent-readiness rating are at https://apis.io/providers/avito/.
