Skip to main content
Esta página descreve os métodos do pacote sparkcrm, que seguem a especificação OpenAPI da API. As chamadas usam o padrão client.<recurso>.<método>(). Para instalar e configurar o cliente, veja Começar com TypeScript.

Visão geral do cliente


Conexão do WhatsApp

Conecta um número da API oficial do WhatsApp à organização sem passar pelo painel. Guia completo: Conectar WhatsApp Business pela API.

client.whatsappConnectionSessions.create(body)

Rota: POST /v1/entrypoints/whatsapp/connection-sessions (resposta 202). Retorna sessionId, status (pending), url e expiresAt.

client.whatsappConnectionSessions.retrieve(sessionId)

Rota: GET /v1/entrypoints/whatsapp/connection-sessions/{sessionId}. Retorna status (pending, completed, failed ou expired), entrypoint quando a conexão termina e reason e message quando falha.

Entrypoints

Canais conectados à organização: WhatsApp Business, WhatsApp Lite, Instagram e Telegram.

client.entrypoints.list(params?)

Rota: GET /v1/entrypoints. Retorna EntrypointListResponse com entrypoints[] (id, name, platform, funnelStepId, displayName? e, no WhatsApp Lite, state?).

client.entrypoints.retrieve(id)

Rota: GET /v1/entrypoints/{id}. Retorna EntrypointRetrieveResponse com entrypoint. Os campos variam conforme platform, por exemplo isCoexistence no WhatsApp Business e state no WhatsApp Lite.

Chats

Conversas individuais no WhatsApp Business ou no WhatsApp Lite. A plataforma vem do entrypointId, e o telefone é normalizado para o formato E.164. Use o upsert individual quando precisar dos IDs na resposta. Use o lote para importar muitos contatos quando puder esperar o processamento; a resposta do lote não traz chatId nem leadId.

client.chats.upsert(body)

Rota: POST /v1/chats. Responde 201 quando cria e 200 quando o chat já existia. Retorna ChatUpsertResponse com chatId e leadId.

client.chats.upsertBatch(body)

Rota: POST /v1/chats/batch (resposta 202). Enfileira até 500 conversas do mesmo canal. Cada item segue a mesma regra do upsert individual. Itens com telefone inválido ou acima do limite do plano são ignorados, sem invalidar o restante do lote. Retorna ChatUpsertBatchResponse com { queued: number }.
O lote é processado em segundo plano. Para saber quando cada conversa nova é criada, assine o webhook chats.created, descrito em Webhooks e tipos.

Formulários

Formulários de captação publicados, identificados por um ID público de 16 caracteres. Veja Formulários de captação. Estes métodos aceitam a chave pública (pk_…) ou a secreta.

client.forms.retrieve(id)

Rota: GET /v1/forms/{id}. Retorna FormRetrieveResponse com form: name, description, flow (etapas e conexões do formulário) e iframeEmbedAllowedOrigins.

client.forms.retrieveEmbedFramePolicy(id)

Rota: GET /v1/forms/{id}/embed-frame-policy. Retorna FormRetrieveEmbedFramePolicyResponse com as origens https que podem exibir o formulário em iframe. Lista vazia significa sem restrição de origem.

client.forms.submitResponse(id, body)

Rota: POST /v1/forms/{id}/submit (resposta 201). Retorna FormSubmitResponseResponse com submissionId e outcomes[] (platform, leadId e chatId de cada destino).

Mensagens

client.messaging.uploadMedia(body)

Rota: POST /v1/messaging/media (multipart). Retorna MessagingUploadMediaResponse, uma lista com um item por arquivo: { success: true, id, name, url } ou { success: false, name }. Use os id devolvidos em sendMessage (mediaIds ou audioId) ou como mídia de cabeçalho de um modelo oficial.

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

Rota: GET /v1/messaging/chats/{chatId}. Retorna ChatListMessagesResponse com records[] (mensagem completa: text, type, status, media, sender e outros campos) e nextCursor?. As mensagens vêm da mais recente para a mais antiga.

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

Rota: POST /v1/messaging/chats/{chatId} (resposta 204).

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

