Referencia de la API
GoConverso expone una API REST construida sobre Supabase , brindandote acceso programatico a tus reservas, servicios, clientes, productos y mas. Cada accion que puedes realizar en el panel de control tambien esta disponible a traves de la API.
La API de GoConverso sigue convenciones RESTful y devuelve respuestas JSON. Todas las solicitudes deben estar autenticadas usando un token JWT o tu clave API del proyecto.
URL base
Todas las solicitudes de la API se realizan al endpoint de tu proyecto Supabase:
https://<project-id>.supabase.co/rest/v1/Para edge functions (webhooks, logica personalizada):
https://<project-id>.supabase.co/functions/v1/Autenticacion
Cada solicitud debe incluir encabezados de autenticacion. GoConverso soporta dos metodos:
| Metodo | Caso de uso | Encabezado |
|---|---|---|
| Clave API | Integraciones servidor a servidor | apikey: <your-anon-key> |
| Token JWT | Solicitudes con alcance de usuario | Authorization: Bearer <jwt-token> |
Ambos encabezados deben incluirse en la mayoria de las solicitudes. La clave API identifica tu proyecto, y el token JWT identifica al usuario autenticado.
curl -X GET "https://<project-id>.supabase.co/rest/v1/services" \
-H "apikey: <your-anon-key>" \
-H "Authorization: Bearer <jwt-token>" \
-H "Content-Type: application/json"Aprende mas en la guia de Autenticacion.
Limites de tasa
GoConverso aplica limites de tasa para garantizar la estabilidad de la plataforma:
| Nivel | Solicitudes por minuto | Conexiones simultaneas |
|---|---|---|
| Free | 60 | 5 |
| Plus | 300 | 20 |
| Pro | 1,000 | 50 |
| Max | 5,000 | 100 |
| Ultra | 10,000 | 200 |
Cuando excedes el limite de tasa, la API devuelve una respuesta 429 Too Many Requests con un encabezado Retry-After indicando cuantos segundos debes esperar.
Formato de respuesta
Todas las respuestas exitosas devuelven JSON con codigos de estado HTTP estandar:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2026-01-15T10:30:00.000Z",
"name": "Haircut",
"price": 35.00,
"duration": 30
}Las respuestas de error siguen una estructura consistente:
{
"code": "PGRST301",
"message": "Row not found",
"details": null,
"hint": null
}Seguridad a Nivel de Fila
GoConverso usa Seguridad a Nivel de Fila (RLS) de Supabase en todas las tablas. Esto significa:
- Los usuarios autenticados solo pueden acceder a sus propios datos
- Los endpoints publicos (como paginas de reserva) usan la clave anonima con politicas restringidas
- La clave de rol de servicio omite RLS completamente — nunca expongas esta clave en codigo del lado del cliente
Nunca expongas tu clave service_role en codigo frontend o repositorios publicos. Esta clave omite todas las politicas de Seguridad a Nivel de Fila y otorga acceso completo a tu base de datos.
Secciones de la API
Tokens JWT, claves API, proveedores OAuth y gestion de sesiones.
AutenticacionCrear, leer, actualizar y cancelar citas de forma programatica.
ReservasGestiona tu catalogo de servicios, precios, duraciones y categorias.
ServiciosAccede a tu base de datos de clientes, historial de reservas y datos CRM.
ClientesGestiona tu catalogo de productos, variantes, inventario y precios.
ProductosRastrea pedidos de comercio electronico, ordenes de servicio y estado de pagos.
PedidosRecibe notificaciones en tiempo real para pagos, reservas y eventos.
WebhooksLogica personalizada del lado del servidor para correos, pagos e integraciones.
Edge FunctionsEjemplo rapido
Aqui hay un ejemplo completo que obtiene todos los servicios del usuario autenticado:
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
'https://<project-id>.supabase.co',
'<your-anon-key>'
)
// Iniciar sesion
const { data: auth } = await supabase.auth.signInWithPassword({
email: 'you@example.com',
password: 'your-password'
})
// Obtener servicios
const { data: services, error } = await supabase
.from('services')
.select('*')
.eq('professional_id', auth.user.id)
.order('created_at', { ascending: false })
if (error) {
console.error('Error fetching services:', error.message)
} else {
console.log('Services:', services)
}Necesitas ayuda para comenzar? Consulta la guia de Autenticacion para obtener tus credenciales de API.