Skip to main content
Esta página descreve a superfície atual do pacote sparkcrm, alinhada ao OpenAPI do gateway. A árvore de chamadas segue o padrão client.<recurso>.<método>(). Para autenticação, instalação e exemplos iniciais, veja Começar com TypeScript.

Visão geral do cliente


Entrypoints

Canais de entrada configurados na organização (WhatsApp Business, WhatsApp Lite, Instagram, Telegram).

client.entrypoints.list(params?)

HTTP: GET /v1/entrypoints Retorno: EntrypointListResponse com entrypoints[] (id, name, platform, funnelStepId, displayName?, state? em WhatsApp Lite).

client.entrypoints.retrieve(id)

HTTP: GET /v1/entrypoints/{id} Retorno: EntrypointRetrieveResponse com entrypoint discriminado por platform (campos extras como isCoexistence no WhatsApp Business, state no Lite).

Chats

Conversas diretas (DM) no WhatsApp ou WhatsApp Lite. A plataforma é inferida pelo entrypointId. O telefone é normalizado para E.164. Use o upsert individual quando precisar dos IDs na hora. Use o lote quando for importar muitos contatos e puder esperar o processamento em background (a resposta não inclui chatId / leadId).

client.chats.upsert(body)

HTTP: POST /v1/chats201 (criado) ou 200 (já existia) Retorno: ChatUpsertResponsechatId e leadId.

client.chats.upsertBatch(body)

HTTP: POST /v1/chats/batch202 Enfileira até 500 conversas para o mesmo canal. O Spark processa cada item em background com a mesma regra do upsert individual (cria ou atualiza). Itens com telefone inválido ou limite de plano são ignorados no processamento, sem falhar o lote inteiro. Retorno: ChatUpsertBatchResponse{ queued: number }. Não há IDs de chat ou lead nesta resposta.
O lote é assíncrono. Para reagir a conversas novas, use o webhook chats.created.

Forms (formulários)

Formulários de captação publicados com ID público de 16 caracteres. Conceito de produto: Formulários de captação.

client.forms.retrieve(id)

HTTP: GET /v1/forms/{id} Retorno: FormRetrieveResponseform com name, description, flow (nós e conexões do canvas) e iframeEmbedAllowedOrigins.

client.forms.retrieveEmbedFramePolicy(id)

HTTP: GET /v1/forms/{id}/embed-frame-policy Retorno: FormRetrieveEmbedFramePolicyResponse — lista de origens HTTPS permitidas para iframe (vazia = sem restrição por origem).

client.forms.submitResponse(id, body)

HTTP: POST /v1/forms/{id}/submit201 Retorno: FormSubmitResponseResponsesubmissionId e outcomes[] com platform, leadId, chatId por destino WhatsApp.

Messaging

client.messaging.uploadMedia(body)

HTTP: POST /v1/messaging/media (multipart) Retorno: MessagingUploadMediaResponse — array por arquivo: { success: true, id, name, url } ou { success: false, name }. Use os id retornados em sendMessage (mediaIds ou audioId).

client.messaging.chats.listMessages(chatId, params?)

HTTP: GET /v1/messaging/chats/{chatId} Retorno: ChatListMessagesResponserecords[] (mensagem completa com text, type, status, media, sender, etc.) e nextCursor?. Mensagens vêm mais recentes primeiro.

client.messaging.chats.sendMessage(chatId, body)

HTTP: POST /v1/messaging/chats/{chatId}204

Enviar modelo de mensagem (templates)

HTTP: POST /v1/messaging/chats/{chatId}/templates204 Corpo (espelha SendPublicTemplateBodyDto na API): Variáveis automáticas não vão no body — o Spark preenche com dados do chat. Veja Modelos de mensagem.
Novas versões do sparkcrm podem expor client.messaging.chats.sendTemplate(chatId, body) com o mesmo contrato. Confira o api.md da versão instalada.

Campanhas (disparos em massa)

Criar, segmentar, iniciar e acompanhar campanhas de mensagem. Guia completo: Disparos pela API.

client.messageTemplates.list()

HTTP: GET /v1/message-templates Retorno: MessageTemplateListResponse com templates[] (id, name, isOfficial, metaTemplateStatus, …).

client.messageTemplates.retrieve(id)

HTTP: GET /v1/message-templates/{id} Retorno: detalhe do template com items[] (texto, mídia) e commonVariables[] (variáveis manuais exigidas no start).

client.campaigns.getFilterSchema()

HTTP: GET /v1/campaigns/filters/schema Retorno: catálogo de campos, operadores e regras de combinação para montar filtros de público-alvo.

client.campaigns.previewAudience(body)

HTTP: POST /v1/campaigns/audience-preview Body: { filters?: CampaignFilter[] } Retorno: { estimatedCount: number }

client.campaigns.create(body)

HTTP: POST /v1/campaigns Body: name, platform, templateId, cadence, description?, filters? Retorno: { campaignId, status: "draft" }

client.campaigns.start(id, body?)

HTTP: POST /v1/campaigns/{id}/start Body: { commonVariables?: Record<string, string> } — variáveis manuais do template. Retorno: { executionId, status: "processing" }

client.campaigns.retrieve(id) / client.campaigns.list()

HTTP: GET /v1/campaigns/{id} / GET /v1/campaigns Detalhe com execuções ou lista resumida de campanhas.

client.campaigns.retrieveExecution(campaignId, executionId)

HTTP: GET /v1/campaigns/{id}/executions/{executionId} Retorno: { status, targetCount, sentCount, failedCount, progress } — use para polling.

client.campaigns.cancel(id)

HTTP: POST /v1/campaigns/{id}/cancel Cancela execução em andamento. Sem body; resposta 204.

Tabela rápida de métodos


Requisições fora do catálogo tipado

O cliente expõe get, post, put, patch, delete com as mesmas opções de retry, timeout e cabeçalhos — útil para endpoints novos antes de uma release do SDK:
Parâmetros não documentados podem ser enviados com // @ts-expect-error ou via query / body / headers explícitos, conforme a documentação avançada.

Tipos principais exportados

Importe de sparkcrm ou use o namespace SparkCRM: Lista completa no repositório: api.md.