Growth OS API

Resumo do funil (contagem e soma por estágio e por status)

`from`/`to` (ISO-8601) recortam por data de criação, intervalo `[from, to)`: `total`, `byStage` e `byStatus` contam os negócios CRIADOS no recorte. `closedInRange` conta os fechados DENTRO do recorte por `wonAt`/`lostAt`, independente de quando foram criados. Sem `from`/`to` = tudo. Negócios na lixeira ficam de fora.

GET
/opportunities/summary

from/to (ISO-8601) recortam por data de criação, intervalo [from, to): total, byStage e byStatus contam os negócios CRIADOS no recorte. closedInRange conta os fechados DENTRO do recorte por wonAt/lostAt, independente de quando foram criados. Sem from/to = tudo. Negócios na lixeira ficam de fora.

AutorizaçãoBearer <token>

Chave de API (gos_…)

Em: header

Parâmetros de consulta

pipelineId?string
from?string
to?string

Corpo da resposta

application/json

curl -X GET "https://example.com/opportunities/summary"
{  "pipelineId": "string",  "from": "string",  "to": "string",  "total": {    "count": -9007199254740991,    "valueCents": -9007199254740991  },  "byStage": [    {      "count": -9007199254740991,      "valueCents": -9007199254740991,      "stageId": "string"    }  ],  "byStatus": [    {      "count": -9007199254740991,      "valueCents": -9007199254740991,      "status": "string"    }  ],  "closedInRange": {    "won": {      "count": -9007199254740991,      "valueCents": -9007199254740991    },    "lost": {      "count": -9007199254740991,      "valueCents": -9007199254740991    }  }}

Mover negócio de etapa

Página anterior

Listar interações (linha do tempo global por período)

Toda interação com contatos do workspace, mais recente primeiro (`createdAt DESC, id DESC`). Mensagem do inbox: `createdAt` é a data do ENVIO registrada pelo provedor — o histórico importado do GHL sai na data original, não na do import. No histórico importado, `actor` vem do `source` do CRM antigo quando não há carimbo de autor: workflow/campanha/disparo em massa = `automation`, api = `api`. paginada por cursor. Fontes: mensagens do inbox (WhatsApp/Instagram/Facebook, e as conversas de canal `phone` — importadas ou abertas pela telefonia), ligações, e-mails (resposta enviada pelo painel, resposta recebida do contato, e-mail de automação) e notas. `id` = `<fonte>:<id da linha>`. `actor` diz QUEM agiu: `user` = pessoa do time no app (só quando o `userId` de quem mandou está gravado); `contact` = o lead (toda interação `inbound`); `ia` / `automation` / `system` / `api` = robôs; `unknown` = mensagem outbound sem autor conhecido (histórico antigo, importado sem `source` reconhecido, ou sem carimbo). `userId` é o usuário do app que mandou — carimbado no MOMENTO DO ENVIO, imutável, e só preenchido com `actor=user`. Para o Speed-to-Lead, filtre `direction=outbound&actor=user`. Mensagem do inbox: `userId` NUNCA é inferido do responsável atual da conversa — antes de 0728 (issue #728) uma mensagem sem carimbo saía atribuída a quem estivesse dono do atendimento NA HORA DA CONSULTA, e o valor mudava sozinho quando a conversa era reatribuída (bug medido pelo cliente: pior que devolver vazio numa auditoria de comissão). Hoje, sem carimbo, `userId: null` e `actor: "unknown"`. `conversationAssigneeUserId` é o campo separado e honesto pra "quem é o dono do atendimento HOJE" — mutável, não é quem mandou. `channelInstanceId` (id da conexão) e `senderPhone` (o número/identificador dela) ajudam a resolver a autoria sem depender de quem digitou, quando a linha do SDR é separada da dos closers; `null` quando a mensagem não tem conexão associada ou a fonte não é mensagem de inbox. Ligação: `durationSec` (segundos) e `status` = `answered` | `no_answer` | demais estados crus do provedor (ex.: `ringing`). NÃO entram: campanhas de e-mail em massa, tarefas, reuniões (vivem em `/appointments`) e os marcadores internos do fio da conversa ("Automação X rodou", "Reunião cancelada", "Negócio foi de A para B", atribuição de atendente) — são anotação para quem atende, nunca chegam ao contato. `opportunityId` só vem preenchido na nota; nas demais o vínculo com o negócio é pelo `contactId`. Filtros: `contactId`, `userId`, `channel` (CSV de whatsapp,instagram,facebook,phone,call,email,note), `direction`, `actor`, `createdAfter` / `createdBefore` (ISO-8601, exclusivos). `limit` até 500.