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.

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.

IndicateurDescription
--jsonAfficher en JSON plutôt qu’en texte formaté
--helpAfficher l’aide de la commande

Toutes les commandes list acceptent également des indicateurs de pagination :

IndicateurDéfautDescription
--page1Numéro de page
--page-size100É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 :

IndicateurDescription
--yes, -yApplique sans demander de confirmation. Obligatoire quand la sortie est redirigée ou que --json est utilisé
--idempotency-keyClé 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.

FiltreAccepté par
--campaign-groupcampaigns, ad-groups, keywords, negative-keywords, search-terms, ads, creatives, product-pages
--appcampaigns, ad-groups, keywords, negative-keywords, search-terms, creatives, product-pages
--campaignad-groups, keywords, negative-keywords, search-terms, ads
--ad-groupkeywords, negative-keywords, search-terms, ads
--statuscampaigns, ad-groups, ads (ENABLED ou PAUSED), keywords (ACTIVE ou PAUSED)
--searchcampaigns, 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é.

FlagDéfautDescription
--wait / --no-wait--waitAttend qu’Apple Ads signale la connexion. --no-wait retourne immédiatement
--timeout300Secondes à 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 :

FieldUsed as
internal_idL’UUID que --org accepte dans campaigns create, et que --campaign-group accepte comme filtre de liste
org_idL’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 :

ChampUtilisé comme
internal_idL’UUID que --app accepte en tant que filtre de liste
adam_idL’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>
ArgumentDescription
campaign-idIdentifiant 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
IndicateurRequisDescription
--orgOuiID du groupe de campagnes (UUID). Voir orgs list
--nameOuiNom de la campagne
--adam-idOuiID de l’application App Store (adam_id)
--countryOuiCode pays ou région. Répéter pour plusieurs : --country US --country CA
--daily-budgetOuiBudget quotidien en montant simple, par exemple 50 ou 12.50
--budgetNonBudget total
--target-cpaNonCoût par acquisition cible. Doit être inférieur à --daily-budget
--currencyNonCode devise pour les montants de cet appel. Par défaut : USD
--bidding-strategyNonMANUAL_CPT ou MAX_CONVERSIONS. Apple utilise MANUAL_CPT par défaut
--ad-channel-typeNonSEARCH ou DISPLAY. Par défaut : SEARCH
--billing-eventNonTAPS ou IMPRESSIONS. Par défaut : TAPS
--supply-sourceNonSource d’approvisionnement, répétable. Par défaut : APPSTORE_SEARCH_RESULTS
--statusNonStatut initial : ENABLED ou PAUSED
--invoice-advertiserLigne de créditOptions de facturation : nom de l’annonceur
--invoice-order-numberLigne de créditOptions de facturation : numéro de commande
--invoice-contact-nameLigne de créditOptions de facturation : nom du contact acheteur
--invoice-contact-emailLigne de créditOptions de facturation : e-mail du contact acheteur
--invoice-billing-emailLigne de créditOptions 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
ArgumentDescription
campaign-idIdentifiant de la campagne (UUID)
IndicateurDescription
--nameNouveau nom de la campagne
--statusENABLED ou PAUSED
--countryRemplace la liste de pays. Répéter pour plusieurs
--daily-budgetNouveau budget quotidien
--budgetNouveau budget global
--target-cpaNouveau coût cible par acquisition
--bidding-strategyMANUAL_CPT ou MAX_CONVERSIONS
--currencyCode de devise pour les montants de cet appel. Par défaut : USD
--invoice-advertiserOptions de facturation : nom de l’annonceur
--invoice-order-numberOptions de facturation : numéro de commande
--invoice-contact-nameOptions de facturation : nom du contact acheteur
--invoice-contact-emailOptions de facturation : e-mail du contact acheteur
--invoice-billing-emailOptions 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
IndicateurDéfautDescription
--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--waitInterroge l’opération jusqu’à ce qu’elle se termine. --no-wait affiche l’identifiant de l’opération et retourne
--poll-interval5Secondes entre chaque interrogation de progression
--timeout900Duré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 :

