Перейти к содержимому
Socialift
Возможность

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 по умолчанию работает на уровне с жёсткими лимитами.

Что доступно сразу

01

Рекламные кабинеты

Кабинеты, к которым у пользователя есть доступ, — с валютой и минимальным дневным бюджетом Meta.

02

Исследование таргетинга

Поиск интересов, местоположений, языков, поведенческих и демографических категорий; подсказки похожих интересов и проверка сохранённых.

03

Оценка охвата

Сколько людей покрывает таргетинг — без создания рекламы и без затрат.

04

Управление кампаниями

Кампании, группы объявлений, объявления, креативы, загрузка изображений и превью; статус ACTIVE/PAUSED, дневной бюджет и удаление.

05

Продвижение поста

Кампания, группа объявлений, креатив и объявление для существующего поста Instagram одним вызовом — всё в статусе PAUSED. Посты с защищённой авторским правом музыкой или интерактивными элементами (например, фильтрами) продвигать нельзя.

06

Статистика с разбивками

Строки инсайтов по возрасту, полу, стране, региону, месту размещения и устройству.

Таргетинг: от поиска до оценки охвата

Сначала исследуете аудиторию, затем собираете таргетинг и, ещё ничего не создав, видите, сколько людей он покрывает.

targeting.py
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 — вы проверяете и включаете сами.

boost.py
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 можно приложить контекст таргетинга кампании и группы объявлений — видно, какая аудитория принесла заявку.

Как запустить рекламный поток

  1. Запросите разрешения

    Добавьте в приложение Meta ads_management и ads_read. Для своего кабинета хватает Standard Access; для кабинетов клиентов получите Advanced Access через App Review и Business Verification.

  2. Подключите аккаунт Facebook

    Войдите через Facebook на странице «Ulanishlar» (подключения) в кабинете: рекламные вызовы выполняются этим личным токеном пользователя.

  3. Исследуйте аудиторию

    Найдите интересы и местоположения, соберите таргетинг и оцените охват без затрат.

  4. Создайте кампанию

    Создайте кампанию, группу объявлений и объявление или продвиньте существующий пост Instagram через boost_post — всё в статусе PAUSED.

  5. Проверьте, включите и отслеживайте

    Переведите статус в 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 в кабинете работает независимо от плана.

Источники

  1. Meta — Advantage+ audience
  2. Meta — валюты рекламного кабинета
  3. Meta — Custom Audiences
  4. Meta — Lookalike Audiences
  5. Meta — посты Instagram как реклама
  6. Meta — версии Marketing API

Связанные страницы

Управляйте рекламой из кода

Получите токен, подключите аккаунт Facebook и получите первую оценку охвата уже сегодня.

Получить бесплатный токен →