Desarrolladores
Conecta tu sistema con Bodegas.com para publicar tu inventario en tiempo real y recibir las reservaciones al instante. Es una API REST con JSON sobre HTTPS.
https://bodegas.com/wp-json/bodegas/v1Authorization: Bearer <tu_llave>. Genera tu llave en tu portal: Bodegas.com → Integración (API).Content-Type: application/json, UTF-8. Medidas en metros, precios en pesos mexicanos al mes.¿No tienes sistema propio? No necesitas la API: sube tu inventario en Excel desde el portal, o publica un feed JSON (ver abajo) y nosotros lo leemos cada hora.
GET /me confirma que tu llave funciona y muestra tu cuenta, tu webhook y tu comisión.
curl https://bodegas.com/wp-json/bodegas/v1/me -H "Authorization: Bearer bdg_live_xxx"{
"empresa": {
"nombre": "Condesa Storage",
"slug": "condesa-storage"
},
"webhook": {
"url": "https://tusistema.mx/hooks/bodegas",
"configurado": true
},
"comision": {
"tipo": "meses",
"valor": 1
}
}PUT /sucursales/{codigo}. El codigo es tu identificador interno de la sucursal.PUT /sucursales/{codigo}/unidades cada vez que cambie, y al menos una vez al día.POST /reservaciones/{folio}.Si una sucursal no recibe inventario en 72 horas, sus unidades se ocultan automáticamente para no ofrecer espacios que ya no existen. Vuelven a publicarse con el siguiente envío.
PUT /sucursales/{codigo}
{
"nombre": "Condesa",
"direccion": "Circuito Interior 169, Col. San Miguel Chapultepec, Miguel Hidalgo, 11850, CDMX",
"lat": 19.4151307,
"lng": -99.1804565,
"telefono": "55 8842 7951",
"correo": "condesa@tuempresa.mx",
"horario": "Lunes a viernes de 9 a 18 h, sábados de 9 a 14 h",
"descripcion": "Acceso vehicular, montacargas y vigilancia 24 h.",
"imagen": "https://tuempresa.mx/fotos/condesa.jpg"
}Para crear una sucursal se requieren nombre, direccion, lat y lng. En actualizaciones manda solo lo que cambió. Respuesta 201 al crear, 200 al actualizar.
GET /sucursales: todas tus sucursales, con estado de sincronización.GET /sucursales/{codigo}: una sucursal.PUT /sucursales/{codigo}/unidades
Envía todas las unidades disponibles. Las que no vengan en la lista se marcan como no disponibles (no se borran: si vuelven en un envío posterior, se reactivan). Máximo 5,000 por sucursal.
{
"unidades": [
{
"id": "A-101",
"codigo": "A-101",
"tipo": "bodega",
"ancho": 2,
"largo": 3,
"alto": 2.5,
"piso": 1,
"precio": 2450,
"precio_lista": 2800,
"disponible": true,
"clima": false,
"camaras": true,
"elevador": true,
"estacionamiento": true,
"promocion": "Primer mes al 50%"
}
]
}| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | texto | sí | Identificador único y estable de la unidad en tu sistema (máx. 64). |
codigo | texto | no | Número visible (puerta). Si no se envía, se usa id. |
tipo | texto | no | locker, bodega, arriba (arriba/abajo), nave o cajon. Por defecto bodega. |
ancho, largo | número | sí | Metros. |
alto | número | no | Metros. |
piso | entero | no | 0 = planta baja. |
precio | número | sí | Precio mensual que verá el cliente en Bodegas.com, IVA incluido. |
precio_lista | número | no | Precio normal para mostrar el ahorro. |
disponible | booleano | no | Por defecto true. |
clima, camaras, elevador, escaleras, techado, estacionamiento, cerradura, mudanza, seguro | booleano | no | Características. |
promocion | texto | no | Máx. 250 caracteres. |
Respuesta:
{
"aplicadas": 152,
"desactivadas": 3,
"errores": []
}Enviar {"unidades": []} marca todas las unidades de la sucursal como no disponibles (sucursal llena). Si todas las unidades traen error, la respuesta es 422 y no se modifica el inventario actual.
PATCH /sucursales/{codigo}/unidades/{id}: ideal para reflejar al instante que una unidad se rentó o cambió de precio.
{ "disponible": false }
{ "precio": 2300, "promocion": "" }GET /sucursales/{codigo}/unidades
Cuando un cliente aparta una bodega, la reservación se crea en Bodegas.com con un folio (por ejemplo BD-2609-00123). Te llega por correo y por webhook.
GET /reservaciones?estado=nueva&desde=2026-09-01GET /reservaciones/{folio}POST /reservaciones/{folio}
{
"estado": "rentada",
"fecha_movein": "2026-10-03"
}Estados válidos: contactado, rentada, no_rentada y cancelada. Reportar rentada genera la comisión correspondiente, que aparece en tu estado de cuenta mensual. También puedes reportarlo con un clic desde el correo de la reservación o en tu portal.
Ciclo automático: si en 3, 7 y 14 días no hay respuesta, te enviamos un recordatorio. Al sexto día le preguntamos al cliente si rentó. Si el cliente confirma que rentó y no recibimos respuesta tuya en 7 días, la renta se registra con la confirmación del cliente. A los 45 días sin confirmación, la reservación se cierra como "sin confirmar".
Configura en tu portal una URL https. Te enviamos un POST con JSON en cada evento:
reservacion.creadareservacion.actualizadaping (botón "Enviar prueba"){
"evento": "reservacion.creada",
"enviado": "2026-09-29T18:20:11+00:00",
"reservacion": {
"folio": "BD-2609-00123",
"estado": "nueva",
"creada": "2026-09-29T12:20:10-06:00",
"sucursal": {
"codigo": "CONDESA",
"nombre": "Condesa"
},
"unidad": {
"id": "A-101",
"codigo": "A-101",
"descripcion": "Mini bodega de 6 m² (2 × 3 m, 2.5 m alto)",
"m2": 6
},
"precio_mensual": 2450,
"cliente": {
"nombre": "Ana",
"apellido": "López",
"email": "ana@correo.com",
"telefono": "5512345678"
},
"fecha_ingreso": "2026-10-01",
"mensaje": null,
"fecha_movein": null,
"comision": null
}
}Valida la firma. Cada envío incluye X-Bodegas-Signature: t=<unix>,v1=<firma>, donde firma = HMAC_SHA256(secreto, "<t>.<cuerpo>") en hexadecimal. El secreto está en tu portal.
// PHP
[$t, $v1] = sscanf($_SERVER['HTTP_X_BODEGAS_SIGNATURE'], 't=%d,v1=%s');
$ok = hash_equals(hash_hmac('sha256', $t . '.' . file_get_contents('php://input'), $secreto), $v1)
&& abs(time() - $t) < 300;Responde con 2xx en menos de 15 segundos. Si falla, reintentamos hasta 6 veces con espera creciente.
Si prefieres que nosotros leamos tu inventario, publica una URL que regrese el mismo formato de PUT /unidades:
{
"unidades": [
{
"id": "A-101",
"ancho": 2,
"largo": 3,
"precio": 2450,
"disponible": true
}
]
}Regístrala en tu portal, en la ficha de la sucursal, con la opción Feed JSON. La leemos cada hora y justo antes de cada reservación.
| Código | Significado |
|---|---|
401 | Falta la llave o es inválida. |
404 | La sucursal, unidad o reservación no existe en tu cuenta. |
409 | La reservación ya está incluida en un estado de cuenta. |
413 / 422 | Datos inválidos; el cuerpo explica qué corregir. |
429 | Excediste el límite de solicitudes. |
Cuerpo de error: { "code": "bdg_validacion", "message": "…", "data": { "status": 422 } }
curl -X PUT https://bodegas.com/wp-json/bodegas/v1/sucursales/CONDESA/unidades \
-H "Authorization: Bearer bdg_live_xxx" \
-H "Content-Type: application/json" \
-d '{"unidades":[{"id":"A-101","ancho":2,"largo":3,"precio":2450}]}'¿Dudas técnicas? Escríbenos a hola@bodegas.com.