StatutSignification
successChaque objet a été créé
partialCertains objets n’ont pas été créés. Chaque échec est affiché avec l’erreur Apple
failedL’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>
ArgumentDescription
operation-idID 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>
ArgumentDescription
ad-group-idID 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
IndicateurRequisDescription
--campaignOuiID de la campagne (UUID)
--nameOuiNom du groupe d’annonces
--default-bidSauf si --automatedEnchère par défaut en montant brut, par exemple 1.20
--cpa-goalNonObjectif de coût par acquisition
--pricing-modelNonCPC ou CPM. Apple en exige un sur chaque groupe d’annonces. Par défaut : CPC
--start-timeNonDébut de la planification (YYYY-MM-DD). Par défaut : aujourd’hui
--end-timeNonFin de la planification (YYYY-MM-DD)
--automated-keywords / --no-automated-keywordsNonLaisser Apple ajouter des mots-clés automatiquement
--automatedNonCréer le groupe d’annonces automatisé requis par une campagne MAX_CONVERSIONS
--currencyNonCode de devise pour les montants de cet appel. Par défaut : USD
--statusNonStatut 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
ArgumentDescription
ad-group-idID du groupe d’annonces (UUID)
IndicateurDescription
--nameNouveau nom du groupe d’annonces
--statusENABLED ou PAUSED
--default-bidNouveau montant d’enchère par défaut
--cpa-goalNouvel objectif de coût par acquisition
--start-timeDébut de la planification (YYYY-MM-DD)
--end-timeFin de la planification (YYYY-MM-DD)
--automated-keywords / --no-automated-keywordsLaisser Apple ajouter des mots-clés automatiquement
--currencyCode 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ètreObligatoireDescription
--adam-idOuiID Apple App Store (adam_id) de votre application, issu de asa apps list
--typeOuibrand, generic ou competitor
--countryNonCode 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 :

TypeMots-clés
brandLes 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
genericLes 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
competitorLes 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 :

StatutSignification
readyLe pool est prêt
buildingLe pool est encore en cours de construction. Réessayez dans environ une minute
emptyLe pool est prêt mais ne contient aucun mot-clé
failedLa 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
FlagRequisDescription
--ad-groupOuiID du groupe d’annonces (UUID). La campagne est déduite à partir de celui-ci
--textOui, sauf si --from-file est utiliséTexte du mot-clé. À répéter pour plusieurs mots-clés
--from-fileNonFichier avec un mot-clé par ligne. Combiné avec les valeurs --text éventuelles
--bidNonEnchère par mot-clé sous forme de montant brut
--match-typeNonBROAD ou EXACT. Par défaut : BROAD
--currencyNonCode de devise pour les montants de cet appel. Par défaut : USD
--statusNonACTIVE 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
ArgumentDescription
keyword-idID du mot-clé (UUID). Passez-en plusieurs en tant qu’arguments supplémentaires
FlagDescription
--bidNouvelle enchère
--statusACTIVE ou PAUSED
--match-typeBROAD ou EXACT
--textNouveau texte du mot-clé. Significatif uniquement pour un seul mot-clé
--currencyCode 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>
FlagDescription
--campaign-level-onlyConserver 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
IndicateurRequisDescription
--ad-groupL’un de --ad-group ou --campaignID du groupe d’annonces (UUID). La campagne en est déduite
--campaignL’un de --ad-group ou --campaignID de la campagne (UUID)
--textOuiTexte du mot-clé. À répéter pour en ajouter plusieurs
--all-ad-groupsNonApplique à tous les groupes d’annonces de la campagne plutôt qu’à la campagne elle-même. Nécessite --campaign
--match-typeNonBROAD ou EXACT. Par défaut : EXACT
--statusNonACTIVE 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
OptionPar défautDescription
--date-fromAujourd’huiDébut de la période de rapport (YYYY-MM-DD)
--date-toAujourd’huiFin 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 :

ChampValeur
impression_share_all, impression_share_firstPart d’impression dans n’importe quelle position publicitaire, ou en première position
impression_midpoint_all, impression_midpoint_firstPart d’impression exprimée en pourcentage unique
rank_all, rank_firstClassement de votre application par rapport aux autres applications pour ce terme, en n’importe quelle position publicitaire ou en première position
search_popularityPopularité 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>
ArgumentDescription
ad-idID 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"
FlagRequisDescription
--ad-groupOuiID du groupe d’annonces (UUID). La campagne est résolue à partir de celui-ci
--creative-idOuiID de création Apple. Voir creatives list
--nameOuiNom de l’annonce
--statusNonStatut initial : ENABLED ou PAUSED

adapty asa ads update

Mettre à jour une publicité existante.

adapty asa ads update <ad-id> --status PAUSED
ArgumentDescription
ad-idID de la publicité (UUID)
FlagDescription
--nameNouveau nom de la publicité
--statusENABLED 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
FlagDescription
--adam-idLimite 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>
FlagRequisDescription
--appOuiID de l’application Adapty (UUID)
--campaignUn type d’entitéID de campagne (UUID). Répétable
--ad-groupUn 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
--keywordUn type d’entitéID de mot-clé (UUID). Répétable. Nécessite un --ad-group
--titleNonTitre du segment. Par défaut au format Ads Manager, par exemple [ASA] Campaign: <name>
--descriptionNonDescription 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>
ArgumentDescription
segment-idID 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>
FlagRequisDescription
--appOuiID de l’application Adapty (UUID)
--campaignNonNe conserver que les segments construits à partir de cette campagne (UUID)
--ad-groupNonNe 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.

