Your AI Connector Docs

API de Negócios

Um negócio é uma oportunidade de venda no seu quadro de Pipeline de Vendas — um título, um valor, a fase em que se encontra e, opcionalmente, o contacto a que pertence e o membro da equipa a quem está atribuído. Este guia aborda a leitura e gestão de negócios através da API.

Todos os exemplos abaixo mostram o formato de consulta ?apiKey= em cURL e o cabeçalho X-API-Key em JavaScript e Python — qualquer um funciona em todos os endpoints.


O objeto de negócio

{
  "id": "deal_abc123",
  "title": "Annual plan – Jane's Clinic",
  "description": "Asked for pricing on the annual plan.",
  "company": "Jane's Clinic",
  "notes": "Prefers a call after 5pm.",
  "stage": "stage-2",
  "pipeline_id": "default",
  "value": 4800,
  "probability": 60,
  "priority": "high",
  "status": "open",
  "source": "whatsapp",
  "position": 0,
  "contact_id": "ctc_9f8e7d",
  "assigned_to": "usr_4a2b",
  "tags": ["clinic"],
  "close_date": "2026-10-01T00:00:00.000Z",
  "created_at": "2026-09-05T09:12:00.000Z",
  "updated_at": "2026-09-05T09:40:00.000Z",
  "stage_entered_at": "2026-09-05T09:40:00.000Z"
}

stage é o id de uma das suas etapas de pipeline — leia-as com GET /pipelines (veja Pipelines abaixo). Os ids das etapas são únicos em todos os seus pipelines, por isso pipeline_id é derivado da etapa e é apenas de leitura: default é o seu pipeline principal, e é null quando a etapa já não existe. Os carimbos de data/hora estão no formato ISO 8601.

Um negócio armazena apenas os campos apresentados acima. Quando cria ou atualiza um, qualquer outro campo é recusado com um 400 que o identifica, para que nada do que envia seja perdido silenciosamente. Mantenha dados adicionais nos campos personalizados do contacto associado.


Listar negócios

GET /deals — devolve os negócios na sua conta, começando pelos mais recentes.

Parâmetros de consulta (todos opcionais): stage (um id de etapa), pipeline_id (apenas os negócios nesse pipeline), contact_id, limit (predefinição 50, máximo 200), cursor (da next_cursor da página anterior).

cURL

curl "https://api.youraiconnector.com/v1/deals?apiKey=YOUR_API_KEY&stage=stage-2&limit=50"

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/deals?stage=stage-2&limit=50", {
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { deals, next_cursor } = await res.json();

Python

res = requests.get(
    "https://api.youraiconnector.com/v1/deals",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"stage": "stage-2", "limit": 50},
)
deals = res.json()["deals"]

Resposta (200)

{ "success": true, "deals": [{ "id": "deal_abc123", "title": "Annual plan – Jane's Clinic", "...": "..." }], "next_cursor": null }

Obter um negócio

GET /deals/{dealId}

curl "https://api.youraiconnector.com/v1/deals/deal_abc123?apiKey=YOUR_API_KEY"

Resposta (200)

{ "success": true, "deal": { "id": "deal_abc123", "title": "Annual plan – Jane's Clinic", "...": "..." } }

Um negócio que não existe, ou que pertence a outra conta, devolve 404.


Criar um negócio

POST /deals — title e stage são obrigatórios; stage tem de ser um dos ids de fase do seu pipeline.

curl -X POST "https://api.youraiconnector.com/v1/deals?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Annual plan – Jane'"'"'s Clinic", "stage": "stage-1", "value": 4800, "contact_id": "ctc_9f8e7d" }'

Resposta (201)

{ "success": true, "deal_id": "deal_abc123" }

Atualizar um negócio

PUT /deals/{dealId} — envie apenas os campos que pretende alterar (title, description, notes, value, stage, status, priority, contact_id, …). value tem de ser um número.

curl -X PUT "https://api.youraiconnector.com/v1/deals/deal_abc123?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "value": 5200, "priority": "high" }'

