Developers · v1
API de Nidocasa Group
para conectar con otras aplicaciones.
REST API JSON sobre HTTPS. Permite consultar propiedades, enviar leads desde sistemas externos (web partner, landing, CRM) y recibir notificaciones (webhooks) cuando ocurren eventos.
Base URL
https://nidocasagroup.com/api/public/v1
Autenticación
Todas las peticiones requieren una clave API en la cabecera X-API-Key (o como Authorization: Bearer ...). Las claves se crean desde la base de datos llamando a la función api_create_key con un usuario administrador. La clave se muestra una sola vez.
-- Crear una clave nueva (devuelve el secreto una sola vez)
select * from api_create_key('Integración Partner X');
-- Revocar una clave existente
update api_keys set revoked = true where id = '...';Errores
{
"error": {
"code": "invalid_api_key",
"message": "Invalid or revoked API key"
}
}Códigos: missing_api_key (401), invalid_api_key (401), insufficient_scope (403), validation_failed (422), not_found (404), query_failed / insert_failed (500).
Endpoints
/propertiesLista de propiedades disponibles. Scope requerido: read:properties.
Query params opcionales
operation—venta|alquilertype—piso,atico,villa,casa…city— nombre de ciudad (coincidencia case-insensitive)min_price,max_price— númerolimit(máx 100, def. 20),offset(def. 0)
curl "https://nidocasagroup.com/api/public/v1/properties?operation=venta&city=Madrid&limit=10" \ -H "X-API-Key: nck_live_..."
/properties/{slug}Detalle completo de una propiedad por su slug. Scope: read:properties.
curl "https://nidocasagroup.com/api/public/v1/properties/atico-chamberi" \ -H "X-API-Key: nck_live_..."
/leadsCrea un nuevo lead/contacto. Scope: write:leads. La cabecera Content-Type debe ser application/json.
Body
{
"type": "contacto", // contacto | propiedad | valoracion
"name": "María García", // requerido
"email": "maria@example.com", // requerido
"phone": "+34 600 000 000",
"message": "Me interesa el ático...",
"city": "Madrid",
"property_id": "uuid opcional",
"source": "partner-x"
}Ejemplo
curl -X POST "https://nidocasagroup.com/api/public/v1/leads" \
-H "X-API-Key: nck_live_..." \
-H "Content-Type: application/json" \
-d '{"name":"María García","email":"maria@example.com","message":"Hola"}'Webhooks salientes
Nidocasa enviará una petición POST a las URLs configuradas cada vez que ocurra un evento. Eventos disponibles: lead.created, property.created.
Cabeceras enviadas
X-Nidocasa-Event: lead.created X-Nidocasa-Signature: sha256=<hmac_sha256(body, secret)> Content-Type: application/json
Payload
{
"event": "lead.created",
"created_at": "2026-05-16T10:00:00Z",
"data": {
"id": "uuid",
"type": "contacto",
"name": "...",
"email": "...",
"phone": "...",
"message": "...",
"city": "...",
"property_id": null,
"source": "api"
}
}Verificación de firma (Node.js)
import { createHmac, timingSafeEqual } from "crypto";
const signature = req.headers["x-nidocasa-signature"].replace("sha256=", "");
const expected = createHmac("sha256", WEBHOOK_SECRET)
.update(rawBody)
.digest("hex");
const valid = timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);Registrar un endpoint (admin)
insert into webhook_endpoints (name, url, events)
values ('CRM Partner', 'https://partner.example.com/hooks/nidocasa',
array['lead.created','property.created'])
returning id, secret;Notas
- CORS habilitado para todos los orígenes (
*). - Los leads enviados quedan registrados con
sourcey la IP de origen. - Para limites/quotas o más eventos, contáctanos.
