200 (o 201 cuando se creó
algo). Cualquier otro estado viene con un cuerpo JSON en una de dos formas.
Errores de aplicación: el sobre con error_code
Los errores que genera la lógica del propio endpoint — una regla de validación, un registro
inexistente, una operación rechazada — siempre tienen esta forma:
Decide por
error_code, nunca por message. Los mensajes están escritos para personas
y pueden cambiar de redacción; los códigos son el contrato y no cambian. Los mensajes están
en inglés.details es opcional y depende del endpoint: los de calendario lo usan para listar los valores
que sí se habrían aceptado (valid_service_names, valid_professional_names,
matching_professional_ids) o para nombrar el field problemático.
Errores de plataforma: el cuerpo detail
Dos fallos ocurren antes de que se ejecute el endpoint y usan un cuerpo más simple:
401 — autenticación
401 — autenticación
422 — la solicitud no coincide con el esquema
422 — la solicitud no coincide con el esquema
limit por encima del máximo). loc empieza por body,
query o path y luego nombra el campo. Corrige los campos listados y reintenta.404 — ruta o registro desconocido (algunos endpoints)
404 — ruta o registro desconocido (algunos endpoints)
500 — INTERNAL_ERROR
Algo falló de nuestro lado. La operación no se aplicó (no se encoló la llamada, no se creó
el contacto, no se agendó la cita), así que reintentar es seguro. Si persiste, contacta a
soporte con la solicitud que enviaste.
Códigos de error por endpoint
Llamadas (Calls)
Contactos (Clients)
Salesflow — ingreso (ingest)
Salesflow — ingreso por lotes (batch ingest)
El endpoint por lotes reporta la mayoría de los problemas por fila enresults[].errors[].code (required, invalid_format, too_long, duplicate_in_batch, not_found, exists, conflict) con una respuesta 200; los códigos de abajo aplican a la solicitud completa.