Resposta (200): { "success": true, "deal_id": "deal_abc123" }


Mover um negócio para outra fase

POST /deals/{dealId}/move — corpo { "new_stage_id": "stage-3", "new_position": 0 }. A posição 0 coloca o cartão no topo da coluna.

curl -X POST "https://api.youraiconnector.com/v1/deals/deal_abc123/move?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "new_stage_id": "stage-3", "new_position": 0 }'

Resposta (200): { "success": true, "deal_id": "deal_abc123", "stage": "stage-3", "position": 0 }


Eliminar um negócio

DELETE /deals/{dealId} — remove o negócio. Esta ação não pode ser desfeita.

curl -X DELETE "https://api.youraiconnector.com/v1/deals/deal_abc123?apiKey=YOUR_API_KEY"

Resposta (200): { "success": true }


Pipelines

Cada conta tem um pipeline principal (id: "default"); pode adicionar até nove adicionais, cada um com as suas próprias etapas. Os ids das etapas e as etiquetas de gatilho devem ser únicos em todos os pipelines da conta, e cada pipeline pode marcar uma etapa como o seu resultado won e uma como o seu resultado lost.

Listar pipelines

GET /pipelines — todos os pipelines, primeiro o principal, cada um com as suas etapas ordenadas por posição.

curl "https://api.youraiconnector.com/v1/pipelines?apiKey=YOUR_API_KEY"

Resposta (200):

{
  "success": true,
  "data": {
    "pipelines": [
      {
        "id": "default",
        "name": "Sales",
        "position": 0,
        "is_default": true,
        "settings": { "sync_stage_tags": false },
        "stages": [
          { "id": "stage-1", "name": "New lead", "color": "#3B82F6", "position": 0, "trigger_tag": null },
          { "id": "won", "name": "Won", "color": "#10B981", "position": 1, "outcome": "won" }
        ]
      }
    ]
  }
}

Criar um pipeline

POST /pipelines — corpo { "id"?, "name", "stages"?, "settings"? }. Deixe id vazio para que seja gerado um. Cada etapa utiliza os mesmos campos que a caixa de diálogo Etapas: id, name, color, position, trigger_tag opcional (um caminho de etiqueta, users/{uid}/tags/{tagId}), default_value, auto_move_after_days + auto_move_to_stage (uma etapa do mesmo pipeline) e outcome ("won" ou "lost").

curl -X POST "https://api.youraiconnector.com/v1/pipelines?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "reviews",
    "name": "Review requests",
    "stages": [
      { "id": "rv_asked", "name": "Asked", "color": "#3B82F6", "position": 0 },
      { "id": "rv_done", "name": "Review posted", "color": "#10B981", "position": 1, "outcome": "won" }
    ]
  }'

Resposta (201): { "success": true, "data": { "pipeline": { ... } } }. Um id de etapa ou etiqueta de gatilho já utilizado por outro pipeline é um 400 que nomeia esse pipeline; um id que já existe é um 409.

Atualizar um pipeline

PUT /pipelines/{pipelineId} — corpo { "name"?, "stages"?, "settings"? }. stages substitui toda a lista, tal como a caixa de diálogo Etapas. Utilize default para o pipeline principal. O id do pipeline em si não pode ser alterado.

Eliminar um pipeline

DELETE /pipelines/{pipelineId} — remove um pipeline adicional (o principal não pode ser eliminado). Se ainda existirem negócios nas suas etapas, a chamada responde 409 com deal_count; adicione ?delete_deals=true para eliminar esses negócios juntamente com o pipeline. Esta ação não pode ser desfeita.

Resposta (204).


Próximos passos

  • Pipeline de Vendas — como funcionam as etapas, as etiquetas de etapa, vários pipelines e o quadro.
  • API de Tarefas — as tarefas podem ser associadas a um negócio com deal_id.
  • Automatizações — os passos Encontrar negócios e Encontrar negócio leem os mesmos dados dentro de um fluxo de trabalho.