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
Last updated today
Built with Documentation.AI