Crie integrações conectadas à sua operação comercial.
A RiseAPI permite consultar, criar, atualizar e arquivar contatos da sua subconta, com autenticação por chave, isolamento de dados e um contrato estável para n8n, Make, Zapier ou aplicações próprias.
Configurações → Integrações → RiseAPI, clique em Gerar chave da RiseAPI, defina o nome e a permissão de acesso. Copie o segredo imediatamente, pois ele é exibido uma única vez.Sua chave acessa somente os dados do tenant associado a ela. Nenhum identificador de tenant é enviado na URL ou no corpo.
O contrato nativo é simples e há uma camada opcional para payloads inspirados no GoHighLevel.
https://apis.risesales.ai/v1Início rápido
Em poucos minutos você pode criar seu primeiro contato a partir de uma automação externa.
# Nunca use uma chave real na documentação ou no código-fonte.
curl -X POST "https://apis.risesales.ai/v1/contacts" -H "Authorization: Bearer rs_live_SUBSTITUA_PELA_SUA_CHAVE" -H "Content-Type: application/json" -d '{"name":"Ana Silva","email":"ana@example.com","tags":["n8n"]}'const response = await fetch("https://apis.risesales.ai/v1/contacts", { method: "POST", headers: { Authorization: "Bearer rs_live_SUBSTITUA_PELA_SUA_CHAVE", "Content-Type": "application/json" }, body: JSON.stringify({ name: "Ana Silva", email: "ana@example.com" }) });
const data = await response.json();Autenticação e permissões
Envie a chave da RiseAPI no header Authorization em todas as requisições. Cada chave pode ser configurada como somente leitura ou leitura e escrita.
Authorization: Bearer rs_live_SUBSTITUA_PELA_SUA_CHAVE
Content-Type: application/json| Permissão | Pode fazer |
|---|---|
read | Consultar contatos, campos, tags, pipelines e oportunidades. |
read_write | Todas as leituras, além de criar, atualizar e arquivar contatos. |
Uma chave inválida, expirada ou revogada sempre retorna 401 unauthorized, sem revelar seu estado. O segredo é exibido somente no momento de criação ou regeneração.
Limites e paginação
Para manter a API previsível, cada chave tem até 100 requisições por janela de 10 segundos. As respostas retornam os headers de limite e, quando necessário, Retry-After.
| Parâmetro | Regra |
|---|---|
limit | Opcional. Padrão 25, mínimo 1 e máximo 100. |
cursor | Use o valor retornado quando has_more for true. O cursor é opaco, não o monte nem o altere. |
Formato de erros
Todos os erros usam o mesmo envelope. Para automações, prefira avaliar error.code, que é estável, em vez do texto da mensagem.
{
"error": { "code": "invalid_request", "message": "Os filtros informados são inválidos.", "details": null }
}Referência da API
Todos os endpoints abaixo usam a URL base https://apis.risesales.ai/v1 e exigem o header de autenticação.
Listar contatos
/contactsRetorna os contatos ativos da subconta autenticada. Use filtros para encontrar o registro certo sem baixar a base inteira.
| Filtro | Descrição |
|---|---|
email | E-mail exato. |
phone | Telefone normalizado pela API. |
tag | Tag do contato. |
created_from / created_to | Intervalo em ISO 8601. |
include=tracking | Inclui a projeção limitada de tracking para CAPI. |
curl "https://apis.risesales.ai/v1/contacts?email=ana%40example.com&limit=1" -H "Authorization: Bearer rs_live_SUBSTITUA_PELA_SUA_CHAVE"
Resposta 200
{
"contacts": [{ "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "name": "Ana Silva", "email": "ana@example.com", "tags": ["n8n"], "custom_fields": {} }],
"cursor": "v1.cursor-opaco", "has_more": false
}Criar ou reconciliar um contato
/contactsInforme ao menos name, email ou phone. A API reconcilia por e-mail ou telefone normalizado para reduzir duplicidades.
| Campo | Descrição |
|---|---|
name | Nome do contato. |
email | E-mail. |
phone | Telefone em formato comum. |
company_name | Empresa. |
tags | Lista de tags. |
custom_fields | Objeto de valores personalizados. |
{
"name": "Ana Silva", "email": "ana@example.com", "phone": "+55 11 98888-7777",
"company_name": "Empresa Exemplo", "tags": ["n8n", "lead-api"],
"custom_fields": { "cargo": "Diretora" }, "utm_source": "google"
}Por padrão, criação e atualização disparam automações. Para uma importação controlada, use ?trigger_automations=false nessa requisição.
Obter um contato
/contacts/:idRetorna um contato pelo UUID. O contato precisa pertencer à subconta da chave usada.
Atualizar um contato
/contacts/:idEnvie somente os campos que devem mudar. custom_fields é mesclado aos valores atuais. Quando tags é enviado, a lista substitui as tags atuais.
Arquivar um contato
/contacts/:idO contato não é apagado fisicamente. A API preenche a data de arquivamento e responde com { "archived": true }.
Campos personalizados
/custom-fieldsLista os campos ativos do contato com key, rótulo, tipo e opções. Aceita limit e cursor.
Pipelines
/pipelinesLista pipelines e respectivas etapas ordenadas. Cada pipeline inclui id, name, position e stages.
Oportunidades
/opportunitiesLista negócios em modo leitura. Filtre por contact_id ou stage_id, além de limit e cursor.
Tracking para CAPI
Quando uma integração de conversões precisar dos dados de tracking, solicite a projeção explicitamente. Sem o parâmetro, a API não retorna tracking nem metadados internos.
GET /v1/contacts?email=ana%40example.com&limit=1&include=tracking
# tracking pode conter somente fbp, fbc, fbclid, ip e user_agentUse somente dados canônicos gravados pela RiseAPI. IDs de campos legados do GHL variam entre tenants e não fazem parte deste contrato.
Compatibilidade com GoHighLevel
O contrato nativo da RiseAPI é a opção recomendada. Para facilitar uma migração gradual, criação e atualização também aceitam firstName, lastName, companyName, locationId, header Version e customFields no formato GHL.
locationId nunca escolhe o tenant. O tenant é definido exclusivamente pela chave autenticada. IDs desconhecidos de campos personalizados aparecem em warnings e não impedem a criação.Exemplo no n8n
Crie uma credencial HTTP Header Auth no n8n com o nome Authorization e o valor Bearer rs_live_SUBSTITUA_PELA_SUA_CHAVE. Depois, use um nó HTTP Request configurado assim:
| Campo do node | Valor |
|---|---|
| Method | POST |
| URL | https://apis.risesales.ai/v1/contacts |
| Send Body | JSON |
| Body | { "name": "{{ $json.name }}", "email": "{{ $json.email }}" } |
