Commandes Ads Manager pour la CLI développeur Adapty
Cet article liste toutes les commandes Ads Manager dans la CLI Adapty, avec leurs arguments, indicateurs et valeurs acceptées. Les commandes Ads Manager sont regroupées sous le topic adapty asa.
Pour les prérequis, les bonnes pratiques d’écriture et des exemples concrets, consultez Gérer Ads Manager depuis la CLI.
Ces commandes nécessitent un compte Apple Ads connecté et un abonnement Ads Manager actif. Exécutez adapty asa whoami pour vérifier les deux. Pour le reste de la CLI, consultez la référence des commandes.
Indicateurs globaux
Ces indicateurs sont disponibles sur toutes les commandes Ads Manager.
| Indicateur | Description |
|---|---|
--json | Afficher en JSON plutôt qu’en texte formaté |
--help | Afficher l’aide de la commande |
Toutes les commandes list acceptent également des indicateurs de pagination :
| Indicateur | Défaut | Description |
|---|---|---|
--page | 1 | Numéro de page |
--page-size | 100 | Éléments par page (max : 1000) |
Les pages Ads Manager sont plus grandes que dans le reste du CLI. Préférez une grande page à une boucle de petites.
Toutes les commandes qui modifient votre compte acceptent ces indicateurs :
| Indicateur | Description |
|---|---|
--yes, -y | Applique sans demander de confirmation. Obligatoire quand la sortie est redirigée ou que --json est utilisé |
--idempotency-key | Clé fixe pour cette écriture. Une répétition avec la même clé et le même corps dans les 24 heures renvoie le résultat stocké au lieu d’appliquer à nouveau la modification |
Les commandes Ads Manager ne prennent pas d’indicateur --app. La portée est la société à laquelle appartient votre token. --app existe sur certaines commandes list uniquement comme filtre. Les commandes segments font exception : là, --app désigne l’application Adapty à laquelle appartient le segment.
Filtres de liste
Les filtres restreignent la requête elle-même, pas la page affichée. Une keywords list sans filtre parcourt tous les mots-clés du compte — limitez donc chaque lecture au niveau dont vous avez besoin.
| Filtre | Accepté par |
|---|---|
--campaign-group | campaigns, ad-groups, keywords, negative-keywords, search-terms, ads, creatives, product-pages |
--app | campaigns, ad-groups, keywords, negative-keywords, search-terms, creatives, product-pages |
--campaign | ad-groups, keywords, negative-keywords, search-terms, ads |
--ad-group | keywords, negative-keywords, search-terms, ads |
--status | campaigns, ad-groups, ads (ENABLED ou PAUSED), keywords (ACTIVE ou PAUSED) |
--search | campaigns, ad-groups, keywords, negative-keywords, search-terms, ads. Recherche de sous-chaîne insensible à la casse sur le nom |
adapty asa apps list, orgs list, automations list et automations runs n’acceptent aucun filtre. Ils prennent uniquement des options de pagination.
--campaign-group, --app, --campaign et --ad-group prennent les UUID affichés par la commande list correspondante, et chacun est répétable :
adapty asa keywords list --ad-group <ad-group-id> --ad-group <other-ad-group-id>
Un ID appartenant à une autre entreprise ne correspond à rien : la page revient vide au lieu de renvoyer une erreur.
Compte
adapty asa whoami
Affichez l’entreprise, la méthode d’octroi d’accès à Ads Manager et l’état de la connexion Apple Ads.
adapty asa whoami
Exécutez cette commande en premier. Elle indique si les deux prérequis nécessaires à toutes les autres commandes sont satisfaits.
adapty asa connect
Liez un compte Apple Ads à Adapty.
adapty asa connect
La commande affiche un lien d’autorisation Apple et attend qu’Apple signale le compte comme connecté.
| Flag | Défaut | Description |
|---|---|---|
--wait / --no-wait | --wait | Attend qu’Apple Ads signale la connexion. --no-wait retourne immédiatement |
--timeout | 300 | Secondes à attendre pour l’étape navigateur |
adapty asa orgs list
Listez les groupes de campagnes (organisations Apple Ads) disponibles pour votre entreprise.
adapty asa orgs list
Chaque ligne contient deux identifiants qui ne sont pas interchangeables :
| Field | Used as |
|---|---|
internal_id | L’UUID que --org accepte dans campaigns create, et que --campaign-group accepte comme filtre de liste |
org_id | L’identifiant numérique d’organisation Apple, accepté par --org-id dans campaigns bulk-create. --org et --campaign-group le rejettent |
--org n’existe que sur campaigns create. Aucune commande de liste ne l’accepte.
Chaque ligne contient également un payment_model. Lorsqu’il est LOC, l’organisation facture par ligne de crédit, et chaque campagne associée nécessite les flags --invoice-*.
Accepte les flags de pagination.
adapty asa apps list
Liste les apps promues dans Apple Ads.
adapty asa apps list
Chaque ligne comporte deux identifiants, qui ne sont pas interchangeables :
| Champ | Utilisé comme |
|---|---|
internal_id | L’UUID que --app accepte en tant que filtre de liste |
adam_id | L’identifiant numérique App Store d’Apple, utilisé par --adam-id dans campaigns create et product-pages sync |
Accepte les options de pagination.
Campagnes
adapty asa campaigns list
Liste les campagnes. Renvoie uniquement les métadonnées — lisez les chiffres de performance avec asa metrics.
adapty asa campaigns list --app <app-id> --status PAUSED
Accepte les options de pagination ainsi que les filtres de liste --campaign-group, --app, --search et --status.
adapty asa campaigns get
Récupère les détails d’une campagne spécifique.
adapty asa campaigns get <campaign-id>
| Argument | Description |
|---|---|
campaign-id | Identifiant de la campagne (UUID) |
adapty asa campaigns create
Créer une campagne.
adapty asa campaigns create --org <campaign-group-id> --name "Winter push" --adam-id 123456 --country US --daily-budget 50
| Indicateur | Requis | Description |
|---|---|---|
--org | Oui | ID du groupe de campagnes (UUID). Voir orgs list |
--name | Oui | Nom de la campagne |
--adam-id | Oui | ID de l’application App Store (adam_id) |
--country | Oui | Code pays ou région. Répéter pour plusieurs : --country US --country CA |
--daily-budget | Oui | Budget quotidien en montant simple, par exemple 50 ou 12.50 |
--budget | Non | Budget total |
--target-cpa | Non | Coût par acquisition cible. Doit être inférieur à --daily-budget |
--currency | Non | Code devise pour les montants de cet appel. Par défaut : USD |
--bidding-strategy | Non | MANUAL_CPT ou MAX_CONVERSIONS. Apple utilise MANUAL_CPT par défaut |
--ad-channel-type | Non | SEARCH ou DISPLAY. Par défaut : SEARCH |
--billing-event | Non | TAPS ou IMPRESSIONS. Par défaut : TAPS |
--supply-source | Non | Source d’approvisionnement, répétable. Par défaut : APPSTORE_SEARCH_RESULTS |
--status | Non | Statut initial : ENABLED ou PAUSED |
--invoice-advertiser | Ligne de crédit | Options de facturation : nom de l’annonceur |
--invoice-order-number | Ligne de crédit | Options de facturation : numéro de commande |
--invoice-contact-name | Ligne de crédit | Options de facturation : nom du contact acheteur |
--invoice-contact-email | Ligne de crédit | Options de facturation : e-mail du contact acheteur |
--invoice-billing-email | Ligne de crédit | Options de facturation : e-mail du contact facturation |
Une organisation dont le payment_model est LOC facture par ligne de crédit, et Apple exige des options de facturation sur chacune de ses campagnes. Passez les cinq indicateurs --invoice-* en un seul appel — un ensemble partiel est rejeté avant l’envoi de la requête. Voir Définir les options de facturation pour une ligne de crédit.
La réponse contient serving_status et serving_state_reasons. Un campaign peut être créé sans diffuser pour autant : un campaign MAX_CONVERSIONS attend un groupe d’annonces automatisé, et un campaign à ligne de crédit attend ses options de facturation. Dans les deux cas, la commande affiche la raison et la commande qui permet de résoudre le problème.
adapty asa campaigns update
Mettre à jour une campagne existante.
adapty asa campaigns update <campaign-id> --daily-budget 80 --status PAUSED
| Argument | Description |
|---|---|
campaign-id | Identifiant de la campagne (UUID) |
| Indicateur | Description |
|---|---|
--name | Nouveau nom de la campagne |
--status | ENABLED ou PAUSED |
--country | Remplace la liste de pays. Répéter pour plusieurs |
--daily-budget | Nouveau budget quotidien |
--budget | Nouveau budget global |
--target-cpa | Nouveau coût cible par acquisition |
--bidding-strategy | MANUAL_CPT ou MAX_CONVERSIONS |
--currency | Code de devise pour les montants de cet appel. Par défaut : USD |
--invoice-advertiser | Options de facturation : nom de l’annonceur |
--invoice-order-number | Options de facturation : numéro de commande |
--invoice-contact-name | Options de facturation : nom du contact acheteur |
--invoice-contact-email | Options de facturation : e-mail du contact acheteur |
--invoice-billing-email | Options de facturation : e-mail du contact de facturation |
Au moins un paramètre est requis.
Les cinq paramètres --invoice-* forment un ensemble et remplacent les options de facturation enregistrées, donc passez les cinq même pour en modifier un seul. Un ensemble incomplet est rejeté avant l’envoi de la requête.
adapty asa campaigns bulk-create
Créez toute une structure de campagne — campagnes avec groupes d’annonces imbriqués, mots-clés, mots-clés négatifs et annonces — en une seule opération.
adapty asa campaigns bulk-create --file structure.json
Convertissez un modèle bulk Apple Ads natif plutôt que d’écrire le JSON :
adapty asa campaigns bulk-create --from-file Campaign_And_Adgroup_Template.xlsx --org-id 1234567
| Indicateur | Défaut | Description |
|---|---|---|
--file | — | Fichier JSON contenant la structure de la campagne, ou - pour lire depuis l’entrée standard |
--from-file | — | Modèle de masse Apple Ads à convertir sur le serveur : Campaign_And_Adgroup_Template.xlsx ou un fichier .csv de mots-clés |
--org-id | — | Identifiant numérique de l’organisation Apple (org_id). Voir orgs list. Obligatoire avec --from-file |
--preview | — | Avec --from-file : affiche la structure convertie et s’arrête. Rien n’est créé |
--wait / --no-wait | --wait | Interroge l’opération jusqu’à ce qu’elle se termine. --no-wait affiche l’identifiant de l’opération et retourne |
--poll-interval | 5 | Secondes entre chaque interrogation de progression |
--timeout | 900 | Durée maximale en secondes pour attendre la fin de l’opération |
Exactement l’un des paramètres --file et --from-file est requis.
La structure nomme le groupe de campagnes au niveau supérieur et imbrique tout le reste :
{
"campaign_group_id": 555777,
"campaigns": [
{
"payload": {
"name": "US Search",
"adam_id": 123456,
"countries_or_regions": ["US"],
"daily_budget_amount": { "amount": "100", "currency": "USD" },
"status": "ENABLED",
"ad_channel_type": "SEARCH",
"billing_event": "TAPS",
"supply_sources": ["APPSTORE_SEARCH_RESULTS"]
},
"ad_groups": [
{
"payload": { "name": "Brand", "start_time": "2026-08-01T00:00:00Z", "status": "ENABLED" },
"keywords": [{ "text": "meditation app", "match_type": "BROAD" }]
}
]
}
]
}
campaign_group_id prend l’identifiant numérique de l’organisation Apple ; utilisez campaign_group_internal_id pour transmettre l’UUID à la place. Un nœud avec un payload est créé. Un nœud qui désigne une entité existante par son id est une ancre — utilisez-en une pour ajouter des groupes d’annonces à une campagne existante, et ajoutez update_payload pour modifier l’entité dans la même opération. Chaque campagne imbrique des ad_groups, et chaque groupe d’annonces imbrique des keywords, negative_keywords et ads. Une campagne accepte également des negative_keywords directement pour les mots-clés négatifs au niveau de la campagne.
L’ensemble de la structure est validé avant toute création, et un refus liste chaque nœud invalide. Avec --from-file, les problèmes de conversion sont signalés avec leur feuille, ligne et colonne ; les avertissements de conversion n’interrompent pas la soumission, mais les erreurs de conversion l’annulent. Avant l’envoi, la commande indique le nombre de campagnes, groupes d’annonces, mots-clés, mots-clés à exclure et annonces que contient la structure, et demande confirmation.
La commande interroge ensuite l’opération et affiche la progression jusqu’à l’obtention de l’un des trois statuts finaux :
| Statut | Signification |
|---|---|
success | Chaque objet a été créé |
partial | Certains objets n’ont pas été créés. Chaque échec est affiché avec l’erreur Apple |
failed | L’opération a échoué et la commande se termine avec un code non nul |
Si l’opération ne s’est pas terminée après --timeout secondes, la commande retourne et affiche l’appel bulk-status à exécuter ultérieurement.
adapty asa campaigns bulk-status
Affiche la progression d’une opération en lot : le statut, le nombre d’objets et le journal par objet.
adapty asa campaigns bulk-status <operation-id>
| Argument | Description |
|---|---|
operation-id | ID d’opération (UUID) affiché par campaigns bulk-create |
Le champ status vaut pending, running, success, partial ou failed. Le bloc counts indique combien d’objets sont appliqués, en échec ou en attente sur le total.
Accepte les options de pagination.
Groupes d’annonces
adapty asa ad-groups list
Liste les groupes d’annonces. Retourne uniquement les métadonnées — consultez les performances avec asa metrics.
adapty asa ad-groups list --campaign <campaign-id>
Accepte les options de pagination ainsi que les filtres de liste --campaign-group, --app, --campaign, --search et --status.
adapty asa ad-groups get
Obtenir les détails d’un groupe d’annonces spécifique.
adapty asa ad-groups get <ad-group-id>
| Argument | Description |
|---|---|
ad-group-id | ID du groupe d’annonces (UUID) |
adapty asa ad-groups create
Créez un groupe d’annonces dans une campagne.
adapty asa ad-groups create --campaign <campaign-id> --name "Brand terms" --default-bid 1.20
| Indicateur | Requis | Description |
|---|---|---|
--campaign | Oui | ID de la campagne (UUID) |
--name | Oui | Nom du groupe d’annonces |
--default-bid | Sauf si --automated | Enchère par défaut en montant brut, par exemple 1.20 |
--cpa-goal | Non | Objectif de coût par acquisition |
--pricing-model | Non | CPC ou CPM. Apple en exige un sur chaque groupe d’annonces. Par défaut : CPC |
--start-time | Non | Début de la planification (YYYY-MM-DD). Par défaut : aujourd’hui |
--end-time | Non | Fin de la planification (YYYY-MM-DD) |
--automated-keywords / --no-automated-keywords | Non | Laisser Apple ajouter des mots-clés automatiquement |
--automated | Non | Créer le groupe d’annonces automatisé requis par une campagne MAX_CONVERSIONS |
--currency | Non | Code de devise pour les montants de cet appel. Par défaut : USD |
--status | Non | Statut initial : ENABLED ou PAUSED |
--automated inscrit le groupe d’annonces aux mots-clés automatisés, il ne peut donc pas être combiné avec --automated-keywords. Apple planifie lui-même un groupe d’annonces automatisé et le maintient actif, donc --start-time et --status PAUSED sont rejetés — mettez plutôt la campagne en pause. Voir Créer une campagne Max Conversions.
adapty asa ad-groups update
Mettre à jour un groupe d’annonces existant.
adapty asa ad-groups update <ad-group-id> --default-bid 1.50 --status PAUSED
| Argument | Description |
|---|---|
ad-group-id | ID du groupe d’annonces (UUID) |
| Indicateur | Description |
|---|---|
--name | Nouveau nom du groupe d’annonces |
--status | ENABLED ou PAUSED |
--default-bid | Nouveau montant d’enchère par défaut |
--cpa-goal | Nouvel objectif de coût par acquisition |
--start-time | Début de la planification (YYYY-MM-DD) |
--end-time | Fin de la planification (YYYY-MM-DD) |
--automated-keywords / --no-automated-keywords | Laisser Apple ajouter des mots-clés automatiquement |
--currency | Code de devise pour les montants de cet appel. Par défaut : USD |
Au moins un indicateur est requis. La campagne parente est résolue côté serveur et n’est jamais transmise.
Mots-clés
Les commandes de mots-clés sont appliquées par lots de 100 éléments maximum par appel. Voir Gérer les mots-clés pour l’équivalent dans le tableau de bord.
adapty asa keywords list
Liste les mots-clés de ciblage. Retourne uniquement les métadonnées — pour consulter les performances, utilisez asa metrics.
adapty asa keywords list --ad-group <ad-group-id> --status ACTIVE
Accepte les options de pagination ainsi que les filtres de liste --campaign-group, --app, --campaign, --ad-group, --search et --status. Filtrez par --ad-group — sans filtre, il s’agit de la lecture la plus large du sujet.
adapty asa keywords recommend
Obtenez un pool de mots-clés prêt à l’emploi pour l’une de vos applications. Ce sont les mêmes pools qu’Ads Manager utilise lorsque vous configurez une campagne dans le tableau de bord.
adapty asa keywords recommend --adam-id <adam-id> --type generic --country US
| Paramètre | Obligatoire | Description |
|---|---|---|
--adam-id | Oui | ID Apple App Store (adam_id) de votre application, issu de asa apps list |
--type | Oui | brand, generic ou competitor |
--country | Non | Code pays ISO à deux lettres. Répétez pour en spécifier plusieurs. Par défaut : tous les pays du pool |
Le flag --type sélectionne le pool :
| Type | Mots-clés |
|---|---|
brand | Les termes de marque de votre application, leurs variantes orthographiques, et les termes organiques contenant la marque. La sortie liste également les termes de marque eux-mêmes |
generic | Les termes non-marque pour lesquels votre application et ses principaux concurrents organiques se positionnent, avec tous les termes de marque connus supprimés. relevance_tier: top_organic marque les termes pour lesquels votre application se classe déjà dans le top 10 organique |
competitor | Les termes de marque de chaque concurrent sélectionné pour l’application dans AI Growth Advisor, un groupe par concurrent. Vide jusqu’à ce que vous sélectionniez des concurrents |
Chaque mot-clé est accompagné de son pays, sa popularité, son score et son rang organique médian. Les mots-clés ne comportent pas d’enchères ni de types de correspondance. Choisissez-les vous-même, puis ajoutez les mots-clés avec asa keywords add.
Vérifiez le status du pool avant d’utiliser ses mots-clés :
| Statut | Signification |
|---|---|
ready | Le pool est prêt |
building | Le pool est encore en cours de construction. Réessayez dans environ une minute |
empty | Le pool est prêt mais ne contient aucun mot-clé |
failed | La construction a échoué. Réessayez plus tard |
Le premier appel brand ou generic pour une application construit le pool durant la requête et peut prendre plusieurs dizaines de secondes. La commande dispose d’un budget de 10 appels par minute par entreprise, et un seul build brand ou generic s’exécute à la fois par entreprise. Un second build pendant ce temps renvoie 429 cli_analytics_busy avec Retry-After: 5.
adapty asa keywords add
Ajoutez des mots-clés de ciblage à un groupe d’annonces.
adapty asa keywords add --ad-group <ad-group-id> --text "running shoes" --text "trail shoes" --bid 1.20
Lisez plutôt les mots-clés depuis un fichier, un par ligne :
adapty asa keywords add --ad-group <ad-group-id> --from-file keywords.txt
| Flag | Requis | Description |
|---|---|---|
--ad-group | Oui | ID du groupe d’annonces (UUID). La campagne est déduite à partir de celui-ci |
--text | Oui, sauf si --from-file est utilisé | Texte du mot-clé. À répéter pour plusieurs mots-clés |
--from-file | Non | Fichier avec un mot-clé par ligne. Combiné avec les valeurs --text éventuelles |
--bid | Non | Enchère par mot-clé sous forme de montant brut |
--match-type | Non | BROAD ou EXACT. Par défaut : BROAD |
--currency | Non | Code de devise pour les montants de cet appel. Par défaut : USD |
--status | Non | ACTIVE ou PAUSED. Par défaut : ACTIVE |
Une seule ID invalide fait échouer tout le lot avant même qu’Apple soit contacté. Apple peut toujours rejeter des mots-clés individuels, et chaque refus est signalé avec sa raison.
adapty asa keywords update
Modifiez l’enchère, le statut, le texte ou le type de correspondance d’un ou plusieurs mots-clés.
adapty asa keywords update <keyword-id> <keyword-id> --bid 2.00 --status PAUSED
| Argument | Description |
|---|---|
keyword-id | ID du mot-clé (UUID). Passez-en plusieurs en tant qu’arguments supplémentaires |
| Flag | Description |
|---|---|
--bid | Nouvelle enchère |
--status | ACTIVE ou PAUSED |
--match-type | BROAD ou EXACT |
--text | Nouveau texte du mot-clé. Significatif uniquement pour un seul mot-clé |
--currency | Code de devise pour les montants de cet appel. Par défaut : USD |
Un seul changement est appliqué à chaque identifiant transmis.
Mots-clés négatifs
adapty asa negative-keywords list
Liste les mots-clés négatifs. Les lignes avec un ad_group_id vide sont au niveau de la campagne.
adapty asa negative-keywords list --campaign <campaign-id>
| Flag | Description |
|---|---|
--campaign-level-only | Conserver uniquement les lignes au niveau de la campagne |
Accepte les flags de pagination ainsi que les filtres de liste --campaign-group, --app, --campaign, --ad-group et --search.
adapty asa negative-keywords add
Ajoutez des mots-clés négatifs à un groupe d’annonces ou à une campagne.
adapty asa negative-keywords add --ad-group <ad-group-id> --text free
Appliquez-les à chaque groupe d’annonces d’une campagne à la place :
adapty asa negative-keywords add --campaign <campaign-id> --all-ad-groups --text free
| Indicateur | Requis | Description |
|---|---|---|
--ad-group | L’un de --ad-group ou --campaign | ID du groupe d’annonces (UUID). La campagne en est déduite |
--campaign | L’un de --ad-group ou --campaign | ID de la campagne (UUID) |
--text | Oui | Texte du mot-clé. À répéter pour en ajouter plusieurs |
--all-ad-groups | Non | Applique à tous les groupes d’annonces de la campagne plutôt qu’à la campagne elle-même. Nécessite --campaign |
--match-type | Non | BROAD ou EXACT. Par défaut : EXACT |
--status | Non | ACTIVE ou PAUSED. Par défaut : ACTIVE |
--ad-group et --campaign s’excluent mutuellement. Passez exactement l’un des deux.
Termes de recherche
adapty asa search-terms list
Listez les termes de recherche qui ont déclenché vos publicités. Utilisez-les pour trouver de nouveaux mots-clés et de nouveaux mots-clés à exclure.
adapty asa search-terms list --ad-group <ad-group-id> --date-from 2026-07-01 --date-to 2026-07-31
| Option | Par défaut | Description |
|---|---|---|
--date-from | Aujourd’hui | Début de la période de rapport (YYYY-MM-DD) |
--date-to | Aujourd’hui | Fin de la période de rapport (YYYY-MM-DD) |
Accepte les options de pagination ainsi que les filtres de liste --campaign-group, --app, --campaign, --ad-group et --search.
En plus de ses métriques de performance, chaque ligne de terme de recherche contient les insights Apple pour ce terme :
| Champ | Valeur |
|---|---|
impression_share_all, impression_share_first | Part d’impression dans n’importe quelle position publicitaire, ou en première position |
impression_midpoint_all, impression_midpoint_first | Part d’impression exprimée en pourcentage unique |
rank_all, rank_first | Classement de votre application par rapport aux autres applications pour ce terme, en n’importe quelle position publicitaire ou en première position |
search_popularity | Popularité de la recherche de 1 à 5 |
Chaque champ est null lorsqu’Apple ne dispose d’aucune donnée pour ce terme. Voir Insights pour la définition d’Apple de ces valeurs.
Cette commande partage un pool d’analyse avec asa metrics. Voir Errors.
Publicités
adapty asa ads list
Liste les publicités. Le champ serving_state_reasons explique pourquoi une publicité n’est pas diffusée.
adapty asa ads list --ad-group <ad-group-id>
Accepte les options de pagination et les filtres de liste --campaign-group, --campaign, --ad-group, --search et --status. Cette liste ne dispose pas du filtre --app, car les publicités appartiennent à des groupes de publicités.
adapty asa ads get
Obtenez les détails d’une annonce spécifique.
adapty asa ads get <ad-id>
| Argument | Description |
|---|---|
ad-id | ID de l’annonce (UUID) |
adapty asa ads create
Créer une annonce dans un groupe d’annonces.
adapty asa ads create --ad-group <ad-group-id> --creative-id 4321 --name "Summer ad"
| Flag | Requis | Description |
|---|---|---|
--ad-group | Oui | ID du groupe d’annonces (UUID). La campagne est résolue à partir de celui-ci |
--creative-id | Oui | ID de création Apple. Voir creatives list |
--name | Oui | Nom de l’annonce |
--status | Non | Statut initial : ENABLED ou PAUSED |
adapty asa ads update
Mettre à jour une publicité existante.
adapty asa ads update <ad-id> --status PAUSED
| Argument | Description |
|---|---|
ad-id | ID de la publicité (UUID) |
| Flag | Description |
|---|---|
--name | Nouveau nom de la publicité |
--status | ENABLED ou PAUSED |
Au moins un flag est requis. Le créatif et le groupe de publicités parent sont fixés à la création.
Créatifs
adapty asa creatives list
Liste les créatifs disponibles pour les nouvelles publicités.
adapty asa creatives list --app <app-id>
Le creative_id retourné ici est la valeur --creative-id pour ads create.
Accepte les flags de pagination ainsi que les filtres de liste --campaign-group et --app list filters.
Pages produit
adapty asa product-pages list
Listez les pages produit personnalisées disponibles pour vos applications.
adapty asa product-pages list --app <app-id>
Accepte les options de pagination ainsi que les filtres --campaign-group et --app des filtres de liste.
adapty asa product-pages sync
Actualise les pages produit personnalisées depuis App Store Connect.
adapty asa product-pages sync --adam-id 123456
| Flag | Description |
|---|---|
--adam-id | Limite l’actualisation à une seule application. Omettez ce flag pour couvrir toutes les applications |
L’actualisation est mise en file d’attente plutôt qu’exécutée immédiatement, et la commande confirme avec Sync queued. Si la même actualisation est déjà en cours, elle retourne Already running; nothing new was queued. à la place.
Segments
Ces commandes créent des segments Adapty à partir de campagnes Apple Ads, de groupes d’annonces ou de mots-clés, de la même manière que Create segment from… dans Ads Manager. Utilisez les segments comme audiences dans les placements et les tests A/B pour afficher un paywall différent aux utilisateurs provenant d’une campagne spécifique.
Chaque segment comporte un filtre d’attribution sur les identifiants Apple des entités que vous choisissez. La CLI recherche ces identifiants, vous passez donc les UUID affichés par les commandes list.
Contrairement aux autres commandes adapty asa, celles-ci acceptent --app : l’ID de l’application Adapty à laquelle appartient le segment, disponible via adapty apps list. Elles n’acceptent pas --idempotency-key. Pour les segments avec d’autres filtres, comme le pays ou la date d’installation, utilisez adapty segments create.
adapty asa segments create
Créez un segment à partir de campagnes, groupes d’annonces ou mots-clés.
adapty asa segments create --app <app-id> --campaign <campaign-id>
adapty asa segments create --app <app-id> --ad-group <ad-group-id> --keyword <keyword-id> --keyword <other-keyword-id>
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’application Adapty (UUID) |
--campaign | Un type d’entité | ID de campagne (UUID). Répétable |
--ad-group | Un type d’entité | ID de groupe d’annonces (UUID). Répétable. Avec --keyword, indiquez exactement un : le groupe d’annonces contenant les mots-clés |
--keyword | Un type d’entité | ID de mot-clé (UUID). Répétable. Nécessite un --ad-group |
--title | Non | Titre du segment. Par défaut au format Ads Manager, par exemple [ASA] Campaign: <name> |
--description | Non | Description du segment. Par défaut au format Ads Manager |
Construisez chaque segment à partir d’un seul type d’entité. Passer à la fois --campaign et --ad-group, ou --campaign avec --keyword, échoue avec le code de sortie 2 avant l’envoi de toute requête. Plusieurs entités d’un même type produisent un segment qui correspond aux utilisateurs provenant de n’importe laquelle d’entre elles.
Conservez le titre par défaut à moins d’en avoir besoin d’un autre. Ads Manager reconnaît ses segments grâce au préfixe [ASA], et asa segments list liste uniquement les segments avec ce préfixe.
La réponse contient l’ensemble du segment, y compris id et filters. profile_count commence à 0, et Adapty le recalcule après la création du segment.
adapty asa segments update
Remplace les campagnes, groupes d’annonces ou mots-clés d’un segment existant.
adapty asa segments update <segment-id> --app <app-id> --campaign <campaign-id> --campaign <other-campaign-id>
| Argument | Description |
|---|---|
segment-id | ID du segment (UUID), obtenu via asa segments list ou adapty segments list |
Accepte les mêmes flags que asa segments create. Le filtre du segment est remplacé par les entités que vous fournissez. Le titre et la description restent inchangés, sauf si vous passez --title ou --description.
adapty asa segments list
Listez les segments créés à partir d’entités Apple Ads — ceux dont le titre commence par [ASA].
adapty asa segments list --app <app-id> --campaign <campaign-id>
| Flag | Requis | Description |
|---|---|---|
--app | Oui | ID de l’application Adapty (UUID) |
--campaign | Non | Ne conserver que les segments construits à partir de cette campagne (UUID) |
--ad-group | Non | Ne conserver que les segments construits à partir de ce groupe d’annonces (UUID) |
Passez --campaign ou --ad-group, mais pas les deux. Pour éviter de créer un second segment pour la même campagne, exécutez cette commande avant asa segments create : un résultat vide signifie que la campagne n’a pas encore de segment.
La commande lit les 100 premiers segments de l’application.
Automations
Le CLI stocke le JSON de règle que vous lui fournissez, à une exception près : les paramètres d’une action Add as keyword proviennent des flags. Consultez Automations pour savoir ce que chaque type de règle fait, et Run automation rules pour savoir comment générer un fichier de règle.
Indicateurs d’action Add-as-keyword
automations create et automations update partagent un ensemble d’indicateurs qui définissent actions[0].params pour une action add-as-keyword-to — Add as keyword dans une règle de termes de recherche, Add as keyword to… dans une règle de mots-clés. En passer un seul remplace l’intégralité de l’objet params, donc cette action ne nécessite aucun JSON écrit à la main.
| Indicateur | Champ JSON | Description |
|---|---|---|
--target-ad-group | targets.internal_ids | Groupe d’annonces qui reçoit le mot-clé (UUID), répétable. Une règle sans groupe d’annonces cible ne fait rien |
--match-type | match_type | BROAD ou EXACT |
--cpt-bid-type | cpt_bid.type | Origine de l’enchère du nouveau mot-clé : ad_group_default_bid, set_to, search_term_current_cpt ou keyword_current_bid |
--cpt-bid | cpt_bid.value | Avec set_to, l’enchère elle-même. Avec search_term_current_cpt ou keyword_current_bid, un pourcentage de majoration sur l’enchère copiée. Non accepté avec ad_group_default_bid |
--negate | negate | Ajoute également le terme de recherche comme mot-clé négatif, dans son propre ad-group ou sa propre campaign. --no-negate n’en laisse aucun. Règles de termes de recherche uniquement |
--skip-enable-duplicates | skip_enable_duplicate_keywords | Ignore un mot-clé qui existe déjà dans le groupe d’annonces cible au lieu de l’activer. Règles de termes de recherche uniquement |
--pause-original | pause_in_original_ad_group | Met en pause le mot-clé source dans son propre groupe d’annonces. Règles de mots-clés uniquement |
--cpt-bid-type et --match-type n’ont pas de valeur par défaut, ils sont donc tous deux obligatoires lorsque le fichier de règles ne contient pas ses propres params.
Quatre de ces flags dépendent du champ operate_with de la règle : --negate, --no-negate et --skip-enable-duplicates appartiennent à une règle search-term, --pause-original à une règle targeting-keyword. Un flag appartenant à l’autre ensemble échoue avec le code de sortie 2 et affiche la liste des flags applicables.
Récupère les params de cette action depuis les flags, jamais depuis une règle qui porte une action différente. L’API résout les params par forme plutôt que par variante nommée : une clé appartenant à une autre action lui fait choisir cette action et ignorer le reste — en répondant 200 et en enregistrant une règle qui n’ajoute des mots-clés à aucun groupe d’annonces.
Liste des règles d’automatisation adapty asa
Liste les règles d’automatisation. Le champ status vaut 1 pour actif et 0 pour arrêté.
adapty asa automations list
Accepte les options de pagination.
adapty asa automations get
Récupérez une règle d’automatisation spécifique, y compris ses conditions et actions.
adapty asa automations get <automation-id>
| Argument | Description |
|---|---|
automation-id | ID de la règle d’automatisation (UUID) |
adapty asa automations create
Crée une règle d’automatisation à partir d’un fichier de règle JSON.
adapty asa automations create --file rule.json
| Flag | Description |
|---|---|
--file | Fichier JSON contenant le corps de la règle, ou - pour lire depuis l’entrée standard |
--run-now | Place le premier lancement dans la file d’attente dès que la règle est enregistrée |
--file est obligatoire, et le fichier doit contenir exactement une action : l’API conserve une action et une condition par règle.
Accepte également les flags d’action add-as-keyword, qui renseignent ou remplacent actions[0].params :
adapty asa automations create --file rule.json --target-ad-group <ad-group-id> --match-type EXACT --cpt-bid-type search_term_current_cpt --negate ad-group
adapty asa automations update
Modifiez une règle d’automatisation : arrêtez-la, renommez-la ou remplacez certaines de ses parties.
adapty asa automations update <automation-id> --stop
| Argument | Description |
|---|---|
automation-id | ID de la règle d’automatisation (UUID) |
| Flag | Description |
|---|---|
--start | Active la règle |
--stop | Arrête la règle et annule sa prochaine exécution |
--name | Nouveau nom de la règle |
--file | Fichier JSON contenant les parties à modifier, ou - pour lire depuis l’entrée standard |
--start et --stop sont mutuellement exclusifs. Un fichier transmis ici ne doit pas contenir internal_id.
Accepte également les options d’action add-as-keyword. En passer une transforme l’appel en lecture-modification-écriture : le CLI lit la règle, reconstruit actions[0].params, puis renvoie la liste actions complète, car l’API remplace actions au lieu de la fusionner. Toute modification effectuée dans le tableau de bord entre la lecture et l’écriture sera écrasée.
Une mise à jour avec un indicateur d’action répare également une règle dont les params stockés ont la forme d’une autre action. Les paramètres sont reconstruits de zéro, donc seules les clés stockées qui correspondent à add-as-keyword-to sont conservées et tout le reste doit provenir d’un indicateur.
adapty asa automations run
Exécute une règle d’automatisation une seule fois, en dehors de son planning.
adapty asa automations run <automation-id> --dry-run
| Argument | Description |
|---|---|
automation-id | ID de la règle d’automatisation (UUID) |
| Flag | Description |
|---|---|
--dry-run | Évalue la règle et journalise le résultat sans rien modifier dans Apple Ads |
L’exécution est mise en file d’attente et la commande affiche un ID d’exécution. Consultez le résultat avec automations runs.
adapty asa automations runs
Liste les exécutions passées d’une règle d’automatisation, y compris les exécutions à blanc.
adapty asa automations runs <automation-id>
| Argument | Description |
|---|---|
automation-id | ID de la règle d’automatisation (UUID) |
Accepte les indicateurs de pagination.
Métriques
adapty asa metrics
Interrogez les métriques pour n’importe quel niveau du compte sur une plage de dates.
adapty asa metrics --entity campaign --date-from 2026-07-01 --date-to 2026-07-31
| Indicateur | Requis | Description |
|---|---|---|
--entity | Oui | Sur quoi générer le rapport : campaign, ad-group, keyword, ou ad |
--date-from | Oui | Début de la période (YYYY-MM-DD) |
--date-to | Oui | Fin de la période (YYYY-MM-DD) |
--metric | Oui | Nom de la métrique, répétable |
--app | Non | Limiter le rapport à ces applications. Répétable |
--campaign | Non | Limiter le rapport à ces campagnes. Répétable |
--ad-group | Non | Limiter le rapport à ces groupes d’annonces. Répétable |
--group-by | Non | Ventiler les lignes par country, day, week, month, quarter, ou year. Répétable |
--by-days | Non | Fenêtre de renouvellement en jours pour les métriques de cohorte, répétable. Maximum 16 par appel. Omettez ce paramètre pour utiliser les valeurs par défaut du tableau de bord |
--order-by | Non | Métrique ou champ sur lequel trier |
--order-by-day | Non | Classer par une métrique de cohorte à cette fenêtre de renouvellement. Doit correspondre à l’une des valeurs de --by-days |
--order | Non | asc ou desc. Par défaut : desc |
Accepte les options de pagination. Parmi les filtres de liste, seuls --app, --campaign et --ad-group sont disponibles ; --search et --status ne sont pas pris en charge. Pour affiner le rapport sur d’autres critères, croisez les lignes avec les identifiants issus d’une commande list ciblée.
Chaque ligne correspond à une entité, agrégée côté serveur et triée par --order-by. Une question de type top N se résout donc en un seul appel — définissez --order-by et --page-size N plutôt que de parcourir les pages et d’additionner les résultats :
adapty asa metrics --entity campaign --date-from 2026-07-01 --date-to 2026-07-31 --order-by spend --page-size 5
--metric prend les noms de métriques suivis par Ads Manager, dans la nomenclature du tableau de bord — par exemple spend, taps ou gross_roas. Consultez Métriques pour la liste complète et le mode de calcul de chacune. Un nom inexistant échoue en affichant les noms valides dans le message d’erreur.
Avec --entity keyword, --metric accepte aussi les métriques réservées aux mots-clés. Apple reporte la part d’impressions et le rang pour n’importe quelle position d’annonce et pour la première position d’annonce, ce qui donne deux versions de chaque : _all et _first. Voir Insights pour la définition d’Apple.
| Métrique | Valeur |
|---|---|
impression_midpoint_all, impression_midpoint_first | Part d’impression sur la période de rapport, en pourcentage |
rank_all, rank_first | Classement de votre application par rapport aux autres applications pour le mot-clé. La dernière valeur, indépendamment de --date-from et --date-to |
search_popularity | Popularité de recherche de 1 à 5 |
Un mot-clé sans données de rapport renvoie 0 pour ces métriques. Depuis CLI 0.9.2, ces noms remplacent rank et impression_midpoint.
Chaque métrique que vous nommez est calculée sur l’ensemble du niveau d’entité avant que la page ne soit découpée, donc demandez les colonnes dont vous avez besoin plutôt que tout le catalogue. subscribers et paid_subscribers comptent les profils uniques par entité, ce qui coûte environ dix-sept fois plus qu’un appel dépenses-et-installations classique ; arppu et arpas aussi, car ils en sont dérivés. Pour tout --entity, ces quatre noms nécessitent --campaign ou --ad-group pour affiner l’appel :
adapty asa metrics --entity keyword --date-from 2026-07-01 --date-to 2026-07-31 --metric arpas --campaign <campaign-id>
Sans l’un de ces deux filtres, l’appel échoue avec 422 cli_metric_scope_too_wide. Le scope est le moyen le plus économique d’accélérer un appel de métriques, car le coût dépend du nombre d’entités agrégées plutôt que de la taille de la page.
La durée de la période de rapport est limitée par la valeur --group-by la plus fine. Pour couvrir une période plus longue, choisissez un regroupement plus grossier plutôt que de diviser la requête en plusieurs appels :
Valeur --group-by la plus fine | Période maximale |
|---|---|
day | 28 jours |
| Aucun regroupement par période | 90 jours |
week | 180 jours |
month et plus grossier | 365 jours |
Le grain journalier couvre donc au maximum quatre semaines. Pour une période plus longue, utilisez le grain week, qui permet de tenir un semestre en un seul appel.
Chaque page est également limitée à 5 000 lignes de ventilation, une ligne correspondant à une entité × pays × période. Une page dépassant ce plafond échoue avec 422 cli_response_too_large. Affinez le regroupement, réduisez la fenêtre de dates ou diminuez --page-size ; lorsque l’appel regroupe par day, l’erreur indique la taille de page qui convient — utilisez ce nombre plutôt qu’un que vous calculerez vous-même. metrics overview ne renvoie aucune ventilation par entité, donc ce plafond ne s’y applique jamais.
Il n’existe pas de métrique ltv. La valeur vie est une métrique de cohorte lue à une fenêtre de renouvellement, c’est pourquoi --by-days permet d’obtenir la valeur au jour 7 ou au jour 90 :
adapty asa metrics --entity campaign --date-from 2026-07-01 --date-to 2026-07-31 --metric roas --by-days 7 --by-days 90
--order-by-day classe les lignes selon l’une de ces fenêtres, ce qui retourne les meilleures campagnes par ROAS au jour 90 en un seul appel.
adapty asa metrics overview
Query totals for a period, bucketed by a unit of time.
adapty asa metrics overview --entity campaign --date-from 2026-07-01 --date-to 2026-07-31 --period-unit week
| Indicateur | Requis | Description |
|---|---|---|
--entity | Oui | Entité sur laquelle générer le rapport : campaign, ad-group, keyword ou ad |
--date-from | Oui | Début de la période (YYYY-MM-DD) |
--date-to | Oui | Fin de la période (YYYY-MM-DD) |
--period-unit | Non | Taille des intervalles : day, week, month, quarter ou year. Par défaut : day |
--metric | Non | Nom de la métrique, répétable. Omettez ce paramètre pour toutes les métriques |
--by-days | Non | Fenêtre de renouvellement en jours pour les métriques de cohorte, répétable. Maximum 16 par appel |
Cette commande renvoie les totaux pour l’ensemble du niveau d’entité ainsi qu’une série par période, répondant ainsi à la question « combien ai-je dépensé ou gagné au total » en un seul appel. Elle ne dispose ni d’options de tri ni de pagination.
Sur cette commande, --metric accepte uniquement les racines de cohorte — revenue, roas et arpu — et non leurs variantes gross_, proceeds_ ou net_. Elle n’accepte pas non plus les métriques réservées aux mots-clés.
La durée de la période de reporting est plafonnée par --period-unit :
--period-unit | Période maximale |
|---|---|
day | 90 jours |
week | 180 jours |
month et plus grossier | 365 jours |
Concurrents
adapty asa competitors summary
Résume les mots-clés Apple Ads sur lesquels un ensemble d’applications App Store enchérissent. Cette commande renvoie les mêmes données de concurrents que Market Intelligence dans le tableau de bord.
adapty asa competitors summary --app-ids 1668337467,6503873027
| Flag | Requis | Description |
|---|---|---|
--app-ids | Oui | Identifiants Apple App Store (adam_id), séparés par des virgules. Entre 1 et 5 valeurs |
La période de rapport et l’ensemble de pays sont fixés côté serveur — le dernier mois complet, pour tous les pays. Cette commande ne dispose d’aucun paramètre de période, de pays ou de pagination.
La commande affiche trois blocs : les totaux de l’analyse, les meilleures applications par performance et les termes les plus disputés. Ajoutez --json pour obtenir le résultat complet, qui détaille également les termes de chaque application par pays.
Le premier appel pour un ensemble d’applications peut prendre plusieurs dizaines de secondes pendant la préparation des données. Les appels suivants pour les mêmes applications sont plus rapides.
Historique des modifications
L’historique des modifications est récupéré en direct depuis l’API Apple Ads. Adapty ne le stocke pas, et Apple le conserve pendant 6 mois. Il couvre chaque modification apportée à l’organisation, qu’elle ait été effectuée directement dans Apple Ads, par le support Apple ou via d’autres outils API.
adapty asa change-history list
Liste les modifications apportées dans une organisation Apple Ads, de la plus récente à la plus ancienne.
adapty asa change-history list --campaign-group <campaign-group-id> --date-from 2026-10-01 --entity-type Campaign --event-type UPDATE
| Flag | Obligatoire | Description |
|---|---|---|
--campaign-group | Oui | Organisation à lire (UUID issu de orgs list). Une organisation par appel. Pour en lire plusieurs, exécutez la commande pour chacune |
--date-from | Non | Début de la période (YYYY-MM-DD). Par défaut : il y a 7 jours |
--date-to | Non | Fin de la période (YYYY-MM-DD). Par défaut : aujourd’hui. La période ne peut pas dépasser 14 jours |
--entity-type | Non | Campaign, AdGroup, Keyword, NegativeKeyword, Ad, Creative, LocationGroup, Org ou AdAccount. Répétable. Par défaut : tous les types sauf Org et AdAccount. Org et AdAccount ne peuvent pas être combinés avec les autres types |
--event-type | Non | CREATE, UPDATE ou DELETE. Répétable |
--user-type | Non | Qui a effectué la modification : CUSTOMER (dans Apple Ads), CUSTOMER_API (via l’API Apple Ads) ou APPLE_SUPPORT. Répétable |
--campaign, --ad-group, --entity-id | Non | Identifiants numériques Apple de la campagne, du groupe d’annonces ou de l’entité modifiée. Répétable |
--user | Non | Identifiant utilisateur Apple de la personne ayant effectué la modification. Répétable |
--txn | Non | Identifiant de transaction Apple. Répétable |
--fields | Non | Développe chaque modification en une ligne par champ modifié, avec ses anciennes et nouvelles valeurs |
Contrairement aux filtres de liste des autres commandes, --campaign, --ad-group et --entity-id prennent les identifiants numériques d’Apple, tels qu’ils apparaissent dans les lignes de l’historique des modifications — et non des UUIDs. De même, modified_by dans chaque ligne est un identifiant utilisateur Apple, et non un e-mail.
Chaque ligne correspond à une transaction : qui l’a effectuée (modified_by, user_type), quand (event_time), et les entités qu’elle a modifiées. Chaque entité porte un detail_id pour change-history get.
Avec --fields, la taille de page est limitée à 10 par défaut, et une valeur --page-size plus grande est refusée. Une page nécessitant plus de 20 requêtes échoue : affinez les filtres, ou supprimez --fields et lisez les modifications individuellement avec change-history get.
Accepte les drapeaux de pagination. --page × --page-size ne peut pas dépasser 1000.
adapty asa change-history get
Affiche les modifications au niveau des champs d’une entité dans une transaction.
adapty asa change-history get Campaign.444555666.TXN_ID --campaign-group <campaign-group-id>
| Argument | Description |
|---|---|
detail-id | detail_id issu de change-history list, sous la forme EntityType.entityId.txnId |
| Flag | Requis | Description |
|---|---|---|
--campaign-group | Oui | Organisation à laquelle appartient la modification. Récupérez-la depuis campaign_group_id dans la ligne de la liste |
La réponse liste chaque champ modifié avec ses old_values et new_values, ainsi que les métadonnées de l’entité dans entity_metadata. Un detail_id qu’Apple ne reconnaît pas renvoie 404.
Erreurs
| Statut | Code | Signification |
|---|---|---|
402 | ads_manager_subscription_required | L’entreprise n’a pas d’abonnement Ads Manager actif |
403 | cli_ad_account_unreadable | change-history ne peut pas lire l’organisation : le token Apple Ads est révoqué, l’organisation n’est plus liée, ou Apple a refusé l’accès |
404 | — | L’entité n’existe pas, ou elle appartient à une autre entreprise |
409 | cli_idempotency_in_progress | Une écriture avec la même clé d’idempotence est toujours en cours |
422 | cli_idempotency_key_reuse | La même clé d’idempotence a été utilisée avec un corps de requête différent |
422 | cli_metric_scope_too_wide | Une métrique de comptage de profils a été demandée sans --campaign ni --ad-group |
422 | cli_response_too_large | Une page metrics dépasserait 5000 lignes de ventilation |
429 | cli_analytics_busy | Le pool d’analyse est occupé, ou une autre construction de pool de mots-clés pour l’entreprise est toujours en cours. Le délai d’attente est dans l’en-tête Retry-After |
429 | cli_cooldown_active | Trop de requêtes rejetées ont mis le token en période de refroidissement |
429 | cli_upstream_rate_limited | Apple a limité le débit d’une requête change-history. Le délai d’attente d’Apple est dans l’en-tête Retry-After |
504 | cli_read_timeout | Une requête change-history a pris plus de 50 secondes. Réduisez la période ou les filtres |
Les métriques et la liste des termes de recherche partagent un même budget d’appels API par entreprise : 5 appels par minute, et au plus 2 toutes les 10 secondes. change-history dispose de son propre budget : 30 appels par minute, au plus 5 toutes les 10 secondes, et une seule requête à la fois par entreprise. Une rafale de 20 requêtes rejetées en 5 minutes déclenche une période de refroidissement progressive : 5 minutes, puis 30 minutes, puis 3 heures. Effectuer de nouvelles tentatives pendant la pause ne la prolonge pas, mais la solution consiste à corriger la requête défaillante plutôt que de la répéter.
L’interface CLI gère les courtes attentes pour vous. En cas de 429 qui n’est pas un refroidissement, si Retry-After est inférieur ou égal à 60 secondes, la commande attend ce délai et réessaie une fois, en signalant l’attente sur la sortie d’erreur standard.