Pular para o conteúdo principal

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/Threads) ou post_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 é:

  1. Importe os destinos para um conjunto de dados → obtenha um dataset_id.
  2. Execute uma campanha que referencia esse dataset_id em um ou mais dispositivos.

Threads suporta navegação de perfil, seguir/deixar de seguir, DM onde o alvo expõe um botão de Mensagem, visualizar/curtir/salvar/repostar publicações e comentários. O compartilhamento por SMS é pulado porque Threads não possui um fluxo equivalente. A denúncia de conta é deliberadamente pulada porque Threads exige um motivo de denúncia selecionado manualmente.

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.

Requisito de Licença

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​

CampoTipoObrigatórioPadrãoDescrição
dataset_idintegerNão—ID do conjunto de dados existente para adicionar/substituir. Omita ou use 0 para criar um novo conjunto de dados.
data_typestringSim—usernames ou post_links
strategystringSim—shared_pool ou consume_once
entriesstring[]Sim*[]Destinos como array JSON. Tem prioridade sobre raw_text.
raw_textstringSim*—Destinos como string separada por quebras de linha (alternativa a entries).
modestringNãoappendappend adiciona às entradas existentes; replace limpa as entradas existentes primeiro.
labelstringNão—Rótulo legível por humanos opcional para o conjunto de dados.
observação

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âmetroTipoPadrãoDescrição
data_typestring—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âmetroTipoPadrãoDescrição
limitinteger50Entradas por página (máx 500)
offsetinteger0Nú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​

CampoTipoObrigatórioPadrãoDescrição
serialsstring[]Sim[]Números de série dos dispositivos para executar
dataset_idintegerSim—Conjunto de dados cujos destinos guiam a campanha
enable_multi_accountbooleanNãofalseCria uma tarefa por conta em cada dispositivo
merge_same_username_tasksbooleanNãofalseAgrupa todos os destinos de um dispositivo em uma única tarefa em vez de uma por destino
platformstringNão—Override de plataforma (tiktok / instagram). Válido apenas em builds multi-plataforma
min_intervalintegerNão0Minutos mínimos entre os horários de início escalonados das tarefas
max_intervalintegerNão0Minutos máximos entre os horários de início escalonados das tarefas
start_timestringNão—Horário de início da primeira tarefa em HH:MM
rotate_proxybooleanNãofalseRotaciona o proxy do dispositivo antes de executar
switch_account_methodstringNão—Como trocar contas no modo multi-conta (ex.: profile)
official_packagesstring[]Não[]Restringe a execução a esses pacotes oficiais (modo multi-conta)
clone_package_prefixstringNão—Restringe a execução a apps clone cujo nome de pacote começa com este prefixo
script_configobjectNão—Ativações de funcionalidades / configurações por funcionalidade que substituem a configuração salva no app desktop (veja abaixo)
O tipo de dados vem do conjunto de dados

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.

CampoTipoDescrição
access_methodstringComo acessar os destinos por username: search ou direct
features.follow_usersbooleanSeguir cada destino
features.unfollow_usersbooleanDeixar de seguir cada destino
features.report_accountbooleanDenunciar cada conta de destino
features.send_dmbooleanEnviar mensagem direta para cada destino
features.boost_postsbooleanCurtir / salvar nos Favoritos / compartilhar as publicações do destino
features.mass_commentbooleanComentar nas publicações do destino
follow_settings.boost_typestringfollow ou unfollow
dm_settings.message_formatstringmultiline (padrão) ou spintax — veja a seção de formatos de mensagem abaixo
dm_settings.message_contentsstringTexto do DM. Em multiline, cada linha é uma mensagem separada (### = quebra de linha dentro de uma mensagem); em spintax, toda a string é uma mensagem (quebras de linha normais, grupos {option1|option2}). Suporta {username} e {sender_username}.
dm_settings.message_orderstringrandom ou sequential (aplica-se apenas ao formato multiline)
dm_settings.insert_emojibooleanInserir emoji aleatório no DM
dm_settings.generate_by_chatgptbooleanGerar o DM com ChatGPT
dm_settings.chatgpt_promptstringPrompt usado ao gerar o DM
dm_settings.chatgpt_settingsobject{ url, api_key, model, system_prompt }
post_settings.skip_posts_countintegerPublicações a pular antes de agir (0–8, apenas origem por username)
post_settings.max_posts_countintegerMáximo de publicações a processar por destino
post_settings.enable_likebooleanCurtir publicações
post_settings.enable_favoritebooleanAdicionar publicações aos Favoritos
post_settings.enable_repostbooleanCompartilhar publicações
post_settings.enable_sharebooleanCompartilhar publicações
post_settings.repeat_timesintegerVezes para repetir as ações nas publicações
post_settings.view_durationsinteger[]Segundos [min, max] para assistir cada publicação
comment_settings.comment_contentstringTexto do comentário (separado por quebras de linha para múltiplas variantes)
comment_settings.comment_orderstringrandom ou sequential
comment_settings.insert_emojibooleanInserir emoji aleatório no comentário
comment_settings.generate_by_chatgptbooleanGerar o comentário com ChatGPT
comment_settings.chatgpt_settingsobject{ url, api_key, model, system_prompt }
task_finish_wait_timeintegerSegundos de espera antes de finalizar (evita perda de dados)

Formatos de mensagem do DM​

dm_settings.message_contents é interpretado conforme dm_settings.message_format, do mesmo modo que as legendas de publicação são interpretadas por caption_format:

FormatoModelosQuebras de linhaVariação aleatória
multiline (padrão)Um por linha não vazia, escolhido com message_order### dentro de uma linhaEntre linhas, via message_order
spintaxToda a string é um único modelo\n normal dentro da stringGrupos {option1|option2}

{username} e {sender_username} são substituídos antes de os grupos de spintax serem resolvidos, então uma variável nunca é tratada como um grupo de spintax de opção única.

// multiline
"dm_settings": {
"message_format": "multiline",
"message_contents": "Hey {username}! Love your content 🙌\nHi {username}###Here is a video I made###v.example.com/{username}",
"message_order": "sequential"
}

// spintax
"dm_settings": {
"message_format": "spintax",
"message_contents": "{Hi|Hello} {username}\n\nHere is a video I made\n\nv.example.com/{username}"
}

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_format": "multiline",
"message_contents": "Hey! Love your content 🙌\nGreat posts, keep it up!",
"message_order": "random",
"insert_emoji": true
}
}
}'
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 HTTPCódigoDescrição
40040001Parâmetros inválidos (bad data_type/strategy, serials vazio, dataset_id não positivo, script_config não é objeto, ou nenhuma tarefa criada)
40340301Proibido — Acesso à API requer plano Pro+
40440401Conjunto de dados não encontrado
50050001Erro interno do servidor
Nenhuma tarefa criada

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​