Cada respuesta REST usa campos snake_case en la superficie pública. El alcance de organización y aplicación viene de la API key.
Autenticación
Crea una API key con alcance de aplicación en el panel. Envíala como Bearer token en cada request API. Las API keys contienen scopes, application_id y organization_id.
curl https://api.hora.to/v1/usage \
-H "Authorization: Bearer $HORATO_API_KEY"Flujo de conexión de proveedores
Inicia la autorización OAuth para un proveedor, redirige al usuario y deja que Horato guarde la conexión y los tokens del proveedor. Consulta los endpoints de capacidades antes de intentar operaciones específicas del proveedor.
curl -X POST https://api.hora.to/v1/auth/connectors/google/authorize \
-H "Authorization: Bearer $HORATO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"scopes":["email.read","calendar.write"],"redirect_uri":"https://app.example.com/oauth/callback"}'Leer y mutar recursos
Prefiere IDs canónicos para recursos almacenados y conserva IDs de proveedor para reconciliación. Las mutaciones deben incluir etags cuando la superficie del recurso expone control de conflictos.
curl "https://api.hora.to/v1/email/messages?connection_id=conn_123&limit=25" \
-H "Authorization: Bearer $HORATO_API_KEY"curl -X POST https://api.hora.to/v1/calendars/cal_primary/events \
-H "Authorization: Bearer $HORATO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"connection_id":"conn_123","title":"Intro call","start":"2026-06-10T16:00:00Z","end":"2026-06-10T16:30:00Z"}'Paginación e idempotencia
Los endpoints de lista devuelven `next_cursor` cuando existen más resultados. Los endpoints de escritura deben enviar el header `Idempotency-Key` para crear recursos de forma segura cuando el cliente pueda reintentar después de fallos de red.