R2 Connect API
Inicio rápido
De cero a tu primera respuesta de la API en dos minutos: pide la llave al dueño del negocio y haz una solicitud.
Paso 1 · Pide la llave de acceso#
Las llaves las crea el dueño del negocio, no tú. Pídele que entre a su panel de R2 y siga esta ruta:
- Configuración → R2 Connect API
- Da clic en Nueva llave
- Ponle un nombre que identifique tu sistema (por ejemplo, el nombre de tu software)
- Marca solo los permisos que tu integración necesita
- Copia la llave y guárdala en un lugar seguro
La llave se muestra una sola vez
Por seguridad, R2 guarda únicamente una huella cifrada de la llave, nunca la llave misma. Si se pierde, no se puede recuperar: hay que revocarla y crear una nueva.
Paso 2 · Verifica la conexión#
El recurso /account no exige ningún permiso y te dice a qué negocio pertenece la llave y qué puede leer. Es la forma más rápida de confirmar que todo está bien:
bash
curl -H "Authorization: Bearer TU_LLAVE" \
"https://api.r2-os.com/api/connect/v1/account"Respuesta:
json
{
"data": {
"id": "k97fa2c8de1b04",
"name": "Hotel Bahía del Sol",
"vertical": "hospitality",
"currency": "MXN",
"api_version": "v1",
"scopes": ["read:reservations", "read:payments"],
"key_prefix": "r2k_a1b2c3d4"
}
}Paso 3 · Lee datos reales#
Ya con la conexión confirmada, pide las reservas creadas desde una fecha:
bash
curl -H "Authorization: Bearer TU_LLAVE" \
"https://api.r2-os.com/api/connect/v1/reservations?created_from=2026-01-01&limit=25"Cada respuesta de lista trae data con los resultados y pagination para pedir la página siguiente. Ve paginación y filtros.
Ejemplos en otros lenguajes#
javascript
// Node.js / JavaScript
const res = await fetch(
"https://api.r2-os.com/api/connect/v1/reservations?limit=25",
{ headers: { Authorization: `Bearer ${process.env.R2_API_KEY}` } }
);
const { data, pagination } = await res.json();
console.log(data.length, "reservas · hay más:", pagination.has_more);python
# Python
import os, requests
r = requests.get(
"https://api.r2-os.com/api/connect/v1/reservations",
headers={"Authorization": f"Bearer {os.environ['R2_API_KEY']}"},
params={"created_from": "2026-01-01", "limit": 25},
)
r.raise_for_status()
payload = r.json()
print(len(payload["data"]), "reservas")