
Привет! Я Андрей Безруков, ведущий продакт-менеджер в Авито Рекламе. Мы с командой разработали публичный API, чтобы рекламные агентства и профессиональные рекламодатели могли автоматизировать работу с Авито Рекламой. В статье расскажу, как выбирали архитектуру, тестировали систему и упрощали подключение пользователей.
Зачем Авито Рекламе понадобился публичный API
Авито Реклама — платформа для продвижения бизнеса, где можно рекламировать как свой профиль и объявления на Авито, так и сайт, лендинг или интернет-магазин. Среди пользователей — крупные бренды, рекламные агентства, застройщики и компании из разных сфер бизнеса.
Рекламный рынок очень технологичный. За последние 15 лет появилось множество SaaS-сервисов и технологий, с помощью которых легко построить сквозную аналитику рекламы, связать ее показы с заказами в CRM, а также автоматизировать запуск и оптимизацию кампаний. В некоторых сервисах можно из одного окна управлять рекламными кампаниями на нескольких площадках. У всех крупных рекламных систем уже есть полный API, который позволяет выполнять многие операции без обращения к интерфейсу.
Практически сразу после запуска Авито Рекламы профессиональные пользователи начали запрашивать API для работы с рекламными кампаниями без обращения к интерфейсу. Особенно востребованным оказалось управление балансами: крупные агентства одновременно ведут сотни клиентов, у каждого из которых свои договоры, бюджеты, медиапланы, графики оплат и KPI.
У каждого клиента свои условия оплаты: один оплачивает всю кампанию заранее, другой пополняет баланс частями, третий еженедельно пересматривает бюджет. Агентству приходится объединять все поступления, контролировать общий счет, распределять средства между рекламодателями и следить, чтобы ни одна кампания не остановилась из-за нехватки баланса и нигде не было перерасхода.
Для работы с рекламными кампаниями крупные клиенты используют CRM, внутренние сервисы аналитики и автобиддеры — системы автоматического управления ставками. Мы разработали публичный API, чтобы эти решения могли взаимодействовать с Авито Рекламой.
Как общая инфраструктура OpenAPI ускорила разработку
У Авито есть общая инфраструктура OpenAPI, где команды разных внутренних продуктов могут опубликовать свои методы и документацию к ним. Вопросы аутентификации, протокола обмена данными, контроля нагрузки и логирования использования уже были решены на уровне общей инфраструктуры. Это ускорило разработку, но одновременно наложило ограничения на проектирование API.
Для получения данных в API используются HTTP-методы GET и POST. Выбор метода зависит от особенностей инфраструктуры: если запрос содержит большое количество параметров и требует объемного тела, используется POST, даже когда операция предназначена только для получения списка.
Как объединили микросервисы в публичном API
Мы в Авито используем микросервисную архитектуру, поэтому наш бэкенд весьма разнообразный. Такая архитектура помогает распределять нагрузку между компонентами системы. Например, рекламный движок, логирование статистики и биллинг работают с высокой интенсивностью, тогда как отдельные сервисы управления рекламными кампаниями требуют меньше ресурсов.

Мы рассматривали возможность опубликовать методы каждого сервиса в общей инфраструктуре OpenAPI Авито. От этого подхода отказались из-за частых изменений внутренних контрактов, которые могли нарушать стабильность внешнего API.
Как обеспечили обратную совместимость
Для внешних интеграций критически важна обратная совместимость API. Мажорная версия должна оставаться стабильной в течение длительного времени, а новые возможности — добавляться без изменения существующих полей и правил валидации.
Авито Реклама постоянно развивается: появляются новые функции, из-за чего внутренние контракты между системами регулярно меняются. Ключевые сервисы платформы за месяц версионируют API до 30 раз. Поля со скалярными значениями заменяются структурами, устаревшие поля и методы удаляются. Некоторые операции выполняются в виде транзакций, использующих последовательные вызовы методов разных сервисов. Каждый квартал мы тратим до 20% времени разработки на рефакторинг и повышение стабильности продукта.
Чтобы изменения внутренних контрактов не затрагивали клиентские интеграции, мы разработали отдельный сервис композиции API со строгими правилами обратной совместимости. Он объединяет вызовы внутренних сервисов и предоставляет пользователям стабильный внешний интерфейс.

