Criar lead
Cria um novo lead no sistema. Campos obrigatórios: name, email, phone e message.
Se propertyCode for informado e o imóvel existir, o lead será vinculado automaticamente ao imóvel. Se interestedPropertyTitle não for informado, será preenchido com o título do imóvel encontrado.
O lead é criado com status NEW_LEAD e prioridade MEDIUM por padrão.
curl -X POST "https://sandbox-partner-api.keyspot.com.br/v1/leads" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN (JWT)" \
-d '{
"name": "João Silva",
"email": "joao@example.com",
"phone": "11999999999",
"message": "Tenho interesse neste imóvel, gostaria de mais informações."
}'
import requests
import json
url = "https://sandbox-partner-api.keyspot.com.br/v1/leads"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN (JWT)"
}
data = {
"name": "João Silva",
"email": "joao@example.com",
"phone": "11999999999",
"message": "Tenho interesse neste imóvel, gostaria de mais informações."
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://sandbox-partner-api.keyspot.com.br/v1/leads", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN (JWT)"
},
body: JSON.stringify({
"name": "João Silva",
"email": "joao@example.com",
"phone": "11999999999",
"message": "Tenho interesse neste imóvel, gostaria de mais informações."
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"name": "João Silva",
"email": "joao@example.com",
"phone": "11999999999",
"message": "Tenho interesse neste imóvel, gostaria de mais informações."
}`)
req, err := http.NewRequest("POST", "https://sandbox-partner-api.keyspot.com.br/v1/leads", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN (JWT)")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://sandbox-partner-api.keyspot.com.br/v1/leads')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN (JWT)'
request.body = '{
"name": "João Silva",
"email": "joao@example.com",
"phone": "11999999999",
"message": "Tenho interesse neste imóvel, gostaria de mais informações."
}'
response = http.request(request)
puts response.body
{
"data": {
"id": "clx1abc23def456",
"name": "João Silva",
"email": "joao@example.com",
"phone": "11999999999",
"message": "Tenho interesse neste imóvel, gostaria de mais informações.",
"source": "API",
"status": "NEW_LEAD",
"priority": "MEDIUM",
"propertyId": null,
"interestedPropertyTitle": null,
"createdAt": "2026-03-13T10:30:00.000Z",
"updatedAt": "2026-03-13T10:30:00.000Z"
}
}
{
"error": "Request body is required",
"code": "MISSING_BODY"
}
{
"error": "name: Name is required; email: Invalid email",
"code": "VALIDATION_ERROR"
}
{
"error": "Invalid or expired token",
"code": "INVALID_TOKEN"
}
{
"error": "Rate limit exceeded",
"code": "RATE_LIMIT_EXCEEDED"
}
{
"error": "Internal server error",
"code": "INTERNAL_ERROR"
}
/v1/leads
Token JWT obtido via POST /v1/auth/token. Válido por 1 hora.
POST /v1/auth/token. Válido por 1 hora.The media type of the request body
Nome do contato
E-mail do contato
Telefone do contato
Mensagem do contato
Fonte de origem do lead
Código do imóvel para vinculação automática
Título do imóvel de interesse (preenchido automaticamente se propertyCode for encontrado)
Link do imóvel de interesse
Origem do tráfego para rastreamento (UTM, campanha, etc.)
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token (JWT). Token JWT obtido via POST /v1/auth/token. Válido por 1 hora.
Body
Nome do contato
E-mail do contato
Telefone do contato
Mensagem do contato
Fonte de origem do lead
WEBSITEWHATSAPPPHONEEMAILSOCIAL_MEDIAINSTAGRAMFACEBOOKPORTALPORTAL_VIVAREALPORTAL_ZAPIMOVEISPORTAL_OLXPORTAL_IMOVELWEBPORTAL_CHAVESNAMAOMETA_ADSGOOGLE_ADSRD_STATIONREFERRALREAL_ESTATEOTHERAPICódigo do imóvel para vinculação automática
Título do imóvel de interesse (preenchido automaticamente se propertyCode for encontrado)
Link do imóvel de interesse
Origem do tráfego para rastreamento (UTM, campanha, etc.)
Responses
Lead (contato de interessado). Os campos retornados dependem do parâmetro fields na requisição (GET) ou são retornados completos (POST).
Identificador único do lead
Nome do lead
E-mail do lead
Telefone do lead
Mensagem do lead
Fonte de origem do lead
WEBSITEWHATSAPPPHONEEMAILSOCIAL_MEDIAINSTAGRAMFACEBOOKPORTALPORTAL_VIVAREALPORTAL_ZAPIMOVEISPORTAL_OLXPORTAL_IMOVELWEBPORTAL_CHAVESNAMAOMETA_ADSGOOGLE_ADSRD_STATIONREFERRALREAL_ESTATEOTHERAPIStatus do lead no funil de vendas
NEW_LEADIN_SERVICEVISIT_SCHEDULEDVISIT_COMPLETEDPROPOSAL_MADECONVERTEDLOSTPrioridade do lead
LOWMEDIUMHIGHID do imóvel vinculado
Título do imóvel de interesse
Data de criação (ISO 8601)
Data da última atualização (ISO 8601)
Mensagem de erro legível
Código de erro programático
Mensagem de erro legível
Código de erro programático
Mensagem de erro legível
Código de erro programático
Mensagem de erro legível
Código de erro programático
Last updated Mar 13, 2026
Built with Documentation.AI