Configuration du Script Super Marketing
Cette page documente les endpoints de l'API pour le script Super Marketing. Contrairement aux autres scripts, le super marketing n'est pas créé via l'endpoint générique POST /api/v1/task — il fonctionne avec un ensemble de données cibles réutilisable et possède ses propres endpoints dédiés.
Description Générale
Une campagne de super marketing combine plusieurs actions de croissance (suivre, ne plus suivre, signaler, DM, booster, commentaire en masse) en une seule exécution sur un groupe de cibles. Le groupe de cibles est stocké comme un ensemble de données :
- Type de données — l'ensemble de données contient des
usernames(pseudos TikTok/Instagram) ou despost_links(URLs de publications). - Stratégie — contrôle comment les cibles sont distribuées sur vos appareils :
shared_pool— chaque appareil/compte sélectionné traite toutes les cibles.consume_once— les cibles sont réparties entre les appareils et chacune est consommée une seule fois.
Le flux typique est :
- Importer des cibles dans un ensemble de données → obtenir un
dataset_id. - Exécuter une campagne qui référence ce
dataset_idsur un ou plusieurs appareils.
Les bascules de fonctionnalités (suivre / DM / commenter, etc.) et leurs paramètres détaillés sont lus depuis la configuration sauvegardée dans l'application de bureau (super_marketing_settings.json). Vous pouvez remplacer n'importe lequel d'entre eux par exécution en passant script_config dans la requête d'exécution.
Tous les endpoints de super marketing nécessitent un plan Pro, Team ou Business, comme le reste de l'API Locale.
Importer un Ensemble de Données
Créer un nouvel ensemble de données ou ajouter des cibles à un existant.
- Endpoint :
POST /api/v1/super-marketing/dataset
Corps de la Requête
| Champ | Type | Requis | Défaut | Description |
|---|---|---|---|---|
| dataset_id | integer | Non | — | ID de l'ensemble de données existant auquel ajouter/remplacer. Omettre ou utiliser 0 pour créer un nouveau. |
| data_type | string | Oui | — | usernames ou post_links |
| strategy | string | Oui | — | shared_pool ou consume_once |
| entries | string[] | Oui* | [] | Cibles sous forme de tableau JSON. Prioritaire sur raw_text. |
| raw_text | string | Oui* | — | Cibles sous forme de string séparé par des sauts de ligne (alternative à entries). |
| mode | string | Non | append | append ajoute aux entrées existantes ; replace efface les entrées existantes d'abord. |
| label | string | Non | — | Étiquette optionnelle lisible par l'humain pour l'ensemble de données. |
Fournissez les cibles via entries ou raw_text. Les entrées dupliquées et vides sont ignorées. Une seule importation est limitée à 100 000 entrées.
Exemple
curl -X POST http://localhost:50809/api/v1/super-marketing/dataset \
-H "Content-Type: application/json" \
-d '{
"data_type": "usernames",
"strategy": "shared_pool",
"label": "Cibles Campagne A",
"entries": ["@user_one", "@user_two", "@user_three"]
}'
Ajouter plus de cibles à un ensemble de données existant via du texte séparé par des sauts de ligne :
curl -X POST http://localhost:50809/api/v1/super-marketing/dataset \
-H "Content-Type: application/json" \
-d '{
"dataset_id": 7,
"data_type": "usernames",
"strategy": "shared_pool",
"mode": "append",
"raw_text": "@user_four\n@user_five\n@user_six"
}'
Exemple de Réponse
{
"code": 0,
"message": "success",
"data": {
"dataset": {
"stats": {
"id": 7,
"data_type": "usernames",
"strategy": "shared_pool",
"label": "Cibles Campagne A",
"total": 3,
"consumed": 0,
"remaining": 3,
"created_at": "2026-06-22 09:00:00",
"updated_at": "2026-06-22 09:00:00"
},
"entries": [
{ "id": 1, "value": "@user_one", "consumed": false, "consumed_by": null, "consumed_at": null, "created_at": "2026-06-22 09:00:00", "updated_at": "2026-06-22 09:00:00" }
]
},
"summary": {
"inserted": 3,
"duplicates": 0,
"skipped_empty": 0,
"removed": 0,
"truncated": 0
}
}
}
Lister les Ensembles de Données
Récupérer tous les ensembles de données avec les statistiques de consommation.
- Endpoint :
GET /api/v1/super-marketing/datasets
Paramètres de Requête
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| data_type | string | — | Filtre optionnel : usernames ou post_links |
Exemple
curl "http://localhost:50809/api/v1/super-marketing/datasets?data_type=usernames"
Exemple de Réponse
{
"code": 0,
"message": "success",
"data": [
{
"id": 7,
"data_type": "usernames",
"strategy": "shared_pool",
"label": "Cibles Campagne A",
"total": 6,
"consumed": 0,
"remaining": 6,
"created_at": "2026-06-22 09:00:00",
"updated_at": "2026-06-22 09:05:00"
}
]
}
Obtenir un Ensemble de Données
Récupérer les statistiques d'un ensemble de données et une page de ses entrées.
- Endpoint :
GET /api/v1/super-marketing/dataset/{id}
Paramètres de Requête
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| limit | integer | 50 | Entrées par page (max 500) |
| offset | integer | 0 | Nombre d'entrées à ignorer |
Exemple
curl "http://localhost:50809/api/v1/super-marketing/dataset/7?limit=100&offset=0"
Vider un Ensemble de Données
Supprimer toutes les entrées d'un ensemble de données. L'enregistrement de l'ensemble de données lui-même est conservé (et son dataset_id reste valide pour les futures importations).
- Endpoint :
DELETE /api/v1/super-marketing/dataset/{id}
Exemple
curl -X DELETE http://localhost:50809/api/v1/super-marketing/dataset/7
Exemple de Réponse
{
"code": 0,
"message": "success",
"data": { "cleared": true, "dataset_id": 7 }
}
Exécuter une Campagne
Lancer une campagne de super marketing sur les appareils donnés, en utilisant les cibles d'un ensemble de données.
- Endpoint :
POST /api/v1/super-marketing/run
Corps de la Requête
| Champ | Type | Requis | Défaut | Description |
|---|---|---|---|---|
| serials | string[] | Oui | [] | Numéros de série des appareils sur lesquels exécuter |
| dataset_id | integer | Oui | — | Ensemble de données dont les cibles alimentent la campagne |
| enable_multi_account | boolean | Non | false | Créer une tâche par compte sur chaque appareil |
| merge_same_username_tasks | boolean | Non | false | Regrouper toutes les cibles d'un appareil en une seule tâche au lieu d'une tâche par cible |
| platform | string | Non | — | Remplacement de plateforme (tiktok / instagram). Respecté uniquement sur les builds multiplateformes |
| min_interval | integer | Non | 0 | Minutes minimum entre les heures de début échelonnées des tâches |
| max_interval | integer | Non | 0 | Minutes maximum entre les heures de début échelonnées des tâches |
| start_time | string | Non | — | Heure de début de la première tâche en HH:MM |
| rotate_proxy | boolean | Non | false | Faire tourner le proxy de l'appareil avant d'exécuter |
| switch_account_method | string | Non | — | Comment changer de compte en mode multi-compte (ex. profile) |
| official_packages | string[] | Non | [] | Restreindre l'exécution à ces packages officiels (mode multi-compte) |
| clone_package_prefix | string | Non | — | Restreindre l'exécution aux applications clonées dont le nom de package commence par ce préfixe |
| script_config | object | Non | — | Bascules de fonctionnalités / paramètres par fonctionnalité qui remplacent la config sauvegardée sur le bureau (voir ci-dessous) |
Vous ne passez pas data_source_type dans la requête d'exécution — la campagne utilise automatiquement le data_type de l'ensemble de données (usernames ou post_links). Les ensembles de données de liens de publications ne supportent que les fonctionnalités boost_posts et mass_comment.
Remplacements de script_config
script_config est optionnel. Lorsqu'il est omis, la campagne utilise les bascules de fonctionnalités et les paramètres que vous avez configurés dans l'application de bureau. Fournissez-le pour exécuter une campagne entièrement autonome ou pour remplacer des champs spécifiques. Les clés acceptent camelCase et snake_case.
| Champ | Type | Description |
|---|---|---|
| access_method | string | Comment atteindre les cibles par nom d'utilisateur : search ou direct |
| features.follow_users | boolean | Suivre chaque cible |
| features.unfollow_users | boolean | Ne plus suivre chaque cible |
| features.report_account | boolean | Signaler chaque compte cible |
| features.send_dm | boolean | Envoyer un message direct à chaque cible |
| features.boost_posts | boolean | Aimer / mettre en favoris / reposter / partager les publications de la cible |
| features.mass_comment | boolean | Commenter les publications de la cible |
| follow_settings.boost_type | string | follow ou unfollow |
| dm_settings.message_contents | string | Texte du DM (séparé par des sauts de ligne pour plusieurs variantes) |
| dm_settings.message_order | string | random ou sequential |
| dm_settings.insert_emoji | boolean | Insérer un emoji aléatoire dans le DM |
| dm_settings.generate_by_chatgpt | boolean | Générer le DM avec ChatGPT |
| dm_settings.chatgpt_prompt | string | Prompt utilisé lors de la génération du DM |
| dm_settings.chatgpt_settings | object | { url, api_key, model, system_prompt } |
| post_settings.skip_posts_count | integer | Publications à ignorer avant d'agir (0–8, source nom d'utilisateur uniquement) |
| post_settings.max_posts_count | integer | Nombre maximum de publications à traiter par cible |
| post_settings.enable_like | boolean | Aimer les publications |
| post_settings.enable_favorite | boolean | Ajouter les publications aux favoris |
| post_settings.enable_repost | boolean | Reposter les publications |
| post_settings.enable_share | boolean | Partager les publications |
| post_settings.repeat_times | integer | Nombre de répétitions des actions de publication |
| post_settings.view_durations | integer[] | Secondes [min, max] pour regarder chaque publication |
| comment_settings.comment_content | string | Texte du commentaire (séparé par des sauts de ligne pour plusieurs variantes) |
| comment_settings.comment_order | string | random ou sequential |
| comment_settings.insert_emoji | boolean | Insérer un emoji aléatoire dans le commentaire |
| comment_settings.generate_by_chatgpt | boolean | Générer le commentaire avec ChatGPT |
| comment_settings.chatgpt_settings | object | { url, api_key, model, system_prompt } |
| task_finish_wait_time | integer | Secondes d'attente avant de terminer (évite la perte de données) |
Exemples
Exécution minimale (utiliser les paramètres sauvegardés sur le bureau)
curl -X POST http://localhost:50809/api/v1/super-marketing/run \
-H "Content-Type: application/json" \
-d '{
"serials": ["device_serial_1", "device_serial_2"],
"dataset_id": 7
}'
Campagne autonome suivre + DM
curl -X POST http://localhost:50809/api/v1/super-marketing/run \
-H "Content-Type: application/json" \
-d '{
"serials": ["device_serial_1"],
"dataset_id": 7,
"enable_multi_account": true,
"min_interval": 1,
"max_interval": 3,
"script_config": {
"access_method": "search",
"features": {
"follow_users": true,
"send_dm": true
},
"follow_settings": { "boost_type": "follow" },
"dm_settings": {
"message_contents": "Salut ! J'adore ton contenu 🙌\nSupers publications, continue comme ça !",
"message_order": "random",
"insert_emoji": true
}
}
}'
Commentaire en masse sur un ensemble de données de liens de publications
curl -X POST http://localhost:50809/api/v1/super-marketing/run \
-H "Content-Type: application/json" \
-d '{
"serials": ["device_serial_1"],
"dataset_id": 9,
"merge_same_username_tasks": true,
"script_config": {
"features": { "mass_comment": true },
"comment_settings": {
"comment_content": "🔥🔥🔥\nIncroyable !\nJ'adore ça",
"comment_order": "random"
}
}
}'
Exemple de Réponse
{
"code": 0,
"message": "success",
"data": { "created_count": 6 }
}
created_count est le nombre de tâches qui ont été créées. Les tâches en attente s'exécutent ensuite sur leurs appareils assignés comme n'importe quelle autre tâche — suivez-les via l'API de Gestion des Tâches.
Réponses d'Erreur
| Statut HTTP | Code | Description |
|---|---|---|
| 400 | 40001 | Paramètres invalides (mauvais data_type/strategy, serials vide, dataset_id non positif, script_config non-objet, ou aucune tâche créée) |
| 403 | 40301 | Interdit — l'accès à l'API nécessite un plan Pro+ |
| 404 | 40401 | Ensemble de données non trouvé |
| 500 | 50001 | Erreur interne du serveur |
Si l'exécution retourne le code 40001 avec un message "No tasks created", vérifiez que l'ensemble de données a encore des cibles restantes (pour la stratégie consume_once) et que les appareils sélectionnés sont en ligne.
Voir Aussi
- Aperçu de l'API Locale - Description générale et démarrage rapide
- API de Gestion des Tâches - Suivre et gérer les tâches créées
- API de Statut des Comptes - Consulter l'état des comptes et des appareils