Démarrage rapide de l'API Ads (Quickstart)
Idée centrale
Ce guide de démarrage rapide documente l'implémentation minimale permettant de faire vivre une campagne publicitaire de bout en bout par l'API REST Ads d'OpenAI : de la vérification de l'accès au compte jusqu'à la lecture des résultats de performance. Le parcours suit exactement la hiérarchie campagne → groupe d'annonces → annonce : une annonce vit dans un groupe d'annonces, qui vit lui-même dans une campagne ; campagnes et groupes d'annonces portent budget et ciblage, les annonces portent le contenu créatif (titre, description, images).
Définition
La séquence minimale en six étapes recommandée par la documentation développeur Ads pour un premier appel API réussi de bout en bout, chaque étape produisant un identifiant consommé par l'étape suivante.
Contexte
S'appuie sur Authentification, compte publicitaire et fichiers dans l'API Ads pour la vérification d'accès et l'upload, sur Campagnes et annonces dans l'API Ads pour la création de campagne/groupe/annonce, et sur Insights et reporting dans l'API Ads pour la lecture finale des métriques. Point de départ recommandé avant Configuration d'un compte partenaire via l'API Ads (API Partner Setup) pour les partenaires gérant des comptes clients. Capturée le 2026-08-08.
Fonctionnement
Étape 1 — Confirmer l'accès au compte
Clé API émise depuis l'onglet Settings du compte Ads Manager (ads.openai.com).
curl -X GET "https://api.ads.openai.com/v1/ad_account" \
-H "Authorization: Bearer $OPENAI_ADS_API_KEY" \
-H "Accept: application/json"
Réponse : objet ad_account (id, name, url, preview_url, status, timezone, currency_code, review.status) — voir Authentification, compte publicitaire et fichiers dans l'API Ads pour le détail complet.
Étape 2 — Téléverser un asset créatif
curl -X POST "https://api.ads.openai.com/v1/upload" \
-H "Authorization: Bearer $OPENAI_ADS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "image_url": "https://example.com/assets/workspace-planner-card.png" }'
Réponse : {"file_id": "file_901"}.
Étape 3 — Créer une campagne
curl -X POST "https://api.ads.openai.com/v1/campaigns" \
-H "Authorization: Bearer $OPENAI_ADS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Spring launch",
"status": "active",
"budget": { "lifetime_spend_limit_micros": 25000000 }
}'
Réponse type : {"id": "cmpn_101", ...}, avec par défaut bidding_type: "impressions", conversion_event_setting_ids: [], description/end_time/mode/start_time à null, targeting: {}.
Étape 4 — Créer un groupe d'annonces
curl -X POST "https://api.ads.openai.com/v1/ad_groups" \
-H "Authorization: Bearer $OPENAI_ADS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"campaign_id": "cmpn_101",
"name": "US English",
"status": "active",
"context_hints": ["productivity", "team collaboration"],
"bidding_config": {
"billing_event_type": "impression",
"max_bid_micros": 60000
}
}'
Réponse type : {"id": "adgrp_301", ...}, avec context_hints, bidding_config repris tels quels.
Étape 5 — Créer une annonce
curl -X POST "https://api.ads.openai.com/v1/ads" \
-H "Authorization: Bearer $OPENAI_ADS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ad_group_id": "adgrp_301",
"name": "Planner launch card",
"status": "active",
"creative": {
"type": "chat_card",
"title": "Try the new workspace planner",
"body": "Coordinate tasks, docs, and meetings in one place.",
"target_url": "https://example.com/workspace-planner",
"file_id": "file_901"
}
}'
Réponse type : {"id": "ad_501", ..., "status": "active", "review_status": "in_review"}. Une annonce nouvellement créée porte un status (choisi par l'appelant) distinct d'un review_status (déterminé par la plateforme) — voir Campagnes et annonces dans l'API Ads pour le détail du cycle de revue.
Étape 6 — Récupérer les insights
curl -sS -G "https://api.ads.openai.com/v1/ads/ad_501/insights" \
-H "Authorization: Bearer $OPENAI_ADS_API_KEY" \
--data-urlencode "time_granularity=daily" \
--data-urlencode "limit=7"
Réponse : liste paginée (object: "list", data[], first_id/last_id/has_more), chaque ligne portant un id composite (start=<timestamp>:end=<timestamp>:entity_id=ad_501), readable_time, timezone, impressions, clicks, spend — voir Insights et reporting dans l'API Ads pour le détail complet de ces endpoints.
Étapes suivantes
Le guide renvoie vers les pages de référence complémentaires : Authentification, compte publicitaire et fichiers dans l'API Ads (Authentication, Ad Account, Files), Campagnes et annonces dans l'API Ads (Campaigns, Ads), Ciblage géographique des campagnes dans l'API Ads (Campaign Targeting), Création de campagnes à flux produits via l'API Ads (Product Feeds), Insights et reporting dans l'API Ads.
Éléments essentiels
- Le parcours minimal produit à chaque étape un identifiant consommé par l'étape suivante :
campaign_id→ad_group_id, puisfile_idinjecté dans la créative de l'annonce. - Les grandeurs budgétaires et d'enchère (
lifetime_spend_limit_micros,max_bid_micros) s'expriment en « micros » (millionièmes d'unité de devise) :1000000micros = 1 unité de la devise du compte. - Tous les timestamps observés (
created_at,updated_at,start_time,end_time) sont au format epoch Unix en secondes. - L'authentification repose uniformément sur
Authorization: Bearer $OPENAI_ADS_API_KEYsur l'ensemble des six appels de ce parcours.
Distinctions importantes
Ne pas confondre status d'une annonce nouvellement créée (active, choisi par l'appelant) et review_status (in_review dans cet exemple, déterminé par la plateforme après création) : deux informations distinctes sur le même objet.
Cas pratiques
Aucun cas pratique disponible : les valeurs d'exemple (identifiants, montants, dates) sont manifestement fictives et illustratives (adacct_123, cmpn_101, Acme Ads) — à ne jamais confondre avec des données réelles de production.
Erreurs fréquentes
Ne pas oublier de vérifier l'accès au compte (étape 1) avant toute autre opération : c'est le point de départ recommandé pour confirmer que la clé API fonctionne.
Ne pas confondre l'ordre de création : un groupe d'annonces nécessite un campaign_id existant, une annonce nécessite un ad_group_id existant — la hiérarchie campagne → groupe → annonce doit être respectée dans cet ordre.
Limites et nuances
- Source unique, page de documentation développeur officielle récupérée par le web (dérogation ponctuelle autorisée), sans SHA-256 de fichier local.
- Facteur de conversion exact des champs
*_micros(probablement 1 000 000 micros = 1 unité de devise) déduit des exemples numériques, non énoncé littéralement par la source. - Seule la valeur
activeest illustrée pourstatusd'une campagne/groupe/annonce ; seulein_reviewest illustrée pourreview_statusd'une annonce — listes exhaustives non données ici. - La page de référence « Ad Groups » est absente du lot de sources traité : les paramètres complets de
bidding_configet decontext_hintsne sont illustrés que par cet exemple, sans spécification exhaustive.
Relations
- Authentification, compte publicitaire et fichiers dans l'API Ads — étapes 1 et 2 de ce parcours.
- Campagnes et annonces dans l'API Ads — étapes 3 et 5, détail complet des champs de campagne et d'annonce.
- Insights et reporting dans l'API Ads — étape 6, détail complet des paramètres de reporting.
- Configuration d'un compte partenaire via l'API Ads (API Partner Setup) — variante de ce parcours pour un partenaire gérant un compte client, avec des étapes supplémentaires (marque, conversions).
Points à vérifier
- Facteur de conversion exact des champs en « micros », non énoncé littéralement par la source.
- Liste complète des valeurs possibles de
statuset dereview_status. - Nature exacte de l'endpoint
/ad_account: objet singulier lié à la clé API, ou existence d'une variante de listage de plusieurs comptes accessibles à une même clé. - Contenu complet des paramètres de
bidding_configet decontext_hints— voir la page de référence « Ad Groups », absente de ce lot de sources.
Sources
SRC-2026-033— « API Quickstart »,developers.openai.com/ads/api-quickstart, capturée le 2026-08-08.