Meta Marketing API: реклама и таргетинг
Socialift переносит Meta Marketing API в Python SDK: рекламные кабинеты, таргетинг по интересам и местоположению, оценка охвата без затрат, цепочка кампания — группа объявлений — объявление, продвижение поста Instagram одним вызовом, статистика с разбивками, а также пользовательские и похожие аудитории. В кабинете эти вызовы идут от личного токена подключённого пользователя Facebook; в SDK можно передать любой токен с рекламными разрешениями.
Обновлено:
Зачем нужен Meta Marketing API
Meta Marketing API — официальный интерфейс для управления рекламой Facebook и Instagram из программы, без интерфейса Ads Manager. Через него создают кампании, группы объявлений и объявления, настраивают таргетинг, меняют бюджет и получают результаты в разбивке по возрасту, полу, региону или месту размещения.
Сложность Marketing API — во вложенных объектах и правилах, характерных для Meta: таргетинг — это громоздкая JSON-структура, бюджет передаётся в минимальных единицах валюты, а устаревшие интересы Meta удаляет. Socialift собирает таргетинг из простых полей, принимает бюджет в обычных единицах и сам его пересчитывает, а также позволяет проверить, действуют ли сохранённые интересы.
ads_management — для управления кампаниями, ads_read — только для отчётов. Для собственного рекламного кабинета достаточно Standard Access; для кабинетов клиентов нужен Advanced Access — App Review и проверка компании (Business Verification). Сам Marketing API по умолчанию работает на уровне с жёсткими лимитами.
Что доступно сразу
Рекламные кабинеты
Кабинеты, к которым у пользователя есть доступ, — с валютой и минимальным дневным бюджетом Meta.
Исследование таргетинга
Поиск интересов, местоположений, языков, поведенческих и демографических категорий; подсказки похожих интересов и проверка сохранённых.
Оценка охвата
Сколько людей покрывает таргетинг — без создания рекламы и без затрат.
Управление кампаниями
Кампании, группы объявлений, объявления, креативы, загрузка изображений и превью; статус ACTIVE/PAUSED, дневной бюджет и удаление.
Продвижение поста
Кампания, группа объявлений, креатив и объявление для существующего поста Instagram одним вызовом — всё в статусе PAUSED. Посты с защищённой авторским правом музыкой или интерактивными элементами (например, фильтрами) продвигать нельзя.
Статистика с разбивками
Строки инсайтов по возрасту, полу, стране, региону, месту размещения и устройству.
Таргетинг: от поиска до оценки охвата
Сначала исследуете аудиторию, затем собираете таргетинг и, ещё ничего не создав, видите, сколько людей он покрывает.
import asyncio, os
from socialift import Ads
async def main():
async with Ads(app_secret=os.environ["FACEBOOK_APP_SECRET"], graph_version="v25.0") as ads:
token = os.environ["META_USER_TOKEN"]
interests = await ads.search_interests(token, "fitness")
targeting = ads.build_targeting(countries=["UZ"], age_min=18, age_max=45,
interests=[{"id": interests[0]["id"]}],
advantage_audience=False) # точный возрастной диапазон
print(await ads.delivery_estimate(token, ad_account_id="act_123", targeting=targeting))
asyncio.run(main())build_targeting собирает из простых полей глубокий объект таргетинга, который ожидает Meta. delivery_estimate вызывается до создания рекламы и показывает размер аудитории без затрат — Meta возвращает не точное число, а примерный диапазон. При включённом Advantage+ audience (по умолчанию, advantage_audience=True) Meta фиксирует age_max на 65 и принимает age_min только в диапазоне 18–25.
Ads не читает версию Graph API из переменных окружения, поэтому в примере graph_version="v25.0" задан явно. У версий Marketing API есть срок действия — сверяйте актуальную версию с changelog Meta.
Продвижение поста Instagram одним вызовом
boost_post превращает существующий пост в рекламу: последовательно создаёт кампанию, группу объявлений, креатив и объявление. Всё остаётся в статусе PAUSED — вы проверяете и включаете сами.
import asyncio, os
from socialift import Ads
async def main():
async with Ads(app_secret=os.environ["FACEBOOK_APP_SECRET"], graph_version="v25.0") as ads:
token = os.environ["META_USER_TOKEN"]
result = await ads.boost_post(
token,
ad_account_id="act_123",
ig_user_id="1784...",
media_id="1790...",
name="Reels boost",
daily_budget_major=10.0, # в валюте кабинета, например USD 10
goal="traffic",
link="https://example.uz/offer",
targeting=ads.build_targeting(countries=["UZ"], age_min=18, platforms=["instagram"]),
)
# Результаты в разбивке по возрасту и полу
rows = await ads.insights_rows(
token, "act_123", level="campaign",
date_preset="last_7d", breakdowns=["age", "gender"],
)
asyncio.run(main())daily_budget_major задаётся в основных единицах валюты кабинета; SDK умножает его на 100 и передаёт Meta. Это верно для валют с offset 100 (USD, EUR, RUB и др.); для валют с offset 1 (JPY, KRW, IDR, VND и др.) сверяйте результат с минимальным бюджетом из ad_accounts. UZS нет в списке валют рекламного кабинета Meta.
targeting в примере задан явно и без age_max: в группе объявлений с включённым Advantage+ audience Meta не позволяет менять age_max.
Эндпоинт Marketing API без отдельного метода в SDK тоже можно вызвать: await ads.call(token, "act_123/adcreatives", method="GET", fields="id,name").
Аудитории и пиксели
Помимо таргетинга, для показа рекламы конкретной группе людей используются аудитории.
- Пользовательская аудитория (custom audience)
- Аудитория на основе списка ваших клиентов.
add_audience_usersнормализует email и телефоны по правилам Meta и хеширует их SHA-256 на вашем сервере, где работает SDK, — в Meta не уходит открытый текст. В кабинете должны быть приняты условия Custom Audience. - Похожая аудитория (lookalike)
- Люди в выбранной стране, максимально похожие на исходную аудиторию. ratio=0.01 — ближайший 1% населения страны; допустимый диапазон 0.01–0.20. В исходной аудитории должно быть не меньше 100 человек.
- Пиксели
- Список пикселей, привязанных к рекламному кабинету, доступен через API.
- Контекст Lead Ads
- К каждому лиду из Lead Ads можно приложить контекст таргетинга кампании и группы объявлений — видно, какая аудитория принесла заявку.
Как запустить рекламный поток
Запросите разрешения
Добавьте в приложение Meta ads_management и ads_read. Для своего кабинета хватает Standard Access; для кабинетов клиентов получите Advanced Access через App Review и Business Verification.
Подключите аккаунт Facebook
Войдите через Facebook на странице «Ulanishlar» (подключения) в кабинете: рекламные вызовы выполняются этим личным токеном пользователя.
Исследуйте аудиторию
Найдите интересы и местоположения, соберите таргетинг и оцените охват без затрат.
Создайте кампанию
Создайте кампанию, группу объявлений и объявление или продвиньте существующий пост Instagram через boost_post — всё в статусе PAUSED.
Проверьте, включите и отслеживайте
Переведите статус в ACTIVE, следите за результатами в разбивках и корректируйте дневной бюджет.
На что обратить внимание при автоматизации рекламы
- Всё создаётся в статусе PAUSED — пока вы не переведёте в ACTIVE, реклама не показывается.
- Задавайте бюджет в основных единицах валюты кабинета и сверяйтесь с минимальным дневным бюджетом из ответа ad_accounts.
- Периодически проверяйте сохранённые интересы — Meta удаляет устаревшие.
- При загрузке списка клиентов email и телефоны хешируются SHA-256 на сервере, где работает SDK, и в Meta уходят только хеши.
- Добавьте в приложение Meta ads_management и ads_read. Для своего кабинета хватает Standard Access; для кабинетов клиентов получите Advanced Access через App Review и Business Verification.
- Запросы в Playground настоящие: действия, влияющие на бюджет, требуют там отдельного подтверждения.
Частые вопросы
Можно ли продвинуть пост Instagram через API?
Да. boost_post одним вызовом создаёт кампанию, группу объявлений, креатив и объявление. Всё остаётся в статусе PAUSED, то есть реклама не запустится, пока вы её не проверите и не включите. Посты с защищённой авторским правом музыкой или интерактивными элементами (например, фильтрами) продвигать нельзя.
Можно ли узнать размер аудитории, не создавая рекламу?
Да. delivery_estimate возвращает оценку охвата для выбранного таргетинга без затрат. Его стоит вызывать до создания кампании.
Какие разрешения нужны для Marketing API?
ads_management — для управления кампаниями, ads_read — только для отчётов. Для собственного рекламного кабинета достаточно Standard Access; для кабинетов клиентов нужен Advanced Access — App Review и проверка компании (Business Verification). Сам Marketing API по умолчанию работает на уровне с жёсткими лимитами.
Как передаются email и телефоны клиентов?
add_audience_users нормализует email и телефоны по требованиям Meta (email — в нижнем регистре, телефон — цифры с кодом страны) и хеширует их SHA-256 на вашем сервере, где работает SDK. Открытый список в Meta не отправляется.
Socialift — рекламное агентство или партнёр Meta?
Нет. Socialift — слой интеграции для разработчиков. Реклама управляется в вашем кабинете и вашим токеном; Socialift не является официальным партнёром Meta.
Работают ли рекламные методы SDK в бесплатный месяц?
Да. Первые 30 дней токен открывает все возможности SDK, включая клиент Ads и методы Lead Ads. Дальше токен продлевается 30-дневными периодами с баланса, и возможности зависят от плана токена — точный список показывает «Tekshirish va muhitlar» (проверка и окружения) в кабинете. Playground в кабинете работает независимо от плана.
Источники
Связанные страницы
Управляйте рекламой из кода
Получите токен, подключите аккаунт Facebook и получите первую оценку охвата уже сегодня.
Получить бесплатный токен →