Как ограничили нагрузку на API
У каждого метода должны быть свои ограничения по использованию — количество вызовов в секунду, для которых гарантируется стабильная работа. С помощью инфраструктуры Авито мы смогли выставить их прямо «из коробки».
Фактическая нагрузка зависит не только от метода API, но и от того, как клиент использует его в своей системе. Метод получения статистики — один из самых востребованных, поэтому система должна обрабатывать тысячи таких запросов в секунду. Каждый запрос требует вычислений в СУБД, поскольку статистика обновляется в реальном времени. Возможности оптимизации этих операций ограничены.
Допустим, пользователь № 1 сделал так, что статистика запрашивается при любом обновлении интерфейса его приложения по всем рекламным кампаниям, включая завершенные. Пользователь № 2 настроил задания по расписанию (cron jobs): статистика по активным рекламным кампаниям обновляется раз в три часа, а по завершенным — раз в неделю. Оба клиента соблюдают ограничения по количеству запросов в секунду (RPS), но создают разную совокупную нагрузку на систему.

Для решения мы ввели баллы API и начисляем лимит раз в неделю. Его можно расходовать на вызовы всех методов. У каждого из них своя «цена». Остаток баллов и расход можно посмотреть в ответе на каждый вызов. Такой механизм позволяет определять индивидуальные лимиты для пользователей с разным количеством активных рекламных кампаний.
Мы отслеживаем нагрузку на API и расходование баллов. Если пользователю не хватает установленного лимита, анализируем характер запросов и либо увеличиваем количество доступных баллов, либо рекомендуем оптимизировать интеграцию.
Как выбирали методы для первого релиза
Мы понимали, что многие методы создания и редактирования различных сущностей будут самыми сложными в поддержке API. Например, в интерфейсе достаточно сложно создать несколько сотен рекламных кампаний с тысячами креативов и отправить их одновременно на модерацию. С API это будет легко.
Для первого релиза выбрали наиболее востребованные и простые в реализации методы. Первоначальный список составили с учетом моего опыта автоматизации рекламы в агентстве, а затем обсудили его с будущими пользователями API.
В первый релиз вошли основные методы чтения данных, включая получение статистики. Также добавили создание дочерних аккаунтов и управление их балансами — эти возможности особенно востребованы агентствами. Для сервисов-автобиддеров предусмотрели изменение бюджетов и ставок.
Как упростили интеграцию с помощью SDK
Для подключения к API пользователям необходимы базовые навыки программирования. Уровень технической подготовки клиентов различается: с API работают как опытные разработчики, так и специалисты, которые создают небольшие интеграции для собственных задач.
Например, пользователь может создать коннектор для выгрузки статистики по всем рекламным кампаниям в дашборд или написать скрипт для автоматического обновления данных в Google Sheets.
Чтобы упростить задачу разработчикам клиентов, мы подготовили SDK на популярных в рекламной индустрии языках программирования: Python, PHP, JS/TS и Go. Их можно установить через пакетный менеджер языка и использовать в своем коде, при этом не придется проходить аутентификацию и описывать свойства объектов.
Сейчас мы отслеживаем востребованность SDK по статистике GitHub и пакетных менеджеров. Эти данные помогут оценить целесообразность дальнейшей поддержки библиотек.
Результаты запуска и дальнейшее развитие API
На конец августа 2026 года API использует около четверти наших клиентов. Одни создают аккаунты для рекламодателей, другие запрашивают статистику, третьи подключаются через SaaS-сервисы, интегрированные с нашим API. Мы получаем запросы на добавление новых методов и расширение лимитов, а также положительную обратную связь об SDK.
Наша цель — сделать через API доступными все ключевые сценарии рекламного кабинета. Сейчас мы готовим следующий релиз и проводим нагрузочное тестирование. В отдельной статье расскажем о решениях для конкурентного редактирования сущностей, обработки пиковых нагрузок, массового запуска и модерации рекламных кампаний.
Какие у вас есть вопросы или идеи по реализации API?