v1 · Beta

API pública

Integrá tus turnos y estadísticas de MiniBio con tus propios sistemas: consultá reservas, creá turnos, confirmalos o cancelalos, y traé las métricas de todas tus páginas.

La creación de páginas, turneros y recursos no está disponible por API: se administra desde la app de MiniBio. Los endpoints de turnos requieren un plan con la función de reservas; el de estadísticas, un plan con estadísticas.

URL base

https://minibio-ar.onrender.com/api/v1

Autenticación

Iniciá sesión con tu email y contraseña de MiniBio. La respuesta incluye un token que dura 7 días; mandalo en el header Authorization: Bearer <token> en el resto de las llamadas.

POST/auth/login
curl -X POST https://minibio-ar.onrender.com/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{ "email": "tu@email.com", "password": "tu-contraseña" }'

# Respuesta
{
  "token": "eyJhbGciOi...",
  "user": { "id": 1, "username": "minegocio", "plan": { "code": "pro", ... } }
}

Páginas

GET/pages

Lista tus páginas con su id (lo necesitás para filtrar turnos y consultar recursos).

curl https://minibio-ar.onrender.com/api/v1/pages -H "Authorization: Bearer <token>"

# Respuesta
{ "pages": [ { "id": 12, "title": "Barbería Roma", "slug": "barberia-roma", "created_at": "..." } ] }

Turnos

GET/bookingsRequiere plan con reservas

Todos los turnos de todas tus páginas. Filtros opcionales: from y to (fecha YYYY-MM-DD, hora argentina), status ( pending · confirmed · cancelled · no_show · done) y page_id.

curl "https://minibio-ar.onrender.com/api/v1/bookings?from=2026-07-13&to=2026-07-20&status=confirmed" \
  -H "Authorization: Bearer <token>"

# Respuesta
{
  "bookings": [
    {
      "id": 28, "starts_at": "2026-07-13T13:00:00.000Z", "ends_at": "2026-07-13T13:30:00.000Z",
      "customer_name": "Juan Pérez", "customer_phone": "3415551234",
      "status": "confirmed", "notes": null,
      "resource": { "id": 3, "name": "Corte de pelo" },
      "page": { "id": 12, "title": "Barbería Roma", "slug": "barberia-roma" }
    }
  ]
}
GET/resources/:pageIdRequiere plan con reservas

Recursos reservables de una página (nombre, duración, cantidad simultánea) y su configuración. Necesitás el resource_id para crear turnos.

curl https://minibio-ar.onrender.com/api/v1/resources/12 -H "Authorization: Bearer <token>"
POST/bookingsRequiere plan con reservas

Crea un turno (equivale a la carga manual de la app: queda confirmado). El horario debe caer en un slot válido según la duración y los horarios del recurso, y respeta la capacidad simultánea — si el horario está lleno responde 409.

curl -X POST https://minibio-ar.onrender.com/api/v1/bookings \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "page_id": 12,
    "resource_id": 3,
    "starts_at": "2026-07-13T10:00:00-03:00",
    "customer_name": "Juan Pérez",
    "customer_phone": "3415551234",
    "notes": "opcional"
  }'
PATCH/bookings/:idRequiere plan con reservas

Cambia el estado de un turno: confirmarlo, cancelarlo, marcar que el cliente no vino o que se completó.

curl -X PATCH https://minibio-ar.onrender.com/api/v1/bookings/28 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ "status": "confirmed" }'

# status: "pending" | "confirmed" | "cancelled" | "no_show" | "done"

Estadísticas

GET/statsRequiere plan con estadísticas

Las mismas métricas que ves en la app, de todas tus páginas: visitas, clicks, CTR, top links, serie diaria de 30 días y números de reservas (totales, próximas, pendientes, no-shows). Solo lectura.

curl https://minibio-ar.onrender.com/api/v1/stats -H "Authorization: Bearer <token>"

# Respuesta (resumen)
{
  "totals": { "pages": 2, "views": 340, "clicks": 120, "ctr": 35,
              "bookings": 48, "bookings_upcoming": 6, "bookings_pending": 2, ... },
  "pages": [ { "id": 12, "title": "Barbería Roma", "views": 210, "clicks": 80,
               "bookings": { "total": 48, "upcoming": 6, "no_show": 3, ... }, ... } ],
  "top_links": [ ... ],
  "daily": [ { "day": "2026-07-01", "type": "view", "count": 14 }, ... ]
}

Errores y límites

  • 401 — token faltante, inválido o vencido.
  • 403 — tu plan no incluye esa funcionalidad, o el recurso no es tuyo.
  • 409 — el horario del turno ya está completo.
  • 429 — demasiadas peticiones (límite general: 120 por minuto por IP; login: 20 cada 15 minutos).
  • Los errores siempre vienen como { "error": "mensaje" }.

¿Todavía no tenés tu turnero?

Creá tu página en MiniBio y activá las reservas online con el plan Pro.

Crear mi página