Documentación para desarrolladores
Integra la inteligencia artificial de BimLM en tus propias aplicaciones, scripts y workflows. El API REST permite enviar mensajes al motor IA y recibir respuestas en JSON o en modo streaming.
Inicio rápido
En menos de 2 minutos puedes hacer tu primera petición:
- Inicia sesión en BimLM y accede a Configuración → API Keys.
- Pulsa Nueva clave, dale un nombre y copia la clave (solo se muestra una vez).
- Úsala en el header
Authorizationde tus peticiones.
Autenticación
Todas las peticiones deben incluir el header:
Las claves empiezan siempre por blm_. Mantenlas en secreto: no las expongas en código público.
POST /api/ai/chat/
Envía un mensaje al modelo IA activo y recibe su respuesta.
/api/ai/chat/
Headers requeridos
| Header | Valor |
|---|---|
| Authorization | Bearer <tu_api_key> |
| Content-Type | application/json |
Body JSON
| Campo | Tipo | Descripción |
|---|---|---|
| message | string | Texto de la consulta. Obligatorio. |
| stream | boolean | Si es true, devuelve NDJSON token a token. Por defecto false. |
Formato de respuesta
Con "stream": false (defecto):
{
"response": "El hormigón HA-25 es adecuado para zapatas de cimentación…",
"model": "llama-3-bim-q4"
}
Modo streaming
Con "stream": true el servidor devuelve Content-Type: application/x-ndjson. Cada línea es un objeto JSON independiente:
{"token": "El"}
{"token": " hormigón"}
{"token": " HA-25"}
{"token": " es"}
...
Lee la respuesta línea a línea y concatena los valores de token para reconstruir el mensaje completo.
Ejemplos
cURL
curl -X POST https://tu-dominio.com/api/ai/chat/ \ -H "Authorization: Bearer blm_xxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"message": "¿Qué es el hormigón HA-25?"}'
Python
import requests API_KEY = "blm_xxxxxxxxxxxxxxxxxxxx" BASE_URL = "https://tu-dominio.com" response = requests.post( f"{BASE_URL}/api/ai/chat/", headers={ "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json", }, json={"message": "¿Qué es el BIM nivel 3?"}, ) data = response.json() print(data["response"])
Python — streaming
import requests, json API_KEY = "blm_xxxxxxxxxxxxxxxxxxxx" with requests.post( "https://tu-dominio.com/api/ai/chat/", headers={ "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json", }, json={"message": "Resume el proceso constructivo de una losa", "stream": True}, stream=True, ) as r: for line in r.iter_lines(): if line: token = json.loads(line)["token"] print(token, end="", flush=True)
Códigos de error
| HTTP | Mensaje | Causa |
|---|---|---|
| 401 | Authorization header requerido | No se envió el header |
| 401 | API key inválida o inactiva | Clave incorrecta o revocada |
| 400 | JSON inválido | Body no parseable como JSON |
| 400 | El campo 'message' es obligatorio | Falta el campo message |
| 503 | No hay modelo IA activo | Sin modelo configurado en la plataforma |
| 405 | Método no permitido | Se usó GET en lugar de POST |
Límites y buenas prácticas
- No compartas tu API Key en repositorios públicos ni en código cliente.
- Puedes crear múltiples claves y revocarlas de forma independiente desde tu dashboard.
- Para peticiones largas usa el modo
stream: truepara evitar timeouts HTTP. - El modelo responde en el mismo idioma de la pregunta.