{
  "markdown": "# disparo-asksuite + asksuite-api\n\nRepo com **duas skills** complementares para a Asksuite:\n\n| Skill | Pasta | O que faz |\n|---|---|---|\n| **`disparo-asksuite`** | (raiz) | Disparo em massa via WhatsApp (`POST /api/v1/transmission-list`). Com normalização de telefones, batches de 300, pausas e retomada. |\n| **`asksuite-api`** | `asksuite-api/` | Tudo o resto: atendimentos, histórico de mensagens, performance, leads, tags, atendentes, empresas, áudios, refresh de token. Cobre os 17 endpoints da Public API oficial (`api.asksuite.com/docs#/`) + extras de control.*. |\n\nAmbas funcionam em qualquer LLM CLI (Claude Code, Gemini CLI, Codex) ou direto pelo terminal. Sem dependências externas além da stdlib do Python.\n\n## Setup\n\n```bash\ncp exemplo.env .env\n# edite .env com seu token e companyId\n```\n\n## Uso típico\n\n```bash\n# 1. Lista templates aprovados pra escolher qual usar\npython listar_templates.py --token $ASKSUITE_TOKEN --company $ASKSUITE_COMPANY\n\n# 2. Normaliza contatos (qualquer formato → +55...)\npython normalizar_contatos.py --input contatos_brutos.txt --output contatos.txt\n\n# 3. Dispara em batches de 300 com pausa de 60s\npython disparar.py --token $ASKSUITE_TOKEN \\\n                   --template <PLATFORM_ID> \\\n                   --contatos contatos.txt \\\n                   --nome minha_campanha \\\n                   [--tag <TAG_ID>] [--params valor1 valor2]\n\n# 4. Confere status\npython verificar_status.py --token $ASKSUITE_TOKEN --transmission-id <ID>\n```\n\n## Uso com LLM CLI\n\n### Claude Code\nColoca o diretório em `~/.claude/skills/disparo-asksuite/` ou usa o path direto. A CLI lê o frontmatter do `SKILL.md` e ativa automaticamente quando o assunto bate.\n\n### Gemini CLI\nColoca em `~/.gemini/skills/disparo-asksuite/`. Em sessão:\n```\native a skill disparo-asksuite\n```\n\n### Codex / outras CLIs\nCodex não tem skill nativa. Use uma destas:\n- Cole o conteúdo do `SKILL.md` no system prompt\n- Ou aponte: `@./SKILL.md me ajuda a disparar pra essa lista: [...]`\n\n### Direto (sem LLM)\nOs scripts são autossuficientes. Veja \"Uso típico\" acima.\n\nA LLM segue o roteiro: pede token → lista templates → normaliza → dispara → verifica.\n\n## Limites empíricos da Asksuite\n\n- Máximo **300 mensagens por chamada** ao endpoint\n- Resposta demora **60–70s** com batch de 300 (timeout HTTP precisa ser ≥180s)\n- Pausa mínima entre batches: **30s** (padrão 60s)\n\nDetalhes em [`SKILL.md`](SKILL.md).\n\n## Skill `asksuite-api` — operações além de disparo\n\nPara puxar atendimentos, histórico de mensagens, performance, leads, tags, atendentes, etc, use a pasta `asksuite-api/`:\n\n```bash\n# 1. Login (uma vez — cache em ~/.asksuite_token.json)\npython asksuite-api/scripts/login.py --email seu@email --password \"...\"\n\n# 2. Descobrir companyId\npython asksuite-api/scripts/listar_companies.py\n\n# 3. Operações\npython asksuite-api/scripts/listar_atendimentos.py --company X --start 2026-05-01 --end 2026-05-07\npython asksuite-api/scripts/historico.py --attendance-id <id>\npython asksuite-api/scripts/performance.py --company X --start 2026-05-01 --end 2026-05-07\npython asksuite-api/scripts/listar_atendentes.py --company X --humans-only\npython asksuite-api/scripts/listar_tags.py --company X --type MANUAL\npython asksuite-api/scripts/listar_tags.py --control --token <X-API-Key>  # tags custom\n```\n\nDocumentação completa em `asksuite-api/SKILL.md` e `asksuite-api/references/`:\n- `auth.md` — login, refresh, headers, dois tipos de X-API-Key\n- `public-api.md` — todos os 17 endpoints oficiais com schemas\n- `control-api.md` — endpoints control.asksuite.com não-disparo\n- `schemas.md` — Attendance, Message, Tag, Template, Lead, Reservation, Performance\n- `recipes.md` — receitas prontas (paginação, history, performance daily, refresh, dump conversa)\n- `errors-and-limits.md` — debug 401/403/429, rate limits, gotchas\n\n## Segurança\n\n- `.env` está no `.gitignore` — nunca commite credenciais\n- Token Asksuite tem permissão total na conta — trate como senha de admin\n- JWT da Public API é por usuário humano — vazamento expõe leitura total da operação\n- Ao rotacionar token control.*, atualize todos os scripts/workflows que usam ANTES de revogar o antigo\n",
  "bytes": 4145,
  "sha": "b63f4f1fa874166cbd3460a690df6ca602c80b9f764292dfd1935387e276756d",
  "repo_slug": "marcotuliobrz/disparo-asksuite",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_marcotuliobrz_disparo_asksuite_166a0df0/readme"
}