Configuração do Script Super Marketing
Esta página documenta os endpoints da API para o script Super Marketing. Ao contrário dos outros scripts, o super marketing não é criado através do endpoint genérico POST /api/v1/task — ele funciona com base em um conjunto de dados reutilizável de destinos e possui seus próprios endpoints dedicados.
Visão Geral
Uma campanha de super marketing combina várias ações de crescimento (seguir, deixar de seguir, denunciar, DM, boost, comentário em massa) em uma única execução sobre um pool de destinos. O pool de destinos é armazenado como um conjunto de dados:
- Tipo de dados — o conjunto de dados contém
usernames(handles do TikTok/Instagram) oupost_links(URLs de publicações). - Estratégia — controla como os destinos são distribuídos entre os dispositivos:
shared_pool— cada dispositivo/conta selecionado processa todos os destinos.consume_once— os destinos são divididos entre os dispositivos e cada um é consumido uma vez.
O fluxo típico é:
- Importe os destinos para um conjunto de dados → obtenha um
dataset_id. - Execute uma campanha que referencia esse
dataset_idem um ou mais dispositivos.
As ativações de funcionalidades (follow / DM / comentário, etc.) e suas configurações detalhadas são lidas da configuração salva no aplicativo desktop (super_marketing_settings.json). Você pode substituir qualquer uma delas por execução passando script_config na solicitação de execução.
Todos os endpoints de super marketing requerem um plano Pro, Team ou Business, como o restante da API Local.
Importar Conjunto de Dados
Crie um novo conjunto de dados ou adicione destinos a um existente.
- Endpoint:
POST /api/v1/super-marketing/dataset
Corpo da Solicitação
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
| dataset_id | integer | Não | — | ID do conjunto de dados existente para adicionar/substituir. Omita ou use 0 para criar um novo conjunto de dados. |
| data_type | string | Sim | — | usernames ou post_links |
| strategy | string | Sim | — | shared_pool ou consume_once |
| entries | string[] | Sim* | [] | Destinos como array JSON. Tem prioridade sobre raw_text. |
| raw_text | string | Sim* | — | Destinos como string separada por quebras de linha (alternativa a entries). |
| mode | string | Não | append | append adiciona às entradas existentes; replace limpa as entradas existentes primeiro. |
| label | string | Não | — | Rótulo legível por humanos opcional para o conjunto de dados. |
Forneça os destinos via entries ou raw_text. Entradas duplicadas e vazias são ignoradas. Uma única importação é limitada a 100.000 entradas.
Exemplo
curl -X POST http://localhost:50809/api/v1/super-marketing/dataset \
-H "Content-Type: application/json" \
-d '{
"data_type": "usernames",
"strategy": "shared_pool",
"label": "Campaign A targets",
"entries": ["@user_one", "@user_two", "@user_three"]
}'
Adicione mais destinos a um conjunto de dados existente usando texto separado por quebras de linha:
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"
}'
Resposta de Exemplo
{
"code": 0,
"message": "success",
"data": {
"dataset": {
"stats": {
"id": 7,
"data_type": "usernames",
"strategy": "shared_pool",
"label": "Campaign A targets",
"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
}
}
}
Listar Conjuntos de Dados
Recupere todos os conjuntos de dados com estatísticas de consumo.
- Endpoint:
GET /api/v1/super-marketing/datasets
Parâmetros de Query
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| data_type | string | — | Filtro opcional: usernames ou post_links |
Exemplo
curl "http://localhost:50809/api/v1/super-marketing/datasets?data_type=usernames"
Resposta de Exemplo
{
"code": 0,
"message": "success",
"data": [
{
"id": 7,
"data_type": "usernames",
"strategy": "shared_pool",
"label": "Campaign A targets",
"total": 6,
"consumed": 0,
"remaining": 6,
"created_at": "2026-06-22 09:00:00",
"updated_at": "2026-06-22 09:05:00"
}
]
}
Obter Conjunto de Dados
Recupere as estatísticas de um conjunto de dados e uma página de suas entradas.
- Endpoint:
GET /api/v1/super-marketing/dataset/{id}
Parâmetros de Query
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| limit | integer | 50 | Entradas por página (máx 500) |
| offset | integer | 0 | Número de entradas a pular |
Exemplo
curl "http://localhost:50809/api/v1/super-marketing/dataset/7?limit=100&offset=0"
Limpar Conjunto de Dados
Remove todas as entradas de um conjunto de dados. O registro do conjunto de dados é mantido (e seu dataset_id permanece válido para importações futuras).
- Endpoint:
DELETE /api/v1/super-marketing/dataset/{id}
Exemplo
curl -X DELETE http://localhost:50809/api/v1/super-marketing/dataset/7
Resposta de Exemplo
{
"code": 0,
"message": "success",
"data": { "cleared": true, "dataset_id": 7 }
}
Executar Campanha
Inicie uma campanha de super marketing nos dispositivos fornecidos, usando os destinos de um conjunto de dados.
- Endpoint:
POST /api/v1/super-marketing/run
Corpo da Solicitação
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
| serials | string[] | Sim | [] | Números de série dos dispositivos para executar |
| dataset_id | integer | Sim | — | Conjunto de dados cujos destinos guiam a campanha |
| enable_multi_account | boolean | Não | false | Cria uma tarefa por conta em cada dispositivo |
| merge_same_username_tasks | boolean | Não | false | Agrupa todos os destinos de um dispositivo em uma única tarefa em vez de uma por destino |
| platform | string | Não | — | Override de plataforma (tiktok / instagram). Válido apenas em builds multi-plataforma |
| min_interval | integer | Não | 0 | Minutos mínimos entre os horários de início escalonados das tarefas |
| max_interval | integer | Não | 0 | Minutos máximos entre os horários de início escalonados das tarefas |
| start_time | string | Não | — | Horário de início da primeira tarefa em HH:MM |
| rotate_proxy | boolean | Não | false | Rotaciona o proxy do dispositivo antes de executar |
| switch_account_method | string | Não | — | Como trocar contas no modo multi-conta (ex.: profile) |
| official_packages | string[] | Não | [] | Restringe a execução a esses pacotes oficiais (modo multi-conta) |
| clone_package_prefix | string | Não | — | Restringe a execução a apps clone cujo nome de pacote começa com este prefixo |
| script_config | object | Não | — | Ativações de funcionalidades / configurações por funcionalidade que substituem a configuração salva no app desktop (veja abaixo) |
Você não passa data_source_type na solicitação de execução — a campanha usa automaticamente o data_type do conjunto de dados (usernames ou post_links). Conjuntos de dados com links de publicações suportam apenas as funcionalidades boost_posts e mass_comment.
Substituições de script_config
script_config é opcional. Quando omitido, a campanha usa as ativações de funcionalidades e configurações definidas no app desktop. Forneça-o para executar uma campanha totalmente autônoma ou para substituir campos específicos. As chaves aceitam camelCase e snake_case.
| Campo | Tipo | Descrição |
|---|---|---|
| access_method | string | Como acessar os destinos por username: search ou direct |
| features.follow_users | boolean | Seguir cada destino |
| features.unfollow_users | boolean | Deixar de seguir cada destino |
| features.report_account | boolean | Denunciar cada conta de destino |
| features.send_dm | boolean | Enviar mensagem direta para cada destino |
| features.boost_posts | boolean | Curtir / salvar nos Favoritos / compartilhar as publicações do destino |
| features.mass_comment | boolean | Comentar nas publicações do destino |
| follow_settings.boost_type | string | follow ou unfollow |
| dm_settings.message_contents | string | Texto do DM (separado por quebras de linha para múltiplas variantes) |
| dm_settings.message_order | string | random ou sequential |
| dm_settings.insert_emoji | boolean | Inserir emoji aleatório no DM |
| dm_settings.generate_by_chatgpt | boolean | Gerar o DM com ChatGPT |
| dm_settings.chatgpt_prompt | string | Prompt usado ao gerar o DM |
| dm_settings.chatgpt_settings | object | { url, api_key, model, system_prompt } |
| post_settings.skip_posts_count | integer | Publicações a pular antes de agir (0–8, apenas origem por username) |
| post_settings.max_posts_count | integer | Máximo de publicações a processar por destino |
| post_settings.enable_like | boolean | Curtir publicações |
| post_settings.enable_favorite | boolean | Adicionar publicações aos Favoritos |
| post_settings.enable_repost | boolean | Compartilhar publicações |
| post_settings.enable_share | boolean | Compartilhar publicações |
| post_settings.repeat_times | integer | Vezes para repetir as ações nas publicações |
| post_settings.view_durations | integer[] | Segundos [min, max] para assistir cada publicação |
| comment_settings.comment_content | string | Texto do comentário (separado por quebras de linha para múltiplas variantes) |
| comment_settings.comment_order | string | random ou sequential |
| comment_settings.insert_emoji | boolean | Inserir emoji aleatório no comentário |
| comment_settings.generate_by_chatgpt | boolean | Gerar o comentário com ChatGPT |
| comment_settings.chatgpt_settings | object | { url, api_key, model, system_prompt } |
| task_finish_wait_time | integer | Segundos de espera antes de finalizar (evita perda de dados) |
Exemplos
Execução Mínima (usar configurações salvas no app desktop)
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
}'
Campanha Autônoma de Follow + 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": "Hey! Love your content 🙌\nGreat posts, keep it up!",
"message_order": "random",
"insert_emoji": true
}
}
}'
Comentário em Massa em Conjunto de Dados com Links de Publicações
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": "🔥🔥🔥\nAmazing!\nLove this",
"comment_order": "random"
}
}
}'
Resposta de Exemplo
{
"code": 0,
"message": "success",
"data": { "created_count": 6 }
}
created_count é o número de tarefas criadas. As tarefas pendentes são então executadas nos dispositivos atribuídos como qualquer outra tarefa — rastreie-as pela API de Gerenciamento de Tarefas.
Respostas de Erro
| Status HTTP | Código | Descrição |
|---|---|---|
| 400 | 40001 | Parâmetros inválidos (bad data_type/strategy, serials vazio, dataset_id não positivo, script_config não é objeto, ou nenhuma tarefa criada) |
| 403 | 40301 | Proibido — Acesso à API requer plano Pro+ |
| 404 | 40401 | Conjunto de dados não encontrado |
| 500 | 50001 | Erro interno do servidor |
Se a execução retornar o código 40001 com a mensagem "No tasks created", verifique se o conjunto de dados ainda tem destinos restantes (para a estratégia consume_once) e se os dispositivos selecionados estão online.
Veja Também
- Visão Geral da API Local - Visão geral da API e início rápido
- API de Gerenciamento de Tarefas - Rastrear e gerenciar as tarefas criadas
- API de Status de Contas - Consultar status de contas e dispositivos