IndicateurChamp JSONDescription
--target-ad-grouptargets.internal_idsGroupe d’annonces qui reçoit le mot-clé (UUID), répétable. Une règle sans groupe d’annonces cible ne fait rien
--match-typematch_typeBROAD ou EXACT
--cpt-bid-typecpt_bid.typeOrigine de l’enchère du nouveau mot-clé : ad_group_default_bid, set_to, search_term_current_cpt ou keyword_current_bid
--cpt-bidcpt_bid.valueAvec 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
--negatenegateAjoute é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-duplicatesskip_enable_duplicate_keywordsIgnore 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-originalpause_in_original_ad_groupMet 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.

Warning

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>
ArgumentDescription
automation-idID 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
FlagDescription
--fileFichier JSON contenant le corps de la règle, ou - pour lire depuis l’entrée standard
--run-nowPlace 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
ArgumentDescription
automation-idID de la règle d’automatisation (UUID)
FlagDescription
--startActive la règle
--stopArrête la règle et annule sa prochaine exécution
--nameNouveau nom de la règle
--fileFichier 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
ArgumentDescription
automation-idID de la règle d’automatisation (UUID)
FlagDescription
--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>
ArgumentDescription
automation-idID 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
IndicateurRequisDescription
--entityOuiSur quoi générer le rapport : campaign, ad-group, keyword, ou ad
--date-fromOuiDébut de la période (YYYY-MM-DD)
--date-toOuiFin de la période (YYYY-MM-DD)
--metricOuiNom de la métrique, répétable
--appNonLimiter le rapport à ces applications. Répétable
--campaignNonLimiter le rapport à ces campagnes. Répétable
--ad-groupNonLimiter le rapport à ces groupes d’annonces. Répétable
--group-byNonVentiler les lignes par country, day, week, month, quarter, ou year. Répétable
--by-daysNonFenê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-byNonMétrique ou champ sur lequel trier
--order-by-dayNonClasser par une métrique de cohorte à cette fenêtre de renouvellement. Doit correspondre à l’une des valeurs de --by-days
--orderNonasc 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étriqueValeur
impression_midpoint_all, impression_midpoint_firstPart d’impression sur la période de rapport, en pourcentage
rank_all, rank_firstClassement 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_popularityPopularité 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 finePériode maximale
day28 jours
Aucun regroupement par période90 jours
week180 jours
month et plus grossier365 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
IndicateurRequisDescription
--entityOuiEntité sur laquelle générer le rapport : campaign, ad-group, keyword ou ad
--date-fromOuiDébut de la période (YYYY-MM-DD)
--date-toOuiFin de la période (YYYY-MM-DD)
--period-unitNonTaille des intervalles : day, week, month, quarter ou year. Par défaut : day
--metricNonNom de la métrique, répétable. Omettez ce paramètre pour toutes les métriques
--by-daysNonFenê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-unitPériode maximale
day90 jours
week180 jours
month et plus grossier365 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
FlagRequisDescription
--app-idsOuiIdentifiants 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
FlagObligatoireDescription
--campaign-groupOuiOrganisation à lire (UUID issu de orgs list). Une organisation par appel. Pour en lire plusieurs, exécutez la commande pour chacune
--date-fromNonDébut de la période (YYYY-MM-DD). Par défaut : il y a 7 jours
--date-toNonFin de la période (YYYY-MM-DD). Par défaut : aujourd’hui. La période ne peut pas dépasser 14 jours
--entity-typeNonCampaign, 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-typeNonCREATE, UPDATE ou DELETE. Répétable
--user-typeNonQui 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-idNonIdentifiants numériques Apple de la campagne, du groupe d’annonces ou de l’entité modifiée. Répétable
--userNonIdentifiant utilisateur Apple de la personne ayant effectué la modification. Répétable
--txnNonIdentifiant de transaction Apple. Répétable
--fieldsNonDéveloppe chaque modification en une ligne par champ modifié, avec ses anciennes et nouvelles valeurs
Important

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>
ArgumentDescription
detail-iddetail_id issu de change-history list, sous la forme EntityType.entityId.txnId
FlagRequisDescription
--campaign-groupOuiOrganisation à 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

StatutCodeSignification
402ads_manager_subscription_requiredL’entreprise n’a pas d’abonnement Ads Manager actif
403cli_ad_account_unreadablechange-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
409cli_idempotency_in_progressUne écriture avec la même clé d’idempotence est toujours en cours
422cli_idempotency_key_reuseLa même clé d’idempotence a été utilisée avec un corps de requête différent
422cli_metric_scope_too_wideUne métrique de comptage de profils a été demandée sans --campaign ni --ad-group
422cli_response_too_largeUne page metrics dépasserait 5000 lignes de ventilation
429cli_analytics_busyLe 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
429cli_cooldown_activeTrop de requêtes rejetées ont mis le token en période de refroidissement
429cli_upstream_rate_limitedApple 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
504cli_read_timeoutUne 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.