Plataforma de reservas para developers

Agregá reservas a WordPress, Shopify y cualquier sitio en minutos

El primer canal de venta de Mati es WordPress, Shopify y sitios 100% código. Un widget embebible y una API REST para reservas y servicios.

API REST v1 · Build in 60s

Pide un hueco y reserva
en dos llamadas

Sin SDK que instalar (aún), sin dependencias. Un endpoint REST sobre HTTPS, autenticación por API key y respuesta JSON tipada. Funciona desde cualquier stack.

  • Autenticación: header x-mati-api-key
  • Límites por IP y por ruta (reservar: 10 por minuto). Pasado el límite, respuesta 429; no hay cabeceras X-RateLimit-*
  • Webhooks firmados HMAC-SHA256, con hasta 5 intentos por evento
  • Errores con un code estable (SLOT_UNAVAILABLE, BOOKING_TOO_SOON…)

Importa en tu cliente HTTP favorito

Para Insomnia, importa el archivo Postman — es compatible.

# 1. Pide los huecos libres de un día (de hoy en adelante; en macOS: date -v+2d +%F)
curl "https://app.mati-ia.com/api/v1/workspaces/mi-agenda-mati/slots?serviceId=srv_consulta_general&date=$(date -d '+2 days' +%F)" \
  -H "x-mati-api-key: mat_sk_TU_API_KEY"

# => { "success": true,
#      "timezone": "Europe/Madrid",
#      "slots": ["10:00", "10:30"],
#      "slotsIso": ["2027-01-12T10:00:00+01:00", "2027-01-12T10:30:00+01:00"] }

# 2. Reserva uno de esos huecos: pasa su slotsIso TAL CUAL, sin convertirlo
curl -X POST https://app.mati-ia.com/api/v1/workspaces/mi-agenda-mati/bookings \
  -H "x-mati-api-key: mat_sk_TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "serviceId": "srv_consulta_general",
    "name": "María García",
    "email": "[email protected]",
    "date": "2027-01-12T10:00:00+01:00"
  }'

# => { "success": true,
#      "checkoutUrl": null,
#      "booking": { "id": "cm...", "status": "CONFIRMED",
#                   "startTime": "2027-01-12T09:00:00.000Z", "endTime": "...", ... } }
#
# Servicio de pago: status "PENDING" y checkoutUrl con la URL de pago de Stripe.
# El id del servicio sale de GET .../services. Un error trae un "code" estable:
# SLOT_UNAVAILABLE, BOOKING_TOO_SOON, DATE_IN_PAST...

Quickstart

Priorizá WordPress y Shopify, pero cualquier sitio con HTML funciona. Todas las opciones se conectan al mismo workspace y dashboard de Mati.

WordPress WordPress

Instalación
1. Descargá wp-mati-ia.zip desde tu dashboard
2. Plugins → Añadir nuevo → Subir plugin
3. Activá Mati y seguí el wizard de configuración

Shopify Shopify

Liquid snippet
{% comment %}
  Copiá esto en theme.liquid antes de </body>
{% endcomment %}
<script
  src="https://mati-ia.com/mati-widget.min.js"
  data-slug="tu-workspace"
  data-position="bottom-right"
  data-theme="auto"
></script>

HTML5 HTML / Vanilla JS

Script tag
<script
  src="https://mati-ia.com/mati-widget.min.js"
  data-slug="tu-workspace"
  data-position="bottom-right"
  data-theme="auto"
></script>

React Next.js React / Next.js

Terminal
# Próximamente: @mati/react todavía no está publicado en npm. Usa el script tag de arriba.
Componente
import Script from "next/script";

// El widget se identifica con el slug y valida el dominio en el
// servidor. NO lleva clave de API: esa clave da acceso de ESCRITURA
// al workspace (catalogo, reservas, cancelaciones) y en el navegador
// la ve cualquiera. Usala solo desde tu backend.
export default function Page() {
  return (
    <Script
      src="https://mati-ia.com/mati-widget.min.js"
      data-slug="tu-workspace"
      data-position="bottom-right"
      data-theme="auto"
      strategy="afterInteractive"
    />
  );
}

REST API

cURL
# date: un valor de slotsIso de GET .../slots (hoy o futuro), tal cual
curl -X POST https://app.mati-ia.com/api/v1/workspaces/tu-workspace/bookings \
  -H "Content-Type: application/json" \
  -H "x-mati-api-key: mat_sk_TU_API_KEY" \
  -d '{
    "serviceId": "srv_123",
    "providerId": "pro_456",
    "date": "2027-01-12T10:00:00+01:00",
    "email": "[email protected]",
    "name": "Jane Doe"
  }'

Probá en vivo

Sin crear cuenta. Pegá este snippet en cualquier archivo HTML, tema Shopify o plantilla WordPress y el widget cargará con datos de demo.

HTML / Shopify / WordPress
<script
  src="https://mati-ia.com/mati-widget.min.js"
  data-slug="demo"
  data-position="bottom-right"
  data-theme="auto"
></script>

Funciona donde vendés

WordPressShopifyHTML / Vanilla JSReactNext.jsWixSquarespace