Rota: POST /v1/messaging/chats/{chatId}/templates (resposta 204). Não envie as variáveis automáticas: o Spark preenche com os dados do chat. Veja Modelos de mensagem.

client.messaging.chats.messages.markAsRead(messageId, params)

Rota: POST /v1/messaging/chats/{chatId}/messages/{messageId}/read (resposta 204). Marca uma mensagem recebida como lida. Informe o chat em params.chatId.

client.messaging.chats.messages.markAsReadAndType(messageId, params)

Rota: POST /v1/messaging/chats/{chatId}/messages/{messageId}/read-and-type (resposta 204). Marca a mensagem como lida e mostra ao contato o indicador de digitação. Útil quando a resposta ainda vai levar alguns segundos.

Modelos de mensagem

Biblioteca de modelos internos e oficiais da organização. Guia completo: Modelos de mensagem pela API.

client.messageTemplates.list()

Rota: GET /v1/message-templates. Retorna MessageTemplateListResponse com templates[] (id, name, isOfficial, metaTemplateName, metaTemplateStatus, category, language, metaRejectedReason e outros campos).

client.messageTemplates.retrieve(id)

Rota: GET /v1/message-templates/{id}. Retorna header, body, footer, buttons, variables, items[] e commonVariables[], a lista de variáveis manuais que você precisa informar ao enviar o modelo ou iniciar uma campanha.

client.messageTemplates.create(body)

Rota: POST /v1/message-templates (resposta 201). Cria um modelo interno (isOfficial: false com items) ou um modelo oficial (isOfficial: true com número de WhatsApp, nome na Meta, categoria, idioma, corpo e variáveis). A resposta tem o mesmo formato de retrieve.

client.messageTemplates.update(id, body)

Rota: PATCH /v1/message-templates/{id}. Mudar só o rótulo (name) não reenvia o modelo à Meta. Mudar o conteúdo (body, header, footer, buttons ou exemplos) de um modelo oficial aprovado ou rejeitado o coloca de novo em análise. Nome na Meta, idioma e categoria não podem ser alterados.

client.messageTemplates.delete(id)

Rota: DELETE /v1/message-templates/{id} (resposta 204). Remove o modelo do Spark. Se ele for oficial, remove também esse idioma do modelo na Meta.

Campanhas

Disparos em massa para um público filtrado. Guia completo: Disparos de campanha pela API.

client.campaigns.getFilterSchema()

Rota: GET /v1/campaigns/filters/schema. Retorna os campos, operadores e regras de combinação aceitos nos filtros de público.

client.campaigns.previewAudience(body)

Rota: POST /v1/campaigns/audience-preview. Recebe { filters?: Filter[] } e retorna { estimatedCount: number }, sem criar campanha.

client.campaigns.create(body)

Rota: POST /v1/campaigns (resposta 201). Retorna { campaignId, status: "draft" }.

client.campaigns.start(id, body)

Rota: POST /v1/campaigns/{id}/start (resposta 202). Recebe { commonVariables?: Record<string, string> } com as variáveis manuais do modelo. Envie {} se o modelo não tiver variáveis manuais. Só campanhas em draft podem ser iniciadas. Retorna { executionId, status: "processing" }.

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

Rotas: GET /v1/campaigns e GET /v1/campaigns/{id}. list retorna a lista resumida de campanhas. retrieve retorna a campanha com o histórico de execuções.

client.campaigns.retrieveExecution(executionId, params)

Rota: GET /v1/campaigns/{id}/executions/{executionId}. Informe a campanha em params.id. Retorna { id, status, targetCount, sentCount, failedCount, progress }, útil para acompanhar o envio.

client.campaigns.cancel(id)

Rota: POST /v1/campaigns/{id}/cancel (resposta 204). Cancela uma campanha em andamento (processing). Não recebe corpo.

Tabela de métodos


Rotas sem método no SDK

O cliente expõe get, post, put, patch e delete, com as mesmas opções de retentativa, timeout e cabeçalhos. Use esses métodos para rotas novas que ainda não chegaram à versão instalada do SDK:
Para enviar parâmetros que ainda não estão nos tipos, veja Erros e uso avançado.

Principais tipos exportados

Importe do pacote sparkcrm ou use o namespace SparkCRM: A lista completa está no api.md do repositório.